wireshark – 使用python进行USB映射

前端之家收集整理的这篇文章主要介绍了wireshark – 使用python进行USB映射前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

@H_403_5@#!/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上运行它时,我收到此错误

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

为什么会这样?

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

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

猜你在找的Python相关文章