2 votos

Prueba de una lista de contraseñas en la Escasa Imagen

Tengo una escasa archivo de imagen con algunos datos importantes en él que me gustaría recuperar. El único problema es que se me ha olvidado la contraseña.

Tengo una buena idea de las partes de la contraseña y logró generar una línea de 3000 archivo con una lista de contraseñas posibles.

Me gustaría saber cómo puedo probar estas en contra de mi imagen. Hace un par de años, me había encontrado con un práctico open source de la aplicación con una interfaz gráfica de usuario sencilla que hizo esto, pero me parece que no puede encontrar. Tal vez alguien sabe lo de la app que estoy hablando. De lo contrario, si alguien sabe otro método para hacer esto (tal vez con automator), sería genial.

Gracias

7voto

Ged Byrne Puntos 481

El hdiutil comando combinado con un poco de bash scripting puede lograr lo que usted está buscando. Usted necesitará un archivo de texto plano con cada una contraseña en una línea separada, terminando con una línea en blanco.

  1. Copia y pega esto en un archivo de texto:

    #!/bin/bash
    
    while read line
    do
        echo -n "$line" | hdiutil attach -quiet -stdinpass "$1"
        if [ $? -eq 0 ]; then
            echo "Password is $line"
            break
        fi
    done < "$2"
    
  2. Guardarlo y hacerlo ejecutable por ejecutar chmod +x /path/to/scriptfile en la Terminal.

  3. En la Terminal, ejecute /path/to/scriptfile /path/to/image.dmg /path/to/passwords.txt.
    • Se ejecutará hasta que se monta correctamente la imagen de disco, y la salida de la contraseña que trabajó. En mis pruebas, se tomó 1.3-1.6 segundos por contraseña, así 3000 contraseñas puede tomar alrededor de una hora, dependiendo de su sistema (aunque podría ser antes, dependiendo donde está la contraseña en el archivo).

Que debe hacer el truco. Si tienes curiosidad de cómo y por qué funciona, sigue leyendo.

Explicación

Bucle while

    while read line
    do
    […]
    done < "$2"

Esto se repite a lo largo de cada línea en el archivo de contraseña (que es alimentado a través de la < "$2" parte) y ejecuta las cosas entre do y done cada vez que se repite. $2 es una variable especial en Bash que representa el segundo argumento que se pasa a la secuencia de comandos (es decir, si se ejecutó ./foo bar blah, $2 serían blah). Es entre comillas en caso de que existan espacios u otros caracteres en el nombre que podría causar problemas para Bash.

Montaje de la imagen

hdiutil attach -quiet -stdinpass "$1"`

Este es el comando para montar la imagen de disco (la que podemos obtener a partir de los argumentos de línea de comandos a través de la $1 variable, al igual que el archivo de contraseña). El -quiet bandera significa no imprimir cualquier tipo de salida (sólo para mantener todo en orden), y -stdinpass significa obtener la contraseña de la línea de comandos, no es el habitual de OS X de diálogo de contraseña.

echo -n "$line"

El echo comando simplemente repite la entrada es dado, que en este caso es un individuo de la línea de la contraseña de un archivo, desde la $line variable (que es citado de nuevo en el caso de las contraseñas que contienen caracteres especiales). El -n bandera es la última pieza de este rompecabezas, que impide que el eco de la repetición de la nueva línea de caracteres, que sería incluido en la contraseña (y así evitar incluso la contraseña correcta de trabajo).

Utilizamos echo con un "tubo" (|) para enviar hdiutil la contraseña. Una tubería envía la salida del comando anterior (echo) para el comando después de la cañería (hdiutil). De esta manera, en lugar de pedir la contraseña, hdiutil simplemente toma el texto que nos leen desde el archivo.

Comprobar si la contraseña fue un éxito

if [ $? -eq 0 ]

Este comprueba si el comando anterior fue un éxito, por la comprobación de su código de salida. El $? es otro de los especiales de la variable que almacena el código de salida de la operación anterior.

Si el código de salida es 0 (sin errores), entonces sabemos que la contraseña trabajado, y si la instrucción se ejecuta estas líneas:

    echo "Password is $line"
    break

Esto muestra un simple mensaje que indica al usuario lo que el éxito de la contraseña, entonces el break comando sale de la while de bucle y termina el programa. Hacemos esto porque el guión de lo contrario seguirían hasta que sea revisado cada contraseña en el archivo.

La combinación de todas estas piezas juntas te ofrece una manera conveniente de la automatización de un largo y doloroso de la tarea.

0voto

Gustav Danell Puntos 125

Después de probar decenas de búsquedas de Google, he encontrado la aplicación que había utilizado hace muchos años.

crowbarDMG -> https://www.georgestarcher.com/?p=228

Aquí está la secuencia de comandos de Python que he usado para generar la lista de contraseñas:

import itertools
permutations = list(itertools.permutations(['part', 'PART', 'other', 'OTHER', '9', '@', '4', '%', '9', '#'], 4))
for (i, permutation) in enumerate(permutations):
    print ''.join(permutation)

A continuación, he usado crowbarDMG para descubrir la contraseña.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X