先产生四位的随机数, 写到临时文件 /tmp/bbs/$ip 中,
然后以图片方式输出这个随机数,
效果可以查看
https://bbh.net.cn/cgi-bin/bbs/rand.pl :)
#!/usr/bin/perl
use CGI qw/:standard/;
use GD::Simple;
$w = 8;
$h = 6;
$img = GD::Simple->new(($w + 5) * 4, $h * 2 + 2);
$img->bgcolor('white');
$img->fgcolor('blue');
@cc = (
[0, 0, 1, 0],
[0, 0, 0, 1],
[1, 0, 1, 1],
[1, 1, 0, 1],
[0, 1, 0, 2],
[1, 1, 1, 2],
[0, 2, 1, 2],
);
@dd = (
[0, 1, 2, 4, 5, 6],
[2, 5],
[0, 2, 3, 4, 6],
[0, 2, 3, 5, 6],
[1, 2, 3, 5],
[0, 1, 3, 5, 6],
[0, 1, 3, 4, 5, 6],
[0, 2, 5],
[0, 1, 2, 3, 4, 5, 6],
[0, 1, 2, 3, 5, 6],
);
$r = sprintf("%04d", int(10000*rand));
$from = remote_host() || do {exit};
open(FH, ">/tmp/bbs/$from") and do {print FH $r};
@r = split //, $r;
for($k = 0; $k <= $#r; $k++) {
&dd($img, $k * ($w + 5), 0, $r[$k]);
}
print header(-type=>'image/png');
print $img->png;
sub dd {
my ($m, $x, $y, $d) = @_;
return 0 unless $d =~ /^\d$/;
for(@{$dd[$d]}) {
&cc($m, $x, $y, $cc[$_]);
}
}
sub cc {
my ($m, $x, $y, $c) = @_;
$m->moveTo($x + $w * $c->[0], $y + $h * $c->[1]);
$m->lineTo($x + $w * $c->[2], $y + $h * $c->[3]);
}
--
FROM 59.36.98.*