Pregunta Usando tcpdump en los datos TCP mostrados


Si

sudo tcpdump -i eth0 -X

me da

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:16:11.837543 IP cnt62-i386.gci.xxxx.org.ssh > jazz.gci.xxxx.org.49283: Flags [P.], seq 291677310:291677502, ack 4122992911, win 1002, options [nop,nop,TS val 2421999802 ecr 2194736071], length 192
        0x0000:  4510 00f4 7f77 4000 4006 7f84 ac16 f184  E....w@.@.......
        0x0010:  ac16 f146 0016 c083 1162 a47e f5bf e10f  ...F.....b.~....
...

¿Cómo puedo filtrar los datos mostrados (por ejemplo, el valor inicial del hexágono 45)?

En particular,

sudo tcpdump -i eth0 -X 'tcp[0]=0x45'
sudo tcpdump -i eth0 -X 'tcp[12]=0x45'
sudo tcpdump -i eth0 -X 'tcp[14]=0x45'
sudo tcpdump -i eth0 -X 'tcp[20]=0x45'

no dan ninguna coincidencia (usando varias compensaciones de googlear aleatoriamente y desorientar).


3


origen




Respuestas:


Filtrar usando ip en lugar de tcp. Para tu ejemplo:

sudo tcpdump -i eth0 -X 'ip[0] = 0x45'

2



ah! Perfecto. Entonces, ¿dónde comienza tcp [0] en eso? ¿hay un desplazamiento en tcp que pueda usar, o es tcp solo para el encabezado? ¡Gracias! o estoy confundido - ¿no era eso un paquete tcp? - andrew cooke
El "5" en "45" es la longitud del encabezado IP, en unidades de 4 bytes, por lo que son 20 bytes. Por lo tanto, tcp[0] es de 20 bytes después ip[0], y por lo tanto es 0x00, seguido de 0x16, seguido de 0xc0, seguido de 0x83. Ese es el TCP ENCABEZAMIENTO, sin embargo, no el TCP CARGA ÚTIL, por lo tanto, si desea filtrar los datos que se transportan a través de TCP, debe omitir el encabezado TCP (que es de longitud variable, al igual que el encabezado IP).
Gracias. resulta que sí tuve un montón de eso (aunque no estaba muy seguro de eso). pero me faltaba el encabezado tcp de longitud variable (en realidad estoy buscando algo en la carga útil de tcp, y con todo lo anterior, ahora todo tiene sentido). - andrew cooke