Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: piou en 2 Noviembre 2010, 15:45 pm



Título: Paquetes UDP en libpcap
Publicado por: piou en 2 Noviembre 2010, 15:45 pm
Estoy programando algo en libpcap, quiero hacer un programa que intercepte paquetes UDP en el puerto 53 (el del DNS), lo único que quiero saber es las páginas qu e se visitan, así que creo que es un método bueno y simple para hacerlo. El problema llega cuando después de interceptar el paquete quiero extraer tan solo la web. En realidad pido un algoritmo sencillo
Tengo lo siguiente:
Uso la función print_payload() con el paquete pongo el sniffer y me meto en www.google.com, los 4 primeros paquetes son así:
Código:
Packet number 1:
       From: x
         To: x
   Protocol: UDP
   * Invalid TCP header length: 0 bytes
   Src port: x
   Dst port: 53
   Payload (39 bytes):
...5.'...2......
.....www.google.
 es.....

Packet number 2:
       From: x
         To: x
   Protocol: UDP
   * Invalid TCP header length: 0 bytes
   Src port: 53
   Dst port: x
   Payload (137 bytes):
.5.......2......
.....www.google.
es..............
....www.google.c
om..+......~a...
www.l./.K.......
 ..&.ns3./.dns-ad
min./...Z.......
........<

Packet number 3:
       From: x
         To: x
   Protocol: UDP
   * Invalid TCP header length: 0 bytes
   Src port: x
   Dst port: 53
   Payload (39 bytes):
 ...5.'*C........
.....www.google.
es.....

Packet number 4:
       From: x
         To: x
   Protocol: UDP
   * Invalid TCP header length: 0 bytes
   Src port: 53
   Dst port: x
   Payload (103 bytes):
    .5...g..........
    .....www.google.
    es..............
    ....www.google.c
   om..+......~_...
    www.l./.G.......
                           ...B.\h

Por cada vez que me meto en una web, intercepto más de 50 paquetes por ese puerto.

¿Por qué? Mi primera pregunta.

La segunda es cómo puedo a partir de todos los paquetes son su información (payloads) elaborar una lista de las webs visitadas.

NOTA: Antes de cada información hay código hexadecimal que he quitado ya que supongo será la misma información pero en hexadecimal.