O ngrep é muito útil para isso. Algo tão simples quanto
ngrep -W byline port 80
funcionaria, mas você também pode filtrar o conteúdo das solicitações (daí a parte grep do nome) e imprimir a carga do pacote:
ngrep -W byline some_string port 80
Eu preciso ver como um aplicativo está enviando e recebendo tráfego através de um protocolo http que comunica em localhost (ele tem uma porta incorporada codificada com .gz) Tenho certeza que é algum XML que ele envia e recebe, mas eu quero farejá-lo e analisá-lo
Isso é possível de alguma forma com o Tcpdump? lá eu posso ver apenas que ele se conecta, mas não o envio real de receber
O ngrep é muito útil para isso. Algo tão simples quanto
ngrep -W byline port 80
funcionaria, mas você também pode filtrar o conteúdo das solicitações (daí a parte grep do nome) e imprimir a carga do pacote:
ngrep -W byline some_string port 80
Se você quiser usar o tcpdump, um comando como este tcpdump -s 0 -A -qn filters
deve dar o que você deseja. O -s 0
define o tamanho do pacote e -A
dumps ascii. Em vez de -A
, você também pode gostar de -X
, que fornecerá a saída em um formato de estilo hexdump.
Você também pode usar o wireshark, e quando terminar de capturar, basta clicar com o botão direito do mouse em um dos pacotes e selecionar o 'Follow TCP Stream'.
Eu fiz muito disso com o wireshark. Sniff o tráfego que eu quero com o tcpdump, enviá-lo para algum lugar eu posso lançar o Wireshark e, em seguida, ver o traço com o Wireshark. Rastrear a sessão TCP me fornece a solicitação e responde em um formato ASCII agradável. Funciona bem.