md5cracker

ViPHP
ViPHP | 3300 Messages

05 janv. 2012, 15:47

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

Fait du php depuis que ca existe ou presque :)

ViPHP
ViPHP | 5462 Messages

12 janv. 2012, 18:31

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)
Modifié en dernier par stealth35 le 12 janv. 2012, 19:49, modifié 2 fois.

Eléphant du PHP | 275 Messages

12 janv. 2012, 18:55

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 :)

ViPHP
ViPHP | 5462 Messages

12 janv. 2012, 18:59

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)

ViPHP
ViPHP | 3300 Messages

13 janv. 2012, 13:07

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.
Fait du php depuis que ca existe ou presque :)

ViPHP
ViPHP | 2287 Messages

17 janv. 2012, 14:59

Mot-clé google : rainbow tables
if(!@work()){ Nespresso(); } else { what(); }
______________________________