Pregunta

Q1 - ¿Es posible petición DNS captura / respuestas con la biblioteca

Q2 - Si es así, una vez que tenga el paquete ¿alguien tiene alguna código de ejemplo que muestra la forma en que pude extraer los campos de la respuesta de DNS? En en particular la dirección IP que resuelve DNS para el nombre DNS dada proporcionada en particular.

¿Fue útil?

Solución

Sí, es posible.

El código de ejemplo sería un poco en el lado largo, aunque ...

En esencia, es necesario:

  1. extraer el encabezado ethernet
  2. extraer la cabecera IP
  3. extraer la cabecera UDP [suponiendo que el paquete no se fragmenta, o el uso de TCP]
  4. extraer la carga útil DNS

entonces manejar el resto del paquete de acuerdo con la descripción muy completa dada en RFC 1035 .

En la práctica que los medios:

  1. ignorar las solicitudes - toda la información que necesita está en las respuestas (QR == 1)
  2. cheque por RCODE == 0 y ANCOUNT > 0
  3. mirada en el Pregunta sección para encontrar el nombre que se ha preguntado
  4. buscar respuestas en la sección Respuesta (la!)

Para complicar las cosas aún más lo que tienes que etiquetas mango DNS (serie de <count><data...> campos) y potencialmente manejar etiquetas comprimido también!

Esto suena desagradable, pero nada de esto es realmente que duro. Tengo el código C ++ que hace todo esto y no es tan largo, pero no puedo liberarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top