Pour surveiller le trafic HTTP entre un serveur et un serveur web, j'utilise actuellement tcpdump
. Cela fonctionne bien, mais j'aimerais me débarrasser de certaines données superflues dans la sortie (je connais tcpflow
et wireshark
, mais ils ne sont pas facilement disponibles dans mon environnement).
Depuis la page de manuel de tcpdump
:
Pour imprimer tous les paquets IPv4 HTTP vers et depuis le port 80, c'est-à-dire n'imprimer que les paquets contenant des données, et non, par exemple, les paquets SYN et FIN et les paquets ACK uniquement.
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Cette commande
sudo tcpdump -A 'src example.com and tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
fournit la sortie suivante:
19:44:03.529413 IP 192.0.32.10.http > 10.0.1.6.52369: Flags [P.], seq 918827135:918827862, ack 351213824, win 4316, options [nop,nop,TS val 4093273405 ecr 869959372], length 727
E.....@....... ....P..6.0.........D...... __..e=3...__HTTP/1.1 200 OK Server: Apache/2.2.3 (Red Hat) Content-Type: text/html; charset=UTF-8 Date: Sat, 14 Nov 2009 18:35:22 GMT Age: 7149
Content-Length: 438Example Web Page
You have reached this web page ...
C'est presque parfait, sauf pour la partie surlignée. Qu'est-ce que c'est, et surtout, comment m'en débarrasser? Peut-être que c'est juste un petit ajustement à l'expression à la fin de la commande?