Команда Linux для получения дампа байтов шестнадцатеричных значений из файла Pcap

#hex #wireshark #pcap #tshark #hexdump

Вопрос:

Мне требуется команда Linux для отображения шестнадцатеричного файла PCAP. В настоящее время я использую команду xxd PcapFile.pcap. С помощью этого я получаю шестнадцатеричный файл pcap вместе с другими байтами, вставленными между и в конце, которые не принадлежат файлу pcap. Эти байты имеют значение возврата каретки, новой строки, новой страницы, нулевых символов и т.д. Я не хочу, чтобы hexdump отображал эти символы. Есть ли правильная команда, которая может отображать только байты данных из файла 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 
 

Комментарии:

1. Если xxd печатает символы в шестнадцатеричном файле, то они существуют в файле. Если это маловероятный случай, когда xxd печатает символы, отсутствующие в файле, это было бы ошибкой.

2. @RossJacobs Могу ли я поделиться с вами файлом pcap, чтобы вы могли взглянуть, что именно здесь происходит не так ???

Ответ №1:

Если вы ищете шестнадцатеричный файл всего файла, то вы можете использовать hexdump , как в:

 hexdump -vC PcapFile.pcap
 

Ответ №2:

Если под «байтами данных» вы подразумеваете необработанные шестнадцатеричные байты пакетов, так что 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 core» и «Wireshark GUI», и, если это так, для этого не требуется пакет «Wireshark GUI»).

Комментарии:

1. tcpdump-xx-n-r {имя файла} => Эта команда не работает с файлом pcap. Там нет вывода каких-либо данных.

2. Вы ввели путь к файлу pcap, а не буквальную строку «{имя файла}», верно? Вывод, который я вставил в ответ на эту команду, был скопирован и вставлен из окна эмулятора моего терминала после выполнения этой команды в файле pcap, который у меня есть.

3. Я ввел имя файла, как и в том же каталоге. Он не отображает никаких данных.

4. Какую именно команду вы набрали? И производилась ли вообще какая-либо продукция? Если да, то каков был результат?