├── requeriments.txt ├── README.md └── brute-rar.py /requeriments.txt: -------------------------------------------------------------------------------- 1 | rarfile 2 | tqdm -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ataque De Fuerza Bruta Para Archivos .RAR 2 | 3 | Este script está diseñado para llevar a cabo un ataque de fuerza bruta en un archivo RAR protegido con contraseña, utilizando un diccionario de contraseñas. Este script podría beneficiar a las personas en situaciones donde necesitan recuperar el acceso a un archivo RAR protegido del cual han olvidado la contraseña. También podría ser útil en pruebas de penetración ética para probar la seguridad de archivos RAR protegidos con contraseñas débiles. Sin embargo, es importante destacar que el uso de fuerza bruta para acceder a archivos sin permiso puede ser ilegal y debe realizarse con permiso explícito o en situaciones legales y éticas. 4 | 5 | 6 | GIF 7 | 8 | # Hilos 9 | 10 | El script utiliza múltiples hilos para realizar un ataque de fuerza bruta en un archivo RAR. Divide el diccionario en secciones y asigna cada sección a un hilo para acelerar el proceso. Si encuentra la contraseña, muestra un mensaje indicando que la contraseña fue encontrada y termina la ejecución. Si ninguna contraseña es encontrada, muestra un mensaje indicando que la contraseña no fue encontrada. 11 | 12 | # Instalación 13 | 14 | Clonamos el repositorio 15 | ```bash 16 | git clone https://github.com/Yextep/BruteRAR 17 | ``` 18 | Accedemos a la carpeta 19 | ```bash 20 | cd BruteRAR 21 | ``` 22 | Instalamos requerimientos 23 | ```bash 24 | pip install -r requeriments.txt 25 | ``` 26 | Ejecutamos el Script 27 | ```bash 28 | python3 brute-rar.py 29 | ``` 30 | -------------------------------------------------------------------------------- /brute-rar.py: -------------------------------------------------------------------------------- 1 | import rarfile 2 | import sys 3 | import concurrent.futures 4 | 5 | rarfile.UNRAR_TOOL = "C:\\Program Files\\WinRAR\\UnRAR.exe" # Reemplaza esta ruta con la ubicación de tu WinRAR 6 | 7 | def ataque_fuerza_bruta(archivo, diccionario, password_length=None): 8 | found_password = None 9 | with rarfile.RarFile(archivo, 'r') as rar_ref: 10 | for password in diccionario: 11 | if password_length and len(password) != password_length: 12 | continue 13 | try: 14 | rar_ref.extractall(pwd=password) 15 | found_password = password 16 | break 17 | except rarfile.BadRarFile: 18 | pass 19 | if found_password: 20 | return found_password 21 | 22 | def main(): 23 | archivo = input('Introduce la ruta del archivo protegido (RAR): ') 24 | diccionario = input('Introduce la ruta del diccionario .txt: ') 25 | 26 | try: 27 | with open(diccionario, 'r', encoding='utf-8', errors='replace') as f: 28 | diccionario = f.read().splitlines() 29 | except FileNotFoundError: 30 | print('El diccionario no existe') 31 | return 32 | 33 | password_length = input('¿Deseas especificar una longitud de contraseña? (S/n): ') 34 | if password_length.lower() == 's': 35 | password_length = int(input('Especifica la longitud de la contraseña a probar: ')) 36 | else: 37 | password_length = None 38 | 39 | num_threads = 20 40 | num_sections = num_threads 41 | 42 | with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor: 43 | futures = [] 44 | for i in range(num_sections): 45 | section_start = i * len(diccionario) // num_sections 46 | section_end = (i + 1) * len(diccionario) // num_sections 47 | future = executor.submit(ataque_fuerza_bruta, archivo, diccionario[section_start:section_end], password_length) 48 | futures.append(future) 49 | 50 | for future in concurrent.futures.as_completed(futures): 51 | result = future.result() 52 | if result: 53 | print('Contraseña encontrada: ', result) 54 | return 55 | 56 | print('Contraseña no encontrada') 57 | 58 | if __name__ == '__main__': 59 | main() 60 | --------------------------------------------------------------------------------