Показать сообщение отдельно

  #280  
Старый 29.01.2008, 18:54
Isis
Флудер
Регистрация: 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
 
Ответить с цитированием