comme beacoup d'entre vous, j'en suis sur, j'attend de pied ferme le lancement de l'offre freemobile, depuis deux jours free nous tease avec des messages codés et autres joyeusetés pour jongler avec nos nerfs, entre autre ils ont diffusé deux messages encodé en md5 dans un ascii art le premier était "jesaispas", le deuxième n'a pas encore été trouvé, alors du coup je me suis codé un petit script php qui prend en paramètre le md5 à trouver, et un pattern comprenant tous les caractères à tester, la fonction est récursive, et fait globalement un bruteforce, je l'ai testé avec le premier md5 et elle fonctionne, elle ne sert pas vraiment à grand chose dans la mesure ou faire un bruteforce sur un md5 (c'est à dire tester toutes les combinaisons possibles), est extrèmement long, couteux, et nécéssiterait un langage plus performant que php, mais pour la forme et si ça amuse quelqu'un je le partage ici:
<?php
$md5 = 'df73b956808cd23d30c76725215c9e0e';
//$md5 = 'efb7929e6a5b7dcc6ebb79aa3c45af13';
$testpattern = 'abcdefghijklmnopqrstuvwxyz';
//$testpattern = 'jesaip';
$result = 'no result';
$time1 = microtime(true);
function md5crack($md5, $testpattern, $limit, $count=0, $res='') {
$oldres = $res;
$tmp = str_split($testpattern);
for($i=0; $i<count($tmp); $i++) {
$res = $oldres;
$res .= $tmp[$i];
if(md5($res) == $md5) {
$GLOBALS['result'] = $res;
return;
}
if($count < $limit-1) {
$count++;
md5crack($md5, $testpattern, $limit, $count, $res);
$count--;
}
}
}
md5crack($md5, $testpattern, 10);
$time2 = microtime(true);
echo 'Result is: ' . $result . "\n";
echo 'It took aproximately ' . round($time2 - $time1) . ' seconds to crack it' . "\n";