PythonDPKT与pcap-如何打印数据包数据?
我想从pcap文件打印数据包数据。下面的代码将数据包存储在一个数组中,但我不知道如何打印数组的每个元素,然后从中分割数据。数组上的for循环只返回一个错误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
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吗?我想测试一下