Prova un elenco di password su Sparse Image

2

Ho un file di immagine sparse con alcuni dati importanti in esso che vorrei recuperare. L'unico problema è che ho dimenticato la password.

Ho una buona idea delle parti della password e sono riuscito a generare un file di 3000 righe con un elenco di possibili password.

Vorrei sapere come posso testarli contro la mia immagine. Qualche anno fa, avevo trovato una pratica app open source con una semplice GUI che ha fatto questo, ma non riesco a trovarlo. Forse qualcuno sa di quale app sto parlando. Altrimenti, se qualcuno conosce un altro metodo per farlo (forse con l'automatore), sarebbe fantastico.

Grazie

    
posta Sebastien 13.10.2012 - 11:06
fonte

2 risposte

7

Il comando hdiutil combinato con un un po 'di scripting bash può realizzare ciò che stai cercando. Avrai bisogno di un file di testo normale con ogni password su una riga separata, che termina con una riga vuota .

  1. Copia e incolla questo in un file di testo:

    #!/bin/bash
    
    while read line
    do
        echo -n "$line" | hdiutil attach -quiet -stdinpass "$1"
        if [ $? -eq 0 ]; then
            echo "Password is $line"
            break
        fi
    done < "$2"
    
  2. salvalo e rendilo eseguibile eseguendo chmod +x /path/to/scriptfile nel terminale.

  3. In Terminale, esegui /path/to/scriptfile /path/to/image.dmg /path/to/passwords.txt .
    • Verrà eseguito fino a quando non verrà installata correttamente l'immagine del disco e verrà restituita la password che ha funzionato. Nei miei test ci sono voluti 1,3-1,6 secondi per password, quindi 3000 password potrebbero impiegare circa un'ora, a seconda del sistema (anche se potrebbe essere più veloce a seconda di dove si trova la password nel file).

Questo dovrebbe fare il trucco. Se sei curioso di sapere come e perché funziona, continua a leggere.

Spiegazione

While loop

    while read line
    do
    […]
    done < "$2"

Questo loop su ogni riga del file password (che viene alimentato tramite la parte < "$2" ) ed esegue la roba tra do e done ogni volta che esegue il ciclo. $2 è una variabile speciale in Bash che rappresenta il secondo argomento passato allo script (ad esempio, se hai eseguito ./foo bar blah , $2 sarebbe blah ). È racchiuso tra virgolette nel caso in cui ci siano spazi o altri caratteri nel nome che potrebbero causare problemi per Bash.

Montaggio dell'immagine

hdiutil attach -quiet -stdinpass "$1"'

Questo è il comando per montare effettivamente l'immagine del disco (che otteniamo dagli argomenti della riga di comando tramite la variabile $1 , proprio come il file password). Il flag -quiet significa non stampare alcun output (solo per mantenere le cose in ordine), e -stdinpass significa ottenere la password da la riga di comando , non la solita finestra di dialogo della password OS X.

echo -n "$line"

Il comando echo ripete semplicemente l'input dato, che in questo caso è una singola riga dal file password, dalla variabile $line (che viene nuovamente citata nel caso in cui le password contengano caratteri speciali). Il flag -n è il pezzo finale di questo puzzle, impedisce a echo di ripetere il carattere newline , che verrebbe incluso nella password (e quindi impedire anche il corretto funzionamento della password).

Usiamo echo con una "pipe" ( | ) per inviare hdiutil alla password. Una pipe invia l'output del comando precedente ( echo ) al comando dopo la pipe ( hdiutil ). In questo modo invece di chiederci la password, hdiutil prende semplicemente il testo che leggiamo dal file.

Verifica se la password ha avuto successo

if [ $? -eq 0 ]

Controlla se il precedente comando ha avuto successo, controllando il suo codice di uscita . $? è un'altra variabile speciale che memorizza il codice di uscita dell'operazione precedente.

Se il codice di uscita è 0 (nessun errore), allora sappiamo che la password ha funzionato e l'istruzione if esegue queste righe:

    echo "Password is $line"
    break

Questo mostra un semplice messaggio che indica all'utente la password di successo, quindi il comando break esce dal ciclo while e termina il programma. Lo facciamo perché altrimenti lo script continuerà fino a quando non viene controllata ogni password nel file.

Combinare tutti questi pezzi insieme ti dà un modo conveniente di automatizzare un compito altrimenti lungo e doloroso.

    
risposta data 13.10.2012 - 20:11
fonte
0

Dopo aver provato decine di ricerche Google, ho trovato l'app che avevo usato molti anni fa.

crowbarDMG - > link

Ecco lo script Python che ho usato per generare l'elenco delle password:

import itertools
permutations = list(itertools.permutations(['part', 'PART', 'other', 'OTHER', '9', '@', '4', '%', '9', '#'], 4))
for (i, permutation) in enumerate(permutations):
    print ''.join(permutation)

Ho quindi usato crowbarDMG per scoprire la password.

    
risposta data 14.10.2012 - 11:22
fonte

Leggi altre domande sui tag