Sniff UDP-пакеты на локальном порту

12

Я хотел бы знать, что содержимое пакета одного приложения «Планировщик APM» отправлять другому «MAVProxy». Я знаю, что они обмениваются данными через UDP-порт 14550. Я попытался использовать tcpdump , выполнив следующие команды

tcpdump -u port 14550

а также

tcpdump udp

а также

netstat -uanpc | grep 14550

но ни одно из них не показало мне, что эти два приложения действительно обмениваются. Мне нужно что-то вроде cutecom для мониторинга UDP-соединения. Есть что-нибудь подобное? Когда я запускаю команду

netstat -lnpuc

, это показывает следующее среди его продукции

udp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2 
Салахуддин Ахмед
источник
Считаете ли вы, что программа с графическим интерфейсом называется wireshark? Он будет анализировать пакеты и показывать вам информацию, отправляемую каждым из них, а затем вы можете использовать udp.port == 14550или подобную в качестве команды фильтрации, чтобы показать только этот трафик. Проблема в том, что вам придется собирать воедино то, что происходит в зависимости от содержимого пакета. Но, похоже, это, в конечном счете, то, что вы хотите сделать сами ... (просто прослушайте loинтерфейс, если вы сделаете это - это локальный диапазон 127. *. *. * И локальный IPv6 внутри вашей системы)
Томас Уорд
Спасибо за ваш комментарий. Я установил Wireshark и набрал udp.port == 14550в Apply a display filterполе, но ничего не появилось. Я также попробовал udp port 14550в этой Enter a capture filterобласти. Также, когда я запускаю команду netstat -lnpuc, она показывает следующее в своем выводеudp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2
Салахуддин Ахмед
Похоже, что это не обязательно слушать локально. Вы пробовали трассировать на других интерфейсах, чтобы видеть, общается ли это с исходящими?
Томас Уорд
1
Теперь это работает. Я должен был бежать wiresharkс sudo. Большое спасибо
Салахуддин Ахмед

Ответы:

17

tcpdump поддерживает захват UDP . пример использования:

tcpdump -n udp port 14550

редактировать

Поскольку ваши приложения взаимодействуют с интерфейсом lo, вы должны указать интерфейс следующим образом:

tcpdump -i lo -n udp port 14550

эта команда печатает только заголовки. если вы хотите напечатать часть данных пакета в шестнадцатеричном формате и ASCII, используйте это:

tcpdump -i lo -n udp port 14550 -X

или если вы хотите сохранить пакеты в файл и увидеть его содержимое в Wireshark, используйте это:

tcpdump -i lo -n udp port 14550 -w packets.pcap
Гасем Пахлаван
источник
Я попробовал эту команду, но она не захватывает пакеты. Это выводит следующее listening on wlo1, link-type EN10MB (Ethernet), capture size 262144 bytesи ничего больше!
Салахуддин Ахмед
@SalahuddinAshraf Я исправил это :)
Гасем Пахлаван
спасибо, сейчас работает Он отображает источник, место назначения и длину передаваемых данных. Можно ли заставить его отображать сами передаваемые данные?
Салахуддин Ахмед
@SalahuddinAshraf да. Вы должны добавить опцию -A к tcpdump, чтобы увидеть данные. также вы можете отправить пакет в файл и посмотреть пакеты в Wireshark по-w packets.pcap
Ghasem Pahlavan
Pahlvan, отлично. Теперь я могу видеть данные. Можно ли сделать так, чтобы данные отображались в шестнадцатеричном формате? Большое спасибо
Салахуддин Ахмед
1

Вы можете использовать ngrep . Пример:

# Any UDP from any local interfaces to 91.22.38.4:12201
ngrep -W byline -d any udp and host 91.22.38.4 and dst port 12201
Александр Янчарук
источник