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

оболочка записывает поток UDP с определенного адреса

Я пытаюсь записать входящий поток UDP (поток в том смысле, что это поток последовательных дейтаграмм).

Я попытался netcat но, к сожалению несколько источников отправлять данные на один и тот же адрес порта и nc не позволяет указать исходный или целевой адрес многоадресной рассылки.

Потом я попробовал tcpdump -w - потому что tcpdump имеет богатые возможности фильтрации, но записывает необработанный поток, и мне нужны только фактические данные, чтобы я мог обрабатывать их, как поток. К сожалению, он записывает всю информацию, связанную с пакетами, такую ​​как заголовки источника / назначения или IP / UDP.

Есть ли способ сделать это? Для этого я мог бы написать небольшую программу на C, но я предпочитаю использовать существующие инструменты.

Мой первый выбор - wirehark. Если вам нужно сделать это с терминала, вы также можете попробовать ngrep, он дает более читаемый результат, чем tcpdump. Вероятно, вы можете отфильтровать информацию заголовка с помощью простого сценария bash.

http://ngrep.sourceforge.net/usage.html#http

Ты можешь использовать wireshark. Он может делать то, что вы хотите, и даже больше.

wireshark бесполезен, если вы хотите получить данные в потоке и передать их программе. В этом случае я должен сказать, что вы используете неправильный протокол. Если бы я был на твоем месте, я бы обман.

Надеюсь, вы работаете в Linux. В этом случае создайте правило перезаписи брандмауэра для отправки входящих пакетов UDP из желаемого источника, которые отправляются на соответствующий порт, на другой порт, где вы можете использовать netcat для записи данных в поток.

это вопрос поможет вам начать.

netsed или iptables + модуль libnetfilter_queue или ngrep может делать то, что вы хотите.