[RESOLU] Vérification de password

Eléphant du PHP | 116 Messages

08 oct. 2014, 16:12

Bonjour à tous,

Ca fait quelques temps que je ne suis pas venu... Et je reviens pour demander de l'aide. Pas très cool comme mec... Je vous explique la situation. J'ai récupéré un site, qui a un espace membre. Dans la base de données j'ai un salt, un password. Et c'est tout ce que j'ai comme info. Le dev m'a dit que c'était du Sha512, mais je me suis documenté et je ne vois pas les préfixes habituels.

Je vous donne un extrait de la base.
Password : mWhMv4IGg5uK5yIrmrBePYvXot2h5vr+gH81VxANQrnD5XjZdQ+5dY9cgRtBo8J+EJfKHhyiEDiNZVmOLhwU4A==
Salt : 7p432rs1bts0sk00wggswoss4ogk84s
(En réalité le password est "test14")
A partir de là, est ce que vous sauriez me dire vers où je dois partir pour reconstituer mon espace membre sans changer le mdp de tous les membres ? J'ai fait mes tests avec if(hash = crypt(input,salt))... mais rien ! Et j'avoue que je ne sais pas trop par où creuser...

Merci d'avance,
Computarelier
@+,
Computarelier

Eléphant du PHP | 116 Messages

09 oct. 2014, 10:10

Petite news... Ca aurait été généré grâce à du SHA512 à en croire un fichier de param de Symfony2 avec du FosUserBundle....

Est-ce que ça vous inspire un peu plus ?
@+,
Computarelier

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 oct. 2014, 15:00

Bonjour,

Les 2 signes égales à la fin du password sont assez caractéristiques d'un encodage en base64.
Après il faut voir comment le salt est ajouté : concaténé à la fin, au début, avec un espace avant...
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 116 Messages

09 oct. 2014, 15:03

Merci pour ce bout de piste, arthur... :-)
@+,
Computarelier

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 oct. 2014, 15:04

L'outil suivant est pas mal en général pour essayer de trouver le type d'encodage quand on connait les données en entrée mais il ne m'a rien donné avec tes infos :
http://www.insidepro.com/hashes.php?lang=eng
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 oct. 2014, 15:42

Trouvé !

En fait, c'est beaucoup plus compliqué, mais avec le bout de script PHP qui explique comment ils génèrent le mot de passe, ça va mieux :
<?php
$pass = 'test14'; // Mot de passe
$salt = '7p432rs1bts0sk00wggswoss4ogk84s'; // Salt dans le fichier de config
$iterations = 5000; // Par défaut
$salted = $pass.'{'.$salt.'}'; // Concaténation avec des accolades autour du salt
 
$digest = hash('sha512', $salted, true); // On hash une 1ère fois
for ($i = 1; $i < $iterations; $i++) {
    $digest = hash('sha512', $digest.$salted, true); // On itère 5000 fois
}
$cryptedPass = base64_encode($digest); // On encode en base64
echo $cryptedPass;
// TADA ! mWhMv4IGg5uK5yIrmrBePYvXot2h5vr+gH81VxANQrnD5XjZdQ+5dY9cgRtBo8J+EJfKHhyiEDiNZVmOLhwU4A==
Source
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 116 Messages

09 oct. 2014, 15:53

Je t'envoie 15 000 accolades pour te remercier... Ca fait 3 par itération, ça devrait aller non ?

Merci beaucoup, beaucoup ;)

A très vite,

Computarelier
@+,
Computarelier