Я разрабатываю программу, где файл .pcap будет вход. Однако когда я запускаю tcpdump -w someFile.pcap, в Терминале файл .pcap собирает дополнительные данные, такие как метка времени, микросекунды, длина кадра и т.д.
Эти дополнительные данные мешают моей программе, и я хотел знать, есть ли способ, где tcpdump будет захватывать необработанные пакеты и ничего больше.
Так, например, первый байт данных в .pcap должен быть "адресом назначения" заголовка Ethernet, а не какой-либо временной меткой.
Спасибо!

1 ответ1

1

Похоже, вас интересуют только необработанные байты, которые составляют каждый пакет. Предполагая, что так, вы можете попробовать что-то вроде:

tcpdump -r someFile.pcap -xx | grep -P "^\t0x"

Как вы можете видеть из справочной страницы tcpdump, это заставит tcpdump прочитать файл захвата и «в дополнение к печати заголовков каждого пакета, выведите данные каждого пакета, включая заголовок уровня ссылки, в шестнадцатеричном виде». Передача вывода в grep позаботится об удалении итоговой строки. Возможно, есть способ дать команду tcpdump вообще не печатать итоговую строку, но, если есть, я не смог ее найти. В любом случае, на данный момент вам просто нужно обработать шестнадцатеричный вывод.

Я думаю, вы можете добиться этого немного проще, используя tshark вместо tcpdump . Например:

tshark -r icmp.pcap -x

Выходные форматы tcpdump и tshark отличаются в зависимости от того, как отображаются и группируются шестнадцатеричные значения, и присутствует ли представление шестнадцатеричных байтов в ASCII или нет после шестнадцатеричных значений, поэтому вам, вероятно, придется поэкспериментировать, чтобы увидеть, какой формат нравится лучше или проще для вашей программы разобрать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .