📄 verifynum.cgi
字号:
#!/usr/bin/perl
#############################################################
# LeoBoard ver.5000 / LB5000 / 雷傲超级论坛 ver.5000
#
# 版权所有: 雷傲工作室(原蓝宝石软件工作室)
#
# 制作人 : 山鹰糊 (Shining Hu)
# 花无缺 (Ifairy Han)
#
# 主页地址: http://www.CGIer.com/ CGI 编程者之家
# http://www.LeoBoard.com/ 雷傲论坛支持主页
# http://www.leoBBS.com/ 本论坛直通车
#
#############################################################
BEGIN {
$LBPATH = '.';
my $pgm = $0;
$pgm =~s/\\/\//g;
$pgm =~s/^.*\/([^\/]+)$/$1/g;
unless (-e $LBPATH.'/'.$pgm) {
foreach ($0, $ENV{'SCRIPT_FILENAME'}, $ENV{'PATH_TRANSLATED'}) {
s!\\!/!g; s/^(.*)\/[^\/]+$/$1/g;
if (-e $_ . '/' .$pgm) { $LBPATH = $_; last; }
}
}
unshift (@INC, "$LBPATH");
}
require "data/boardinfo.cgi";
@n0 = ("c3","99","99","99","99","99","99","99","99","c3");
@n1 = ("cf","c7","cf","cf","cf","cf","cf","cf","cf","c7");
@n2 = ("c3","99","9f","9f","cf","e7","f3","f9","f9","81");
@n3 = ("c3","99","9f","9f","c7","9f","9f","9f","99","c3");
@n4 = ("cf","cf","c7","c7","cb","cb","cd","81","cf","87");
@n5 = ("81","f9","f9","f9","c1","9f","9f","9f","99","c3");
@n6 = ("c7","f3","f9","f9","c1","99","99","99","99","c3");
@n7 = ("81","99","9f","9f","cf","cf","e7","e7","f3","f3");
@n8 = ("c3","99","99","99","c3","99","99","99","99","c3");
@n9 = ("c3","99","99","99","99","83","9f","9f","cf","e3");
###获取真实的 IP 地址
$ipaddress = $ENV{'REMOTE_ADDR'};
$trueipaddress = $ENV{'HTTP_X_FORWARDED_FOR'};
$ipaddress = $trueipaddress if (($trueipaddress ne "") && ($trueipaddress ne "unknown"));
$trueipaddress = $ENV{'HTTP_CLIENT_IP'};
$ipaddress = $trueipaddress if (($trueipaddress ne "") && ($trueipaddress ne "unknown"));
###生成随机验证码
srand;
$verifynum = int(rand(10000));
$verifynum = sprintf("%04d", $verifynum);
###获取当前时间
$currenttime = time;
###将当前进程验证码保存
mkdir ("${lbdir}verifynum", 0777) if (!(-e "${lbdir}verifynum"));
$filetomake = $lbdir . "verifynum/" . $ipaddress . ".cgi";
$filetomake =~ s/[<>\^\(\)\{\}\a\f\n\e\0\r\"\`\&\;\|\*\?]//g;
open(FILE, ">$filetomake");
print FILE "$verifynum\t$currenttime";
close(FILE);
$counter = $verifynum;
$len=length($counter);
@bitmap=();
for($i=0;$i<10;$i++) {
for($j=0;$j<$len;$j++) {
$n=substr($counter,$j,1);
$bytes=&takebitmap($n,$i);
push(@bitmap,$bytes);
}
}
for ($i=0;$i<$len*3;$i++) {
$num=int(rand(6));
$a=substr("abcdef",$num,1);
$num=int(rand(3));
$b=substr("def",$num,1);
$a="$b$a";
unshift(@bitmap,$a);
push(@bitmap,$a);
}
print "Content-type: image/x-xbitmap\n\n";
printf ("#define count_width %d\n#define count_height 16\n",$len*8);
printf STDOUT "static char count_bits[] = {\n";
for($i = 0; $i < ($#bitmap+1); $i++) {
print("0x$bitmap[$i]");
if ($i != $#bitmap) {
print(",");
if (($i+1) % 7 == 0) {
print("\n");
}
}
}
print("};\n");
exit 0;
sub takebitmap {
if ($_[0]==0) {return $n0[$_[1]];}
elsif ($_[0]==1) {return $n1[$_[1]];}
elsif ($_[0]==2) {return $n2[$_[1]];}
elsif ($_[0]==3) {return $n3[$_[1]];}
elsif ($_[0]==4) {return $n4[$_[1]];}
elsif ($_[0]==5) {return $n5[$_[1]];}
elsif ($_[0]==6) {return $n6[$_[1]];}
elsif ($_[0]==7) {return $n7[$_[1]];}
elsif ($_[0]==8) {return $n8[$_[1]];}
elsif ($_[0]==9) {return $n9[$_[1]];}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -