2012-02-11 19 views
33

Quiero ejecutar tcpdump con algunos parámetros (Todavía no sé qué usar). A continuación, cargue la página this stackoverflow.com.Cómo capturar todos los paquetes HTTP usando tcpdump

La salida debe ser la comunicación HTTP. Más tarde quiero usarlo como un script de shell. Por lo tanto, cada vez que deseo 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. Como siguiendo.

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, ¿podría decirme qué opciones se debe utilizar con tcpdump para capturarlo.

+1

parece que "curl -v site.com" es lo que necesita. :) –

Respuesta

87

Se puede hacer por ngrep

ngrep -q -d eth1 -W byline host stackoverflow.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") 
+1

Nota: para aquellos que usan ngrep 1.45 instalado vía brew en OS X 10.9.x/Mavericks, puede causar "Error de segmentación: 11". jfarcand encontró una solución alternativa aquí: https://gist.github.com/jfarcand/8302675 y eso funciona para mí: 'ngrep -q -W byline -d en0 '' 'host some_hostname y el puerto 80''. –

+8

Thumbup para el arte ASCII. – neevek

19

Según lo que ha mencionado, ngrep (en Unix) y Fiddler (Windows) podrían ser soluciones mejores/más fáciles.

Si es absolutamente desea utilizar tcpdump, probar las siguientes opciones

 
tcpdump -A -vvv host destination_hostname 

-A (ascii) 
-vvv (verbose output) 
Cuestiones relacionadas