md5-bruteforcer
#!/opt/lampp/bin/php //geef hier het pad aan van je php executable
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
set_time_limit(0); //geef aan hoe lang mag het script draaien.
switch (strtolower($argv[3])) //of $_SERVER['argv'].
{
case 'md5':
echo " *** Gebruikt MD5 als variant\r\n";
$encrypt = create_function('$hash', 'return md5($hash);');
break;
case 'md5_salt':
echo " *** Gebruikt salted MD5 als variant\r\n";
$encrypt = create_function('$hash', 'return md5(md5($hash).$hash);');
break;
case 'sha1':
echo " *** Gebruikt SHA1 als variant\r\n";
$encrypt = create_function('$hash', 'return sha1($hash);');
break;
case 'sha1_salt':
echo " *** Gebruikt salted SHA1 als variant\r\n";
$encrypt = create_function('$hash', 'return sha1(sha1($hash).$hash);');
break;
case 'des':
echo " *** Gebruikt DES als variant\r\n";
$encrypt = create_function('$hash', 'return crypt($hash);');
break;
case 'cleartext':
echo " *** Gebruikt cleartext als variant\r\n";
$encrypt = create_function('$hash', 'return ($hash);');
break;
default:
echo "'{$argv[3]}' is een niet ondersteunende methode Voor uitleg roep het script aan door. \r\n\r\n";
echo "\t{$argv[0]} --help"; /*Geen uitleg toegevoegd over het gebruik ervan*/
exit;
}
if(isset($argv[4]))
$charset=$argv[4];
else $charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$charset_beginning = $charset{0};
$charset_end = $charset{strlen($charset)-1};
$HASH = $argv[1];
$SIZE = (int) $argv[2];
$start = time()-1;
$curtotal=0;
$total=0;
for($i=$SIZE; $i>0; $i--) $total+=pow(strlen($charset), $i);
$split=ceil(($total/strlen($charset))/5);
echo " *** Maxumum grootte: $SIZE, kraakt de hash: $HASH\r\n";
echo " *** Totale keys: $total\r\n";
echo " *** Characterset: $charset\r\n";
for($i=1; $i<=$SIZE; $i++)
{
$keyspace = pow(strlen($charset), $i);
echo "\r\nProbeert met $i charakters te kraken.\r\n";
echo " *** Totale combinaties: $keyspace\r\n";
$key = '';
for ($v=0; $v<$i; $v++) $key .= $charset_beginning;
for ($f=0; $f<$keyspace+1; $f++) {
$curtotal++;
if ($HASH==$encrypt($key)) {
$time=(time()-$start);
echo<<<END
Succesvol gekraakt na $time seconden.
Heeft de leesbare text van de '$HASH' gevonden welke '$key' is\r\n.
END;
exit;
}
if($f%$split == 0) {
$rate=ceil($curtotal/(time()-$start));
echo " ... $curtotal/$total ($key) [$rate Keys/second]\r\n";
}
for ($v=0; $v<$i; $v++) {
if ($key[$v] != $charset_end) {
$key[$v] = $charset{strpos($charset, $key[$v])+1};
if ($v > 0) for ($a = 0; $a < $v; $a++) $key[$a] = $charset_beginning;
break;
}
}
}
}
$time=time()-$start;
echo<<<END
*** Geen overeenkomsten gevonden
Dit kan veroorzaakt zijn door de ($SIZE) dat kort kan zijn..
Is $time seconden bezig geweest. We hebben in totaal $total combinaties gezocht.
END;
?>
set_time_limit(0); //geef aan hoe lang mag het script draaien.
switch (strtolower($argv[3])) //of $_SERVER['argv'].
{
case 'md5':
echo " *** Gebruikt MD5 als variant\r\n";
$encrypt = create_function('$hash', 'return md5($hash);');
break;
case 'md5_salt':
echo " *** Gebruikt salted MD5 als variant\r\n";
$encrypt = create_function('$hash', 'return md5(md5($hash).$hash);');
break;
case 'sha1':
echo " *** Gebruikt SHA1 als variant\r\n";
$encrypt = create_function('$hash', 'return sha1($hash);');
break;
case 'sha1_salt':
echo " *** Gebruikt salted SHA1 als variant\r\n";
$encrypt = create_function('$hash', 'return sha1(sha1($hash).$hash);');
break;
case 'des':
echo " *** Gebruikt DES als variant\r\n";
$encrypt = create_function('$hash', 'return crypt($hash);');
break;
case 'cleartext':
echo " *** Gebruikt cleartext als variant\r\n";
$encrypt = create_function('$hash', 'return ($hash);');
break;
default:
echo "'{$argv[3]}' is een niet ondersteunende methode Voor uitleg roep het script aan door. \r\n\r\n";
echo "\t{$argv[0]} --help"; /*Geen uitleg toegevoegd over het gebruik ervan*/
exit;
}
if(isset($argv[4]))
$charset=$argv[4];
else $charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$charset_beginning = $charset{0};
$charset_end = $charset{strlen($charset)-1};
$HASH = $argv[1];
$SIZE = (int) $argv[2];
$start = time()-1;
$curtotal=0;
$total=0;
for($i=$SIZE; $i>0; $i--) $total+=pow(strlen($charset), $i);
$split=ceil(($total/strlen($charset))/5);
echo " *** Maxumum grootte: $SIZE, kraakt de hash: $HASH\r\n";
echo " *** Totale keys: $total\r\n";
echo " *** Characterset: $charset\r\n";
for($i=1; $i<=$SIZE; $i++)
{
$keyspace = pow(strlen($charset), $i);
echo "\r\nProbeert met $i charakters te kraken.\r\n";
echo " *** Totale combinaties: $keyspace\r\n";
$key = '';
for ($v=0; $v<$i; $v++) $key .= $charset_beginning;
for ($f=0; $f<$keyspace+1; $f++) {
$curtotal++;
if ($HASH==$encrypt($key)) {
$time=(time()-$start);
echo<<<END
Succesvol gekraakt na $time seconden.
Heeft de leesbare text van de '$HASH' gevonden welke '$key' is\r\n.
END;
exit;
}
if($f%$split == 0) {
$rate=ceil($curtotal/(time()-$start));
echo " ... $curtotal/$total ($key) [$rate Keys/second]\r\n";
}
for ($v=0; $v<$i; $v++) {
if ($key[$v] != $charset_end) {
$key[$v] = $charset{strpos($charset, $key[$v])+1};
if ($v > 0) for ($a = 0; $a < $v; $a++) $key[$a] = $charset_beginning;
break;
}
}
}
}
$time=time()-$start;
echo<<<END
*** Geen overeenkomsten gevonden
Dit kan veroorzaakt zijn door de ($SIZE) dat kort kan zijn..
Is $time seconden bezig geweest. We hebben in totaal $total combinaties gezocht.
END;
?>