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