#!/usr/bin/perl -w
#ls -l day_mzlog_200804_*_02.* |awk '{print $5}'|awk 'BEGIN{i=0};{i+=$1};END{print i/151}'
my $passwd=shift @ARGV;
chomp($passwd);
my $score=13; #存放密码的强度,初始为13
my $passwd_bak;
open FILE,"
#########foreach循环,头5类情况,看是否为实际单词
foreach()
{
chomp ($_);
# I: 看密码本身是否是一个单词
if ( /^$passwd$/i){
print "$_ ! the password $passwd is a real word!\n";
$score-=1;
}
# II: 看去掉开头的单词是否是一个
my $sedond_passwd = substr $passwd ,1;
if ( /^$sedond_passwd$/i){
print "$_ the minus the first word $passwd is $sedond_passwd a real word!\n";
$score-=1;
}
# III: 看去掉结尾的单词是否是一个实际的单词
my $third_passwd = substr $passwd ,0,length($passwd)-1;
if ( /^$third_passwd$/i){
print "$_ the minus the last character $passwd is $third_passwd--a real word!\n";
$score-=1;
}
# IV: 看0替换为o是否单词是否是一个实际的单词
$passwd_bak=$passwd;
$passwd =~ tr/00/oO/;
my $fourth_passwd =$passwd;
$passwd=$passwd_bak;
if ( /^$fourth_passwd$/){
print "$_ switch the 0 to o $passwd is $fourth_passwd--a real word!\n";
$score-=1;
}
# V: 看1替换为l是否单词是否是一个实际的单词
$passwd_bak=$passwd;
$passwd =~ tr/11/lL/;
my $fifth_passwd =$passwd;
$passwd=$passwd_bak;
if ( /^$fifth_passwd/){
print "$_ switch the 1 to l $passwd is $fifth_passwd--a real word!\n";
$score-=1;
}
}
#########foreach循环结束
######密码10-20个字符
my $passwd_lengh = length($passwd);
if ( $passwd_lengh > 20 || $passwd_lengh < 10)
{
print " 密码应该为10-20个字符\n";
$score-=1;
}
######
########确保密码包括至少一个大写字母
if ( $passwd =~ /([A-Z])/ ){}
else
{
print "密码包括至少一个大写字母\n";
$score-=1;
}
#########
########确保密码包括至少一个小写字母
if ( $passwd =~ /([a-z])/ ){}
else
{
print "密码包括至少一个小写字母\n";
$score-=1;
}
#########
########确保密码包括至少一个符号 ????????????????????????????????????
if ( $passwd =~ /(\w+)/ ){}
else
{
print "密码包括至少一个符号\n";
$score-=1;
}
#########
########密码并不包括四个连续(或更多)小写字母
if ( $passwd =~ /[a-z]\{4,\}/ )
{
print "密码不能包括四个连续(或更多)小写字母\n";
$score-=1;
}
if ( $passwd =~ /[A-Z]\{4,\}/ )
{
print "密码不能包括四个连续(或更多)大写字母\n";
$score-=1;
}
###########
########密码并不包括四个连续(或更多)大写字母
###########
########确保密码并不包括任何重复字符
#这个没写出来。¥%89459304-230942=-3=103=120349548375……%—*—*%……%#¥
###########
print "\n\n *****score is :$score\n";
my $size=
($score<7)? "weak":
($score<11)? "middle":
"high";
print " \t\t The Result::::\n";
print " the passwd $passwd is a $size passwd! \n"
阅读(1304) | 评论(0) | 转发(0) |