我想从 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
关于带有 pcap 的 Python dpkt - 如何打印数据包数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30932918/