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 .