我试图阅读由不同工具创建的PCAP文件。
一个工具没有字节对齐,另一个工具总是与下一个双字对齐。 如何确定使用哪种对齐方式?
如上所述:https://wiki.wireshark.org/Development/LibpcapFileFormat
每个捕获的数据包都以(可能的任何字节对齐)[...]
开头
我不想使用libpcap,因为我的文件有时会被破坏,然后我需要使用底层文件的位和字节。
答案 0 :(得分:2)
The official man page for the pcap file format指定文件以24字节文件头开头,然后立即(没有填充)由一系列包记录开始。
每个数据包以一个16字节的标头开头,然后是数据包数据;在数据包数据之后有 NO 填充 - 包含数据的字节数与"捕获的数据包数据的长度"所指定的完全一样多。标题中的字段。
所以,是的,任何字节对齐都是可能的。
如果某个工具在数据包之间放置填充,该工具有一个错误。 pcap文件中没有规定记录是否存在任何此类填充,因为
因此,对带有填充的格式错误的pcap文件进行任何修复都需要启发式方法来猜测是否存在填充。您可能希望查看pcapfix工具,看它是否可以修复第二个工具生成的任何错误文件。 (并且请告诉谁使用该工具 NOT 来填充数据包记录,以保证下一条记录在双字边界上!)
如果该工具写出带有捕获的长度字段而不是的记录,包括填充的长度 - 例如,如果是63字节的数据包,所有这些都是捕获,捕获的长度为63和一个额外的填充字节 - 然后你可以编写自己的修复程序。它会:
然后执行此操作直到数据包耗尽。