Sous OS X 10.11 - J'ai ouvert le .plist
fichier de mon utilisateur et j'ai regardé à l'intérieur du fichier.
Je l'ai fait avec la commande suivante:
sudo defaults read /var/db/dslocal/nodes/Default/users/<username>.plist ShadowHashData|tr -dc 0-9a-f|xxd -r -p|plutil -convert xml1 - -o -
Le fichier y est indiqué SALTED-SHA512
, j'ai donc supposé qu'il s'agissait d'un hachage SHA512.
Mais, je suis allé sur quelques sites de générateur de hachage SHA512 et j'ai entré mon mot de passe. J'ai fini par obtenir un hachage différent de celui qui était dans le .plist
fichier.
Alors, comment puis-je convertir ce qui se trouve dans le .plist
fichier en un hachage réel, ou exactement quel type de hachage est stocké dans le fichier?
macos
el-capitan
password
Flare Cat
la source
la source
SALTED-SHA512-PBKDF2
(OS X 10.10)!/var/db/shadow/hash
?Réponses:
Cryptage de mot de passe (valide dans OS 10.8 et plus récent)
Je veux d'abord expliquer votre commande:
La première partie de la commande lit la clé ShadowHashData dans le plist
Résultat (principalement hex):
la deuxième partie de la commande
tr -dc 0-9a-f
supprime tout sauf 0-9a-f.Résultat (hex):
la troisième partie le
xxd -r -p
ramène à un binaire (mal formé):et la dernière partie
plutil -convert xml1 - -o -
crée un plist xml bien formé:Pour obtenir un vrai fichier, remplacez-le
-o -
par-o ~/Desktop/tempuser.plist
Le plist contient trois parties clés : itérations , entropie et sel .
itérations est juste un entier, mais l' entropie et sel sont codés en base64. Pour continuer à travailler avec eux, vous devez les décoder et les xxd:
Pour décoder le sel, supprimez tous les espaces et les nouvelles lignes de la partie données et utilisez
Avec mes données ci-dessus c'est
avec le résultat sel (hex):
La même chose pour l'entropie:
avec le résultat entropique (hex):
Si vous avez besoin d'un fichier texte pour hashcat pour casser le mot de passe, vous devez combiner les données de hachage que vous avez trouvées dans une seule chaîne:
Avec mon exemple de données de hachage, c'est:
Enregistrez-le dans un fichier nommé hash.txt et utilisez-le dans hashcat. La commande de force brute appropriée pour trouver le mot de passe (= mon mot de passe de test simple ne contenant que 4 chiffres) est:
Le mot de passe résultant après 3 minutes de craquage (dans une machine virtuelle) est 1111 .
Maintenant l'inverse: Création de ShadowHashData (valide dans OS 10.8 et plus récent)
Cela explique pourquoi vous ne pouvez pas utiliser un simple générateur de hachage SHA512 pour créer vos données de "mot de passe". SHA512 est toujours important cependant. Le contexte est expliqué ici: PBKDF2-Key_derivation_process .
Vous avez besoin:
pour créer DK = PBKDF2 (PRF, mot de passe, sel, c, dkLen)
Pour créer DK ~ la clé d' entropie dans SALTED-SHA512-PBKDF2 (la seule partie de la liste intermédiaire qui repose sur votre mot de passe), utilisez php hash_pbkdf2 :
Dans Terminal (PHP ⩾ 5.5 est nécessaire), entrez:
La chaîne utilisée dans $ salt est la présentation hexadécimale échappée (\ x) de salt (hex):
0dba6246 ... -> \ x0d \ xba \ x62 \ x46 ...
Puisque vous pouvez définir ou connaître l'algorithme de hachage (il doit être sha512 pour Mac 10.8 et versions ultérieures), les itérations (un nombre supérieur à zéro et inférieur à 2 ^ 32-1), salt (longueur 64 octets hex mais aléatoire!) Et longueur (256 octets), vous pouvez créer un fichier plist intermédiaire bien formé, en inversant toutes les commandes ci-dessus.
En inversant votre commande (mieux: chacune des sous-commandes) dès la toute première étape, vous pouvez créer les données de la clé ShadowHashData dans le plist d'origine à l'aide du plist intermédiaire.
Et pour répondre enfin à votre question: l'algorithme de hachage utilisé pour traiter le mot de passe OS X (et d'autres données comme le sel) est SHA512. Mais vous ne pouvez pas dire que votre mot de passe utilisateur est stocké en tant que hachage SHA512 .
Votre mot de passe et le sel sont grillés plusieurs fois par sha512, puis le résultat est base64 et inversé xxd. Avec le sel et les itérations, il est à nouveau xxd'ed et base64'ed.
J'espère que je n'ai oublié aucune étape.
la source
Vous auriez besoin du sel de votre compte d'utilisateur sur ce système. C'est une chaîne aléatoire de caractères inventée pour vous lorsque vous avez créé votre compte (ou peut-être lorsque vous avez modifié votre mot de passe en dernier). Vous devez l'ajouter à votre mot de passe, par exemple:
[ce gros bloc de chiffres ci-dessous alors ...] [votre mot de passe]
Vous ne savez pas si cela est ajouté à l'avant ou à l'arrière: [votre mot de passe] [sel]? qui sait.
Pour l'utilisateur,
USERNAME
vous pouvez voir le hachage ici:Vient ensuite:
Fait intéressant, alors que j'ai modifié certains des blocs de nombres aléatoires ci-dessus afin que Stack n'obtienne pas mon sel (vous remarquerez peut-être des blocs aléatoires répétés qui étaient mon travail de collage!) Mais je n'ai pas collé sur ceux à la fin … Il semble se dissoudre en zéros au final ces 512 hash SHA intéressants !!!
PS. Ils l'ont un peu déplacé… étaient vraiment bien cachés. Je me suis perdu et je n'ai pas pu trouver le mien (voir ci-dessous), son caché dans une structure de dossier méchante de 'Nam!
la source