#!usr/bin/perl # QBrute v1.0 # By Qex # MD5 Brute Force + Calculator # qex[at]bsdmail[dot]org # www.q3x.org print "\n QBrute v1.0 \n"; print " By Qex \n"; print " qex[at]bsdmail[dot]org \n"; print " www.q3x.org \n\n"; print "1) Calculate MD5.\n"; print "2) Crack MD5.\n"; my $cmd; print "Command: "; $cmd = ; if ($cmd > 2) { print "Unknown Command!\n"; } if ($cmd == 1) { use Digest::MD5 qw( md5_hex ); my $md5x; print "\nView MD5 Hash Of: "; $md5x = ; chomp($md5x); print "Hash is: ", md5_hex("$md5x"), "\n\n"; } if ($cmd == 2) { @char = ('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','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','`','-','=','~','!','@','#','$','%', '^','&','*','(',')','_','+','{','}','|', ':','"','<','>',); $CharToUse = 62; getmd5(); sub getmd5 { print "\nEnter the MD5 list name (list.txt):\n"; chomp($list = ); print "\n\n"; testarg(); } sub testarg { open(F, $list) || die ("\nCan't open list!!\n"); @md5 = ; $length11 = @md5; if (!){ open(A, ">>MD5.txt") || die ("\nCan't open file to write to!!\n"); } makelist() } sub makelist { for ($br = 1; $br <= 12; $br++) { for ($len1 = 0; $len1 <= $CharToUse; $len1++) { $word[1] = $char[$len1]; if ($br <= 1) { AddToList(@word); } else { for ($len2 = 0; $len2 <= $CharToUse; $len2++) { $word[2] = $char[$len2]; if ($br <= 2) { AddToList(@word); } else { for ($len3 = 0; $len3 <= $CharToUse; $len3++) { $word[3] = $char[$len3]; if ($br <= 3) { AddToList(@word); } else { for ($len4 = 0; $len4 <= $CharToUse; $len4++) { $word[4] = $char[$len4]; if ($br <= 4) { AddToList(@word); } else { for ($len5 = 0; $len5 <= $CharToUse; $len5++) { $word[5] = $char[$len5]; if ($br <= 5) { AddToList(@word); } else { for ($len6 = 0; $len6 <= $CharToUse; $len6++) { $word[6] = $char[$len6]; if ($br <= 6) { AddToList(@word); } else { for ($len7 = 0; $len7 <= $CharToUse; $len7++) { $word[7] = $char[$len7]; if ($br <= 7) { AddToList(@word); } else { for ($len8 = 0; $len8 <= $CharToUse; $len8++) { $word[8] = $char[$len8]; if ($br <= 8) { AddToList(@word); } else { for ($len9 = 0; $len9 <= $CharToUse; $len9++) { $word[9] = $char[$len9]; if ($br <= 9) { AddToList(@word); } else { for ($len10 = 0; $len10 <= $CharToUse; $len10++) { $word[10] = $char[$len10]; if ($br <= 10) { AddToList(@word); } else { for ($len11 = 0; $len11 <= $CharToUse; $len11++) { $word[11] = $char[$len11]; if ($br <= 11) { AddToList(@word); } else { for ($len12 = 0; $len12 <= $CharToUse; $len12++) { $word[12] = $char[$len12]; if ($br <= 12) { AddToList(@word); } else { for ($len13 = 0; $len13 <= $CharToUse; $len13++) { $word[13] = $char[$len13]; if ($br <= 13) { AddToList(@word); } else { for ($len14 = 0; $len14 <= $CharToUse; $len14++) { $word[14] = $char[$len14]; if ($br <= 14) { AddToList(@word); }}}}}}}}}}}}}}}}}}}}}}}}}}}}}} sub AddToList { my (@entry) = @_; my ($test) = join "", @entry; my ($m) = md5_hex "$test"; print ("$m = $test\n"); for ($a = 0; $a <= $length11; $a++) { chomp($md5[$a]); if ($m eq $md5[$a]){ print "\n\n\nFound !\t[ $test ]\n\n"; print A "$m = $test\n"; splice(@md5, $a, 1); if (!$md5[0]) { exit(); } } } } } #EoF