Reconstruir un paquete.

Iniciado por APOKLIPTICO, 23 Noviembre 2010, 19:24 PM

0 Miembros y 1 Visitante están viendo este tema.

APOKLIPTICO

Hola! Como va todo? Miren, estoy teniendo un problema, estoy programando con winpcap un sniffer, pero el tema es que quiero reconstruir los paquetes tcp, había econtrado una manera que funciona aparentemente solo con adaptadores ethernet, pero cuando utilizo wi fi, no funciona.

Se que debe existir alguna manera, pero realmente ya no se me ocurre como hacer.
Alguien me podría hechar un poco de claridad??

Gracias!
Un abrazo
APOKLIPTICO
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

j4np0l

#1
Del FAQ de WinPcap http://winpcap.cs.pu.edu.tw/misc/faq.htm#Q-16

CitarWireless adapters: these adapters may present problems, because they are not properly supported by the Windows Kernel. Some of them are not detected, other don't support promiscuous mode. In the best case, WinPcap is able to see an Ethernet emulation and not the real transiting packets: this means that the 802.11 frames are transformed into fake Ethernet frames before being captured, and that control frames are not received.

For real wireless capture, CACE Technologies offers the AirPcap adapter, specifically designed to sniff 802.11 traffic, including control frames, management frames and power information. AirPcap at this time is the only solution for capturing raw 802.11 traffic with WinPcap. More details can be found on the AirPcap product page.

Por lo que entiendo, en el mejor de los casos los frames 802.11 pueden ser transformados en frames Ethernet (y los frames de control se pierden), pero esto no siempre va a ser posible. La recomendación es utilizar Airpcap (que es pago).

La verdad, no es algo que haya tratado de hacer nunca, asi que no estoy un 100% seguro de que no se pueda  ;D. Por ahí alguien que tenga mas experiencia con este tipo de programación te podrá dar una mejor idea.

APOKLIPTICO

Ese es el problema de escribir en los foros, no podés ponerle tono a las cosas, estaba tratando de ser gracioso...

Perdón si a veces sueno como un troll que pretende hacerle la vida imposible a la gente. Realmente no es mi intención.
Simplemente me molesta que la gente ni siquiera trate de escribir de manera inteligible. Gente que escribe mal, lo sabe y ni siquiera puede tomarse el trabajo de usar un corrector ortográfico, releer lo que va a postear para ver si se entiende o aunque sea poner mayúscula al inicio de las oraciones.

Pero bueno, como sugerís que debo responder en esos casos? Y esto lo estoy preguntando en serio, no es sarcasmo ni nada parecido.

En cuanto a mi pregunta, no me refería a paquetes sniffados en capa física digamos. Básicamente lo que quiero hacer, es capturar los datos que entran en un programa, procesarlos y convertirlos a otro formato. Ya tengo todo el programa funcionado, pero cuando lo probé en otra pc, que tiene conexión wi-fi, no funcionó. Despues de debuggear un poco, me di cuenta que no estaba reconstruyendo bien los paquetes que son fragmentados al salir del router.

Hay algún protocolo específico o algoritmo que me permita reconstruirlos de manera correcta??

Gracias!!
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

T0rete

El problema parece que está en el método de captura mas que en la reconstrucción en si.

APOKLIPTICO

Nono, estoy usando winpcap, winpcap recibe los paquetes en formato RAW, es decir, con las cabeceras y todo, mi programa filtra las cabeceras y va concatenando lo que recibe hasta que recibe un paquete con las flags FIN y ACK o bien PSH, FIN y ACK. Pero ahora eso no está funcionando, ya que las flags que estoy recibiendo son solo o ACK solo o PSH y ACK, lo que me hace pensar que debe de haber alguna manera que no estoy viendo para reconstruir esos paquetes.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

T0rete

El problema es wincap cuando usa un adaptador wireless se inventa los frames y eso hace que la captura no pueda ser reconstruida.

APOKLIPTICO

#6
Uy... No te puedo creer, no me digas que hice todo este trabajo y ahora no va a funcar...
Que bajooonNN!!!
Bueno, gracias de todas formas, pero aún así, para tenerlo claro, como es la manera correcta de identificar el fin de un paquete fragmentado??

PD: Bueno, al final, encontré otra manera basada en el protocolo del programa que estoy haciendo para identificar el fin de los paquetes segmentados, no es cosher, pero funciona.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.