我有两个PCAP文件,A
和B
.
A
具有在报头中的"魔数" d4 c3 b2 a1
,B
具有在报头中的"魔数" 4d 3c b2 a1
.根据wireshark文档(http://wiki.wireshark.org/Development/LibpcapFileFormat),只有0xd4c3b2a1
并且0xa1b2c3d4
是有效的魔术数字,这使我认为B不是有效的幻数.
file
在linux上运行支持这个,输出为file A
:
tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 65535)
Run Code Online (Sandbox Code Playgroud)
file B
简单地说:
data
Run Code Online (Sandbox Code Playgroud)
看起来无论用什么写的B
都是以'交换'(小端)格式写的,但用错误的方式用半字节写了最后的twp字节.鉴于我期望一个大端系统以相反的方式编写整个int32,而不是单个字节,给出一个神奇的数字1a 2b 3c 4d
.
是B
有效的文件吗?如果是这样,为什么?不同的系统可以以任意顺序将32位整数和单个半字节写入一个字节吗?
小智 11
具有幻数"0x4d3cb2a1"和"0xd4c3b2a1"的PCAP文件之间有什么区别?
幻数为0xa1b23c4d或0x4d3cb2a1的pcap文件是一个pcap文件,其中数据包时间戳以秒和纳秒为单位.
幻数为0xa1b2c3d4或0xd4c3b2a1的pcap文件是"常规"pcap文件,其中数据包时间戳以秒和微秒为单位.
你在哪里得到档案B?以"纳秒分辨率"格式写入文件的唯一标准版本的libpcap是libpcap Git树的主干上的版本,只有当使用libpcap的程序读取另一个"纳秒分辨率"格式或明确请求时才会发生这种情况来自网络适配器的纳秒分辨率时间戳(目前仅在Linux上受支持,可能需要一个足够新的内核).这也是唯一可以读取它们的版本.Wireshark默认不会生成它们,尽管最近版本的Wireshark可以读取它们.