Come prova del concetto, ho formattato un'unità USB Thumb utilizzando una GUID Partition Map e formattandola come Mac OS Extended (Journaled) che la denominava "Encrypted".
Poi in Finder, ho selezionato il disco chiamato "Encrypted" e ho fatto clic tenendo premuto il tasto di controllo su Encrypt "Encrypted" ..., impostando la password su "password".
Quando ho terminato la crittografia, utilizzando Terminal, ho verificato il UUID
che avrei dovuto utilizzare con il comando diskutil
nel mio script con il seguente comando: diskutil cs list
Volevo il UUID
del Logical Volume
dove mostrava Volume Name: Encrypted
e in questo caso lo mostrò come:
Logical Volume 1BFD0C99-1A67-4DC2-A0F4-199B2AE635B0
Ecco l'output di diskutil cs list
, in modo da vedere da cosa ho disegnato 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
$
Ora con il corretto UUID
, ho creato il mio script bash nel Terminale:
touch unlock
open unlock
Ho quindi aggiunto il seguente codice :
#!/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: sostituisci UUID
sopra con UUID
del volume logico dell'unità crittografata.
Hosalvatoechiusoloscriptdenominato"unlock" e reso eseguibile utilizzando:
chmod u+x unlock
Ho quindi creato un file dizionario, touch dictionary.txt
e popolato il file. Naturalmente, nel tuo caso, utilizzeresti come hai menzionato il programma chiamato crunch
per creare i file del tuo dizionario.
Ho quindi espulso e rimosso l'unità USB Thumb dal mio sistema.
Ho quindi inserito l'USB Thumb-drive e quando "Inserisci una password per sbloccare il disco" Encrypted "." apparso la finestra di dialogo, ho fatto clic sul pulsante Annulla.
Ora ero pronto per sbloccarlo usando lo script bash e il dictionary.txt
file da Terminale.
Per mostrare cosa ho inserito nel file dictionary.txt
:
$ cat dictionary.txt
p
pa
pass
passw
password
passwo
passwor
$
Ecco l'output di: ./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
$
Come puoi vedere, ha provato ciò che era nel file dictionary.txt fino a quando non ha trovato la password corretta e quando è stata verificata la password corretta è stato sbloccato e montato il disco, stampa la password corretta ed esce dal lo script .
La ragione per stampare tutte le password è che se hai bisogno di interrompere lo script puoi rimuovere le password provate dal file dictionary.txt prima di ricominciare.
Nota: è importante che prima di eseguire lo script di bash tu abbia prima collegato di nuovo l'unità e fatto clic sul pulsante Annulla, quindi esegui lo script .