Estoy buscando reducir tcpdump
la longitud de mi paquete. Sé que puedo `| grep pero me preguntaba si puedo pasar esta longitud de paquete en particular como una opción en 'tcpdump'. Estoy intentando escribir un script para mostrarme toda la multidifusión MPEG-TS presente en la red usando el siguiente comando:
sudo tcpdump -c 1000 -ti <network_interface> multicast | grep 1316 | sort | uniq
Entonces este comando funciona y me da exactamente el resultado que quiero, pero estaba pensando que podría simplificarlo pasando la longitud en el tcpdump
comando, algo como:
sudo tcpdump -c 1000 -ti <network_interface> multicast and length 1316 | sort | uniq
Respuesta1
Tamaño total del paquete Ethernet
De acuerdo afiltro pcap (7), puede utilizar las siguientes condiciones:
less length
, equivalente alen <= length
greater length
, equivalente alen >= length
Según los ejemplos, también debería poder utilizar , pero eso no está documentado.
len == length
Tenga en cuenta que esto incluye los encabezados de la capa de enlace y de la capa de red (es decir, todo lo que se capturó), por lo que un TCP ACK vacío tendrá un campo de "longitud total" de IP de 60, pero se considerará como 74 bytes en total.
Vea también este hilo de StackOverflow:https://stackoverflow.com/questions/9874093/how-to-filter-tcpdump-output-based-on-packet-length
Tamaño total del paquete IP
De acuerdo atcpdump(1), puede acceder al campo "Longitud total" del encabezado IPv4:
ip[2:2] > 576
ip[2:2] <= 1000
- y similares.
Paquete UDP total o tamaño de carga útil
UDP no tiene un campo de longitud, pero el tamaño de su encabezado siempre es 8 y puedegeneralmentesupongamos que el tamaño del encabezado IPv4 siempre será 20 (las opciones de IPv4 sonmuyraro, aunque se utilizan en IGMP).
Entonces, si estás intentando filtrar datagramas UDP de 1316 bytes,
- IP.Longitud total = IP.Encabezado[20] + UDP.Encabezado[8] + UDP.Carga útil[1316]
obtienes el filtro ip[2:2] == 1344
.