Назад | Перейти на главную страницу

Можно ли указать tcpdump, что я хочу, чтобы он интерпретировал пакет по-другому, прежде чем печатать его в STDOUT?

Я использую iperf, чтобы определить проблему с переупорядочением пакетов. К сожалению, tcpdump не знает, как анализировать полезную нагрузку UDP iperf, которую я мог бы использовать для определения проблемы. Я знаю, что iperf хранит идентификатор последовательности пакетов в первых 32-х битах полезной нагрузки UDP.

Есть ли элегантный способ сообщить tcpdump, что я хочу, чтобы он интерпретировал эти первые 32 бита в полезной нагрузке UDP iperf как десятичное 32-разрядное целое число без знака и печатал это целое число в STDOUT для каждого пакета?

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

Единственный способ изменить способ интерпретации пакетных данных tcpdump - это получить исходный код, изменить его, чтобы интерпретировать пакетные данные так, как вы хотите, скомпилировать полученный исходный код и использовать полученный двоичный файл.

Если вы не хотите этого делать, возможно, вы могли бы использовать цирк вместо; если он не понимает пакеты iperf, и если он построен на Lua, вы можете написать диссектор Lua для этих пакетов.