📄 md5crack原代码.doc
字号:
md5crack.pl
论坛破密码的工具,优点就是破数字密码的时候比较快,
没有什么技术含量,很简单希望对初学者有帮助
#!/usr/bin/perl
# md5crack.pl
use Digest::MD5 qw/ md5_hex /;
$SIG{INT} = \&sub_exit;
$arg = scalar @ARGV;
if ($arg != 3) {
print "\nUsage - perl $0 <type> <length> <password>\n\n";
print "Type : \n";
print "\t1 - 字母(包括所有大小写字母共52个)\n";
print "\t2 - 数字(0至9,为了减少代码量数字最长只支持到9位)\n";
print "\t3 - 全部字符(键盘上可以输入的都包括)\n\n";
print "<Length>选项为明文密码的长度\t<Password>选项为经MD5加密后的密文\n\n";
print "=============================================================================\n";
print "Example:";
print "
H:\\pl\\My tools>perl md5crack.pl 3 4 53115b3bebee6caf18b904719d88c1d2\n
I get the password --- a@%7";
print "\n=============================================================================\n";
}
# ===
{ # character
my @char_min = ('a'..'z');
my @char_cap = ('A'..'Z');
push @char,@char_min;
push @char,@char_cap;
}
@num = (0..9);
{ # mix
@char_mix = ();
for (33..47) {
push @char_mix,chr($_);
}
for (91..96) {
push @char_mix,chr($_);
}
for (123..126) {
push @char_mix,chr($_);
}
for (58..64) {
push @char_mix,chr($_);
}
}
push @mix_all,@char;push @mix_all,@num;push @mix_all,@char_mix;
# === get option
$type = shift;
$len = shift;
$pass = shift;
if ($type == 1) {
crack_all(@char);
}
if ($type == 3) {
crack_all(@mix_all);
}
# === number only
# 由于使用了数组,数字最长9位
if ($type == 2) {
my $first = 10**($len-1);
my $last = 10**$len - 1;
for ($first..$last) {
my $md5_pass = md5_hex($_);
if ($md5_pass =~ /$pass/) {
print "Aha , I get it -- $_";
exit;
}
print $_," incorrect\r";
}
}
# === letter only & all keys
sub crack_all {
@list = @_;
$counter = $#list+1;
for (my $i=0;$i<$len;$i++) {
$str .= "for (\$n[$i]=0;\$n[$i]<\$counter;\$n[$i]++){\n";
}
# $str .= 'print @char[@n],"\n";';
$str .= '@md5 = @list[@n];';
$str .= 'my $apass = join "",@md5;';
$str .= "\nmy \$md5_pass = md5_hex(\$apass);\n";
$str .= "\nif (\$md5_pass =~ /$pass/) {\n";
$str .= 'print "\t\t\t\t\t\nI get the password --- $apass\n";';
$str .= 'exit;';
$str .= "\n}\n";
$str .= 'print $apass."\tincorrect!\r";';
$str .= "\n}" x $len;
eval $str;
}
sub sub_exit{
print "\nThis programming had been terminated by Press Ctrl + C\n";
exit;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -