2012-01-18 11 views
8

Dado un archivo pcap, puedo extraer mucha información de la solicitud HTTP reconstruida y las respuestas usando el neat filters provided by Wireshark. También he podido split the pcap file into each TCP stream.¿Cómo uso tshark para imprimir pares de solicitud-respuesta desde un archivo pcap?

Problema que me encuentro ahora es que de todos los filtros geniales que puedo usar con tshark, no puedo encontrar uno que me permita imprimir cuerpos completos de solicitud/respuesta. Voy a llamar a algo como esto:

tshark -r dump.pcap -R "tcp.stream==123 and http.request" -T fields -e http.request.uri 

¿Hay alguna Filtro me puede pasar a -e para conseguir el cuerpo de solicitud/respuesta? Lo más cerca que he llegado es usar el indicador -V, pero también imprime una gran cantidad de información que no necesito y quiero evitar tener que salir con un filtro "tonto".

+0

¿Cuál fue el snarflen de la captura original. Si no recopiló el paquete completo, probablemente tenga los datos. –

+0

Las capturas estaban bien. El MTU en la interfaz que utilicé fue 1514 e hice una captura de 1600. Abrí el pcap en Wireshark y puedo obtener pares individuales de solicitud-respuesta como transmisiones; Solo estaba buscando una forma de escribir contra eso. –

+0

Genial: descartando la más obvia –

Respuesta

7

Si está dispuesto a cambiar a otra herramienta, tcptrace can do this con la opción -e. También tiene una extensión de análisis HTTP (opción xHTTP) que genera los pares solicitud/repsonse HTTP para cada flujo TCP.

Aquí está un ejemplo de uso:

tcptrace --csv -xHTTP -f'port=80' -lten capturefile.pcap 
  • --csv al formato de salida como variable de coma sperated
  • -xHTTP de solicitud/respuesta HTTP escrito a 'http.times' esto también enciende -e para volcar las cargas útiles de transmisión TCP, por lo que realmente no necesita -e también
  • -f'port = 80 ' para filtrar o ut tráfico
  • -l no web para la forma larga de salida
  • -t no me quiere progresar indicación
  • -n para desactivar la resolución de nombres (mucho más rápido sin este)
+0

Utilicé tcptrace. Es bastante prometedor. ¡Gracias! Por alguna extraña razón, el uso de 'tcptrace -e my.dump' no separa las solicitudes correctamente. Sospecho que este es solo un caso de que estoy haciendo algo mal, ya que Wireshark hace la misma división, así que lo examinaré un poco más. Si tuviera un solo trazo en la parte superior de su cabeza para extraer pares de solicitud-respuesta de un archivo pcap estándar (lamentablemente con un puñado de paquetes cortados), soy todo oídos :). –

+0

agregó un ejemplo: esto funciona para mí, pero estoy seguro de que se encontrará con problemas si tiene paquetes truncados – rupello

0

puedo utilizar esta línea para mostrar el pasado 10 segundos cuerpo de la petición y la respuesta del cuerpo (https://gist.github.com/diyism/eaa7297cbf2caff7b851):

sudo tshark -a duration:10 -w /tmp/input.pcap;for stream in `sudo tshark -r /tmp/input.pcap -R "tcp and (http.request or http.response) and !(ip.addr==192.168.0.241)" -T fields -e tcp.stream | sort -n | uniq`; do sudo tshark -q -r /tmp/input.pcap -z follow,tcp,ascii,$stream; done;sudo rm /tmp/input.pcap 
2

Si capturó un archivo pcap, puede hacer lo siguiente para mostrar todas las solicitudes + respuestas.

filename="capture_file.pcap" 
for stream in `tshark -r "$filename" -2 -R "tcp and (http.request or http.response)" -T fields -e tcp.stream | sort -n | uniq`; do 
    echo "==========BEGIN REQUEST==========" 
    tshark -q -r "$filename" -z follow,tcp,ascii,$stream; 
    echo "==========END REQUEST==========" 
done; 

acabo de hacer diyism responder un poco más fácil de entender (que no es necesario sudo, y el guión de varias líneas es imo simple de mirar)

Cuestiones relacionadas