Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #79, ИЮЛЬ 2005 г.

Управление RAT

Ms-Rem

Хакер, номер #079, стр. 079-108-8


Для начала давай попробуем соединиться телнетом (как мы это делали с SMTP) с IRC-сервером, зайти на какой-нибудь канал и понаблюдать за разговором. Это поможет лучше понять принципы работы протокола и формат передаваемых сообщений. Итак, начнем. Подключаемся к серверу irc.street-creed.com на порт 6667, после чего получаем следующее сообщение:

:Infinity.street-creed.com NOTICE AUTH :*** Looking up your hostname...

:Infinity.street-creed.com NOTICE AUTH :*** Found your hostname (cached)

Оно означает, что сервер готов к приему команд. Первое, что нужно сделать – это авторизоваться и определить никнейм, под которым будем заходить на каналы. Что ж, используем команду USER, которая по RFC 1459 имеет следующий формат:

USER <username> <hostname> <servername> <realname>

В нашем случае в качестве username и realname подставим ник, а в качестве hostname и servername - localhost. Допустим, нас зовут «SuperCoder», и тогда выйдет что-то вроде:

USER SuperCoder localhost localhost SuperCoder

Далее нам нужно указать серверу ник, под которым мы, собственно, будем сидеть. В этом случае понадобится команда «NICK SuperCoder». После нее сервер должен выплюнуть кучу служебной информации, которая будет означать, что авторизация проведена и он (сервер) готов принимать инструкции. Попробуем зайти на канал #cracklab командой «JOIN #cracklab». Если все прошло успешно, сервер выдаст:

:SuperCoder!localhost@Street-B233BD23.dialup.primorye.ru JOIN :#cracklab.

После этого все сообщения с канала будут приходить в таком виде:

:Ms-Rem!Ms-Rem@Street-88695424.dialup.primorye.ru PRIVMSG #cracklab :hi all.

Такое, к примеру, означает, что человек с ником Ms-Rem послал на канал #cracklab сообщение «hi all». Чтобы кинуть свое сообщение на канал или кому-нибудь в приват, нужно воспользоваться командой PRIVMSG. Ее формат такой:

PRIVMSG <receiver> <text to be sent>,

Где в качестве receiver может быть как имя канала, так и ник. Например, поприветствуем всех находящихся на канале:

PRIVMSG #cracklab Hi dudes!

Как видишь, IRC-протокол не так сложен, как это может показаться. Для его реализации нужно всего-то подключиться к серверу, а далее посылать команды и парсить ответы сервера, выделяя из них сообщения. Правда, жизненно необходимо не забыть учесть один важный, но не совсем очевидный момент: при длительном молчании сервер может послать клиенту сообщение PING, на которое клиент должен как можно быстрее ответить командой PONG, иначе соединение будет завершено по тайм-ауту. Такая штука создана для контроля целостности соединения.

А теперь я спешу обрадовать тебя: не придется писать все это собственноручно! Я уже создал библиотеку Mini IRC Delphi Library, которая реализует минимально необходимый для RAT набор функций для работы с IRC (все сделано на 100% чистом API с применением асинхронных сокетов). Ее можно взять на диске или с моего сайта. Работа с ней – сплошная халява.

Назад на стр. 079-108-7  Содержание  Вперед на стр. 079-108-9