bash - tutorial - Cómo capturar todos los paquetes HTTP usando tcpdump
tcpdump tutorial (3)
En función de lo que ha mencionado, ngrep (en Unix) y Fiddler (Windows) podrían ser soluciones mejores / más fáciles.
Si desea usar tcpdump, pruebe las siguientes opciones
tcpdump -A -vvv host destination_hostname -A (ascii) -vvv (verbose output)
Quiero ejecutar tcpdump
con algunos parámetros (aún no sé qué usar), luego cargar la página stackoverflow.com.
La salida debe ser la comunicación HTTP. Más tarde, quiero usarlo como script de shell, así que cuando quiera verificar la comunicación HTTP de un sitio site.com, solo puedo ejecutar script.sh site.com
.
La comunicación HTTP debería ser lo suficientemente simple. Me gusta esto:
GET /questions/9241391/how-to-capture-all-the-http-communication-data-using-tcp-dump
Host: stackoverflow.com
...
...
HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Length: 35061
Content-Type: text/html; charset=utf-8
Expires: Sat, 11 Feb 2012 15:36:46 GMT
Last-Modified: Sat, 11 Feb 2012 15:35:46 GMT
Vary: *
Date: Sat, 11 Feb 2012 15:35:45 GMT
....
decoded deflated data
....
Ahora, ¿qué opciones debería usar con tcpdump
para capturarlo?
Se puede hacer por ngrep
ngrep -q -d eth1 -W byline host .com and port 80
^ ^ ^ ^
| | | |
| | | |
| | | v
| | | filter expression
| | |
| | +--> -W is set the dump format ("normal", "byline", "single", "none")
| |
| +----------> -d is use specified device instead of the pcap default
|
+-------------> -q is be quiet ("don''t print packet reception hash marks")
tcpdump -i eth0 -w dump3.pcap -v ''tcp and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)''