我是靠谱客的博主 隐形手机,最近开发中收集的这篇文章主要介绍黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第八章 windows常见特洛伊木马任务(2)截屏黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第八章 windows常见特洛伊木马任务(2)截屏写在前面创建screenshotter.py脚本小试牛刀,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第八章 windows常见特洛伊木马任务(2)截屏


文章目录

  • 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第八章 windows常见特洛伊木马任务(2)截屏
  • 写在前面
  • 创建screenshotter.py脚本
  • 小试牛刀


写在前面

大多数恶意软件和渗透测试框架都具有在远程目标机器上截图的功能。这有助于捕获数据包或者捕获键盘记录器可能看不到的图像、视频帧或其他敏感数据。幸运的是,我们可以使用PyWin32包对WindowsAPI进行本地调用来获取它们。先用pip安装pywin32软件包:
在这里插入图片描述
屏幕截图抓取器将使用Windows图形设备接口(GDI)确定必要的属性,如屏幕总尺寸,并抓取图像。一些屏幕截图软件只会抓取当前活动窗口或应用程序的图片,但我们会抓取整个屏幕。

创建screenshotter.py脚本

创建并打开screenshotter.py,并放入以下代码:

import base64
import win32api
import win32con
import win32gui
import win32ui

def get_dimensions():
    width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
    height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
    left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
    top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
    return (width, height, left, top)

def screenshot(name='screenshot'):
    hdesktop = win32gui.GetDesktopWindow()
    width, height, left, top = get_dimensions()

    desktop_dc = win32gui.GetWindowDC(hdesktop)
    img_dc = win32ui.CreateDCFromHandle(desktop_dc)
    mem_dc = img_dc.CreateCompatibleDC()

    screenshot = win32ui.CreateBitmap()
    screenshot.CreateCompatibleBitmap(img_dc, width, height)
    mem_dc.SelectObject(screenshot)
    mem_dc.BitBlt((0, 0), (width, height), img_dc, (left, top), win32con.SRCCOPY)

    screenshot.SaveBitmapFile(mem_dc, f'{name}.bmp')

    mem_dc.DeleteDC()
    win32gui.DeleteObject(screenshot.GetHandle())

def run():
    screenshot()
    with open('screenshot.bmp') as f:
        img = f.read()
    return img

if __name__ == '__main__':
    screenshot()

让我们回顾一下这个小脚本的作用。我们获得了整个桌面的句柄,它包括多个监视器上的整个可视区域。然后我们确定屏幕(或者多个屏幕)的大小,这样我们就知道屏幕截图所需的尺寸。我们使用GetWindowDC函数创建设备上下文,并将句柄传递给桌面。接下来,创建一个基于内存的设备上下文,我们将在其中存储捕获的图像,直到将位图字节写入文件。然后,我们创建一个位图对象,该对象设置为桌面的设备上下文。然后,SelectObject函数将基于内存的设备上下文设置为指向我们正在捕获的位图对象。我们使用BitBlt函数获取桌面图像的bit-to-bit拷贝,并将其存储在基于内存的上下文中。将其视为对GDI对象的memcpy调用。最后一步是将此图像转储到磁盘。

小试牛刀

这个脚本很容易测试:只需从命令行运行它并检查目录中的screenshot.bmp文件。您还可以在GitHub命令和控制存储库中包含此脚本,因为run函数调用屏幕截图函数来创建图像,然后读取并返回文件数据。
具体的脚本执行效果如下图所示。
在这里插入图片描述

最后

以上就是隐形手机为你收集整理的黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第八章 windows常见特洛伊木马任务(2)截屏黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第八章 windows常见特洛伊木马任务(2)截屏写在前面创建screenshotter.py脚本小试牛刀的全部内容,希望文章能够帮你解决黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第八章 windows常见特洛伊木马任务(2)截屏黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第八章 windows常见特洛伊木马任务(2)截屏写在前面创建screenshotter.py脚本小试牛刀所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部