Oler paquetes UDP en un puerto local

12

Me gustaría saber cuáles son los contenidos de un paquete que una aplicación "APM Planner" envía a otro "MAVProxy". Sé que se están comunicando a través del puerto UDP 14550. Intenté usar tcpdump ejecutando los siguientes comandos

tcpdump -u port 14550

y

tcpdump udp

y

netstat -uanpc | grep 14550

pero ninguno de ellos me mostró qué intercambian realmente estas dos aplicaciones. Necesito algo como cutecom para monitorear la conexión UDP. ¿Hay algo como esto? Cuando ejecuto el comando

netstat -lnpuc

, muestra lo siguiente entre sus resultados

udp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2 
Salahuddin Ahmed
fuente
¿Has considerado el programa GUI llamado wireshark? Diseccionará los paquetes y le mostrará la información que envía cada uno, y luego podrá usarlos udp.port == 14550o algo similar como el comando de filtrado para mostrar solo ese tráfico. El problema es que tendrás que reconstruir lo que va y viene según el contenido del paquete. Pero parece que esto es, en última instancia, lo que desea hacer usted mismo ... (Solo huela la lointerfaz si hace esto, ese es el rango 'local' 127. *. *. * Y el IPv6 local internamente en su sistema)
Thomas Ward
Gracias por tu comentario. He instalado Wireshark y escribí udp.port == 14550en Apply a display filterpresentada pero nada apareció. También lo intenté udp port 14550en el Enter a capture filtercampo. También cuando ejecuto el comando netstat -lnpuc, muestra lo siguiente entre sus resultadosudp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2
Salahuddin Ahmed
Me parece que no necesariamente está escuchando localmente. ¿Has intentado rastrear en otras interfaces para ver si se está comunicando saliente?
Thomas Ward
1
Ahora funciona. Tuve que correr wiresharkcon sudo. Muchas gracias
Salahuddin Ahmed

Respuestas:

17

tcpdump admite la captura UDP . ejemplo de uso:

tcpdump -n udp port 14550

Editar

Debido a sus aplicaciones se están comunicando con lo interfaz debe especificar la interfaz de la siguiente manera:

tcpdump -i lo -n udp port 14550

este comando solo imprime encabezados. si desea imprimir parte del paquete de datos en hexadecimal y ASCII, use esto:

tcpdump -i lo -n udp port 14550 -X

o si desea guardar paquetes en un archivo y ver su contenido en Wireshark, use esto:

tcpdump -i lo -n udp port 14550 -w packets.pcap
Ghasem Pahlavan
fuente
Intenté este comando pero no captura los paquetes. ¡Produce lo siguiente listening on wlo1, link-type EN10MB (Ethernet), capture size 262144 bytesy nada más!
Salahuddin Ahmed
@SalahuddinAshraf lo arreglé :)
Ghasem Pahlavan
Gracias, está funcionando ahora. Muestra el origen, el destino y la longitud de los datos transferidos. ¿Es posible hacer que muestre los datos transferidos?
Salahuddin Ahmed
@SalahuddinAshraf sí. debe agregar la opción -A a tcpdump para ver los datos. también puede enviar paquetes a un archivo y ver paquetes en Wireshark por-w packets.pcap
Ghasem Pahlavan
Pahlvan, genial. Ahora puedo ver los datos. ¿Es posible hacer que los datos se muestren en hexadecimal? Muchas gracias
Salahuddin Ahmed
1

Puedes usar ngrep . Ejemplo:

# 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
fuente