Consultar DNS por medio de Scapy

Posted on dom 16 julio 2017 in Tutorial Python • 1 min read

Hace unos años escribí un artículo sobre descubrir equipos de una red local con python usando ipcalc y scapy, ahora muestro el uso de scapy para consultar DNS a un servidor de DNS determinado.

El programa es muy sencillo, es una función que se le pasa el servidor y el url a consultary devuelve la IP del url. A continuación se muestra el código:

#!/usr/bin/env python3


from scapy.all import *


def consulta(dns="8.8.8.8",dominio="www.google.com"):
    dnsServer = dns
    domconsulta= dominio
    #Se define la estructura del paquete de consulta de DNS, que es un paquete UDP
    #Que va por el puerto 53, se le pasa el servidor y el url.
    paquete_dns= IP(dst=dnsServer)/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname=domconsulta))
    #Se hace la consulta y se devuelve el resultado
    request_pqt = sr1(paquete_dns,verbose=0)
    return request_pqt[DNS].summary()

if __name__ == "__main__":
    print (consulta("8.8.8.8","www.debian.org"))

Al ejecutar el script se tiene el siguiente resultado:

sudo python3 pydns1.py
WARNING: No route found for IPv6 destination :: (no default route?). This affects only IPv6
DNS Ans "'128.31.0.62'"

Como se puede notar, la IP de www.debian.org es la 128.31.0.62.

¡Haz tu donativo! Si te gustó el artículo puedes realizar un donativo con Bitcoin (BTC) usando la billetera digital de tu preferencia a la siguiente dirección: 17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV

O Escaneando el código QR desde la billetera:

17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV