wireshark– 使用python进行USB映射

wireshark– 使用python进行USB映射,第1张

概述在阅读一些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)

在阅读一些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 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]
总结

以上是内存溢出为你收集整理的wireshark – 使用python进行USB映射全部内容,希望文章能够帮你解决wireshark – 使用python进行USB映射所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1206410.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)