
29.01.2008, 18:54
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
[perl] Md5 hash site cracker
Код HTML:
#!/usr/bin/perl
use Digest::MD5 qw(md5_hex);
use LWP::Simple qw($ua get);
$ua->agent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.4');
use strict;
sub trim($){
my $string = shift;
my $string =~ s/^\s+//;
my $string =~ s/\s+$//;
return $string;
}
my $proxy = "";
sub getcracked($){
my $hash = $_[0];
my $cracked;
my %h_sites;
my %h_regexes;
$h_sites{"md5-db.com"} = "search.php?hash=$hash";
$h_sites{"alimamed.pp.ru"} = "md5/?md5e=&md5d=$hash";
$h_sites{"md5.rednoize.com"} = "?p&s=md5&q=$hash";
$h_sites{"gdataonline.com"} = "qkhash.php?mode=txt&hash=$hash";
$h_sites{"ice.breaker.free.fr"} = "md5.php?hash=$hash";
$h_sites{"md5.xpzone.de"} = "?string=$hash&mode=decrypt";
$h_regexes{"md5-db.com"} = "<ul><li>\"(.*?)\"<\/li><\/ul> <\/span>";
$h_regexes{"alimamed.pp.ru"} = "<b>(.*?)<\/b><br>";
$h_regexes{"md5.rednoize.com"} = "(.+)";
$h_regexes{"gdataonline.com"} = "<b>(.*?)<\/b><\/td><\/tr>";
$h_regexes{"ice.breaker.free.fr"} = "<b><br><br> - (.*?)<br><br><br>";
$h_regexes{"md5.xpzone.de"} = "Code: <b>(.*?)<\/b><br>";
foreach my $key(keys %h_sites){
#print "[+] CHECKING\tSITE: $key \n\t\tSCRIPT: $h_sites{$key}\n\t\tREGEX: $h_regexes{$key}\n";
print "[+] CHECKING\tSITE: $key\n";
if($cracked==1){
last;
}
else{
my $con = HTTP::Request->new(GET => $proxy . "http://$key/$h_sites{$key}");
$con->header(Accept => 'text/xml,application/xml,application/xhtml+xml,text/html');
my $content = $ua->request($con);
if ($content->is_success) {
if($content->content =~ m/$h_regexes{$key}/i){
if(md5_hex($1) eq $hash){
print "[+] Found match $hash - $1\n\n";
return $1;
$cracked=1;
}
else{
return 0;
}
}
}
else {
print $content->status_line . "\n";
}
}
}
if($cracked==0){#No GET sites cracked our hash, move onto POST
return &postcracked($hash);
}
}
sub postcracked{
my $hash = $_[0];
my $cracked;
my %h_sites;
my %h_regexes;
my %h_posts;
$h_sites{"md5decrypter.com/"} = "hash=$hash&submit=Decrypt%21";
$h_sites{"md5encryption.com/?mod=decrypt"} = "hash2word=$hash";
$h_sites{"hashreverse.com/index.php?action=view"} = "hash=$hash&Submit2=Search+for+a+SHA1+or+MD5+hash";
$h_sites{"securitystats.com/tools/hashcrack.php"} = "inputhash=$hash&type=MD5&Submit=Submit";
$h_sites{"hashchecker.com/index.php"} = "search_field=$hash&Submit=search";
$h_sites{"md5crack.it-helpnet.de/index.php?op=search"} = "md5=$hash";
$h_sites{"mmkey.com/md5/home.asp?action=look"} = "md5text=$hash&look=+FIND+"; #Slow
$h_regexes{"md5decrypter.com/"} = "<b class='red'>Normal Text: <\/b>(.*?)\n<br\/><br\/>";
$h_regexes{"md5encryption.com/?mod=decrypt"} = "<b>Decrypted Word:<\/b> (.*?)<br \/>";
$h_regexes{"hashreverse.com/index.php?action=view"} = "Following results were found:<br><ul><li>(.*?)<\/li><\/ul>";
$h_regexes{"securitystats.com/tools/hashcrack.php"} = "<BR>$hash = (.*?)<\/td>";
$h_regexes{"hashchecker.com/index.php"} = "<li>$hash is <b>(.*?)<\/b>";
$h_regexes{"md5crack.it-helpnet.de/index.php?op=search"} = "<td>$hash<\/td><td>(.*?)<\/td><\/tr><\/table>";
$h_regexes{"mmkey.com/md5/home.asp?action=look"} = "<input size=\"40\" name=\"rs2\" value=\"(.*?) #Slow \" color=\"red\">";
foreach my $key(keys %h_sites){
if($cracked==1){
last;
}
else{
#print "[+] CHECKING\tSITE: $key \n\t\tPOST: $h_sites{$key}\n\t\tREGEX: $h_regexes{$key}\n";
print "[+] CHECKING\tSITE: $key\n";
my $con = HTTP::Request->new(POST => $proxy . "http://" . $key);
$con->content_type('application/x-www-form-urlencoded');
$con->content($h_sites{$key});
my $content = $ua->request($con);
if ($content->is_success) {
if($content->content =~ m/$h_regexes{$key}/i){
my $fhash = $1;
if(md5_hex($fhash) eq $hash){
print "[+] Found match $hash - $fhash\n\n";
return $fhash;
$cracked=1;
}
else{
print "\n$fhash\n\n";
}
}
}
else{
print "[-] Error: " . $content->status_line . "\n";
}
}
}
if($cracked==0){
return 0;
}
}
sub usage{
print "USAGE: <user:hash list> <result list>\n";
print "EX: dump.txt finish.txt\n";
exit;
}
&usage unless @ARGV==2;
my $hashlist = $ARGV[0];
my $resultlist = $ARGV[1];
open("zile", $hashlist) || die "Couldn't open file\n";
my @lines=<zile>;
close("zile");
chomp(@lines);
foreach my $line(@lines){
if($line =~ m/^(.*?):([a-f0-9]{32})$/i){
print "[+] Cracking $1 with $2\n";
print "Username: $1\nHash: $2\n\n";
my $cracky = &getcracked("$2");
if($cracky){
open(LOG,">>$resultlist");
print LOG "$1:$cracky\n";
close(LOG);
}
else{
print "[-] Didn't find match\n";
}
}
else{
print "$line doesn't match user:md5\n";
}
}
Код:
USAGE: <user:hash list> <result list>
EX: dump.txt finish.txt
|
|
|