como programar o tcpdump para capturar apenas pacotes e nada mais

0

Estou desenvolvendo um programa em que um arquivo .pcap será uma entrada. No entanto, quando eu executo o tcpdump -w someFile.pcap, no Terminal, o arquivo .pcap captura dados extras, como timestamp, microssegundos, tamanho do quadro, etc.
Esses dados extras estão atrapalhando o meu programa e eu queria saber se havia uma maneira de o tcpdump capturar pacotes brutos e nada mais. Por exemplo, o primeiro Byte de dados no .pcap deve ser "Destination Address" do cabeçalho Ethernet em vez de algum timestamp.
Obrigado!

    
por Sam 14.06.2017 / 08:27

1 resposta

1

Parece que você está interessado apenas nos bytes brutos que compõem cada pacote. Assumindo isso, você pode tentar algo como:

tcpdump -r someFile.pcap -xx | grep -P "^\t0x"

Como você pode ver na página tcpdump man , isso fará com que tcpdump leia o arquivo de captura e "além de imprimir os cabeçalhos de cada pacote, imprimir os dados de cada pacote, incluindo o cabeçalho do nível de link, em hexadecimal." Piping a saída para grep cuida de remover a linha de resumo. Talvez haja uma maneira de instruir tcpdump não a imprimir a linha de resumo, mas, se houver, não consegui encontrá-la. Em qualquer caso, neste ponto, você só precisa processar a saída hexadecimal.

Você também pode conseguir isso com mais facilidade, usando tshark de tcpdump . Por exemplo:

tshark -r icmp.pcap -x

Os formatos de saída de tcpdump e tshark diferem em como os valores hexadecimais são exibidos e agrupados, e se a representação ASCII dos bytes hexadecimais está presente ou não seguindo os valores hexadecimais, então você provavelmente terá experimentar para ver qual formato você gosta melhor ou é mais fácil para o seu programa analisar.

    
por 14.06.2017 / 23:03