Generador de filtros tcpdump

Monta filtros tcpdump con bloques en lugar de memorizar la sintaxis BPF. Obtienes el comando listo para tcpdump, tshark o Wireshark, con una explicación en lenguaje claro.

Funciona por completo en el navegadorVerificado con libpcapGratis, sin registro

Ejemplos para empezar

Construir el filtro

Añade reglas, combínalas con Y/O e inviértelas con NO. Los grupos crean paréntesis.

Entender los filtros de tcpdump

tcpdump usa la sintaxis de filtros de libpcap, a menudo llamada sintaxis BPF (Berkeley Packet Filter). La misma sintaxis vale para los filtros de captura de Wireshark, tshark y dumpcap. Un filtro se compone de primitivas sencillas que se combinan con and, or y not.

Las primitivas: tipo, dirección, protocolo

tcp dst port 443
src net 10.0.0.0/8
ether host 00:11:22:33:44:55

Combinar y usar paréntesis

En libpcap, and y or tienen la misma precedencia y se evalúan de izquierda a derecha. Por eso a or b and c significa (a or b) and c. Usa paréntesis en cuanto mezcles ambos. En el generador, cada par de paréntesis sale de un grupo.

Pon siempre el filtro entre comillas simples; si no, la shell interpreta por su cuenta los paréntesis y los caracteres especiales:

sudo tcpdump -nn -i eth0 'host 10.0.0.5 and (port 80 or port 443)'

Filtrar flags TCP

Con tcp[tcpflags] accedes a los flags de la cabecera TCP. tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn solo captura el primer paquete de cada conexión: SYN activado, ACK desactivado. Esto solo funciona con IPv4, porque libpcap no encuentra la cabecera TCP detrás de las cabeceras de extensión de IPv6.

Filtros habituales

ObjetivoFiltro
Tráfico de un hosthost 192.168.1.10
Tráfico entre dos hostshost 10.0.0.5 and host 10.0.0.20
Web sin tu propia sesión SSH(port 80 or port 443) and not port 22
DNSport 53
DHCPudp portrange 67-68
Inicio de conexióntcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn
Conexiones reiniciadastcp[tcpflags] & tcp-rst != 0
Pingicmp[icmptype] == icmp-echo
Paquetes en la VLAN 100vlan 100 and host 10.1.1.1
Paquetes grandes (problemas de MTU)greater 1400

Consejos prácticos

FAQ

¿Cómo guardo una captura para Wireshark?

Indica un nombre de archivo en Opciones, en «Escribir en archivo (-w)», por ejemplo captura.pcap. tcpdump escribe entonces los paquetes en bruto en ese archivo, que puedes abrir directamente en Wireshark.

¿Por qué tcpdump muestra «syntax error»?

Casi siempre la shell interpreta los paréntesis o caracteres especiales porque el filtro no va entre comillas. Por eso el generador siempre pone el filtro entre comillas simples. Otras causas son erratas en las palabras clave o paréntesis sin cerrar.

¿El filtro funciona también en Wireshark?

Sí, como filtro de captura, porque Wireshark también usa libpcap para eso. Los filtros de visualización de Wireshark usan otra sintaxis, por ejemplo ip.addr == 10.0.0.5 en lugar de host 10.0.0.5.

¿Por qué mi filtro no encuentra nada en el tráfico VLAN?

Con una etiqueta VLAN, la cabecera IP se desplaza 4 bytes. Pon la regla VLAN al principio, por ejemplo vlan 100 and host 10.0.0.5. En algunos sistemas Linux la tarjeta de red quita la etiqueta antes; entonces no necesitas vlan.

¿Se envían mis datos a algún sitio?

No. El generador funciona por completo en tu navegador. El enlace para compartir guarda el filtro en la parte tras el #, y el navegador no envía esa parte al servidor.