Page 1 sur 1

md5cracker

Posté : 05 janv. 2012, 15:47
par Nagol
Hello,

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";


Re: md5cracker

Posté : 12 janv. 2012, 18:31
par stealth35
dans le sens ou y'a 16 ^ 32 possibilités, autant faire une boucle et faire le md5 sur l’incrémentation, sans forcement donnée la bonne chaine y'aura sans doute des collisions :wink:
$orig = 'df73b956808cd23d30c76725215c9e0e';
for($i = 0; $orig !== md5($i); $i = bcadd($i, '1'));
echo $i;

EDIT : sinon avec BarWF c'est plus simple (je suis a 450M/sec, soit 23961994499014040179324 années)

Re: md5cracker

Posté : 12 janv. 2012, 18:55
par popy
Sauf qu'aucun processeur de PC ne peut aller jusqu'a 16^32 avec des ints, vu que ça reviens à 2^256 (et non, on a pas encore de processeur 256bits)
Va falloir stringifier ton int :)

Re: md5cracker

Posté : 12 janv. 2012, 18:59
par stealth35
Sauf qu'aucun processeur de PC ne peut aller jusqu'a 16^32 avec des ints, vu que ça reviens à 2^256 (et non, on a pas encore de processeur 256bits)
Va falloir stringifier ton int :)
j'ai pas de int ... (bcadd)

Re: md5cracker

Posté : 13 janv. 2012, 13:07
par Nagol
doit y'avoir encore mieux même mais j'ai pas pris le temps de penser l'algorythmie, je me suis dit que de toutes les manières en php ca serait pas rapide que c'était plus pour rigoler qu'autre chose, au passage y'a john the ripper sinon pour ce genre de boulot.

Re: md5cracker

Posté : 17 janv. 2012, 14:59
par Calimero
Mot-clé google : rainbow tables