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 

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.