¿Se puede usar AppleScript para forzar la fuerza bruta de una unidad FileVault donde se pierde la contraseña?

3

Cometo un terrible error. Perdí totalmente mi papel con la contraseña secreta de mi disco duro externo GUID cifrado. Este disco externo contiene muchas imágenes pero también algunos documentos de trabajo muy útiles. Por lo tanto, sería muy interesante para mí pasar esta contraseña.

Puedo recordar tal vez el 50% de mi contraseña. Calculé que, con la parte conocida de mi contraseña, tendré un máximo de 250 000 combinaciones posibles. Un programa como crunch podría hacer la lista de todas las combinaciones, pero creo que no es la parte más difícil de esta misión.

Tengo que crear un pequeño programa para llenar el cuadro de diálogo y probar la combinación de 250 000. Ya intenté hacer esto con Apple Script pero no encontré el comando para completar la combinación en el cuadro de diálogo "Ingresar una contraseña para desbloquear el disco". Este cuadro de diálogo aparece cuando conectamos el disco al mac.

¿Alguien sabe bien el script de Apple para ayudarme a interactuar con este cuadro de diálogo del disco de desbloqueo? ¿O tal vez alguien tiene otra solución para desbloquearlo sin usar Applecript?

Si alguien está interesado en ayudarme, estaré muy agradecido.

    
pregunta KptainKirk 30.04.2016 - 19:40

1 respuesta

4

Como prueba de concepto, formateé una unidad de memoria USB usando un mapa de partición GUID y la formé como Mac OS Extended (Journaled) con el nombre "Encrypted".

Luego, en Finder, seleccioné el disco denominado "Encriptado" y presioné la tecla Control encriptado "Encriptado" ..., mientras configuraba su contraseña en "contraseña".

Cuando se hizo el cifrado, utilizando Terminal, determiné el UUID que necesitaría usar con el comando diskutil en mi script con el siguiente comando: diskutil cs list

Quería el UUID del Logical Volume donde mostraba Volume Name: Encrypted y en este caso lo mostraba como:

Logical Volume 1BFD0C99-1A67-4DC2-A0F4-199B2AE635B0

Aquí está la salida de diskutil cs list , para ver a partir de lo que dibujé el UUID .

$ diskutil cs list
CoreStorage logical volume groups (1 found)
|
+-- Logical Volume Group 3D8D6165-909C-4C55-8C0B-811AC4856773
    =========================================================
    Name:         Encrypted
    Status:       Online
    Size:         15270830080 B (15.3 GB)
    Free Space:   16777216 B (16.8 MB)
    |
    +-< Physical Volume 1E6C582B-5822-4986-9F41-164DE662FCE1
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk2s2
    |   Status:   Online
    |   Size:     15270830080 B (15.3 GB)
    |
    +-> Logical Volume Family 6D7E4DCE-D7C5-4383-BF88-9E2DB9A52E14
        ----------------------------------------------------------
        Encryption Status:       Unlocked
        Encryption Type:         AES-XTS
        Conversion Status:       Complete
        Conversion Direction:    -none-
        Has Encrypted Extents:   Yes
        Fully Secure:            Yes
        Passphrase Required:     Yes
        |
        +-> Logical Volume 1BFD0C99-1A67-4DC2-A0F4-199B2AE635B0
            ---------------------------------------------------
            Disk:               disk3
            Status:             Online
            Size (Total):       14935281664 B (14.9 GB)
            Size (Converted):   -none-
            Revertible:         Yes (unlock and decryption required)
            LV Name:            Encrypted
            Volume Name:        Encrypted
            Content Hint:       Apple_HFS
$ 

Ahora que tengo el UUID correcto, creé mi bash script en la Terminal:

touch unlock
open unlock

Luego agregué el siguiente código :

#!/bin/bash

if [[ ! -z $1 ]]; then
    while read -r line; do
        printf "   Testing: $line \n"
        diskutil coreStorage unlockVolume 1BFD0C99-1A67-4DC2-A0F4-199B2AE635B0 -passphrase "$line" 2>/dev/null
            if [[ $? -eq 0 ]]; then
                printf "\n   The correct password is: $line \n\n"
                exit 0
            fi
    done < "$1"
else
    printf "\n   Missing Dictionary File!...\n\n   Syntax: ./unlock dictionary.txt\n\n"
    exit 1
fi

Nota: Reemplaza el UUID anterior con el UUID del volumen lógico de tu unidad cifrada.

Guardéycerréelscriptllamado"unlock" y lo hice ejecutable usando:

chmod u+x unlock

Luego creé un archivo de diccionario, touch dictionary.txt y llené el archivo. Por supuesto, en su caso, usaría como mencionó el programa llamado crunch para crear su (s) archivo (s) de diccionario.

Luego expulsé y quité la memoria USB de mi sistema.

Luego conecté la memoria USB y cuando el mensaje "Ingrese una contraseña para desbloquear el disco" Encriptado "." Apareció el cuadro de diálogo, hice clic en el botón Cancelar.

Ahora estaba listo para desbloquearlo con el bash script y el archivo dictionary.txt de la Terminal.

Para mostrar lo que puse en el archivo dictionary.txt :

$ cat dictionary.txt
p
pa
pass
passw
password
passwo
passwor
$ 

Aquí está la salida de: ./unlock dictionary.txt

$ ./unlock dictionary.txt
   Testing: p 
Started CoreStorage operation
   Testing: pa 
Started CoreStorage operation
   Testing: pass 
Started CoreStorage operation
   Testing: passw 
Started CoreStorage operation
   Testing: password 
Started CoreStorage operation
Logical Volume successfully unlocked
Logical Volume successfully attached as disk3
Logical Volume successfully mounted as /Volumes/Encrypted
Core Storage disk: disk3
Finished CoreStorage operation

   The correct password is: password 

$

Como puede ver, probó lo que había en el archivo dictionary.txt hasta que, si encontraba la contraseña correcta, y cuando se probó la contraseña correcta, desbloqueó y montó el disco, imprime la contraseña correcta y sale de script .

El motivo para imprimir todas las contraseñas es que si necesita detener el script, puede eliminar las contraseñas probadas del archivo dictionary.txt antes de volver a comenzar.

Nota: Es importante que antes de ejecutar el bash script , primero hayas conectado la unidad y hayas hecho clic en el botón Cancelar, luego ejecutas el script .

    
respondido por el user3439894 01.05.2016 - 19:00

Lea otras preguntas en las etiquetas