无法使用python dpkt解析tcpdump捕获

时间:2015-07-27 09:02:51

标签: python wireshark tcpdump dpkt

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捕获?

1 个答案:

答案 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层相同的数据包,请确保检查的结果相同。但是,希望我能提供一些帮助。

祝你有美好的一天!

祝你好运。