Python dpkt可以解析Wireshark / pcap文件并成功显示数据包数据:
>>> for ts, pkt in pcap:
eth = dpkt.ethernet.Ethernet(pkt)
type(eth.data)
<class 'dpkt.ip.IP'>
<class 'dpkt.ip.IP'>
但是当我尝试解析tcpdump文件时,得到了以下结果:
>>> for ts, pkt in pcap:
eth = dpkt.ethernet.Ethernet(pkt)
type(eth.data)
<type 'str'>
<type 'str'>
<type 'str'>
从Python IDE打印中,您可以看到类型(eth.data)是'str'而不是类'dpkt.ip.IP'。
有谁知道什么是根本原因以及如何使dpkt适用于tcpdump
捕获?
答案 0 :(得分:0)
抱歉,您等待的时间。希望您能在不到4年的时间内找到答案。
首先,我要提到的是,网络中有一些数据包,其中以太网层是其中的最后一层。因此,在深入研究数据包之前,应进行检查。
例如:
#Check the if there is an ip layer
if ether.type == dpkt.ethernet.ETH_TYPE_IP:
#read the ip layer
ip = ether.data
我不确定这是否是您的问题。如果您使用与ip层相同的数据包,请确保检查的结果相同。但是,希望我能提供一些帮助。
祝你有美好的一天!
祝你好运。