dpkt报错:invalid tcpdump header
本文最后更新于:2024年1月16日 晚上
使用dpkt解析pcap文件时,报错:invalid tcpdump header
,原因是pcap文件的头部格式不对,需要将pcap文件的头部格式转换为标准格式。
问题描述
Wireshark 收集到的数据包太大,用 editcap
命令拆分,发现拆分后的文件无法用 dpkt 解析,报错:invalid tcpdump header
。
拆分命令
1 |
|
其中 -c
指定每个文件包含的数据包数量,20200116.pcap
是输入文件,20200116.pcap
是输出文件。
原因分析
editcap
命令拆分后的文件格式是 pcapng
,而 dpkt 只支持 pcap
格式,也就是 libpcap
格式。
原因确认
使用 capinfos
命令查看文件格式:
1 |
|
输出:
1 |
|
其中 pcapng
就是 pcap next generation
的意思,是 libpcap
的下一代格式。
解决方法
使用 editcap
命令将 pcapng
格式转换为 pcap
格式:
1 |
|
其中 -F pcap
指定输出格式为 pcap
,第一个 20200116.pcap
是输入文件,第二个 20200116.pcap
是输出文件。
再次使用 capinfos
命令查看文件格式:
1 |
|
输出:
1 |
|
可以看到文件格式已经转换为 pcap
格式了。
其他解决办法
任何能够将 pcapng
转换为 pcap
的工具都可以,但我没有尝试。仅作记录。
tshark
1 |
|
其中 -F pcap
指定输出格式为 pcap
,-r
指定输入文件,-w
指定输出文件。
Wireshark 【最简单】
使用 wireshark
打开 pcapng
文件,然后另存为 pcap
格式。
tcpdump
1 |
|
其中 -r
指定输入文件,-w
指定输出文件。
参考资料
dpkt报错:invalid tcpdump header
https://pawswrite.xyz/posts/f309c2f5.html