Пишем IRC бота под винды или азы IRC протокола - Programming <!--%IFTH1%0%-->- Articles<!--%IFEN1%0%--> - Каталог статей - V . S . I . S ( Volgograd site on information safety )
Понедельник, 06.09.2010, 15:18 Приветствую Вас USER | RSS
Не для кого не является секретом что так называемые IRC боты вещь полезная во всех отношениях , начиная от поддержания работоспособности канала, до распределенных DoS атак и т.д. Существует куча всевозможных ботов под *nix , которые можно скачать настроить и запустить со спертого у товарища Unix Shell'а . Однако не всегда существует возможность докопаться до Unix Shell'a да и если честно несколько километровый конфигурационный файл от того же EggDrop пугает. Выход из слажившейся есть практически всегда. К примеру если вас все таки не пугает конфигурять EggDrop можете скачать его и в версии под винду. Сейчас же я раскажу свой собственный вариант решения поставленной задачи , может этот вариант и немного посложнее первого , но заодно и Experience повышу. Речь пойдет о написании IRC бота под всеми ненависные форточки (хотя по моему скромному мнению если руки кривые *nix не поможет). Ну программирование это дело второстепенное, каждый пишет как хочет и на чем хочет. Как известно ( может и нет ) для написания какого либо приложения для интернет можно пойти двумя путями:
Путь первый - скачать нужную компоненту из того же самого интернета и вперед с песнями навстречу бронепоезду! Путь второй - разобраться хотя бы чуть чуть в протоколу обмена между сервером и клинтом.
Выберем второй путь, заодно и повысим Experience (к сожалению нельза повысить свой программерский/хакерский exp. пойдя наулицу с ломом и замочив пару тройку мимо проходящих бабушек). Для того что бы разобраться во всей этой мешанине можно пойти двумя способами. Первый скачать документацию по IRC протоколу из интернета. Второй - применение подручных софтварных продуктов.
Итак нам понадобится: 1) IRC сервер под винды (любой самый простенький) 2) IRC клиент (типа MIRC) 3) Более менее прямые руки и листик с карандошом. 4) Ну и какой нибуть компилятор (Си,Дэльфи,Asm:)
Скачав все это а это минимальный необходимый пакет для создания (отладки) программы ставим все это на винт.v Запускаем сервер. Запускаем MIRC. В коммандной строке MIRC вводим следующее: /debug ON /server localhost После чего происходит соединение с вашим собственным IRC сервером. Первая строка служит как раз для целей изучения протокола IRC, при работе вашего MIRC будет создаваться файл в именем debug.log . Там вы можете посмотреть команды IRC которые будут соответствовать вашим действиям. Ну и вперед ! Запускаете второй клиент и коннектитесь туда же с другим именем. И эмулируете беседу (войну) двух человечков на IRC канале/сервере. После чего лезите в тот самый debug.log При соединении с IRC сервером:v NICK mam0nt USER none "" "localhost" :nonev :csa.bu.edu 001 mam0nt :Welcome to the Internet Relay Network mam0nt!none@mam0nt :csa.bu.edu 002 mam0nt :Your host is csa.bu.edu, running version 2.9.5 :csa.bu.edu 003 mam0nt :This server was created Fri Feb 27 at 07:46:00 1998 :csa.bu.edu 004 mam0nt csa.bu.edu 2.9.5 oirw abiklmnopqst :csa.bu.edu 251 mam0nt :There are 0 users and 0 services on 1 servers :csa.bu.edu 253 mam0nt 1 :unknown connections :csa.bu.edu 254 mam0nt 10 :channels formed :csa.bu.edu 255 mam0nt :I have 0 clients, 0 services and 0 servers :csa.bu.edu 422 mam0nt :MOTD File is missing
От сюда видно что при соединении с сервером типа csa.bu.edu первым делом необходимо послать серверу 2 строки. NICK USER none localhost localhost :My Bot - ваш nick на IRC. После этой строки сервер может прислать сроку типа nick уже используется. Служебные строки можно и нужно распозновать по цифирке после имени сервера. Все эти номера можно найти в документе под именем RFC1459 (только не пытайтесь искать его на нашем сервере). Второй строкой можно послать выше приведенную. На серверах без всяких ident и т.д. это работает и для вас особой роли не играет. Ну а дальше понеслась: JOIN #volyn :mam0nt!none@mam0nt JOIN :#volyn Зашли на канал #volyn. MODE #volyn NOTICE []mam0nt :12Welcome to official [volyn] Chanel1 []mam0nt ! :efnet.cs.hut.fi 353 []mam0nt @ #volyn :[]mam0nt @FAPSI @s3curity @n3tninja @c0r3 :efnet.cs.hut.fi 366 []mam0nt #volyn :End of /NAMES list. Командой MODE , где - название канала можно узнать TOPIC канала и список пользователей на канале. Скажу сразу что с помощью этой команды можно много чего интересного делать это лишь минимальное применение. Ну и так далее : PRIVMSG #volyn :Ну че сегодня нажремся ? Отправляет сообщение на канал. PRIVMSG #ac[id] :Точно нажремся ! Или человечку с именем ac[id] :) Yrpo3a!unsecured@195.68.174.159 PRIVMSG #volyn :-- mam0nt =)) opme Вот так выгледит строка пришедшая на канал от человека. NB: - Самое главное !!!! Что бы ваш бот не слетал с сервера необродимо на пришедшую строку типа : PING :efnet.cs.hut.fi Послать обратно: PONG :efnet.cs.hut.fi
Ну вот самое основное рассказал. Далее дерзайте САМИ и еще раз говорю САМИ потому как все нюансы вам не расскажет НИ КТО. Мы только даем вам пищу для дальнейших размышлений !