Tshark es la versión de terminal de Wireshark. Permite capturar tráfico, aplicar filtros, abrir capturas, etc. La ventaja de ser una aplicación de terminal es que permite que se puedan hacer scripts con esta herramienta.

Para aplicar un filtro con tshark desde la terminal:

tshark -Y <filter> -r <capture>

El filtro para este tráfico en particular junto con tshark:

tshark -Y 'http and http.request.method == GET and http.request.full_uri contains "www.hardfloat.es"' -r capture

Que devuelve:

   10   0.171128 192.168.1.134 → 172.104.241.7 HTTP 145 GET / HTTP/1.1

Un uso recurrente que le doy a esta herramienta es la de buscar capturas que contengan un tipo de tráfico en particular. Por ejemplo, dado un directorio con capturas, cuál de ellas tienen peticiones GET HTTP a hardfloat.com.

Con poder aplicar el filtro ya nos soluciona bastantes problemas, solo tenemos que hacer un pequeño script que nos devuelva el nombre de la captura en caso de que el filtro devuelva un resultado. Nombrando al fichero find_captures.sh:

#!/bin/bash
WFILTER=$1
CAPTURE_FILE=$2

OUTPUT=$( tshark -Y "$WFILTER" -r $CAPTURE_FILE )
if [ ! -z "$OUTPUT" ]
then
    echo $CAPTURE_FILE
fi

Y el script completo:

find <capture dir> -name '*.cap' -exec ./find_capture.sh 'http and http.request.method == GET and http.request.full_uri contains "www.hardfloat.es"' {} \;