Техника сетевых атак
Шрифт:
· connect(NNTP, sockaddr_in(119,inet_aton($server))) || die;
· print "ok!\n";
·
· recv(NNTP,$rc,200,0); # Приглашение сервеа
· print "$rc\n";
·
· send(NNTP,"GROUP $group\r\n",0); # Выбор группы
· $group_res=«NNTP»;
· if(substr($group_res,0,3)-411)
· {
· die;
·}
· print "$group_res\n";
·
· open(FH,"»$msgfile"); # Открыть файл сообщений
· print FH "$group_res\n";
· $cmdcount=0;
·
· $reader=1; # цикл
· $msgdone=0; # Сообщений прочитано
·
· while($reader)
· {
· send(NNTP,"ARTICLE\r\n",0); # Новая статья
·
· while(substr(($rc=«NNTP»),0,3)!~/\.\r\n/)
· {# Чтение статьи
·
· if (!$rc) {print "Close connection\n";die;}
· print FH $rc;
·}
· print FH $rc;
· $msgdone++; # Следующее сообщение
· print "=$msgdone;\r"; # Протокол на экран
·
· send(NNTP,"NEXT\r\n",0); # Следующее сообщение
· $nx=«NNTP»;
·
· $add=1;
· while($add)
· {
· if (substr($nx,0,1)!~/\./){$add=0;}
· if (substr($nx,0,1)=~/\./){$nx=«NNTP»;}
·
·}
· $nx++;
·
· if ($nx-422) {$reader=0;} # Выход из цикла
·}
·
· close (FH);
·
· if (open(CF,"$msgfile.gz")) # Удалить файл если он уже есть!
· {
· close(CF);
· unlink("$msgfile.gz");
·}
·
· open(FG,"|gzip $msgfile"); # Сжать!
· print "Done\n";
· close(NNTP);
·}
·
· sub LIST
· {
· print "Connect to $server…";
· connect(NNTP, sockaddr_in(119,inet_aton($server))) || die;
· print "ok\n";
·
· recv(NNTP,$rc,200,0);
· print $rc;
·
· print "»LIST\n";
· send(NNTP,"LIST\r\n",0);
·
· open(FH,"»$listfile");
· print FH "Server: $server \nLIST:\n";
·
· $cmdcount=0;
·
· while(substr(($rc=«NNTP»),0,1)!~/\./)
· {
· $cmdcount++;
· #if ($debug) {print "$rc«BR»\n";}
· print "=$cmdcount\r";
·
· print FH $rc;
·}
· close (FH);
·
·
· if (open(CF,"$listfile.gz"))
· {
· close(CF);
· unlink("$listfile.gz");
·}
·
· print "Done\n";
· open(FG,"|gzip $listfile");
·
· close(NNTP);
· print "«HR»\n";
·}
Запустите созданный файл командой “perl nr.pl”. На экране терминала появится следующее:
· NNTP Reader Version 2.0 (c) 2000 Kris Kaspersky
· Open nf.cfg file…fail
· Server [news.fido7.ru]:
Нажмите клавишу «Enter» или введите адрес news сервера, с которым хотите установить соединение. Затем появится следующий запрос:
· Command (MSG|LIST|EXIT):MSG
Выберете команду “MSG” для получения всех сообщений заданной конференции, или “LIST” для выдачи списка всех доступных конференций. Если выбрать команду “MSG” программа попросит ввести название конференции, сообщения которой требуется получить:
· Group [fido7.ru.nethack]:
После нажатия “Enter” начнется процесс перекачки сообщений на удаленный сервер. Если он действительно находится на быстром канале, это не займет много времени.
· Connecting to news.fido7.ru…ok!
· 200 ddt.demos.su InterNetNews NNRP server INN 2.3experimental 20-Nov-1998 ready (posting ok).
· 211 418 26550 26967 fido7.ru.nethack
· =55;
По окончании процесса в текущей директории будет создан файл “list.txt.gz” (если был запрошен список конференций) или “msg.txt.gz”, содержащий текст сообщений. Воспользуйтесь любым ftp-клиентом и выкачайте этот файл на свой локальный компьютер. Распакуйте его архиватором gzip (или совместимым с ним Winzip32) и, ради любопытства, сопоставьте размеры файла до и после упаковки, прикинув, сколько же времени удалось сэкономить.