加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

wireshark – 使用python进行USB映射

发布时间:2020-12-16 22:50:04 所属栏目:Python 来源:网络整理
导读:在阅读一些CTF写作时,我遇到了这个脚本 #!/usr/bin/env pythonimport structimport Imageimport dpktINIT_X,INIT_Y = 100,400def print_map(pcap,device): picture = Image.new("RGB",(1200,500),"white") pixels = picture.load() x,y = INIT_X,INIT_Y for

在阅读一些CTF写作时,我遇到了这个脚本

#!/usr/bin/env python
import struct
import Image
import dpkt

INIT_X,INIT_Y = 100,400

def print_map(pcap,device):
    picture = Image.new("RGB",(1200,500),"white")
    pixels = picture.load() 

    x,y = INIT_X,INIT_Y

    for ts,buf in pcap:
        device_id,= struct.unpack("b",buf[0x0B])

        if device_id != device:
            continue

        data = struct.unpack("bbbb",buf[-4:])

        status = data[0]
        x = x + data[1]
        y = y + data[2]

        if (status == 1):
            for i in range(-5,5):
                for j in range(-5,5):
                    pixels[x + i,y + j] = (0,0)
        else:
            pixels[x,y] = (255,0)
    picture.save("riverside-map.png","PNG")

if __name__ == "__main__":

    f = open("usb.pcap","rb")
    pcap = dpkt.pcap.Reader(f)
    print_map(pcap,5)
    f.close()

当我在我的usb.pcap上运行它时,我收到此错误:

 Traceback (most recent call last):
      File "test.py",line 39,in 

为什么会这样?

最佳答案
根据usb.pcap文件中的数据集,您可能需要调整INIT_X和INIT_Y变量.问题是struct.unpack返回一个带符号的值,所以如果数据超过127,那么它会显示为负数,并且你超出了数组边界.如果数据确实总是正数,则可以测试该数据并将其强制为正值.就像是:

data = [item + 256 if item < 0 else item for item in data]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读