Guest User

Crackeador de Hashes MD5, SHA256, SHA512

a guest
Apr 18th, 2024
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.20 KB | Cybersecurity | 0 0
  1. # Importar módulos necesarios
  2. from colorama import init, Fore, Back, Style  # Para imprimir en colores en la consola
  3. import hashlib  # Para manejar funciones hash
  4. import string  # Para verificar si un string es un hash válido
  5. from urllib.request import urlopen  # Para descargar el diccionario de contraseñas
  6.  
  7. # Función para imprimir arte ASCII
  8. def art_ascii():
  9.                                      
  10.                                   -.............................@                                  
  11.                      @-....................................................:@                      
  12.                    ++%-....................................................:#++#                    
  13.                   #............................................................=                    
  14.                *+++............................................................=+++@                
  15.                -...................................................................@                
  16.            *:::....................................................................:::=            
  17.            #:.........................................................................+            
  18.           -.........:@@@@@@@@@@@@@@@@@@@@@@@@.....%@@@@@@@@@@@@@@@@@@@@@@@:.............=          
  19.         #+-....::...:###%@@%##########@@@####.....*##%@@@##########%@@@##*:....::.......-=          
  20.         *......=@.......*@@+         .@@@-...........+@@#          *@@#[email protected]          
  21.       @--....:*==..*=.-*%@-:  .+**-  .-=@#*:.......:*%@-:   -**+.  :-%%*-.*+...-=*+......::+        
  22.       @......:@=...@+.=@@@.   .%@@=    :@@@:.......-@@@.    =@@%.   .%@@=.@#.....%#........+        
  23.     @:.........=@..@+...*@%+  .....  .%@@-...........+@%*   ....   +%@#....:@=...%#.........:#      
  24.     @:.........=@..@+...*@@+         .@@@-...........+@@#          *@@#....:@=...%#..........*      
  25.     @:..............:@-...%@@@@@@@@@@@@+...............@@@@@@@@@@@@@@:....@#.................*      
  26.     @:..............:+:...+++++++++++++-...............++++++++++++++.....==............:::--#      
  27.     @:..................................................................................+          
  28.     @:.......:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          
  29.     @:.......:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          
  30.     @:.......:@@@.       .%+       .%#        -@:       .@=        *@.       -@:       .*          
  31.     @:.......:@@@.       .%+       .%#        -@:       .@=        *@.       -@:       .*          
  32.     @:.......:@@@.       .%+       .%#        -@:       .@=        *@.       -@:       .+          
  33.     @:.......:-+@=========@#========%%========*@+========@*========#@========+@+========#          
  34.     @:.........=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                          
  35.     @:...........#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                          
  36.     @:...........#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@                          
  37.       @............@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@                          
  38.       @::..........##@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@                            
  39.         *...........:@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                            
  40.         #+-..........:::::@@@@@@%%%%@%........=@-.......:@+........*@:.......-@:........*          
  41.           -...............%@@@@@@%%%@#        -@:       .@=        *@.       -@:       .+          
  42.            *:.................:%@@@@@#        -@:       .@=        *@.       -@:       .+          
  43.            #:::................*##%@@%........=@-.......:@+........*@:.......-@:........*          
  44.                -..................=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          
  45.                *==+...............:--------------------------------------------*@                  
  46.                   #............................................................+@                  
  47.                   @++#-....................................................:#++%                    
  48.                      @-....................................................:                        
  49.                                  @=.............................@                                  
  50.                                  @+-----------------------------%                                  
  51.                                                                                                    
  52.                                                                                                    
  53. """
  54.  
  55. # Función para imprimir mensajes en la consola
  56. def consol_prin(strdata):
  57.    print(Fore.BLUE + "--[" + Fore.WHITE + "+" + Fore.BLUE + "]:" + Fore.WHITE + strdata)
  58.  
  59. # Función para recibir entrada del usuario desde la consola
  60. def consol_input():
  61.    return str(input(Fore.BLUE + "--[" + Fore.GREEN + "$.input.$" + Fore.BLUE + "]:" + Fore.WHITE))
  62.  
  63. # Función para imprimir mensajes de error en la consola
  64. def consol_error(errtext):
  65.    print(Fore.WHITE + "--[" + Fore.RED + "Error!!" + Fore.WHITE + "]" + Fore.RED + ":: " + errtext + Fore.WHITE)
  66.  
  67. # Función para calcular hashes
  68. def hash_text(strdata, typee):
  69.    if typee == 0:
  70.        hashtxt = hashlib.md5(strdata.encode()).hexdigest()
  71.    elif typee == 1:
  72.        hashtxt = hashlib.sha256(strdata.encode()).hexdigest()
  73.    elif typee == 2:
  74.        hashtxt = hashlib.sha512(strdata.encode()).hexdigest()
  75.    else:
  76.        raise ValueError("Invalid Type Hash")
  77.    return hashtxt
  78.  
  79. # Función para verificar si una cadena es un hash válido
  80. def ishash(strhash, typee):
  81.    if all(inxx in string.hexdigits for inxx in strhash):
  82.        if typee == 0:  # md5
  83.            return len(strhash) == 32
  84.        elif typee == 1:  # sha256
  85.            return len(strhash) == 64
  86.        elif typee == 2:  # sha512
  87.            return len(strhash) == 128
  88.        else:
  89.            raise ValueError("Invalid Type Hash")
  90.    else:
  91.        return False
  92.  
  93. # Función para convertir el tipo de hash a su número correspondiente
  94. def return_case_hash(tphsh):
  95.    if tphsh == "md5":
  96.        return 0
  97.    elif tphsh == "sha256":
  98.        return 1
  99.    elif tphsh == "sha512":
  100.        return 2
  101.    else:
  102.        return 99
  103.  
  104. # Función para descargar el diccionario de contraseñas
  105. def download_url(link):
  106.    return urlopen(link).read()
  107.  
  108. # Función principal
  109. def main():
  110.    art_ascii()  # Imprimir arte ASCII
  111.    global tp_hash
  112.    global hash_to_crack
  113.    consol_prin("Crackeadora de hashes")  # Mensaje de bienvenida
  114.    
  115.    # Solicitar al usuario el tipo de hash a crackear
  116.    while True:
  117.        consol_prin("Seleccione el tipo de hash {md5,sha256,sha512}")
  118.        tipehash = consol_input()
  119.        tp_hash = return_case_hash(tipehash)
  120.        
  121.        if tp_hash == 99:
  122.            consol_error("Tipo de Hash invalido")
  123.        else:
  124.            break
  125.    
  126.    consol_prin("Tipo de hash selecionado [{}]".format(tipehash))
  127.    
  128.    # Solicitar al usuario el hash a crackear
  129.    while True:
  130.        consol_prin("Introduzca el HASH tipo {} que desea Crackear".format((tipehash)))
  131.        hash_to_crack = consol_input()
  132.        if ishash(hash_to_crack, tp_hash):
  133.            consol_prin("Iniciando Cracking de HASH: {} ...".format(hash_to_crack))
  134.            break
  135.        else:
  136.            consol_error("Hash {} invalida".format(hash_to_crack))
  137.    
  138.    consol_prin("Descangando Diccionario")
  139.    dicc = download_url("https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt")
  140.    consol_prin("Diccionario descargado")
  141.    consol_prin("Iniciando Ataque de diccionario " + Fore.RED + "[ATTACK INI]::::" + Fore.WHITE)
  142.    
  143.    # Realizar el ataque de diccionario
  144.    for inxx in dicc.split("\n".encode('utf-8')):
  145.        z = hash_text(inxx, tp_hash)
  146.        consol_prin("HASH:: {}          texto plano:: {}".format(z, inxx))
  147.        if z == hash_to_crack:
  148.            consol_prin("Password: {}         HASH: {}".format(inxx, z))
  149.            break
  150.  
  151. main()  # Ejecutar la función principal
  152.  
Advertisement
Add Comment
Please, Sign In to add comment