【发布时间】:2014-06-24 18:26:20
【问题描述】:
我收到 ValueError: Invalid tcpdump header error for below code。任何帮助表示赞赏
import dpkt
f = open('a.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 and len(tcp.data) > 0:
http = dpkt.http.Request(tcp.data)
print http.uri
f.close()
错误如下所示
Traceback (most recent call last):
File "malcap.py", line 6, in <module>
pcap = dpkt.pcap.Reader(f)
File "/usr/lib/python2.7/site-packages/dpkt/pcap.py", line 104, in __init__
raise ValueError, 'invalid tcpdump header'
ValueError: invalid tcpdump header
【问题讨论】:
-
您是否尝试过在任何其他工具(如 Wireshark)中打开 pcap 文件以确认其有效且未损坏?
-
是的,试过了。它适用于wireshark
-
“它适用于 Wireshark”并不意味着“它是一个 pcap 文件”;例如,它可以是一个 pcap-ng 文件,新版本的 libpcap 可以读取,但旧版本的 libpcap 和用于读取 pcap 文件的手写代码不能。在 Wireshark 中,转到 Statistics -> Summary 并查看“格式:”的含义。
标签: python parsing pcap libpcap