Чтение онлайн

ЖАНРЫ

Техника сетевых атак
Шрифт:

· JMP Begin

·}

·

·}

·

Исходный текст NR.PL

· @ECHO off

· perl -x -S "%0"

· goto end

· #!perl

· #line 6

· print "TCP SpyServer Version 2.0 Copyright (c) 2000 Kris Kaspersky\n";

·

· #Клиент\серверный шпион

· use Socket;

·

· #Настойки по умолчанию

· $local_port = 110;

· $remote_port = 110;

· $server = 'mail.aport.ru';

·

· #Попытка взятия настоек из файла

· if (open(FH,"tcpspy"))

· {

· $local_port=«FH»;

· $local_port =~ s/\n//;

· $remote_port=«FH»;

· $remote_port =~ s/\n//;

· $server=«FH»;

· $server=~ s/\n//;

·}

·

· print "Порт локального сервера \t[$local_port]:";

· $tmp=«»; $tmp=~ s/\n//;if ($tmp»0) {$local_port=$tmp;}

·

· print "Порт удаленного сервера \t[$remote_port]:";

· $tmp=«»; $tmp=~ s/\n//;if ($tmp»0) {$remote_port=$tmp;}

·

· print "Адрес сервера (none нет) \t[$server]";

· $tmp=«»; $tmp=~s/\n//;

· if (length($tmp)) {$server=$tmp}

·

· #Сохраняем настойки в файле

· if (open(FH,"»tcpspy"))

· {

· print FH "$local_port\n";

· print FH "$remote_port\n";

· print FH "$server\n";

·}

· close (FH);

·

· # 666 - особый код для Эхо-сервера

· if ($server=~/none/) {$server=666;}

·

· #Создаем сокет для локального сервера

· socket(SERVER, PF_INET, SOCK_STREAM, 6);

· setsockopt(SERVER, SOL_SOCET, SO_RESEADDR,1);

· $my_addr = sockaddr_in($local_port, INADDR_ANY);

· bind(SERVER, $my_addr);

·

· #Слушаем…

· listen(SERVER,1);

· while(1)

· {

·

· print "Ожидание подключения…\t\t";

· #Определяем адрес клиента

· $client_addr=accept(CLIENT, SERVER);

· ($clint_port,$client_ip) = sockaddr_in($client_addr);

· print "+OK [IP:",inet_ntoa($client_ip),"]\n";

·

· $one=CLIENT;

·

· $connect=1;

·

· if ($server!=666)

· {# Прокси-схема с удаленным сервером

· print "Соединение с узлом $server…\t";

· socket(RSERVER, PF_INET, SOCK_STREAM,6);

· connect(RSERVER, sockaddr_in($remote_port,inet_aton($server))) || die;

· print "+OK\n";

· $two=RSERVER;

·

·}

· else

· {# Эхо-сервер

· print "Установка эхосервера…\t\t+OK\n";

· $two=CLIENT;

·}

·

· $x='foo';

· open(LOG,"»tcpspy.log");

· #Обработка текущего подключения

· while($connect)

· {

· $rin='';

· vec($rin, fileno($one),1)=1;

· $timeout=5;

· $nfound=select($rout = $rin, undef, undef, $timeout);

· if (vec($rout, fileno($one),1))

· {

· #Слушаем ответ клиента

· recv($one,$x,10000,0);

· if (!length($x)) {$connect=0;}

· else

· {

·

· if ($x=~/#HALT_OFF/) {send($two,"HANDUP",0);die;}

· print "$one$x";

· print LOG "$one$x";

· #Говорим это серверу

· send($two,"$x",0);

·}

·}

· else

· {#Меняем сервера с клиентом

· ($one,$two) = ($two,$one);

·}

·}

· print "\n-ERR:Соединение разорвано\n";

· close(CLIENT);

· close(RSERVER);

· close(LOG);

·}

· __END__

·:end

[1]. «UNIX не был создан для того, чтобы мешать кому-то делать глупости, ведь это помешало бы умным людям делать умные вещи» Doug Gwyn

[2] Тогда еще ARPANET

[3]http://www.siber.com/sib/internet/RussianNetStory.html

[4] От английского слова “creeper”– ползучее растение, ленточный конвейер. В русскоязычной литературе эта программа известна под именем «Вьюнок»

Поделиться с друзьями: