我正在做一个任务,我必须解析一个pcap文件,我正在使用dpkt来做这件事。我刚开始接触网络,所以我很难调试代码/入门。
第一组代码:
import dpkt
filename='test.pcap'
f = open(filename)
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
f.close()错误为AttributeError:'str‘对象没有'data’属性
因此,从之前的Stackoverflow中,我发现也许我应该“跳过dpkt以太网解码,直接跳到IP解码”,所以我修改了代码并转到:
import dpkt
filename='test.pcap'
f = open(filename)
pcap = dpkt.pcap.Reader(f)
for ts,buf in pcap:
ip = dpkt.ip.IP(buf)
tcp = ip.data
f.close()它现在给我的错误是"UnpackError: invalid header length“
我真的不知道如何推进这一点,任何帮助都将不胜感激
发布于 2016-06-25 05:30:38
我对手机上的痕迹也有同样的问题。
这是由于以太网正在被Linux熟食捕获所取代。如果您的跟踪是以类似方式封装的,则必须使用dpkt.sll.SLL(buff)而不是dpkt.ethernet.Ethernet(buf)。下面是一个例子:
import dpkt
filename='a_linux_cooked_capture.pcap'
f = open(filename, 'rb')
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.sll.SLL(buf)
ip = eth.data
tcp = ip.data
f.close()发布于 2016-06-21 03:10:07
这通常发生在Windows上。在windows上,您应该以二进制模式打开pcap文件:
f= open('test.pcap','rb')
https://stackoverflow.com/questions/37872140
复制相似问题