用于从 Pcap 文件中获取十六进制值字节转储的 Linux 命令

问题描述

我需要一个 linux 命令来显示 PCAP 文件的 Hexdump。目前我正在使用 xxd PcapFile.pcap 命令。有了这个,我得到了 pcap 文件的十六进制转储,以及插入和 end 之间不属于 pcap 文件的其他字节。这些字节是回车、换行、新页、空字符等。我不希望十六进制转储显示这些字符。 是否有正确的命令只能显示pcap文件中的数据字节。

例如:

0000000: d4c3 b2a1 0200 0400 0000 0000 0000 0000  ................
0000010: 0000 0400 0100 0000 590d 9d60 abe9 0700  ........Y..`....
0000020: 3c00 0000 3c00 0000 0010 f393 8870 000c  <...<........p..
0000030: 2998 7ecb aefe 1002 0014 0000 0080 9000  ).~.............
0000040: 0000 0101 0000 0000 0019 fffe 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 590d 9d60 abe9 0700 3c00 0000  ....Y..`....<...

我在最后和中间得到的字节是:

END: 0000 f404 0000
BETWEEN Each Packet: 0000 f404 0000 0600 0000 f404 0000 0000 0000 0000 0000 dc56 2d01 d204 0000 d204 

解决方法

如果您要查找整个文件的十六进制转储,则可以使用 hexdump,如下所示:

hexdump -vC PcapFile.pcap
,

如果“数据字节”是指数据包的原始十六进制字节,因此不会打印 24 字节的文件头和 16 字节的数据包头,一个将打印十六进制数据的命令 连同对数据包内容的剖析

tcpdump -xx -n -r {file name}

将打印信息,例如

17:48:39.708517 ARP,Request who-has 10.120.4.255 tell 10.120.4.1,length 46
        0x0000:  ffff ffff ffff 00e0 5280 7600 0806 0001
        0x0010:  0800 0604 0001 00e0 5280 7600 0a78 0401
        0x0020:  0000 0000 0000 0a78 04ff 0000 0000 0000
        0x0030:  0000 0000 0000 0000 0000 0000

这要求您安装了 tcpdump。

另一个命令,将只打印每个数据包的十六进制+文本转储,没有解剖,是

tshark -Q -x -r {file name}

(它将打印十六进制和文本;没有办法抑制转储的文本部分。文本显示可打印的 ASCII 字符,除非数据包用于某些 IBM 协议,其中数据在 EBCDIC 中,在这种情况下输出是 ASCII 但它是从 EBCDIC 翻译过来的。)

这要求您安装了 Wireshark(不过,如果您从操作系统提供的软件包进行安装,它可能具有单独的“Wireshark 核心”和“Wireshark GUI”软件包,如果是这样,则不会需要“Wireshark GUI”包)。