1

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 打印中,您可以看到 type(eth.data) 是'str'而不是类 'dpkt.ip.IP'。
有谁知道根本原因是什么以及如何使 dpkt 用于tcpdump捕获?

4

1 回答 1

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 层相同的数据包,那么您检查时肯定会是相同的。但是,我希望我能提供一些帮助。

祝你有美好的一天!

还有祝你好运。

于 2020-05-05T20:02:48.327 回答