相关文章推荐
沉稳的萝卜  ·  How to show legend in ...·  1 年前    · 
体贴的仙人掌  ·  python笔记75-compile() ...·  1 年前    · 
另类的勺子  ·  blob size exceeds ...·  1 年前    · 
python渗透测试入门之截屏

python渗透测试入门之截屏

近期收到了电子工业出版社赠送的一本网络安全书籍《python黑帽子》,书中一共24个实验,今天复现第20个实验( 截屏),我的测试环境是windows虚拟机+conda开发环境+python3.7。这个实验非常有趣,在windows环境下,运行脚本就能自动截屏,我这边测试的时候发现,在虚拟机截屏不完整,可能和分辨率有关系~

1、学生只需要在cmd中运行python脚本,即可产生桌面的截图

2、可以在运行脚本的目录下查看屏幕的截图,这里截的不全

参考代码:

# -*- coding: utf-8 -*-
# @Time    : 2022/6/25 8:17 AM
# @Author  : ailx10
# @File    : screenshot.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()