Python dpkt with pcap - 如何打印数据包数据?

时间:2015-06-19 07:56:41

标签: 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(eth, 'ip'):
        continue
    info.append(eth.ip)

f.close()

print info

1 个答案:

答案 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

有关详细信息,请参阅示例here或dpkt项目中的examples