Per monitorare il traffico HTTP tra un server e un server Web, attualmente sto utilizzando tcpdump
. Funziona bene, ma mi piacerebbe sbarazzarmi di alcuni dati superflui nell'output (lo so tcpflow
e wireshark
, ma non sono prontamente disponibili nel mio ambiente).
Dalla tcpdump
pagina man:
Per stampare tutti i pacchetti HTTP IPv4 da e verso la porta 80, ovvero stampare solo pacchetti che contengono dati, non, ad esempio, pacchetti SYN e FIN e pacchetti solo ACK.
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Questo comando
sudo tcpdump -A 'src example.com e la porta tcp 80 e (((ip [2: 2] - ((ip [0] & 0xf) << 2)) - ((tcp [12] & 0xf0) >> 2) )! = 0) '
fornisce il seguente output:
19: 44: 03.529413 IP 192.0.32.10.http> 10.0.1.6.52369: Flags [P.], seq 918827135: 918827862, ack 351213824, win 4316, opzioni [nop, nop, TS val 4093273405 ecr 869959372], lunghezza 727
E ..... @ ....... .... P..6.0 ......... D ...... __ .. e = 3 ...__ HTTP / 1.1 200 OK Server: Apache / 2.2.3 (Red Hat) Tipo di contenuto: text / html; charset = UTF-8 Data: sab, 14 nov 2009 18:35:22 GMT Età: 7149
Lunghezza contenuto: 438<HTML> <HEAD> <TITLE> Esempio di pagina Web </TITLE> </HEAD> <body>
<p> Hai raggiunto questa pagina web ... </p> </BODY> </HTML>
Questo è quasi perfetto, tranne per la parte evidenziata. Cos'è, fine - ancora più importante - come posso liberarmene? Forse è solo una piccola modifica dell'espressione alla fine del comando?