It looks like you're new here. If you want to get involved, click one of these buttons!
#!/usr/bin/perl
use Digest::MD5 qw( md5_hex );
use LWP::UserAgent;
use HTTP::Request::Common;
print \"MD5 Hash ToolKit [mr.pr0n]\";
#*************************** [Main Menu] ******************************
menu:;
print \"\nMenu:\n\";
print \" 1. Create your MD5 Hash. \n\";
print \" 2. Crack your MD5 Hash with Dictionary Attack.\n\";
print \" 3. Crack your MD5 Hash with Brute Force Attack.\n\";
print \" 4. Search for your MD5 Hash.\n\";
print \" 5. Exit.\n\";
print \"\nOption: \";
$option=<STDIN>;
if ($option!=1 && $option!=2 && $option!=3 && $option!=4 && $option!=5)
{
print \"Oups!Wrong Option!!\n\";
goto menu;
}
# Epilogh Option
if ($option==1)
{&create_md5}
if ($option==2)
{&dic_attack}
if ($option==3)
{&brute_attack}
if ($option==4)
{&search_md5}
if ($option==5)
{&quit}
#****************************** [Option 1] ******************************
sub create_md5
{
$word;
print \"MD5 Hash Creator\n\";
print \"Give me your word: \";
$word = <STDIN>;
chomp($word);
print \"MD5 Hash is: \", md5_hex(\"$word\"), \"\n\n\";
goto menu;
}
#****************************** [Option 2] ******************************
sub dic_attack
{
print \"MD5 [Worldlist] Cracker [mr.pr0n]\n\";
print \"Enter MD5: \";
chomp($hash = <STDIN>);
if(length($hash)!=32)
{
die \"$hash is NOT valid\n\";
}
$words=\"passes.txt\";
open (WORDLIST, $words);
print \"Wordlist opened successfully!\n\";
@wordlist = <WORDLIST>;
for ($i = 0; $i < @wordlist; $i++){
$h = $wordlist[$i];
chomp($h);
$dec=md5_hex($h);
if($dec eq $hash){
die \"[+]Your password is: $h\n\";}
}
print \"[-]Not Cracked!!\n\";
goto menu;
}
#****************************** [Option 3] ******************************
sub brute_attack
{
$min=1;
$max=10;
print \"MD5 [BruteForce] Cracker [mr.pr0n]\n\";
print \"Enter Type: \";
chomp($type = <STDIN>);
if ($type=~\"a\") {
$alpha = \"abcdefghijklmnopqrstuvwxyz\";}
if ($type=~\"A\") {
$alpha = $alpha. \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";}
if ($type=~\"1\") {
$alpha = $alpha.\"1234567890\";}
if ($type=~\"!\") {
$alpha = $alpha. \"!\\"\$%&/()=?-.:\\*'-_:.;,\";}
print \"Enter MD5: \";
chomp($md5 = <STDIN>);
if(length($md5)!=32)
{die \"$md5 is NOT valid\n\";}
for ($j=1; $j<=10; $j++)
{mainbrute ($j);}
sub mainbrute
{
$CharSet = shift;
@RawString = ();
for ($i =0;$i<$CharSet;$i++){ $Brute[i] = 0;}
do{
for ($i =0; $i<$CharSet; $i++){
if ($Brute[$i] > length($alpha)-1){
if ($i==$CharSet-1){
print \"Î?h Shit!\nNo Results with type '$type' and $Chars chars.\n\";
$try=0;
return false;
}
$Brute[$i+1]++;
$Brute[$i]=0;
}}
$pass = \"\";
for ($i =0;$i<$CharSet;$i++)
{
$pass = $pass . substr($alpha,$Brute[$i],1);
}
$hash = md5_hex($pass);
$try++;
print \"$hash ($pass)\n\";
if ($md5 eq $hash)
{
print \"\n**FOUND PASSWORD** [ $pass ]\nTried $try passwords \n\";
goto menu;
}
$Brute[0]++;
}while($Brute[$CharSet-1]<length($alpha));
}
goto menu;
}
#****************************** [Option 4] ******************************
sub search_md5
{
print \"Search for your MD5 Hash\n\";
print \"(Î?atch your MD5 hash with six most famous online databases)\";
print \"\nEnter MD5: \";
chomp($hash = <STDIN>);
if(length($hash)!=32)
{
die \"$hash is NOT valid\n\";
}
$lwp = LWP::UserAgent->new;
#**** [md5oogle]****
$crack = \"http://www.md5oogle.com/decrypt.php?input=$hash&meta=01\";
$request = $lwp->request(HTTP::Request->new(GET=>$crack));
$c = $request->content =~ /<b>Result: (.*?)<\/b>/;
if ($c) {
print \"[md5oogle] Password: $1\n\";
} else {
#**** [md5decrypter]****
$url = 'http://www.md5decrypter.com/index.php';
$response = LWP::UserAgent->new->post( $url, [ \"hash\" => $hash ] );
die \"$url error: \", $response->status_line
unless $response->is_success;
die \"Weird content type at $url -- \", $response->content_type
unless $response->content_type eq 'text/html';
if( $response->content =~ /Normal Text: <\/b>(.+)/ ) {
print \"[md5Decrypter] Password: $1\n\";
} else {
#**** [passcracking]****
$url = 'http://passcracking.ru/index.php';
$response = LWP::UserAgent->new->post( $url, [ \"datafromuser\" => $hash ] );
die \"$url error: \", $response->status_line
unless $response->is_success;
die \"Weird content type at $url -- \", $response->content_type
unless $response->content_type eq 'text/html';
if( $response->content =~ /<td bgcolor=#FF0000>(.+)<\/td><td>/ ) {
print \"[PassCracking] Password: $1\n\";
} else {
#**** [hashchecker] ****
$url = 'http://www.hashchecker.com/index.php';
$response = LWP::UserAgent->new->post( $url, [ \"search_field\" => $hash ] );
die \"$url error: \", $response->status_line
unless $response->is_success;
die \"Weird content type at $url -- \", $response->content_type
unless $response->content_type eq 'text/html';
if( $response->content =~ /<li>$hash is <b>(.+)<\/b>/ ) {
print \"[HashChecker] Password: $1\n\";
} else {
#**** [Milw0rm] ****
$ua = $lwp->request(POST 'http://www.milw0rm.com/cracker/search.php',
[ hash => \"$hash\", Submit => 'Submit', ] );
@content = split(/[n]/, $ua->content);
@password = split( /[><]/, $content[47]);
if($password[1]) {
print \"[Milw0rm] Password: $password[1]\n\";
}else {
#**** [GdataOnline] ****
$gdo = $lwp->request(GET 'http://gdataonline.com/qkhash.php?mode=xml&hash='.$hash);
@content = split(/<result>/, $gdo->content);
@password = split( /[><]/, $content[1]);
if(@password[0]) {
print \"[GdataOnline] Password: $password[0]\n\";
}
else { print \" Password Not Found!!\"; }
}}}}}
goto menu;
}
#****************************** [Option 5] ******************************
sub quit
{
exit(1);
}
#****************************** [The End] *******************************