带有 pcap 的 Python 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(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

有关更多详细信息,请参阅示例 here ,或 examples在 dpkt 项目中。

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

相关文章:

python - 如何获取一个数组中包含在另一个数组中的值的所有索引?

parsing - 如何在pdf中获得准确的字体大小(高度)

c++ - 数据包延迟变化 (PDV)

authentication - 半径的最大数据包大小

java - Java如何从字节数组形成TCP数据包?

python - 社会安全号码检查 - Python

python - 人们如何同时渲染这么多体素?

python - 是否有正则表达式模式可以返回相同字符的所有完全匹配?

android - 网址缩略图 - ANDROID

python - 在 Python 中增量读取大型多部分压缩文本文件