Como faço para o tcpdump não imprimir os cabeçalhos tcp?

28

Eu tentei isso:

tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'

Eu preciso apenas da parte ascii disso. Como faço para remover o resto?

codificador
fonte
1
com o tshark você pode fazer isso com: tshark -l -i eth0 -f 'porta 6667 e maior 74' -T field -e data
Marcin
Diz 28 pacotes capturados, mas não imprime nada para STDOUT.
Codificador
Você quer dizer ASCII7?
Mircea Vutcovici

Respostas:

15

Como Josh sugere, o tcpflow pode imprimir apenas os dados do pacote TCP em um arquivo ou STDOUT. Você pode canalizar o tcpdump para o tcpflow assim:

tcpdump -i lo -l -w - port 23 | tcpflow -C -r -

Para visualizar apenas um lado da conversa, você pode usar filtros para o tcpdump, por exemplo dst port 23.

jwmullally
fonte
4
Por que você precisaria iniciar tcpflowcomo root?
Ruslan
5

Não tenho certeza sobre a sintaxe exata de tcpdump... de fato, marquei esta pergunta como favorita porque gostaria de saber! Mas como uma solução alternativa, você pode tentar usar tcpflow. Funciona essencialmente da mesma maneira, mas imprime muito melhor a saída ASCII; ele excluiu os cabeçalhos e imprimiu os pacotes sequencialmente como um fluxo, por isso é mais fácil ler e seguir às vezes do que tcpdump.

Josh
fonte
5

Eu sinto que a solução mais elegante é apenas abandonar o tcpdump. Nenhum tubo de qualquer tipo:

tcpflow -c port 6667

E é isso.

BarsMonster
fonte
Você salvou minha vida, quero comprar um biscoito para você
gdaras
4

Uma maneira rápida e suja de fazer isso é filtrar a saída através de strings:

tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings

Às vezes, você não tem outras ferramentas e, para dar uma olhada rápida na carga, isso é suficiente. Não é bom se você precisar da carga exata para injeção ou de uma análise exata, é claro.

Eduardo Ivanec
fonte
1

Se você precisar apenas da parte ASCII, poderá usar: tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'ou com o ngrep:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'

Mircea Vutcovici
fonte
1

Eu tive o mesmo problema na semana passada - usei o wireshark gui e fiz uma "cópia ascii legível" para os pacotes interessantes.

Eu estava (com êxito) tentando identificar um problema com uma solicitação http para um serviço da Web e sua resposta XML.

Nils
fonte