Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Importar módulos necesarios
- from colorama import init, Fore, Back, Style # Para imprimir en colores en la consola
- import hashlib # Para manejar funciones hash
- import string # Para verificar si un string es un hash válido
- from urllib.request import urlopen # Para descargar el diccionario de contraseñas
- # Función para imprimir arte ASCII
- def art_ascii():
- -.............................@
- @-....................................................:@
- ++%-....................................................:#++#
- #............................................................=
- *+++............................................................=+++@
- -...................................................................@
- *:::....................................................................:::=
- #:.........................................................................+
- -.........:@@@@@@@@@@@@@@@@@@@@@@@@.....%@@@@@@@@@@@@@@@@@@@@@@@:.............=
- #+-....::...:###%@@%##########@@@####.....*##%@@@##########%@@@##*:....::.......-=
- @--....:*==..*=.-*%@-: .+**- .-=@#*:.......:*%@-: -**+. :-%%*-.*+...-=*+......::+
- @......:@=...@+.=@@@. .%@@= :@@@:.......-@@@. =@@%. .%@@=.@#.....%#........+
- @:.........=@..@+...*@%+ ..... .%@@-...........+@%* .... +%@#....:@=...%#.........:#
- @:.........=@..@+...*@@+ .@@@-...........+@@# *@@#....:@=...%#..........*
- @:..............:@-...%@@@@@@@@@@@@+...............@@@@@@@@@@@@@@:....@#.................*
- @:..............:+:...+++++++++++++-...............++++++++++++++.....==............:::--#
- @:..................................................................................+
- @:.......:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- @:.......:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- @:.......:@@@. .%+ .%# -@: .@= *@. -@: .*
- @:.......:@@@. .%+ .%# -@: .@= *@. -@: .*
- @:.......:@@@. .%+ .%# -@: .@= *@. -@: .+
- @:.......:-+@=========@#========%%========*@+========@*========#@========+@+========#
- @:.........=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- @:...........#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- @:...........#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@
- @............@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@
- @::..........##@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@
- *...........:@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- #+-..........:::::@@@@@@%%%%@%........=@-.......:@+........*@:.......-@:........*
- -...............%@@@@@@%%%@# -@: .@= *@. -@: .+
- *:.................:%@@@@@# -@: .@= *@. -@: .+
- #:::................*##%@@%........=@-.......:@+........*@:.......-@:........*
- -..................=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- *==+...............:--------------------------------------------*@
- #............................................................+@
- @++#-....................................................:#++%
- @-....................................................:
- @=.............................@
- @+-----------------------------%
- """
- # Función para imprimir mensajes en la consola
- def consol_prin(strdata):
- print(Fore.BLUE + "--[" + Fore.WHITE + "+" + Fore.BLUE + "]:" + Fore.WHITE + strdata)
- # Función para recibir entrada del usuario desde la consola
- def consol_input():
- return str(input(Fore.BLUE + "--[" + Fore.GREEN + "$.input.$" + Fore.BLUE + "]:" + Fore.WHITE))
- # Función para imprimir mensajes de error en la consola
- def consol_error(errtext):
- print(Fore.WHITE + "--[" + Fore.RED + "Error!!" + Fore.WHITE + "]" + Fore.RED + ":: " + errtext + Fore.WHITE)
- # Función para calcular hashes
- def hash_text(strdata, typee):
- if typee == 0:
- hashtxt = hashlib.md5(strdata.encode()).hexdigest()
- elif typee == 1:
- hashtxt = hashlib.sha256(strdata.encode()).hexdigest()
- elif typee == 2:
- hashtxt = hashlib.sha512(strdata.encode()).hexdigest()
- else:
- raise ValueError("Invalid Type Hash")
- return hashtxt
- # Función para verificar si una cadena es un hash válido
- def ishash(strhash, typee):
- if all(inxx in string.hexdigits for inxx in strhash):
- if typee == 0: # md5
- return len(strhash) == 32
- elif typee == 1: # sha256
- return len(strhash) == 64
- elif typee == 2: # sha512
- return len(strhash) == 128
- else:
- raise ValueError("Invalid Type Hash")
- else:
- return False
- # Función para convertir el tipo de hash a su número correspondiente
- def return_case_hash(tphsh):
- if tphsh == "md5":
- return 0
- elif tphsh == "sha256":
- return 1
- elif tphsh == "sha512":
- return 2
- else:
- return 99
- # Función para descargar el diccionario de contraseñas
- def download_url(link):
- return urlopen(link).read()
- # Función principal
- def main():
- art_ascii() # Imprimir arte ASCII
- global tp_hash
- global hash_to_crack
- consol_prin("Crackeadora de hashes") # Mensaje de bienvenida
- # Solicitar al usuario el tipo de hash a crackear
- while True:
- consol_prin("Seleccione el tipo de hash {md5,sha256,sha512}")
- tipehash = consol_input()
- tp_hash = return_case_hash(tipehash)
- if tp_hash == 99:
- consol_error("Tipo de Hash invalido")
- else:
- break
- consol_prin("Tipo de hash selecionado [{}]".format(tipehash))
- # Solicitar al usuario el hash a crackear
- while True:
- consol_prin("Introduzca el HASH tipo {} que desea Crackear".format((tipehash)))
- hash_to_crack = consol_input()
- if ishash(hash_to_crack, tp_hash):
- consol_prin("Iniciando Cracking de HASH: {} ...".format(hash_to_crack))
- break
- else:
- consol_error("Hash {} invalida".format(hash_to_crack))
- consol_prin("Descangando Diccionario")
- dicc = download_url("https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt")
- consol_prin("Diccionario descargado")
- consol_prin("Iniciando Ataque de diccionario " + Fore.RED + "[ATTACK INI]::::" + Fore.WHITE)
- # Realizar el ataque de diccionario
- for inxx in dicc.split("\n".encode('utf-8')):
- z = hash_text(inxx, tp_hash)
- consol_prin("HASH:: {} texto plano:: {}".format(z, inxx))
- if z == hash_to_crack:
- consol_prin("Password: {} HASH: {}".format(inxx, z))
- break
- main() # Ejecutar la función principal
Advertisement
Add Comment
Please, Sign In to add comment