Atualmente, faço isso para ler um arquivo de captura de rede:
tshark -r myfile icmp
Imprime apenas pacotes ICMP, que é um protocolo sobre IP (não UDP ou TCP).
Mas myfile
é um arquivo grande com muito tráfego HTTP. Descobri que tshark
demora muito para processar esse arquivo, e o motivo é parcialmente porque ele processa todos os pacotes TCP completamente, até mesmo dissecando os dados HTTP. Eu percebi isso porque imprime mensagens de erro relacionadas à dissecação HTTP.
Desde que eu sei que os pacotes ICMP que eu quero nunca estão dentro do TCP, eu tentei estes:
tshark -r myfile 'not tcp and icmp'
tshark -r myfile -2 -R 'not tcp' icmp
Mas o tshark ainda disseca os pacotes HTTP (mais uma vez eu sei disso porque vejo mensagens de erro do dissector HTTP).
Eu quero economizar tempo (e evitar falhas devido a erros de dissecção) por não dissecar protocolos de nível superior quando um protocolo de nível inferior não corresponder.
Estou ciente de que eu poderia dividir meus arquivos de captura por protocolo, mas isso não é tão prático, porque as coisas exatas que eu quero ver não são conhecidas de antemão.
Eu também tentei a opção -O
para ativar dissectores específicos, mas isso faz com que tshark
imprima detalhes completos de várias linhas para cada pacote, o que não é o que eu quero.
Como posso fazer com que tshark
ignore os pacotes de dissecação de protocolos específicos de nível inferior?
Estou usando o tshark 1.10.6, mas eu poderia usar versões mais novas, se necessário.