Renifler des paquets UDP sur un port local

12

Je voudrais savoir quel est le contenu d'un paquet d'une application "APM Planner" envoyée à une autre "MAVProxy". Je sais qu'ils communiquent sur le port UDP 14550. J'ai essayé d'utiliser tcpdump en exécutant les commandes suivantes

tcpdump -u port 14550

et

tcpdump udp

et

netstat -uanpc | grep 14550

mais aucun d'eux ne m'a montré ce que ces deux applications sont vraiment en échange. J'ai besoin de quelque chose comme cutecom pour surveiller la connexion UDP. Y a-t-il quelque chose comme ça? Lorsque j'exécute la commande

netstat -lnpuc

, il montre ce qui suit parmi sa sortie

udp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2 
Salahuddin Ahmed
la source
Avez-vous envisagé le programme GUI appelé wireshark? Il décortiquera les paquets et vous montrera les informations envoyées par chacun, et vous pouvez ensuite utiliser udp.port == 14550ou similaire comme commande de filtrage pour afficher uniquement ce trafic. Le problème est que vous devrez reconstituer ce qui va et vient en fonction du contenu du paquet. Mais il semble que ce soit finalement ce que vous voulez faire vous-même ... (Reniflez simplement l' lointerface si vous faites cela - c'est la plage 'locale' 127. *. *. * Et l'IPv6 local en interne sur votre système)
Thomas Ward
Merci pour votre commentaire. J'ai installé Wireshark et tapé udp.port == 14550dans Apply a display filterdéposé , mais rien ne semblait. J'ai aussi essayé udp port 14550sur le Enter a capture filterterrain. Aussi lorsque j'exécute la commande netstat -lnpuc, elle montre ce qui suit parmi sa sortieudp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2
Salahuddin Ahmed
Pour moi, ce n'est pas nécessairement écouter localement. avez-vous essayé de tracer sur d'autres interfaces pour voir s'il communique en sortie?
Thomas Ward
1
Maintenant ça marche. Je devais courir wiresharkavec sudo. Merci beaucoup
Salahuddin Ahmed

Réponses:

17

tcpdump prend en charge la capture UDP . exemple d'utilisation:

tcpdump -n udp port 14550

Éditer

Étant donné que vos applications communiquent avec l' interface lo , vous devez spécifier une interface comme celle-ci:

tcpdump -i lo -n udp port 14550

cette commande imprime uniquement les en-têtes. Si vous souhaitez imprimer une partie des données du paquet en hexadécimal et ASCII, utilisez ceci:

tcpdump -i lo -n udp port 14550 -X

ou si vous souhaitez enregistrer des paquets dans un fichier et voir son contenu dans Wireshark, utilisez ceci:

tcpdump -i lo -n udp port 14550 -w packets.pcap
Ghasem Pahlavan
la source
J'ai essayé cette commande mais elle ne capture pas les paquets. Il sort les éléments suivants listening on wlo1, link-type EN10MB (Ethernet), capture size 262144 byteset rien d'autre!
Salahuddin Ahmed
@SalahuddinAshraf Je l'ai corrigé :)
Ghasem Pahlavan
merci, ça marche maintenant. Il affiche la source, la destination et la longueur des données transférées. Est-il possible de lui faire afficher les données transférées lui-même?
Salahuddin Ahmed
@SalahuddinAshraf oui. vous devez ajouter l'option -A à tcpdump pour voir les données. vous pouvez également envoyer des paquets dans un fichier et voir les paquets dans Wireshark par-w packets.pcap
Ghasem Pahlavan
Pahlvan, super. Maintenant, je peux voir les données. Est-il possible de faire afficher les données en hexadécimal? Merci beaucoup
Salahuddin Ahmed
1

Vous pouvez utiliser ngrep . Exemple:

# 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
Alexander Yancharuk
la source