espressione del filtro tcpdump pacchetti POST

1

Sto provando a salvare solo pacchetti POST usando le espressioni di filtro tcpdump. Ho iniziato con 'tcp port 80' e ho trovato sul web un'espressione specifica per farlo.

tcpdump -i wlan0 -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'

Dove 0x504f5354 significa POST.

Funziona, ma quando si salvano i pacchetti invece di stamparli sullo standard output e di aprirli su Wireshark ottengo solo pochi pacchetti casuali. Ecco il mio comando,

tcpdump -i wlan0 -s 0 -A -w test.pcap 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'
    
posta autorun 12.08.2014 - 05:17
fonte

1 risposta

2

Non ho chiaro cosa intendi per "quando si salvano i pacchetti invece di stamparli sullo standard output e di aprirli su Wireshark".

Credo, tuttavia, che stai cercando di salvare i "dati POST" (che vivono al livello HTTP) mentre l'espressione specifica solo il primo pacchetto POST (che vive al livello TCP).

Se stai intercettando, diciamo, un pacchetto POST da 5Kb, è probabile che sia stato frammentato in tre o più pacchetti più brevi (con il payload di 1476, 1476, 1476 e 692 byte - numeri quasi a caso, non ho t controllato, ma tu vedi il mio significato). Di questi, solo il primo contiene effettivamente il comando POST HTTP, in modo che venga effettivamente intercettato.

E c'è di più. Il protocollo HTTP 1.1 consente di mantenere in vita la connessione e di eseguire il "pipelining" dei comandi in una singola connessione TCP in modo da salvare i problemi di handshake e di manutenzione dei socket. Quindi puoi avere tre comandi POST in una singola conversazione:     Dati POST1 ... Dati POST2 ... Dati POST3 ...

e ovviamente le probabilità che il primo POST venga pubblicato esattamente all'inizio di un pacchetto e che vengano catturate da Wireshark sono molto piccole.

Per acquisire correttamente i dati POST è necessario un proxy HTTP con funzionalità di acquisizione conversazione (o Firebug di Firefox, che è migliore per alcune applicazioni), e avere intero Stream HTTP analizzato e richieste POST catturate. Altrimenti avresti bisogno di una regexp complessa per PCAP tale da capire HTTP, il che, anche se fattibile (cosa che non sono troppo sicuro), sarebbe estremamente poco pratico.

    
risposta data 13.08.2014 - 15:11
fonte

Leggi altre domande sui tag