comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

DNSMap

  • 1 Respuestas
  • 1663 Vistas

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

Desconectado WhiZ

  • *
  • Underc0der
  • Mensajes: 395
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Diciembre 24, 2013, 03:43:21 pm »
Hola gente! Hace unos días estaba leyendo un poco del protocolo DNS y los ataques que existen para el mismo, y hoy me puse a codear este programita que nos permite realizar un ataque de diccionario para hacer un mapeo DNS.

Aquí el código.
Código: Python
  1. # -*- coding: cp1252 -*-
  2.  
  3. from time import sleep
  4. from urllib2 import urlopen, HTTPError
  5. from sys import argv
  6.  
  7. class DNSMap(object):
  8.     def __init__(self, dns, wordlist, delay, verbose):
  9.         self._dns = dns
  10.         self._wordlist = wordlist
  11.         self._delay = delay
  12.         self._verbose = verbose
  13.  
  14.         print "\nStarting Dictionary Attack"
  15.         self._urlMaker()
  16.  
  17.     def _urlMaker(self):
  18.         f = open(self._wordlist, "r")
  19.         if self._verbose == False:
  20.             print "\nWorking now! Please wait...\n"
  21.         while True:
  22.             try:
  23.                 line = f.readline().replace("\n", "")
  24.                 if len(line) == 0:
  25.                     break
  26.                 url = "http://" + line + "." + self._dns
  27.                 self._urlTester(url)
  28.                 sleep(self._delay)
  29.             except Exception as e:
  30.                 print e
  31.                 break
  32.         f.close()
  33.  
  34.     def _urlTester(self, url):
  35.         if self._verbose == True:
  36.             print "\n[*] Checking for: " + url
  37.         try:
  38.             result = urlopen(url)
  39.             if result.code == 200:
  40.                 print "[+] " + url
  41.         except HTTPError as e:
  42.             print "[+] %s [%s]" % (url, e.getcode())
  43.         except Exception as e:
  44.             if self._verbose == True:
  45.                 print "[-] ERROR: " + str(e)
  46.  
  47. logo = """
  48. /$$$$$$$  /$$   /$$  /$$$$$$  /$$      /$$                    
  49. | $$__  $$| $$$ | $$ /$$__  $$| $$$    /$$$                    
  50. | $$  \ $$| $$$$| $$| $$  \__/| $$$$  /$$$$  /$$$$$$   /$$$$$$
  51. | $$  | $$| $$ $$ $$|  $$$$$$ | $$ $$/$$ $$ |____  $$ /$$__  $$
  52. | $$  | $$| $$  $$$$ \____  $$| $$  $$$| $$  /$$$$$$$| $$  \ $$
  53. | $$  | $$| $$\ $$$ /$$  \ $$| $$\ $ | $$ /$$__  $$| $$  | $$
  54. | $$$$$$$/| $$ \ $$|  $$$$$$/| $$ \/  | $$|  $$$$$$$| $$$$$$$/
  55. |_______/ |__/  \__/ \______/ |__/     |__/ \_______/| $$____/
  56.                                                     | $$      
  57.                                                     | $$      
  58.                                                     |__/
  59.                                                     """
  60.  
  61. usage = """Usage: python DNSMap.py <target-domain> [options]
  62.  
  63. Options:
  64. -w <wordlist-file>
  65. -d <delay-millisecs>
  66. -v <verbose mode>"""
  67.  
  68. about = """DNSMap v1.0.13.24.12 - DNS Network Mapper by WhiZ (underc0de.org)
  69. """
  70.  
  71. def parser():
  72.     if len(argv) < 4:
  73.         print about
  74.         print usage
  75.         exit()
  76.     # dns
  77.     if argv[1] == "-w" or argv[1] == "-d" or argv[1] == "-v":
  78.         print about
  79.         print usage
  80.         exit()
  81.     else:
  82.         dns = argv[1]
  83.         try:
  84.             dns = dns.replace("http://", "")
  85.             dns = dns.replace("www.", "")
  86.         except:
  87.             try:
  88.                 dns = dns.replace("www.", "")
  89.             except:
  90.                 pass
  91.    
  92.     # wordlist
  93.     if not "-w" in argv:
  94.         print about
  95.         print usage
  96.         exit()
  97.     else:
  98.         index = argv.index("-w")
  99.         wordlist = argv[index+1]
  100.  
  101.     # delay
  102.     if not "-d" in argv:
  103.         delay = 0
  104.     else:
  105.         index = argv.index("-d")
  106.         delay = argv[index+1]
  107.        
  108.     # verbose
  109.     if not "-v" in argv:
  110.         verbose = False
  111.     else:
  112.         verbose = True
  113.  
  114.     return (dns, wordlist, delay, verbose)
  115.        
  116. def argvTester(dns, wordlist, delay, verbose):
  117.     print "Checking information. Please wait..."
  118.  
  119.     # Cheking DNS
  120.     print "\n[*] Testing DNS: " + dns
  121.     try:
  122.         result = urlopen("http://www."+dns)
  123.         if result.code == 200:
  124.             print "[+] OK"
  125.         else:
  126.             print "[+] OK [%s]" % result.code
  127.     except HTTPError as e:
  128.         print "[+] OK [%s]" % e.getcode()
  129.     except Exception as e:
  130.         print "[-] FAIL:", e
  131.         exit()
  132.  
  133.     # Checking Wordlist
  134.     print "\n[*] Testing Wordlist: " + wordlist
  135.     try:
  136.         f = open(wordlist, "r")
  137.         f.close()
  138.         print "[+] OK"
  139.     except Exception as e:
  140.         print "[-] No such file or directory: " + wordlist
  141.         exit()
  142.  
  143.     # Checking Delay
  144.     print "\n[*] Testing Delay"
  145.     try:
  146.         delay = int(delay)
  147.         print "[+] Delay: " + str(delay) + " millisecs"
  148.         delay = float(delay)/1000
  149.     except:
  150.         print "[-] FAIL: An integer is required"
  151.         exit()
  152.  
  153.     # Checking verbose
  154.     if verbose == True:
  155.         print "\n[+] Verbose Mode"
  156.  
  157.     return dns, delay
  158.  
  159. def main():
  160.     dns, wordlist, delay, verbose = parser()
  161.     print logo
  162.     print about
  163.     dns, delay = argvTester(dns, wordlist, delay, verbose)
  164.  
  165.     dnsmap = DNSMap(dns, wordlist, delay, verbose)
  166.  
  167. if __name__ == "__main__":
  168.     main()
  169.  

Espero que les guste!
Saludos!
WhiZ
« Última modificación: Diciembre 24, 2013, 04:21:01 pm por WhiZ »


Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5380
  • Actividad:
    76.67%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Diciembre 24, 2013, 04:48:50 pm »
Excelente WhiZ!!
Habra que probarlo!

Saludos!
ANTRAX


 

¿Te gustó el post? COMPARTILO!