Eu tenho um arquivo com pacotes capturados por tcpdump
alguns dias. A partir desse arquivo, gostaria de ver os pacotes capturados em um período de tempo específico, abrangendo apenas algumas horas.
Eu sei que posso usar tcpdump -r
para ler pacotes de um arquivo. E posso usar todos os filtros usuais, como filtragem por protocolo e número da porta. Também sei que posso usar -c
para limitar quantos pacotes serão enviados. Mas isso não me permite pular vários pacotes desde o início.
Eu poderia usar tcpdump -tttt
e, em seguida, grep
para o intervalo de tempo em que estou interessado, mas no final gostaria de gravar os pacotes em um novo arquivo (menor) com -w
, e grep
não posso me ajudar com isso.
Existe alguma maneira de instruir tcpdump
a incluir apenas pacotes de um intervalo de tempo específico?
Existe uma ferramenta de linha de comando chamada
editcap
(parte da família wireshark) que pode filtrar arquivos pcap por intervalo de tempo. Há mais informações nas respostas a esta pergunta no StackOverflow:https://stackoverflow.com/questions/19952991/filter-a-pcap-dump-file-for-a-specific-time-range#19955700
Há também uma ferramenta chamada
logdissect
que pode filtrar a saída do terminal tcpdump e enviar para o formato de saída do terminal tcpdump, ou json (com alguns campos básicos como host de origem/destino, protocolo, datatestamp). Ele não pode produzir para pcap, infelizmente, mas se você não precisar da saída do pcap, ele pode filtrar por vários critérios diferentes. Ele está disponível no pip (instalador preferido do python) e no github com instruções de configuração.Apenas para fins de divulgação completa, escrevi logdissect. Normalmente não menciono meus próprios projetos aqui, mas pode ajudar nessa situação.