È possibile utilizzare AppleScript per forzare bruscamente un'unità FileVault in cui viene persa la password?

3

Faccio un terribile errore. Ho perso completamente il mio documento con la password segreta per il mio disco fisso esterno GUID crittografato. Questa unità esterna contiene molte immagini ma anche alcuni documenti di lavoro molto utili. Quindi sarebbe molto interessante per me ottenere questa password.

Posso ricordare forse il 50% della mia password. Ho calcolato che con la parte nota della mia password avrò un massimo di 250 000 combinazioni possibili. Un programma come il crunch potrebbe fare la lista di tutte le combinazioni, ma penso che non sia la parte più difficile di questa missione.

Devo creare un piccolo programma per riempire la finestra di dialogo e provare tutte le 250.000 combinazioni. Ho già provato a farlo con Apple Script ma non ho trovato il comando per compilare la combinazione nella finestra di dialogo "Inserisci una password per sbloccare il disco". Questa finestra di dialogo appare quando colleghiamo il disco al mac.

Qualcuno conosce bene il applescript per aiutarmi a interagire con questa finestra di dialogo del disco di sblocco? O forse qualcuno ha un'altra soluzione per sbloccarlo senza applescript?

Se qualcuno è interessato ad aiutarmi sarò molto grato.

    
posta KptainKirk 30.04.2016 - 19:40
fonte

1 risposta

4

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 .

    
risposta data 01.05.2016 - 19:00
fonte

Leggi altre domande sui tag