Странный заголовок pcap байтовой последовательности 0a 0d 0d 0a, созданный на Mac?
У меня есть файл PCAP, который был создан на Mac с mergecap
это может быть проанализировано на Mac с libpcap от Apple, но не может быть проанализировано в системе Linux. объединенный файл имеет дополнительный 16-байтовый заголовок, который содержит 0a 0d 0d 0a 78 00 00 00
перед 4d 3c 2b 1a
интро, распространенное в файлах pcap. Вот шестнадцатеричный дамп:
0000000: 0a0d 0d0a 7800 0000 4d3c 2b1a 0100 0000 ....x...M<+.....
0000010: ffff ffff ffff ffff 0100 4700 4669 6c65 ..........G.File
0000020: 2063 7265 6174 6564 2062 7920 6d65 7267 created by merg
0000030: 696e 673a 200a 4669 6c65 313a 2037 2e70 ing: .File1: 7.p
0000040: 6361 7020 0a46 696c 6532 3a20 362e 7063 cap .File2: 6.pc
0000050: 6170 200a 4669 6c65 333a 2034 2e70 6361 ap .File3: 4.pca
0000060: 7020 0a00 0400 0800 6d65 7267 6563 6170 p ......mergecap
Кто-нибудь знает, что это? или как я могу прочитать это в системе Linux с libpcap?
1 ответ
У меня есть файл PCAP
Нет, ты не У вас есть файл pcap-ng.
которые можно анализировать на Mac с помощью libpcap от Apple
libpcap 1.1.0 и более поздние версии также могут читать некоторые файлы pcap-ng (API pcap позволяет файлу иметь только один тип заголовка канального уровня, одну длину снимка и один порядок байтов, поэтому только файлы pcap-ng, где все разделы имеют одинаковый порядок байтов, и все интерфейсы имеют одинаковый тип заголовка канального уровня и поддерживаются длина снимка), а OS X Snow Leopard и более поздние версии имеют libpcap на основе 1.1.x, поэтому они могут читать эти файлы.
(OS X Mountain Lion и более поздние версии настроили libpcap, чтобы он также мог записывать файлы pcap-ng; -P
флаг заставляет tcpdump записывать файлы pcap-ng с текстовыми комментариями, прикрепленными к некоторым исходящим пакетам, с указанием идентификатора процесса и имени процесса, который их отправил - pcap-ng позволяет прикреплять текстовые комментарии к пакетам.)
но не может быть проанализирован в системе Linux
Ваша система Linux, вероятно, имеет более старую версию libpcap. (Примечание: не путайте производные Debian и Debian, называющие пакет libpcap "libpcap0.8" - они все еще не используют libpcap 0.8.)
объединенный файл имеет дополнительный 16-байтовый заголовок, который содержит 0a 0d 0d 0a 78 00 00 00
Файл pcap-ng представляет собой последовательность "блоков", которые начинаются с 4-байтового типа блока и 4-байтовой длины, причем оба в порядке байтов хоста, который их написал.
Они разделены на "секции", каждая из которых начинается с " блока заголовка секции" (SHB); тип блока для SHB - 0x0a0d0d0a, который не зависит от порядка байтов (так что вам не нужно знать порядок байтов для чтения SHB) и содержит возврат каретки и перевод строки (так что, если файл Например, при переносе между системой UN*X и системой Windows с помощью инструмента, который считает, что переносит текстовый файл и который "старательно" пытается исправить окончания строк, магическое число SHB будет повреждено, и будет очевидно, что файл был испорчен тем, что был передан таким образом, думайте об этом как о эквиваленте шока).
0x78000000 - это длина; за ним следует поле "магический порядок байтов", которое равно 0x1A2B3C4D (которое не совпадает с магическим числом 0xA1B2C3D4 для файлов pcap) и служит для тех же целей, что и магическое число pcap, а именно:
- это позволяет коду идентифицировать, что файл является файлом pcap-ng
- это позволяет коду определять порядок байтов раздела.
(Нет, вам не нужно знать длину, прежде чем искать магическое число pcap; как только вы найдете магическое число, вы затем проверяете длину, чтобы убедиться, что она не меньше 28 и, если она меньше или равна 28, вы отклоняете блок как недействительный.)
Кто-нибудь знает, что это?
Файл (little-endian) pcap-ng.
или как я могу прочитать это в системе Linux с libpcap?
Либо прочтите его в системе Linux с более новой версией libpcap (что может означать более новую версию любого дистрибутива, который вы используете, или просто может означать обновление, если это даст вам версию libpcap версии 1.1.0 или новее) прочитайте его с помощью Wireshark или TShark (которые имеют собственную библиотеку для чтения файлов захвата, которая поддерживает собственные форматы pcap и pcap-ng, а также множество других форматов) или загрузите более новую версию libpcap с http://www.tcpdump.org/, соберите его, установите его, а затем соберите все другие инструменты, необходимые для чтения файлов pcap-ng с этой версией libpcap, а не той, которая поставляется с системой.
Более новые версии Wireshark по умолчанию записывают файлы pcap-ng, в том числе в такие инструменты, как mergecap; вы можете заставить их писать файлы pcap с аргументом флага -F pcap
,