Como prueba de concepto, formateé un disco USB usando un mapa de partición GUID y lo formateé en Mac OS Extended (Journaled) llamándolo "Encrypted".
Luego, en el Finder, seleccioné el disco llamado "Encrypted" y hice control-clic seleccionando Encrypt "Encrypted"..., al tiempo que establecía su contraseña a la "contraseña".
Cuando terminó de encriptarse, utilizando el Terminal, comprobé el UUID
Tendría que utilizar con el diskutil
en mi script con el siguiente comando: diskutil cs list
Quería el UUID
de la Logical Volume
donde mostraba Volume Name: Encrypted
y en este caso lo mostró como:
Logical Volume 1BFD0C99-1A67-4DC2-A0F4-199B2AE635B0
Esta es la salida de diskutil cs list
para ver de lo que extraje 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
$
Al contar ahora con el UUID
Creé mi bash script en la Terminal:
touch unlock
open unlock
A continuación, añadí lo 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: Sustituir el UUID
arriba con el UUID
del Volumen Lógico de su unidad encriptada.
He guardado y cerrado el script llamado "unlock" y lo hice ejecutable usando:
chmod u+x unlock
A continuación, he creado un archivo de diccionario, touch dictionary.txt
y rellenó el archivo. Por supuesto, en tu caso, utilizarías como has mencionado el programa llamado crunch
para crear su(s) archivo(s) de diccionario.
A continuación, expulsé y retiré el Thumb-drive USB de mi sistema.
A continuación, conecté la unidad de memoria USB y cuando apareció el cuadro de diálogo "Introduzca una contraseña para desbloquear el disco "Encriptado"", hice clic en el botón Cancelar.
Ahora estaba listo para desbloquearlo usando el bash script y dictionary.txt
de la Terminal.
Para mostrar lo que pongo en el dictionary.txt
archivo:
$ 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 encontró la contraseña correcta y cuando la contraseña correcta fue probada, desbloqueó y montó el disco, imprimió cuál era la contraseña correcta y salió del script .
La razón por la que se imprimen todas las contraseñas, es para que si necesita detener el script pueda entonces eliminar las contraseñas probadas del archivo dictionary.txt antes de comenzar de nuevo.
Nota: Es importante que antes de ejecutar el bash script primero ha enchufado la unidad y ha hecho clic en el botón Cancelar, luego ejecuta el script .
1 votos
Intentar descifrar un volumen encriptado a través de AppleScript es, en mi opinión, una forma absolutamente equivocada de hacerlo. Probablemente optaría por usar un bucle en un bash script con el
diskutil
utilidad de línea de comandos. Creo que sería más rápido en el procesamiento del número de combinaciones posibles y probablemente se ocuparía de los intentos fallidos de una manera mejor que a través de la GUI y AppleScript.0 votos
No sé si ya has visto mi respuesta, sin embargo he actualizado el código y otras informaciones. Por lo tanto, es posible que desee ver la actualización código y la salida de la muestra.