md5() bruteforce

Status
Niet open voor verdere reacties.

Niellles

Gebruiker
Lid geworden
21 jun 2008
Berichten
194
Zat me even te vervelen en wou eens kijken of ik een bruteforce script kon schrijven voor md5(), makkie. Ik vraag me nu alleen af waarom er bij een input met tekens 3x wordt geoched $input hoort bij ...
PHP:
<?php
$possibles = "a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;1;2;3;4;5;6;7;8;9;0;!;@;#;$;%;^;&;*;(;);-;=;+;_;/;?;.";
$chars = explode(";", $possibles);
$top = count($chars);
$input = $_POST['input'];
if (isset($_GET['input']) && $_GET['input'] == 'set')
{
	for ($a = 0; $a <= $top; $a++)
	{
		$z = $chars[$a];
		if (md5($z) == $input)
		{
			echo "$input hoort bij $z";
			break;
		}
		else
		{
			for ($b = 0; $b <= $top; $b++)
			{
				$y = $z.$chars[$b];
				if (md5($y) == $input)
				{
					echo "$input hoort bij $y";
					break;
				}
				else
				{
					for ($c = 0; $c <= $top; $c++)
					{
						$x = $y.$chars[$c];
						if (md5($x) == $input)
						{
							echo "$input hoort bij $x";
							break;
						}
						else
						{
							for ($d = 0; $d <= $top; $d++)
							{
								$w = $x.$chars[$d];
								if (md5($w) == $input)
								{
									echo "$input hoort bij $w";
									break;
								}
								else
								{
								}
							}
						}
					}
				}
			}
		}
	}
}
else
{
	echo '<form method="post" action="test.php?input=set">Input: <input type="text" name="input"><br><input type="submit" value="Hard crack!"></form>';
}
?>
Iemand die de fout ziet?
 
Bruteforcen in PHP gaat niet werken...

Neem maar eens de tijd op, die PHP erover doet om 10.000 hashes te maken (bijvoorbeeld).

En bekijk dan hoeveel mogelijkheden er zijn als je tot bijvoorbeeld 8 tekens (nog niet bijster lang) wilt proberen. 53^8 (= 62.259.690.411.361) ruim 62 biljoen (62 duizend miljard).

6,2 miljard keer zo lang als die 10.000 hashes dus (alle problemen naast tijd buiten beschouwing gelaten).

Bij mij duurden 10.000 hashes afgerond 0.02 seconden. Dat komt totaal dus op bijna 40.000 jaar.

Ik snap dat het totaal geen antwoord is op je vraag, maar misschien is het een stimulans om dit project te laten varen ;)
 
Het gaat hier absoluut niet om een project!
Gewoon even een testje uit intresse en nu vraag ik me af wat er fout gaat...
 
Bij welke input gebeurd het precies?

Wat ik zie is dat je een enkele Break gebruikt, dat betekend dat als je in een diepe loop zit, hij terugvalt naar de vorige loop en daardoor waarschijnlijk op meerdere manieren langs hetzelfde antwoord komt.

Je kunt het voorkomen door aan te geven hoeveel loops je wil breken:

PHP:
for ( $i = 0 ; $i < 100 ; $i++ ) {
  for ( $j = 0; $j < 100; $j++ ) {
    // stop met beide loops!
    break 2;
  }
} 
echo $i . ' ' . $j;
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan