Настройка бота вида eggdrop

Discussion in 'Безопасность и Анонимность' started by MicRO, 11 Dec 2006.

  1. MicRO

    MicRO Member

    Joined:
    28 Oct 2004
    Messages:
    274
    Likes Received:
    75
    Reputations:
    49
    Все чаще мне задают вопросы как поставить, настроить своего бота, и сейчас я расскажу во всех подробностях как это делается. Мы будем расматривать бота eggdrop из-за его гибкости и мультиплатформности.

    FreeBSD
    Тут нам потребуется сам бот, но тут есть выбор тут можно использовать уже собраного бота либо чисто исходники. Так же чтобы бот работал должен быть установлен tcl его можете поставить из портов заходим в /usr/ports/lang/tcl84 и пишем make install clean все должно пройти удачно и поставится без проблем(если у вас есть дистфайлы или вы подключены к интернету). После того как у нас все готово приступим, заходим под рутом, сначала ставим бота из исходников, на момент когда я ставил были исходники eggdrop1.6.17.tar.bz2 разархивируем их командой
    Code:
    tar -zxf eggdrop1.6.17.tar.bz2
    далее заходим в папку которая создалась после распаковки бота и пишем ./configure когда закончится выполнение команды, вы должны увидеть примерно следущее:
    Code:
    Operating System: FreeBSD 5.4-RELEASE
    If you experiance any problems compiling Eggdrop, please read the
    compile guide, found in doc/COMPILE-GUIDE.
    Type 'make config' to configure the modules, or type 'make iconfig'
    to interactively choose which modules to compile. 
    далее пишем make config, также можно написать make iconfig можно будет выбрать модули которые постаятся для начала советую написать make config, после завершения команды пишем make а потом make install после того как завершается выполнение команды бот поставлен, дальше пишем конфиг по примеру ниже конфиги, в windows и freebsd не че не отличаются, но если будет ошибка с кодировкой просто допишите encoding system iso8859-1 в конфиг до скриптов. Далее чтобы запустился бот нужно создать папку tmp сделаем так:
    Code:
    mkdir /root/eggdrop/tmp
    chmod 0777 /root/eggdrop/tmp 
    все можно запускать, но запускать нужно от обычного пользователя под root'ом бот не запустится в целях безопасности
    Code:
    cd /root/eggdrop && ./eggdrop -m /root/eggdrop/eggdrop.conf
    Теперь соберем бота теперь из портов, вся разница только в путях tmp'a, бот в портах лежит в /usr/ports/irc/eggdrop после установки пути будут такие:
    Code:
    Конфиг -- /usr/local/etc/eggdrop.conf
    Папка со скриптами и т.д. -- /usr/local/share/eggdrop/
    Создаем папку tmp и все:
    Code:
    mkdir /usr/local/share/eggdrop/tmp 
    chmod 0777 /usr/local/share/eggdrop/tmp 
    После установки нам нужно написать конфиг боту eggdrop.conf открываем его с помощью vim or ee и удаляемся оттуда полностью все, писать его будем самостоятельно не маленькие уже. Вид файла eggdrop.conf ниже будет пояснена каждая строчка:
    Code:
    set mod-path "modules/"
    set help-path "help/"
    set text-path "text/"
    loadmodule channels
    loadmodule server
    loadmodule irc
    loadmodule dns
    loadmodule ctcp
    loadmodule blowfish
    set nick "CensoR"
    set altnick "CensoR?"
    set username "CensoR"
    set realname "CensoR" 
    set servers {
    10.0.0.3:6667
    Hostel4.hvn
    Hostel3.hvn
    Hostel2.hvn
    }
    channel add #test
    set net-type 0
    listen 7510 all
    set owner "Твой_ник"
    set admin "MicRO <email: [email protected]>"
    set userfile "eggdrop.users"
    set chanfile "eggdrop.channels"
    set temp-path "tmp/"
    set console "mkcobxs"
    set init-server {putquick "PRIVMSG NickServ :IDENTIFY пароль_на_ник_бота"}
    source scripts/peak.tcl
    #source scripts/egglib_pub.tcl
    set ctcp-version "MicRO(heavennet) VerSioN 0.1beta"
    set ctcp-userinfo "MicRO(heavennet) BoT"
    ####МОДУЛИ####
    # Директория в которой находятся модули
    Code:
    set mod-path "modules/"
    # Путь, где находятся файлы помощи.
    Code:
    set help-path "help/"
    # Путь, где находятся текстовые файлы (используются разными dump-командами).
    Code:
    set text-path "text/"
    ####CHANNELS МОДУЛЬ####
    # Модуль предоставляет поддержку каналов для бота.Без него бот сможет сидеть на IRC-сервере, но не будет входить на каналы.
    Code:
    loadmodule channels
    ####SERVER МОДУЛЬ####
    # Модуль предоставляет серверную поддержку.
    Code:
    loadmodule server
    ####IRC МОДУЛЬ####
    # Модуль предоствляет доступ к стандартным IRC-операциям.
    Code:
    loadmodule irc
    ####DNS МОДУЛЬ####
    # Модуль предоставляет асинхронную поддержку dns-запросов.Это предотвратит длительные ожидания ответов на запросы (и соответсвенно "провисы" бота), если по каким либо причинам хост не может быть определен.
    Code:
    loadmodule dns
    ####CTCP МОДУЛЬ####
    # Модуль предоставляет поддержку CTCP ответов.
    Code:
    loadmodule ctcp
    ####BLOWFISH МОДУЛЬ####
    # Метод шифрования, на данный момент доступен только: blowfish
    Code:
    loadmodule blowfish
    ####Настройки####
    # Ник бота, который будет использоваться на IRC (и в ботнет, если не установлен botnet-nick).
    Code:
    set nick "CensoR"
    # Альтернативный ник, если основной ник будет недоступен. Cимвол "?" в нике будет автоматически заменяться на цифру.
    Code:
    set altnick "CensoR?"
    ####ОСНОВНОЕ####
    # Имя, которым бот идентифицирует себя как пользователя, при подключении к серверу. Не работает, если на машине есть ident-сервер!
    Code:
    set username "CensoR"
    # Что выводится в поле realname
    Code:
    set realname "CensoR"
    # Список серверов.
    Code:
    set servers { 
    10.0.0.3:6667
    Hostel4.hvn
    Hostel3.hvn
    Hostel2.hvn
    }
    # Каналы на которые бот присоеденится при подключении к серверу
    Code:
    channel add #test
    # [0/1/2/3/4/5] тип IRC-сети
    = Efnet (non +e/+I hybrid)
    = IRCnet
    = Undernet
    = Dalnet
    = Efnet +e/+I hybrid
    = Прочие
    Code:
    set net-type 0
    # Какие порты должен "слушать" бот Внимание: если вы запускаете на одной машине больше одного бота, то их порты НЕ ДОЛЖНЫ пересекаться! Вы можете разделить доступ сделав отдельный порт для пользователей и отдельный для ботов. но на практике это не имеет особого значения.
    Code:
    listen 3333 bots 
    listen 4444 users 
    listen 7510 all
    # Какие пользователи будут ВСЕГДА иметь флаг "+n"
    Code:
    set owner "MicRO, n1ck0"
    # Имя и email владельца бота. Выводится в .status и /msg <botnick> help
    Code:
    set admin "MicRO <email: [email protected] >"
    ####ФАЙЛЫ И ДИРЕКТОРИИ####
    # Файл пользователей: где будут храниться данные о пользователях.
    Code:
    set userfile "eggdrop.users"
    # Файл, для хранения данных о каналах.
    Code:
    set chanfile "eggdrop.channels"
    # Место для хранения временных файлов (рекомендуется: /tmp)
    Code:
    set temp-path "/tmp"
    ####CONSOLE####
    # Консольные флаги по умолчанию, затем каждый мастер/владелец смогут поставить все необходимые флаги для себя с помощью команды .console
    Code:
    set console "mkcobxs"
    # Скрипт, который выполнится во время подключения к серверу.Максимум 120 символов.
    Code:
    set init-server { putserv "PRIVMSG NickServ :IDENTIFY пароль_на_ник_бота" }
    ####СКРИПТЫ####
    # Это обычное подключение скриптов.
    Code:
    source scripts/peak.tcl
    # Строка начинающаяся с # это коментарий это значит что в бот её не как не использует, следущая строка не подключит скрипт egglib_pub.tcl так как это коментарий. Внимание: TCL не позволяет устанавливать комментарии внутри { }
    Code:
    #source scripts/egglib_pub.tcl
    ####CTCP-запросы####
    # Ответ на запрос версии
    Code:
    set ctcp-version "MicRO(heavennet) VerSioN 0.1beta"
    # Ответ на запрос информации о боте
    Code:
    set ctcp-userinfo "MicRO(heavennet) BoT"
    Ну вроде закончили с конфигом, и мы почти готовы к запуску, чтобы у нас сразу все заработало мы должны в папку /usr/local/share/eggdrop/scripts положить скрипт peak.tcl так как мы его прописали в конфиге, если файла не будет бот просто не запустится(добавили для примера если не хотите просто закоментируйте строку source scripts/peak.tcl). Да и чуть незабыл нам нужно перенести модули из /usr/local/lib/eggdrop/ в /usr/local/share/eggdrop/modules если нету modules создаем /usr/local/share/eggdrop/modules и пропишем права на папку чтобы в неё могли записывать, например чтобы скрипты могли изменять свои значения:
    Code:
    chmod 777 /usr/local/share/eggdrop
    Теперь запускаем бота:
    Code:
    eggdrop -m /usr/local/etc/eggdrop.conf
    и видим следущее:
    Code:
    $ eggdrop -m /usr/local/etc/eggdrop.conf
    
    Eggdrop v1.6.18 (C) 1997 Robey Pointer (C) 2006 Eggheads
    [02:12] --- Loading eggdrop v1.6.18 (Mon Dec 11 2006)
    [02:12] Module loaded: channels
    [02:12] Module loaded: server
    [02:12] Module loaded: irc
    [02:12] Module loaded: dns
    [02:12] Module loaded: ctcp
    [02:12] Module loaded: blowfish
    [02:12] Listening at telnet port 7510 (all).
    [02:12] egglib_pub.tcl v1.52 by Shrike <[email protected]>, mrBuG <[email protected]> loaded
    [02:12] Creating channel file
    [02:12] Couldn't create channel file: eggdrop.channels.  Dropping
    
    
    STARTING BOT IN USERFILE CREATION MODE.
    Telnet to the bot and enter 'NEW' as your nickname.
    OR go to IRC and type:  /msg CensoR hello
    This will make the bot recognize you as the master.
    
    [02:12] === CensoR: 1 channels, 0 users.
    Launched into the background  (pid: 26103)
    
    После того как ты видишь что бот пришел на канал в нашем случае это #test пишем /msg ИмяВота hello в нашем случае ник бота CensoR то пишем "/msg CensoR hello" и видим приерный ответ бота:
    Code:
    [03:10] => *CensoR* hello ========================================= 
    [03:10] -CensoR- Hi MicRO! I'm CensoR, an eggdrop bot. 
    [03:10] -CensoR- I'll recognize you by hostmask '*!*@micro.hvn' from now on. 
    [03:10] -CensoR- YOU ARE THE OWNER ON THIS BOT NOW 
    [03:10] -CensoR- As master you really need to set a password: with. /MSG CensoR pass [your-chosen-password].
    [03:10] -CensoR- All major commands are used from DCC chat. From now on,
     . you don't need to use the -m option when starting the bot. Enjoy !!!
    Дальше нужно задать пароль(но не меньше 6 символов) "/msg ИмяБота pass ЛюбойПароль" ну например:
    Code:
    [03:11] -> *CensoR* pass 123456 
    [03:11] -CensoR- Password set to: '123456'. 
    Теперь бот полностью подчиняется тебе, спросишь как, да элементарно пишешь "/dcc chat Ник_бота" он спросит ваш пароль - введите его и нажмите Enter. Вы увидете чтото похожее на:
    Code:
    [02:19:15] <CensoR> Enter your password.
    [02:19:21] <MicRO> 123456
    [02:19:21] <CensoR> 
    [02:19:21] <CensoR> Connected to CensoR, running eggdrop v1.6.18
    [02:19:21] <CensoR>      ____                __
    [02:19:21] <CensoR>     / __/___ _ ___ _ ___/ /____ ___   ___
    [02:19:21] <CensoR>    / _/ / _ `// _ `// _  // __// _ \ / _ \
    [02:19:21] <CensoR>   /___/ \_, / \_, / \_,_//_/   \___// .__/
    [02:19:21] <CensoR>        /___/ /___/                 /_/
    [02:19:21] <CensoR>  
    [02:19:21] <CensoR> Hey MicRO!  My name is CensoR and I am running eggdrop v1.6.18, on FreeBSD 6.0-STABLE.
    [02:19:21] <CensoR>  
    [02:19:21] <CensoR> Local time is now 02:19
    [02:19:21] <CensoR> You are an owner of this bot. Only +n users can see this! For more info,
    [02:19:21] <CensoR> see .help set motd. Please edit the motd file in your bot's 'text'
    [02:19:21] <CensoR> directory.
    [02:19:21] <CensoR> Use .help for basic help.
    [02:19:21] <CensoR> Use .help <command> for help on a specific command.
    [02:19:21] <CensoR> Use .help all to get a full command list.
    [02:19:21] <CensoR> Use .help *somestring* to list any help texts containing "somestring".
    [02:19:21] <CensoR>  
    [02:19:21] <CensoR> Have fun.
    [02:19:21] <CensoR>  
    [02:19:21] <CensoR> Commands start with '.' (like '.quit' or '.help')
    [02:19:21] <CensoR> Everything else goes out to the party line.
    [02:19:21] <CensoR> 
    [02:19:21] <CensoR> *** MicRO joined the party line.
    Ну а тут уже полная свобода действий(ты находишься на так называемом partyline) над ботом, приведу немножко команд(да все команды начинаются с .):

    .die -- убить бота.
    .rehash -- Бот перезагрузит свой config файл.
    .jump [server[port]] -- Приводит к тому что бот переходитна другой сервер.Смена сервера ВСЕГДА приводитк потере bot-oм cтатуса оператора.
    .+host <nickname> <hostmask> -- Добавить hostmask в запись пользователя.Благодаря hostmasks bot определяет (узнает) пользователя.
    .+chan [channel] -- бот зайдет на канал
    .-chan [channel] -- бот уйдет с канала
    .op <nickname> [channel] -- Предоставляет статус оператора канала пользователю, которого Вы определяете, пока bot находится на этом канале сам имея статус оператора, и пока пользователь не будет явно лишен статуса оператора ботом.
    Да чтобы убить бота можно например сделать:
    Code:
    #killall -9 eggdrop
    И в следущий раз бота запускать просто eggdrop

    Для начала хватит, если хочешь узнать другие команды смотрите в конце, там будут приведены все ссылки. Теперь рассмотрим некотрые скрипты и работу с ними. Например скрипт ircopscan.tcl после того как ты положил его в папку /usr/local/share/eggdrop/scripts и прописал в конфиге он всеравно неначал работать тут дело вот в чем, бот проверяет есть ли флаг +ircopscan на канале если нет то там скрипт не работает чтобы добавить мы просто в partyline пишем .chanset <#канал> +ircopscan. Ну вроде все, теперь ты можешь сам настроить себе бота и заставить работать его как ты хочешь. Всё теперь если ты внимательно читал сам можешь настроить бота вида eggdrop. Всем удачи в своих опытах с этой занимательной штучкой.
    Ну и ссылочки:
    http://windrop.sourceforge.net -- Офицальный сайт бота
    http://www.eggheads.org -- Исходники бота
    http://eggdrop.org.ru -- много хорошой инфы по этой теме включая скрипты, книжки, примеры.
     
    #1 MicRO, 11 Dec 2006
    Last edited: 11 Dec 2006
    3 people like this.