Detectar pacotes UDP em uma porta local

12

Gostaria de saber qual é o conteúdo de um pacote que um aplicativo "APM Planner" envia para outro "MAVProxy". Eu sei que eles estão se comunicando pela porta UDP 14550. Tentei usar o tcpdump executando os seguintes comandos

tcpdump -u port 14550

e

tcpdump udp

e

netstat -uanpc | grep 14550

mas nenhum deles me mostrou o que esses dois aplicativos realmente trocam. Preciso de algo como cutecom para monitorar a conexão UDP. Existe algo assim? Quando executo o comando

netstat -lnpuc

, mostra o seguinte entre sua saída

udp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2 
Salahuddin Ahmed
fonte
Você já considerou o programa GUI chamado wireshark? Ele dissecará os pacotes e mostrará as informações enviadas por cada um, e você poderá usar udp.port == 14550ou semelhante como o comando de filtragem para mostrar apenas esse tráfego. O problema é que você terá que reunir o que está indo e vindo com base no conteúdo do pacote. Mas parece que, em última análise, é isso que você deseja fazer ... (Apenas cheire a lointerface se fizer isso - esse é o intervalo 'local' 127. *. *. * E o IPv6 local internamente em seu sistema)
Thomas Ward
Obrigado por seu comentário. Eu instalei o Wireshark e digitado udp.port == 14550no Apply a display filterarquivado, mas nada apareceu. Eu também tentei udp port 14550no Enter a capture filtercampo. Além disso, quando eu executar o comando netstat -lnpuc, ele mostra o seguinte entre a sua saídaudp 5376 0 0.0.0.0:14550 0.0.0.0:* 23598/apmplanner2
Salahuddin Ahmed
Parece-me que não é necessariamente ouvir localmente. você tentou rastrear outras interfaces para ver se está se comunicando de saída?
Thomas Ward
11
Agora está funcionando. Eu tive que correr wiresharkcom sudo. Muito obrigado
Salahuddin Ahmed

Respostas:

17

O tcpdump suporta captura UDP . exemplo de uso:

tcpdump -n udp port 14550

Editar

Como seus aplicativos estão se comunicando com a interface lo , você deve especificar uma interface como esta:

tcpdump -i lo -n udp port 14550

este comando imprime apenas cabeçalhos. se você deseja imprimir parte dos dados do pacote em hexadecimal e ASCII, use este:

tcpdump -i lo -n udp port 14550 -X

ou se você quiser salvar pacotes em um arquivo e ver seu conteúdo no Wireshark, use o seguinte:

tcpdump -i lo -n udp port 14550 -w packets.pcap
Ghasem Pahlavan
fonte
Eu tentei este comando, mas ele não captura os pacotes. Ele produz o seguinte listening on wlo1, link-type EN10MB (Ethernet), capture size 262144 bytese nada mais!
Salahuddin Ahmed
@SalahuddinAshraf I fix it :)
Ghasem Pahlavan
obrigado, está funcionando agora. Ele exibe a origem, o destino e o comprimento dos dados transferidos. É possível exibir os dados transferidos?
Salahuddin Ahmed
@SalahuddinAshraf yes. você deve acrescentar a opção -A ao tcpdump para ver os dados. Também é possível enviar pacotes para um arquivo e ver pacotes no Wireshark por-w packets.pcap
Ghasem Pahlavan
Pahlvan, ótimo. Agora eu posso ver os dados. É possível tornar os dados exibidos em hexadecimal? Muito obrigado
Salahuddin Ahmed
1

Você pode usar o ngrep . Exemplo:

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