2 votes

Tester une liste de mots de passe sur Sparse Image

J'ai un fichier image épars contenant des données importantes que je voudrais récupérer. Le seul problème est que j'ai oublié le mot de passe.

J'ai une bonne idée des parties du mot de passe et j'ai réussi à générer un fichier de 3000 lignes avec une liste de mots de passe possibles.

Je voudrais savoir comment je peux les tester par rapport à mon image. Il y a quelques années, j'avais trouvé une application open source pratique avec une interface graphique simple qui faisait cela, mais je n'arrive pas à la retrouver. Peut-être que quelqu'un sait de quelle application je parle. Sinon, si quelqu'un connaît une autre méthode pour faire cela (peut-être avec Automator), ce serait formidable.

Merci

7voto

Ged Byrne Points 481

El hdiutil combinée avec un peu de script bash peut accomplir ce que vous recherchez. Vous aurez besoin d'un fichier texte brut avec chaque mot de passe sur une ligne séparée, se terminant par une ligne blanche .

  1. Copiez et collez ceci dans un fichier texte :

    #!/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. Sauvegardez-le et rendez-le exécutable en exécutant chmod +x /path/to/scriptfile dans le terminal.

  3. Dans le Terminal, exécutez /path/to/scriptfile /path/to/image.dmg /path/to/passwords.txt .

    • Il s'exécutera jusqu'à ce qu'il réussisse à monter l'image disque, et affichera le mot de passe qui a fonctionné. Dans mes tests, cela a pris 1.3-1.6 secondes par mot de passe, donc 3000 mots de passe peuvent prendre environ une heure, selon votre système (bien que cela puisse être plus tôt selon l'endroit où se trouve le mot de passe dans le fichier).

Cela devrait faire l'affaire. Si vous êtes curieux de savoir comment et pourquoi cela fonctionne, lisez la suite.

Explication

Boucle While

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

Cela boucle sur chaque ligne du fichier de mots de passe (qui est alimenté par la commande < "$2" ) et exécute les choses entre do y done à chaque fois qu'il tourne en boucle. $2 est une variable spéciale dans Bash qui représente le deuxième argument passé au script (c'est-à-dire que si vous exécutez ./foo bar blah , $2 serait blah ). Il est placé entre guillemets au cas où le nom contiendrait des espaces ou d'autres caractères susceptibles de poser des problèmes à Bash.

Montage de l'image

hdiutil attach -quiet -stdinpass "$1"`

Il s'agit de la commande permettant de monter l'image disque (que nous obtenons à partir des arguments de la ligne de commande via l'attribut $1 comme le fichier des mots de passe). Le site -quiet signifie ne pas imprimer de sortie (juste pour garder les choses en ordre), et -stdinpass signifie obtenir le mot de passe à partir de la ligne de commande et non la boîte de dialogue habituelle pour les mots de passe sous OS X.

echo -n "$line"

El echo répète simplement l'entrée qui lui est donnée, qui dans ce cas est une ligne individuelle du fichier de mots de passe, de la commande $line (qui est à nouveau citée au cas où les mots de passe contiennent des caractères spéciaux). Le site -n Le drapeau est la pièce finale de ce puzzle, il empêche l'écho de répéter la nouvelle ligne qui serait inclus dans le mot de passe (ce qui empêcherait même le bon mot de passe de fonctionner).

Nous utilisons echo avec un "tuyau" ( | ) pour envoyer hdiutil le mot de passe. Un pipe envoie la sortie de la commande précédente ( echo ) à la commande après le tuyau ( hdiutil ). De cette façon, plutôt que de nous demander le mot de passe, hdiutil prend simplement le texte que nous avons lu dans le fichier.

Vérifier si le mot de passe a réussi

if [ $? -eq 0 ]

Cela vérifie si la commande précédente a réussi, en vérifiant son code de sortie . Le site $? est une autre variable spéciale qui stocke le code de sortie de l'opération précédente.

Si le code de sortie est 0 (aucune erreur), alors nous savons que le mot de passe a fonctionné, et l'instruction if exécute ces lignes :

    echo "Password is $line"
    break

Cela affiche un simple message indiquant à l'utilisateur quel est le mot de passe réussi, puis l'option break quitte le while et termine le programme. Nous faisons cela parce que le script continuerait autrement jusqu'à ce qu'il ait vérifié chaque mot de passe dans le fichier.

En combinant tous ces éléments, vous disposez d'un moyen pratique d'automatiser une tâche autrement longue et pénible.

0voto

Sebastien Points 285

Après avoir essayé des dizaines de recherches sur Google, j'ai trouvé l'application que j'avais utilisée il y a de nombreuses années.

crowbarDMG -> https://www.georgestarcher.com/?p=228

Voici le script Python que j'ai utilisé pour générer la liste de mots de passe :

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

J'ai ensuite utilisé crowbarDMG pour découvrir le mot de passe.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X