PythonDPKT与pcap-如何打印数据包数据?

PythonDPKT与pcap-如何打印数据包数据?,python,parsing,packet,tcpdump,dpkt,Python,Parsing,Packet,Tcpdump,Dpkt,我想从pcap文件打印数据包数据。下面的代码将数据包存储在一个数组中,但我不知道如何打印数组的每个元素,然后从中分割数据。数组上的for循环只返回一个错误 import dpkt import socket f = open('test.pcap', 'r') pcap = dpkt.pcap.Reader(f) info = [] for ts, buf in pcap: eth = dpkt.ethernet.Ethernet(buf) if not hasattr

我想从pcap文件打印数据包数据。下面的代码将数据包存储在一个数组中,但我不知道如何打印数组的每个元素,然后从中分割数据。数组上的for循环只返回一个错误

import dpkt
import socket

f = open('test.pcap', 'r')
pcap = dpkt.pcap.Reader(f)

info = []

for ts, buf in pcap:

    eth = dpkt.ethernet.Ethernet(buf)

    if not hasattr(eth, 'ip'):
        continue
    info.append(eth.ip)

f.close()

print info

现在还不清楚你到底想要打印什么。这取决于你在找什么。 如果要打印tcp数据,请按以下方式执行:

import dpkt
f = open('test.pcap')
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf)
    ip = eth.data
    tcp = ip.data
如果要在更高的层中打印数据,可以扩展上面的示例。例如,HTTP如下所示:

import dpkt

f = open('test.pcap')
pcap = dpkt.pcap.Reader(f)

for ts, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf)
    ip = eth.data
    tcp = ip.data
    if tcp.dport == 80:
        http = dpkt.http.Request(tcp.data)
        print http.data

有关更多详细信息,请参见示例或dpkt项目中的

到底是哪个错误?在控制台上看起来是这样的:E@PhillipHi,谢谢。由于某种原因,当我尝试http示例时,我得到一个错误:回溯(最近一次调用):文件“/usr/lib/python2.7/site packages/dpkt/http.py”,第131行,在unpack raise dpkt.unpackeror('无效的http方法:%r'%1[0])dpkt.dpkt.UnpackError:无效的http方法:'\x03\x01'我要打印的是数据包的原始加载/有效负载部分。我发现我可以使用scapy模块轻松地完成这项工作,因此这可能是一个更好的解决方案。您可以共享pcap吗?我想测试一下