什么是 pcap 幻数 0xc3d4a1b2?

what is pcap magic number 0xc3d4a1b2?

我正在尝试编写一个程序来读取在 linux 中捕获的 pcap 文件(tcpdump 版本 4.5.1 libpcap 版本 1.5.3),但我无法正确进行字节交换。幻数不是我期望的值之一(0xa1b2c3d4 或 0xd4c3b2a1),而是 0xc3d4a1b2。 'file' 命令正确识别它(tcpdump 捕获文件(小端)- 版本 2.4(以太网,捕获长度 65535))并且 'tcpdump -r' 读取它但我不明白如何。幻数在我看来既不是小端也不是大端。十六进制转储看起来像:

0000000 c3d4 a1b2 0002 0004 0000 0000 0000 0000
0000010 ffff 0000 0001 0000 6be0 5a87 a747 0008

这个文件的字节顺序是什么?

这可能就是数据的显示方式。我假设您正在使用 hexdump。默认情况下,此程序使用 two-byte 十六进制显示,即它正在读取两个字节并将其解释为无符号短整型:

 $ hexdump file.pcap
 0000000 c3d4 a1b2 ...

要获得 byte-wise 显示,您可以使用例如 -C 选项:

 $ hexdump -C file.pcap
 00000000  d4 c3 b2 a1  ...

或者你可以使用 xxd:

 $ xxd file.pcap
 00000000: d4c3 b2a1 ...