Extraer Campos de Paquetes en Tshark

WiresharkWiresharkBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo extraer campos específicos de paquetes del tráfico de red utilizando la herramienta de línea de comandos tshark de Wireshark. Practicará la selección de campos comunes como la dirección IP de origen (ip.src) y el puerto TCP (tcp.port), mientras domina el formato de salida con -T fields y separadores personalizados.

Los ejercicios lo guiarán a través de la captura de paquetes, la extracción de campos con la opción -e y la exportación de datos en formato CSV. Aprenderá a estructurar la salida para una mejor legibilidad y análisis, utilizando técnicas como la configuración del separador con -E separator=, y la redirección de la salida.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/export_packets -.-> lab-548927{{"Extraer Campos de Paquetes en Tshark"}} wireshark/packet_analysis -.-> lab-548927{{"Extraer Campos de Paquetes en Tshark"}} wireshark/commandline_usage -.-> lab-548927{{"Extraer Campos de Paquetes en Tshark"}} end

Seleccionar campos con -e ip.src -e tcp.port

En este paso, aprenderá cómo extraer campos específicos de capturas de paquetes de red utilizando la herramienta de línea de comandos tshark de Wireshark. Los paquetes de red contienen muchas piezas diferentes de información, y a menudo solo necesitamos analizar campos específicos para nuestro análisis. Aquí, nos centraremos en dos campos importantes: la dirección IP de origen (ip.src), que nos indica de dónde proviene el paquete, y el número de puerto TCP (tcp.port), que identifica el servicio o la aplicación específica que se está utilizando.

Primero, necesitamos algún tráfico de red de muestra con el que trabajar. El siguiente comando generará un tráfico web simple que podemos capturar:

curl -s http://example.com > /dev/null

Ahora, capturemos este tráfico utilizando tshark. El siguiente comando capturará 10 paquetes y los guardará en un archivo llamado sample.pcap. El formato .pcap es estándar para almacenar capturas de tráfico de red:

tshark -c 10 -w sample.pcap

Con nuestro archivo de captura listo, ahora podemos extraer solo los campos que nos interesan. El siguiente comando lee el archivo de captura y muestra solo las direcciones IP de origen y los puertos TCP:

tshark -r sample.pcap -T fields -e ip.src -e tcp.port

Desglosemos lo que hace cada parte de este comando:

  • -r sample.pcap le dice a tshark que lea de nuestro archivo de captura.
  • -T fields especifica que queremos la salida en formato de campos (en lugar de otros formatos como XML o JSON).
  • -e ip.src selecciona el campo de la dirección IP de origen.
  • -e tcp.port selecciona el campo del puerto TCP.

La salida aparecerá como valores separados por tabulaciones, donde cada línea representa un paquete y muestra primero la dirección IP de origen y luego el número de puerto:

192.168.1.1    443
192.168.1.2    80

Para facilitar el trabajo con estos datos, podemos guardar la salida en un archivo. Esto es especialmente útil cuando se trata de capturas grandes o cuando queremos procesar los datos adicionalmente:

tshark -r sample.pcap -T fields -e ip.src -e tcp.port > temp.txt
cat temp.txt

El símbolo > redirige la salida a un archivo, y cat nos permite ver el contenido de ese archivo. Este enfoque nos da un registro permanente de nuestros datos filtrados que podemos consultar más tarde o analizar con otras herramientas.

Establecer la salida en formato de campos con -T fields

En este paso, exploraremos cómo personalizar la salida de tshark para mostrar solo los campos específicos de paquetes que necesitamos. La opción -T fields transforma la visualización predeterminada de paquetes en un formato estructurado que es más fácil de procesar y analizar.

Cuando se ejecuta tshark por primera vez sin ninguna especificación de campos, muestra una vista completa pero a veces abrumadora de cada paquete:

tshark -r sample.pcap -c 3

Esta vista predeterminada incluye todos los detalles disponibles de los paquetes. Sin embargo, para un análisis enfocado, a menudo solo necesitamos algunas piezas clave de información. Aquí es donde entra en juego la extracción de campos. El siguiente comando demuestra cómo seleccionar campos específicos:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port

Desglosemos lo que hace cada parte de este comando:

  • -T fields le dice a tshark que queremos una salida basada en campos en lugar del resumen de paquetes predeterminado.
  • -e frame.number extrae la posición del paquete en el archivo de captura.
  • -e ip.src muestra de dónde proviene el paquete (dirección IP de origen).
  • -e ip.dst muestra hacia dónde se dirige el paquete (dirección IP de destino).
  • -e tcp.port revela qué puerto de red se está utilizando.

El resultado es una salida limpia y separada por tabulaciones que se ve así:

1    192.168.1.1    192.168.1.2    443
2    192.168.1.2    192.168.1.1    80

Este formato es especialmente útil cuando se necesita procesar los datos adicionalmente o importarlos a otras herramientas. Si no está seguro de qué campos están disponibles o necesita verificar los nombres de los campos, puede buscar en la lista completa:

tshark -G fields | grep -E 'ip.src|ip.dst|tcp.port'

Este comando le ayuda a descubrir todos los campos relacionados con las direcciones IP y los puertos TCP que es posible que desee incluir en su análisis.

Utilizar coma como separador con -E separator=

En este paso, aprenderemos cómo cambiar el separador de campos en la salida de tshark de tabulaciones a comas. Esta modificación es especialmente útil cuando se necesita importar los datos a aplicaciones de hojas de cálculo como Excel o analizarlos con herramientas que esperan el formato CSV (Comma-Separated Values, valores separados por comas).

Primero, repasemos el comando básico que usamos anteriormente y que produce una salida separada por tabulaciones. Esto nos ayuda a entender lo que estamos cambiando:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -c 3

Para convertir esta salida al formato CSV, usaremos la opción -E con separator=,. Esto le dice a tshark que use comas en lugar de tabulaciones entre los campos:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -E separator=, -c 3

Desglosemos lo que hace cada parte de este comando:

  • -E separator=, es la adición clave que cambia el separador a una coma.
  • Todas las demás opciones (-r, -T fields, -e fields, -c) funcionan exactamente como antes.
  • El orden de las opciones no importa siempre y cuando todas estén presentes.

Después de ejecutar este comando, verá una salida con el siguiente formato:

1,192.168.1.1,192.168.1.2,443
2,192.168.1.2,192.168.1.1,80
3,192.168.1.3,192.168.1.4,22

Para confirmar que el separador realmente ha cambiado a comas (especialmente útil si no puede distinguir visualmente las tabulaciones de los espacios), puede enviar la salida a od -c, que muestra los caracteres especiales:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -E separator=, -c 1 | od -c

Este paso de verificación ayuda a garantizar que la salida será interpretada correctamente por los lectores de CSV, lo cual es crucial cuando se preparan datos para su análisis en otras herramientas.

Exportar a un archivo con > fields.csv

En este paso, aprenderemos cómo guardar los datos de paquetes extraídos en un archivo CSV (Comma-Separated Values, valores separados por comas). CSV es un formato de archivo simple que almacena datos tabulares en texto plano, lo que lo hace perfecto para el análisis en aplicaciones de hojas de cálculo o herramientas de procesamiento de datos. Al guardar nuestros datos de paquetes en un archivo, creamos un registro permanente que se puede compartir, analizar o procesar más tarde.

Combinemos todo lo que hemos aprendido hasta ahora en un solo comando que extraiga múltiples campos de paquetes y los guarde en un archivo:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -E separator=, > fields.csv

A continuación, se explica lo que hace cada parte:

  • -r sample.pcap lee nuestro archivo de captura de paquetes.
  • -T fields le dice a Tshark que queremos una salida basada en campos.
  • Cada bandera -e especifica un campo a extraer (número de paquete, dirección IP de origen, dirección IP de destino y puerto).
  • -E separator=, establece la coma como nuestro separador de campos.
  • > fields.csv redirige la salida a un archivo en lugar de mostrarla en pantalla.

Después de ejecutar este comando, verifiquemos si nuestro archivo se ha creado correctamente:

ls -l fields.csv
head fields.csv

El comando ls -l muestra los detalles del archivo, mientras que head muestra las primeras líneas. Su salida debería verse algo así:

1,192.168.1.1,192.168.1.2,443
2,192.168.1.2,192.168.1.1,80
3,192.168.1.3,192.168.1.4,22

Para hacer estos datos más comprensibles, podemos agregar encabezados de columna. Así es como se crea un nuevo archivo con encabezados y se combina con nuestros datos:

echo "Packet,Source,Destination,Port" > headers.csv
cat headers.csv fields.csv > final.csv
mv final.csv fields.csv

Esto crea una nueva versión de nuestro archivo CSV con encabezados descriptivos en la parte superior, lo que hace que sea mucho más fácil trabajar con los datos en aplicaciones de hojas de cálculo.

Resumen

En este laboratorio, has aprendido cómo extraer campos específicos de paquetes utilizando la herramienta de línea de comandos tshark de Wireshark. Los ejercicios cubrieron la selección de campos con la bandera -e, el formato de la salida con -T fields y el guardado de los resultados en archivos para su análisis.

También practicaste la combinación de múltiples campos como frame.number, ip.src y tcp.port en salidas estructuradas. Estas técnicas permiten la transformación eficiente de los datos de paquetes sin procesar en formatos organizados adecuados para la resolución de problemas de red.