Техника сетевых атак
Шрифт:
· 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”– ползучее растение, ленточный конвейер. В русскоязычной литературе эта программа известна под именем «Вьюнок»