network android http tcp tcpdump

network - tcpdump android



¿Puedo usar tcpdump para obtener solicitudes HTTP, encabezado de respuesta y cuerpo de respuesta? (3)

Estoy usando tcpdump para obtener datos HTTP ejecutando el siguiente comando:

sudo tcpdump -A -s 1492 dst port 80

El resultado del comando anterior:

  1. Encabezados, creo que los encabezados de solicitud y respuesta.
  2. Datos ilegibles.
  3. La URL GET /modules/mod_news_pro_gk1/cache/stories.ilbalad.ajayeb.strange-tractor.jpg .

Necesito un resultado más claro, por ejemplo, solicitud legible> encabezado de respuesta> cuerpo de respuesta, etc. ¿Cómo puedo filtrar mis resultados?


Aquí hay otra opción: Chaosreader

Por lo tanto, debo depurar una aplicación que envía xml a una aplicación de terceros. Encontré una pequeña secuencia de comandos brillante de Perl que hace todo el trabajo duro - usted simplemente tira un archivo de salida de tcpdump, y hace toda la manipulación y saca todo lo que necesita ...

El script se llama chaosreader0.94. Ver http://www.darknet.org.uk/2007/11/chaosreader-trace-tcpudp-sessions-from-tcpdump/

Funcionó como un regalo, hice lo siguiente:

tcpdump host www.blah.com -s 9000 -w outputfile; perl chaosreader0.94 outputfile


Hay filtros tcpdump para HTTP GET y HTTP POST (o para ambos, además del cuerpo del mensaje):

  • Ejecutar man tcpdump | less -Ip examples man tcpdump | less -Ip examples para ver algunos ejemplos

  • Aquí hay un filtro tcpdump para HTTP GET:

    sudo tcpdump -s 0 -A ''tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420''

  • Aquí hay un filtro tcpdump para HTTP POST:

    sudo tcpdump -s 0 -A ''tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)''

  • Supervise el tráfico HTTP, incluidos los encabezados de solicitud y respuesta, y el cuerpo del mensaje ( source ):

    tcpdump -A -s 0 ''tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'' tcpdump -X -s 0 ''tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)''

Para obtener más información sobre el intercambio de bits en el encabezado TCP, consulte: Generador de filtros de captura de cadenas (enlace a la explicación de Sake Blok).


Yo recomendaría usar Wireshark , que tiene una opción "Seguir ruta TCP" que hace que sea muy fácil ver las solicitudes y respuestas completas para una conexión TCP particular. Si prefiere usar la línea de comando, puede probar tcpflow , una herramienta dedicada a capturar y reconstruir el contenido de las transmisiones TCP.

Otras opciones serían usar un proxy de depuración HTTP, como Charles o Fiddler como sugiere EricLaw. Estos tienen la ventaja de tener soporte específico para HTTP para facilitar el tratamiento de varios tipos de codificaciones y otras funciones como guardar solicitudes para reproducirlas o editar solicitudes.

También puede usar una herramienta como Firebug (Firefox), Web Inspector (Safari, Chrome y otros navegadores basados ​​en WebKit), o Opera Dragonfly , todos los cuales proporcionan cierta capacidad para ver los encabezados y cuerpos de solicitud y respuesta (aunque la mayoría de ellos no le permiten ver el flujo de bytes exacto, sino cómo los navegadores analizaron las solicitudes).

Y finalmente, siempre puede construir solicitudes a mano, utilizando algo como telnet, netcat o socat para conectarse al puerto 80 y escribir la solicitud manualmente, o una herramienta como htty para ayudar a construir fácilmente una solicitud e inspeccionar la respuesta.