Brute Force Attack ad un File Rar per individuare la Password

Diverso da come si attacca un file Zip. Non bastano le librerie Python ma bisogna fare affidamento ad UnRAR.exe in combinazione con il seguente script. Ricordate sempre di utilizzare questi Cracker esclusivamente per i file di vostra proprietà e di cui avete smarrito la password.

import itertools
import rarfile

rarfile.UNRAR_TOOL = "C:\\unrar\\UnRAR.exe"

def prova_password(file_rar, password):
    try:
        with rarfile.RarFile(file_rar, 'r') as rf:
            rf.extractall(pwd=password)
            return True
    except (rarfile.BadRarFile, rarfile.RarCRCError):  # Cattura specifiche eccezioni relative a password errate
        return False
    except Exception as e:
        print(f"Errore non previsto: {e}")
        return False

def attacco_forza_bruta(file_rar, lunghezza_massima):
    caratteri = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+[]{}|;:,.<>?'
    
    for lunghezza in range(1, lunghezza_massima+1):
        for combinazione in itertools.product(caratteri, repeat=lunghezza):
            password = ''.join(combinazione)
            print(f"Prova con: {password}")  # Stampa ogni tentativo
            if prova_password(file_rar, password):
                print(f"\nPassword trovata: {password}")
                return password
    print("\nPassword non trovata.")
    return None

# Usa la funzione attacco_forza_bruta
file_rar = "TestRar.rar"
lunghezza_massima = 4  # Prova password fino a una lunghezza di 4. Aumenta se necessario.
attacco_forza_bruta(file_rar, lunghezza_massima)