can';t使用pythondpkt解析tcpdump捕获

can';t使用pythondpkt解析tcpdump捕获,python,wireshark,tcpdump,dpkt,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'> 对于pcap中的ts、pkt: eth=dpkt.ethernet.ethernet(pkt) 类型(eth.数据)

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'>
对于pcap中的ts、pkt: eth=dpkt.ethernet.ethernet(pkt) 类型(eth.数据) 但是当我试图解析tcpdump文件时,我得到了以下结果:

>>> for ts, pkt in pcap:
    eth = dpkt.ethernet.Ethernet(pkt)
    type(eth.data)

<type 'str'>
<type 'str'>
<type 'str'>
对于pcap中的ts、pkt: eth=dpkt.ethernet.ethernet(pkt) 类型(eth.数据) 从Python IDE打印中,您可以看到类型(eth.data)是'str',而不是类“dpkt.ip.ip”。

有人知道什么是根本原因,以及如何使dpkt为
tcpdump
捕获工作吗?

很抱歉您等待了这么久。我希望你能在不到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层相同的数据包,那么可以肯定的是,您将经常检查这些数据包。但是,我希望我能帮助一些人

祝你今天愉快


祝你好运。

很抱歉你等了这么久。我希望你能在不到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层相同的数据包,那么可以肯定的是,您将经常检查这些数据包。但是,我希望我能帮助一些人

祝你今天愉快


祝你好运。

你的确切
tcpdump
命令是什么?您正在使用
-w
?如果您尝试使用tcpdump读取文件并将tcpdump的标准输出发送到/dev/null,会打印什么?@AlexP。是的,我使用tcpdump,比如
tcpdump-I any-w file_name.pcap
尝试将
-s 65535
添加到命令行我也有这个问题@你找到解决办法了吗?您是否从库中切换?如果是,是哪一个?您的确切
tcpdump
命令是什么?您正在使用
-w
?如果您尝试使用tcpdump读取文件并将tcpdump的标准输出发送到/dev/null,会打印什么?@AlexP。是的,我使用tcpdump,比如
tcpdump-I any-w file_name.pcap
尝试将
-s 65535
添加到命令行我也有这个问题@你找到解决办法了吗?你从图书馆换了吗?如果是,是哪一个?