我想打印出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
答案 0 :(得分:0)
目前尚不清楚您想要打印什么。这取决于你在寻找什么。 如果要打印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