tcpdump: pacchetto di decodifica a partire da offset non diverso da zero

Sto eseguendo il debug di una piattaforma embedded Linux che dispone di un'interface in cui i frame regolari ethernet dispongono di un'ulteriore intestazione di piattaforma da 82 octet attaccata sul davanti. Sono in grado di sniff da questa interface utilizzando tcpdump, ma tcpdump non è in grado di decodificare in modo appropriato perché le intestazioni ethernet non stanno iniziando where li aspetti. Quindi tutto quello che vedo è un esadecimale con l'opzione -x, ma per comodità vorrei che tcpdump li decodesse. Non mi interessa il contenuto dell'intestazione di 82 octet, ma vorrei vedere un decodificatore del successivo canvasio ethernet incapsulato.

C'è un modo per sapere a tcpdump di iniziare a decodificare l'intestazione ethernet, iniziando 82 offset di ottetti dall'inizio del pacchetto catturato, piuttosto che i soliti ottetti 0?

  • Che cos'è il mdev e come i nodes / dev / * vengono creati in Linux?
  • Come posso elencare tutti gli utenti con root?
  • File system che scarta le incoerenze all'avvio
  • Creare un file solo se esiste la directory?
  • Possibile aggiornare sempre all'ultimo pacchetto PPA?
  • File di mapping di memory per un webserver veloce in Linux
  • Come fare un repo statico RHEL per un rilascio specifico
  • Sendmail SMART_HOST non funziona
  • Formattare il traffico in output per controllare le velocità di download con Linux
  • buone failover / soluzioni di alta disponibilità per linux?
  • yum + elenca tutti gli aggiornamenti di protezione disponibili senza installarli, su redhat 5?
  • Come distriggersre tutto in crontab -l?
  • 2 Solutions collect form web for “tcpdump: pacchetto di decodifica a partire da offset non diverso da zero”

    Non diverso dalla modifica della sorgente tcpdump.

    Se vuoi farlo, suggerisco di utilizzare uno dei valori DLT_USERn DLT_ / LINKTYPE_ per quel dispositivo o get uno assegnato ufficialmente da tcpdump.org, hacking libpcap per restituire quel valore DLT_ per questi dispositivi e hacking tcpdump a decodificare che saltando (o decodificando, se utile) l'intestazione della piattaforma 82-ottetto.

    Mi sono imbattuto in questo nuovo, dimenticandomi di aver fatto questa domanda ma il google mi ha portto subito qui :).

    Ho capito una soluzione per questo se ti capita di avere editcap (da wireshark) disponibile. Non è necessaria alcuna modifica del codice sorgente:

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

    La prima invocazione tcpdump cattura i pacchetti e li deposita nel formato pcap in un pipe. editcap poi scompiglia 82 byte dall'inizio di each pacchetto nel stream di pacchetti pcap. Quindi l'invocazione finale di tcpdump legge il stream di pacchetti di pcap e lo separa come normale.

    Si noti che i tubi provocano una buona quantità di buffer, quindi l'output non è necessariamente immediato. tcpdump ha l'opzione -l per buffering orientata in linea, ma anche con stdbuf -i0 -o0 non sono riuscito a rimuovere completamente il buffering. YMMV.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.