¿Puedo usar tcpdump para obtener peticiones HTTP, encabezado de respuesta y cuerpo de respuesta?
Estoy utilizando tcpdump
para obtener datos HTTP ejecutando el siguiente comando:
sudo tcpdump -A -s 1492 dst port 80
El resultado del comando anterior:
- Envío de datos TCP desde Android (como cliente) - ¿no se envían datos?
- No se puede usar ServerSocket en Android
- Aplicación de depuración que utiliza ADB sobre Bluetooth para un netbook Android-x86
- Android VpnService - ¿Cómo reenviar el tráfico interceptado de Internet?
- La mejor manera de evitar los efectos del algoritmo Nagle usando webSockets?
- Encabezados, creo que la solicitud y la respuesta de encabezados.
- 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> cabecera de respuesta> cuerpo de respuesta, etc. ¿Cómo puedo filtrar mis resultados?
- Cómo configurar el tiempo de espera keepalive en Android?
- Cómo iniciar servidor de adb sobre tcp mediante programación
- No se puede conectar Android ADB a TCP / IP
- Conexión TCP de Android (varios clientes)
- ¿Qué puerto debo usar para la transferencia de paquetes TCP
- La mejor estrategia de comunicación entre el cliente de Android y el servidor de .Net C #
- React-native-tcp no funciona en Android 7+
- Mensajería instantánea sobre xmpp o websocket
Hay filtros tcpdump para HTTP GET y HTTP POST (o para ambos más el 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)'
-
Supervisar el tráfico HTTP incluyendo los encabezados de solicitud y respuesta y el cuerpo del mensaje ( fuente ):
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 más información sobre el bit-twiddling en el encabezado TCP, vea: String-Matching Capture Filter Generator (enlace a la explicación de Sake Blok).
Yo recomendaría el uso de Wireshark , que tiene una opción "Follow TCP Stream" que hace que sea muy fácil ver las peticiones y respuestas completas para una conexión TCP particular. Si prefiere usar la línea de comandos, puede probar tcpflow , una herramienta dedicada a capturar y reconstruir el contenido de las corrientes TCP.
Otras opciones serían usar un proxy de depuración de HTTP, como Charles o Fiddler como sugiere EricLaw. Éstos tienen la ventaja de contar con soporte específico para HTTP para facilitar el tratamiento de varios tipos de codificaciones y otras funciones como guardar solicitudes para reproducirlas o modificar solicitudes.
También puede utilizar una herramienta como Firebug (Firefox), Web Inspector (Safari, Chrome y otros navegadores basados en WebKit), o Opera Dragonfly , todos los cuales ofrecen alguna capacidad de ver la solicitud y los encabezados y cuerpos de respuesta (aunque la mayoría de Ellos no te permiten ver la secuencia exacta de bytes, sino cómo los navegadores analizaron las peticiones).
Y finalmente, siempre puede crear peticiones 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.
Aquí hay otra opción: Chaosreader
Así que tengo que depurar una aplicación que publica xml a una aplicación de terceros. He encontrado un pequeño perl script brillante que hace todo el trabajo duro – que acaba de tirar un archivo de salida tcpdump, y hace toda la manipulación y salidas de 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 una delicia, hice lo siguiente:
tcpdump host www.blah.com -s 9000 -w outputfile; perl chaosreader0.94 outputfile