
Hay un archivo y necesita extraer el contenido, pero se olvida la contraseña. Puedes buscar en Google y confiar en diferentes programas ( uno , dos , tres ), pero
La única forma de descifrar el archivo RAR es la fuerza bruta.
Datos iniciales
Archivo, diccionario de contraseñas (y si coloca% username% en el archivo, ¡no olvide agregar los que usa con frecuencia, solo localmente! ).
Procedimiento
De artículos anteriores:
– , 262144 SHA1, WinRAR ( AES) ( ). , CRC32, , . – , , . RAR — « ».
. WinRAR , .
Por lo tanto, el algoritmo en la primera versión será simple: abra el archivo con contraseñas e itere sobre las contraseñas del archivo hasta que se rompa.
No olvides que usamos Go .
Archivo de contraseña
dictFile, err := os.Open(dictionary)
if err != nil {
log.Fatalln(err)
}
defer dictFile.Close()
Archivo en sí
zipr, err := zip.OpenReader(zipfile)
if err != nil {
log.Fatal(err)
}
Y nuestro súper algoritmo
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)
}
}
Y si la contraseña está en el archivo, ¡voila!
Blackjack y versión multihilo
Hay una versión aún más interesante , con subprocesos múltiples y gorutinas.
El repositorio tiene 63 utilidades más sofisticadas sobre diversos temas. Y si tiene ideas sobre qué agregar, escriba.
UPD
La sustracción múltiple es la forma más confiable de evitar errores. Gracias a todos los que respondieron.