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:
- Encabezados, creo que los encabezados de solicitud y respuesta.
- Datos ilegibles.
- 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 ejemplosAquí 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.