
Il existe une archive et vous devez extraire le contenu, mais le mot de passe est oublié. Vous pouvez google et faire confiance à différents programmes ( un , deux , trois ), mais
La seule façon de casser l'archive RAR est la force brute.
Donnée initiale
Archive, dictionnaire de mot de passe (et si vous mettez% username% dans l'archive, n'oubliez pas d'ajouter vos fichiers fréquemment utilisés, uniquement localement! ).
Procédure
Des articles précédents:
– , 262144 SHA1, WinRAR ( AES) ( ). , CRC32, , . – , , . RAR — « ».
. WinRAR , .
Par conséquent, l'algorithme dans la première version sera simple: ouvrez le fichier avec des mots de passe et parcourez les mots de passe de l'archive jusqu'à ce qu'il se casse.
N'oubliez pas que nous utilisons Go .
Fichier de mot de passe
dictFile, err := os.Open(dictionary)
if err != nil {
log.Fatalln(err)
}
defer dictFile.Close()
Se archiver
zipr, err := zip.OpenReader(zipfile)
if err != nil {
log.Fatal(err)
}
Et notre super algorithme
scanner := bufio.NewScanner(dictFile)
for scanner.Scan() {
pass := scanner.Text()
for _, z := range zipr.File {
z.SetPassword(pass)
_, err := z.Open()
if err == nil {
println("[+] Found password")
println("[+] Password = " + pass)
os.Exit(0)
}
}
Et si le mot de passe est dans l'archive - le tour est joué!
Version Blackjack et multithreading
Il existe une version encore plus intéressante - avec le multithreading et les goroutines.
Le référentiel contient 63 utilitaires plus sophistiqués sur divers sujets. Et si vous avez des idées à ajouter - écrivez.
UPD
La soustraction multiple est le moyen le plus fiable pour éviter les erreurs. Merci à tous ceux qui ont répondu.