Par*_*ara 0 python networking pcap python-2.7 dpkt
我正在做一个任务,我必须解析一个 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()
Run Code Online (Sandbox Code Playgroud)
错误是 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()
Run Code Online (Sandbox Code Playgroud)
它现在给我的错误是“UnpackError: invalid header length”
不太明白如何继续前进,任何帮助将不胜感激
我在手机上拍摄的痕迹也遇到了同样的问题。
这是因为以太网被 Linux Cooked Capture 取代。如果您的跟踪以类似方式封装,则必须使用 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()
Run Code Online (Sandbox Code Playgroud)