tcpdump: pacote de decodificação a partir do deslocamento diferente de zero

3

Eu estou depurando uma plataforma Linux embutida que tem uma interface onde os quadros Ethernet regulares têm um cabeçalho de plataforma de 82 octetos adicionais preso na frente. Eu sou capaz de farejar essa interface usando o tcpdump, mas o tcpdump não é capaz de decodificar utilmente porque os cabeçalhos da ethernet não estão começando onde eles esperam. Assim, tudo o que vejo é um hex dump com a opção -x, mas por conveniência gostaria que o tcpdump os decodificasse. Eu não estou interessado no conteúdo do cabeçalho de 82 octetos, mas gostaria de ver um decodificador do quadro Ethernet encapsulado subseqüente.

Existe uma maneira que eu possa dizer ao tcpdump para começar a decodificar o cabeçalho da ethernet iniciando 82 octetos fora do início do pacote capturado, ao invés dos 0 octetos?

    
por Digital Trauma 31.07.2014 / 23:59

2 respostas

1

Eu me deparei com isso novamente, esquecendo que fiz essa pergunta, mas o google me trouxe de volta aqui:).

Eu descobri uma solução alternativa para isso se você tiver editcap (de wireshark) disponível. Nenhuma alteração no código-fonte é necessária:

tcpdump -i eth0 -w - | editcap -C 82 - - | tcpdump -r -

A primeira chamada tcpdump captura os pacotes e os envia em formato pcap para um pipe. O editcap corta 82 bytes do início de cada pacote no fluxo de pacotes pcap. Então a invocação final do tcpdump lê o fluxo do pacote pcap e o disseca normalmente.

Note que os pipes causam uma boa quantidade de buffer, então a saída não é necessariamente imediata. O tcpdump tem a opção -l para buffering orientado a linha, mas mesmo com stdbuf -i0 -o0 eu não consegui remover o buffer completamente. YMMV.

    
por 04.06.2015 / 07:25
2

Não é diferente de modificar a fonte tcpdump.

Se você quiser fazer isso, sugiro usar um dos valores DLT_USERn DLT_ / LINKTYPE_ para esse dispositivo ou obter um atribuído oficialmente pelo tcpdump.org, hackeando a libpcap para retornar esse valor DLT_ para esses dispositivos e hackear o tcpdump para decodificar isso pulando (ou decodificando, se for útil) o cabeçalho da plataforma de 82 octetos.

    
por 01.08.2014 / 01:56

Tags