Parmi les grands avantages de l’algorithme de hachage MD5 est le fait qu’il est irréversible, autrement dit à sens unique, du coup même si on connais la sortie, il est difficile de trouver l’entrée qui a produit cette sortie.
C’est pour cette raison que la fonction MD5 est fréquemment utilisée pour sécuriser les mots de passes dans les bases de données! en effet plusieurs CMS réputés ,comme Joomla/Drupal/OsCommerce etc.. , l’utilise comme solution de cryptage de mot de passes des utilisateurs.
La recherche autour du reversing de l’algorithme de hashage MD5 est toujours active, or à ce jour, on a pas encore parvenu à le casser! par contre il existe des outils qui permettent de bruteforcer un password, d’où le brutfeorcing est un type d’attaque qui a pour principe de tenter toutes les combinaisons possibles jusqu’à ce qu’il tombe sur le bon passe! du coups ça risque de prendre des jours voir des années si le passes est long ou contient des caractères spéciaux.
Parmi les outils que je vous recommande :
- MDCrack (13.5 millions de hashes par seconde)
- Extreme GPU Bruteforcer (230 millions de hashes par seconde)
- BarsWF MD5 Bruteforcer (430 millions de hashes par seconde)
Les tests de performances on été effectués sur une machine avec un processeur Quad Core QX6700 (2.66Ghz) supporté par 4Go de RAM DDR2, une carte graphique Nvidia 8800GTX le tout sur carte mère basée sur un chipset Intel P45.
Et comme on a pas toujours le temps de bruteforcer des passwords et que ça demande un matériel puissant pour plus de rapidité, des « MD5 Reverse Databases (MD5RDB) » sont apparus sur la toile, leurs principe est de rassembler un nombre immense de correspondances (plaintext/hash) dans une table remplie à partir d’un dictionnaire, des passes déja crackés ou de mots contenu dans une page web, le remplissage est souvent automatisé comme il peut se faire manuellement par les utilisateurs, ainsi on peut questionner la base de données sur un md5 et cette dernière nous retourne son plaintext si il est connu.
il existe sur internet beaucoup de site MD5RDB qui offrent ce service gratuitement qui deviennent de plus en plus nombreux, la raison pour laquelle j’ai conçu MD5Spider: un petit script en PERL qui permet d’interroger une bonne dizaines de sites offrant ce service et récupérer le plaintext du hash si il existe dans leurs bases de données, ça vous permettra de gagner du temps avant de penser au bruteforcing de vos passes .
Voici à quoi ça ressemble son éxecution en ligne de commande :

Ci-dessous le code source :
#!/usr/bin/perl
print q(
/---------------------------------------------------\
| MD5 Spider 1.0 |
| Mohammed CHERIFI - mohammed@mcherifi.org |
\---------------------------------------------------/
);
use IO::Socket;
sub findme()
{
my $md5 = $_[0];
my $host = $_[1];
my $uri = $_[2];
my $pdata = $_[3].$md5;
my $regexp = $_[4];
$datalen = length $pdata ;
syswrite STDOUT, "\n\n\tRecherche sur $host"
my $sock = new IO::Socket::INET (
PeerAddr ="$host",
PeerPort =80,
Proto ="tcp"
);
if(!$sock){
print " [!] Connection time out : $!\n";
return false;
}
else
{
print $sock "POST /$uri"."$md5"." HTTP/1.1\n";
print $sock "Host: $host\n";
print $sock "Referer: $host\n";
print $sock "Accept-Language: en-us\n";
print $sock "Content-Type: application/x-www-form-urlencoded\n";
print $sock "User-Agent: MorX-Zilla\n";
print $sock "Connection: Keep-Alive\n";
print $sock "Cache-Control: no-cache\n";
print $sock "Content-Length: $datalen\n\n";
print $sock "$pdata\n";
while ($answer = <$sock>)
{
if ($answer =~ /$regexp/ )
{
print "Cracked ! \n\n\n\t"
sleep(1);
print "Le plaintext est : ".$1."\n\n\t";
print "[+] Merci $host :P Enjoy ;) \n\n";
exit(0);
}
}
close($sock);
}
}
print q(
Etrez le hash MD5
Example : b2f3d1e0efcb5d60e259a34ecbbdbe00
hash MD5: );
$hash=$_1;
chomp ($hash);
unless($hash =~ /[0-9a-fA-Z]{32}/) {die "n'est pas un md5 :-/ !\n"};
print "Recherche en cours ....\n";
@sites = (
["passcracking.ru","/index.php?xD=","datafromuser=","lor=#FF0000>(.*?)<\/td>.*?<\/td><\/"],
["md5.benramsey.com","/md5.php?hash=","","TA.(.*?)..><\/s"],
["md5.noisette.ch","/md5.php?hash=","","TA.(.*?)..><\/s"],
["gdataonline.com","qkhash.php?mode=xml&hash=","","t>(.*?)<\/re"],
["md52.altervista.org","index.php?md5=","","d: .*?ed\">[^\[](.*?)<\/font><\/b"]
);
$siteindex = 0;
foreach (@sites){
$site = $sites[$siteindex][0];
$uri = $sites[$siteindex][1];
$pdata = $sites[$siteindex][2];
$regex = $sites[$siteindex][3];
findme($hash,$site,$uri,$pdata,$regex);
$siteindex++;
}
print "\n\nash introuvable! John est ton ami ;)\n\n";
je sais pas si ce ci peut s’appeler « Reversing d’un hash » … c’est pas du RE je trouve …
3tatek khatrek t publié had l code source :D
md5 avec grain de sel et beaucoup de poivres et on en pa
md5 avec grain de sel et beaucoup de poivres et on en parle plus ;) lol
haha, je crois que je suis un des 1er qui ont utilise se script ;) tu te rappel je crois bien :D
See u soon bro… /
Cordialement;
BigBrother
syntax error at Crack_Mdr.pl line 23, near « my »
syntax error at Crack_Mdr.pl line 52, near « sleep »
Too many arguments for main::findme at Crack_Mdr.pl line 86, n
Execution of Crack_Mdr.pl aborted due to compilation errors.
P.s : ca beug simo :s
bonjour;
est il possible de trouver le md5 d’un mot de passe que l’on connait pas mais en ayant juste l’adresse mail. autrement dit est ce qu’en ayant l’adresse facebook je peux retrouver le md5 du mot de passe??? pouvez vous me donner d info svp svp… Merci