tcpdump duda con filtro ACK PSH


VgörK

Miembro muy activo
Noder
Chavales una preguntita de estas sobre redes:
Estoy filtrando por tcpdumb los datos ACK && PSH para ver el handshake, ya tu sabe, el problema es que la linea del comando es la siguiente:
sudo tcpdump -A -n 'tpc[13] = 24' -r filename.pcap
Todo bien todo correcto, filtramos por tcp[13] (osea por el byte 14 donde se encuentran los valores de los datos [CWR, ECE, URG, ACK,PSH... entre otros].

Ahora si lo jodido viene en el 24, ese numero de mierda, que viene del binario 2#00011000 pero claro tu al hacer ese binario en los datos del tpc te deberia filtrar solo por los bits:
Bit 4: RST (Reset) Bit 3: SYN (Synchronize)
La tabla completa de los valores con sus respectivos bits son estos:
Bit 7: URG (Unused) Bit 6: ACK (Acknowledgment) Bit 5: PSH (Push) Bit 4: RST (Reset) Bit 3: SYN (Synchronize) Bit 2: FIN (Finish) Bit 1: Reserved (Debe estar siempre en 0) Bit 0: Reserved (Debe estar siempre en 0)

Pero teoricamente, y digo teoricamente deberias usar el binario 2#00000110 para obtener los bits:
Bit 6: ACK (Acknowledgment) -> Valor deseado: 1 Bit 5: PSH (Push) -> Valor deseado: 1

Pero al usar el ultimo binario mencionado saldria el numero decimal 6, y ahi es cuando rompe toda la puta logica
 
  • Like
Reacciones : destapeman

tuco

Miembro muy activo
Nodero
Noder
Menos mal contestar algo que va de informatica, vamos allá.
La estructura de un paquete TCP tiene esta pinta:
tcp.png

Si te das cuenta el byte 14 empieza en las flags de tcp, es decir en CWR,ECE... Por tanto el primer bit del byte 14 corresponde a la flag de CWR, el segundo a ECE y así.
Por tanto, si tienes un byte de flags tal que 00011000, las flags quedarían tal que así:
CWR:0
ECE:0
URG:0
ACK:1
PSH:1
RST:0
SYN:0
FIN:0
Y al transformar 00011000 en decimal ahí tienes tu 24.
 

Sadsu

後輩
Noderador
Nodero
Noder
¿y si lo haces con tcpdump -A -n 'tcp[tcpflags] == ack-psh' -r filename.pcap ? En teoria solo deberia filtrarlo por lo que he leido
1685791275282.png


edit: la respuesta de tuco tiene razon, juntando las flags da 00011000 = 24 y aun que lo filtres sigue siendo 24
 
Última edición:
  • Like
Reacciones : destapeman

VgörK

Miembro muy activo
Noder
Menos mal contestar algo que va de informatica, vamos allá.
La estructura de un paquete TCP tiene esta pinta: Ver el archivo adjunto 24124
Si te das cuenta el byte 14 empieza en las flags de tcp, es decir en CWR,ECE... Por tanto el primer bit del byte 14 corresponde a la flag de CWR, el segundo a ECE y así.
Por tanto, si tienes un byte de flags tal que 00011000, las flags quedarían tal que así:
CWR:0
ECE:0
URG:0
ACK:1
PSH:1
RST:0
SYN:0
FIN:0
Y al transformar 00011000 en decimal ahí tienes tu 24.
Hostíaa, tenía mal la cadena de bits, na muchas gracias la vdd
 
  • Like
Reacciones : LinceCrypt y tuco

VgörK

Miembro muy activo
Noder
¿y si lo haces con tcpdump -A -n 'tcp[tcpflags] == ack-psh' -r filename.pcap ? En teoria solo deberia filtrarlo por lo que he leido
Ver el archivo adjunto 24125

edit: la respuesta de tuco tiene razon, juntando las flags da 00011000 = 24 y aun que lo filtres sigue siendo 24
También es otra manera, pero quería ver como funcionaba en un nivel más "bajo", así me voy acostumbrando a los bytes y bits gege
 

VgörK

Miembro muy activo
Noder
¿y si lo haces con tcpdump -A -n 'tcp[tcpflags] == ack-psh' -r filename.pcap ? En teoria solo deberia filtrarlo por lo que he leido
Ver el archivo adjunto 24125

edit: la respuesta de tuco tiene razon, juntando las flags da 00011000 = 24 y aun que lo filtres sigue siendo 24
por cierto, esa pagina web cual es? me renta guardarmela, que tengo otras pero esa tiene buena pinta :)