·
· If you don't believe me then view my checks at:
· http://www.makemoney.f2s.com/checks.htm
·.
Если вызвать команду “ARTICLE” без аргументов, она вернет текущее сообщение. Две команды, “NEXT” и “LAST” служат для перемещения маркера текущего сообщения на одну позицию вперед и назад соответственно. Поэтому, можно не задумываться о номерах сообщений и читать их последовательно одно за другим, пока не надоест.
Например, так:
· NEXT
· 223 376 «[email protected]» Article retrieved; request text separately.
Команда NEXT на единицу увеличила номер текущего сообщения. Но как быть, если хочется прыгнуть сразу в середину списка? Не вызывать же ради этого “NEXT” бесчисленное множество раз?! Конечно же, нет! Достаточно воспользоваться командой “STAT”, перемещающий указатель на любую произвольную позицию.
Следующий эксперимент демонстрирует создание нового сообщения. Для этого потребуется сервер, разрешающий постинг хотя бы в одну конференцию. Лучше всего воспользоваться специально созданной для подобных целей группой, наподобие “test”.
Простейший способ создания сообщения заключается в использовании команды «POST», вызываемой без аргументов. Например:
· Post
· 340 Ok
Сервер ожидает текста сообщения, завершаемого (как и в протоколе POP3), последовательностью «CRLF».«CRLF» [233]. Первыми идут поля заголовка [234], которые делятся на обязательные и на необязательные.
К обязательным полям относятся:
· newsgroups: одна (или больше) имен групп, куда должно быть отправлено сообщение
· from:адрес отправителя сообщения
· subject:тема сообщения
Если хотя бы одно обязательное поле отсутствует, сервер возвращает ошибку и блокирует отправление.
Например:
· post
· 340 Ok
· from:«kpnc»
· Subject:hello
·
· hello
·.
· 441 Required "Newsgroups" header is missing
После добавления недостающего поля повторная операция отправки сообщения должна завершиться успешно.
· post
· 340 Ok
· newsgroups:test.test
· from:«[email protected]»
· subject:helo
·
· Helo!
·.
· 240 Article posted
Сервер подтвердил успешность выполнения операции, но чтобы действительно убедиться в отправке сообщения, необходимо попробовать прочитать сообщение с сервера, например, следующим образом:
· GROUP test.test
· 211 1 121 121 test.test
· ARTICLE
· 220 121 «[email protected]» article
· Path: demos2!demos!dnews-server
· From: «[email protected]»
· Newsgroups: test.test
· Subject: helo
· Date: 28 Mar 2000 16:51:06 GMT
· Lines: 1
· Message-ID: «[email protected]»
· NNTP-Posting-Host: ppp-02.krintel.ru
· X-Trace: jumbo.demos.su 954262266 24659 195.161.41.226 (28 Mar 2000 16:51:06 GMT
·)
· NNTP-Posting-Date: 28 Mar 2000 16:51:06 GMT
· Xref: demos2 test.test:121
·
· Helo!
·.
Выделенная жирным шрифтом строка содержит адрес отправителя сообщения, доступный для всеобщего обозрения. Любой из подписчиков конференции (количество которых порой доходит до десятков тысяч) может применить на обладателе этого адреса одну из многочисленных атакующих программ… О том как отправить сообщение и при этом суметь остаться анонимном рассказывается в главе «Атака на NNTP-сервер».
Врезка «замечание»
Подробное изложение протокола NNTP и связанных с ним вопросов находится в технической документации RFC-1036, RFC-850 и RFC-977.
Врезка «для начинающих»
Большинство реализаций NNTP протокола поддерживают команду “HELP”, выводящую список доступных команд и иногда подробности использования каждой из них.
Команда “quit” завершает сеанс работы с сервером и разрывает соединение. Например, так:
· Quit
· 205.
Дополнение. Поиск общедоступных NNTP-серверов
O В этой главе:
O Сканирование портов
O Поиск серверов, путем изучения заголовков сообщений
O Описание программы News Hunter
Среди сотен тысяч узлов сети существует огромное количество общедоступных серверов, явно или неявно предоставляющих пользователям те или иные ресурсы. Мелкие корпорации, научные и исследовательские учреждения обычно не склонны обременять свои NNTP-сервера защитой и порой их ресурсами могут безболезненно пользоваться все остальные узлы сети…
Врезка «для начинающих»
Случайно натолкнутся на общедоступный NNTP-сервер маловероятно, а найти его с помощью служб, наподобие «Апорта» или «Altavista» очень трудно. Запрос “NNTP + free” выдаст длинный список бывших когда-то бесплатными серверов, большинство из которых уже успели прекратить свое существование или сменить политику и ограничить доступ.
Поэтому необходимо уметь самостоятельно искать необходимые ресурсы в сети. Но не проще ли обратится к специализированным сайтам, публикующим информацию подобного рода? Нет, и вот почему. Дело в том, что общедоступность большинства ресурсов связана с попустительствами администраторов. Но как только на сервер обрушивается толпа невесть откуда взявшихся пользователей, порядком напрягающих канал, политика безопасности быстро меняется и доступ закрывается. Напротив, единичные подключения, даже если и станут замечены администратором, вряд ли будут им пресекаться до тех пор, пока не станут ощутимо мешать.
Простейший способ поиска NNTP-серверов заключается в сканирование портов. Суть его заключается в следующем: выбирают некий (возможно взятый наугад) IP-адрес, например «195.161.42.149» и пытаются установить с ним TCP-соединение по сто девятнадцатому порту. Успешность операции указывает на наличие NNTP-сервера на данном узле. Если же сервер не отсутствует или не функционален, соединение установить не удастся. В случае успешно установленного соединения пытаются убедиться в бесплатности службы, иначе (сервер не установлен или не бесплатен) выбирают другой IP-адрес, и так до тех пор, пока не кончится терпение или не отыщется требуемый ресурс. Как правило, при сканировании IP адреса перебираются один за другим с убыванием или возрастанием на единицу за каждый шаг.