-[ 0x04 ]-------------------------------------------------------------------- -[ Eggdrops I y II]---------------------------------------------------------- -[ by sicario ]-------------------------------------------------------SET-26- IRC Bots - Eggdrops Vamos a tratar sobre del robot para IRC mas popular, el Eggdrop. Este robot esta creado bajo sentencias de C, existiendo versiones tanto para Unix/Linux asi como para el windows, como es de suponer, aquí solo trataremos de la version para Unix/Linux. Nos basaremos en la version 1.6.3 1.Requerimientos : - Una cuenta Shell, con permisos para compilar y ejecutar programas. - Cerciorate de tener el TCL instalado en tu maquina: Utiliza el comando tclsh para cambiar al shell del TCL y verificar si lo tienes instalado. Podras descargar la ultima version del TCL de ftp://ftp.scriptics.com/pub/tcl El TCL es un lenguaje para crear scripts, desarrollado por John Ousterhout, algunas distribuciones de Linux vienen con el TCL ya instalado. 2.Descarga del Software : Hay muchos lugares de donde puedes descargar el archivo comprimido del Eggdrop. Aqui alguno de ellos : http://www.eggdrops.net/ http://www.eggheads.org/ http://www.egghelp.org/ 3.Instalacion : Una vez descargado, procede a descomprimirlo : #tar -zxvf eggdrop1.6.3.tar.gz Ahora ingresas al directorio del archivo descomprimido : #cd eggdrop1.6.3 y procedes a configurarlo y compilarlo. #./configure #make config #make Con esto ya tienes instalado el eggdrop en tu sistema, ahora tendras que crear un robot con las necesidades que requieras. Lo ideal es tener agrupado los bots que vayas a crear por directorios, en el caso de que vayas a instalar mas de uno. Suponiendoce que nuestro robot se ira a llamar Bot y nuestro home directory sea \home\robot #make install DEST="\home\robot\Bot" Esto creara un directorio dentro de nuestro home llamado Bot, donde tendremos que editar el archivo de configuracion para nuestro robot. Encontraras uno como ejemplo llamado eggdrop.simple.conf. Editalo con tus requerimientos y renombralo para mayor facilidad de uso. A continuacion te pongo un archivo de configuracion, con parametros creados para el servidor de IRC Dalnet : ------ #En esta linea configuras la ruta donde se encuentra el binario #del Eggdrop. #! /home/robot/bot/eggdrop #Aqui configuras el Nick del robot y su password en variables #que se utlizan luego. set eggnick "Bot" set botpass "password" #Aqui configuras los datos generales del Bot. set username "Robot" set admin "sicario " set network "DALnet" set timezone "EST" set offset "5" #Si deseas tener logs de tu canal, los configuras aqui. set max-logs 5 set max-logsize 0 set quick-logs 0 logfile mco * "sicario.log" logfile jkp #canal "/home/robot/bot/logs/Bot.log" set log-time 1 set keep-all-logs 0 set switch-logfiles-at 300 set quiet-save 0 set console "mcobxs" #Aqui configuras el nombre del file de usuarios del bot y las #rutas de ayuda, temporales, del MOTD y del banner al hacer #telnet o un dcc chat al robot. set userfile "Bot.user" set sort-users 1 set help-path "help/" set temp-path "/tmp" set motd "motd" set telnet-banner "telnet-banner" #Aqui configuras los datos de tu bot si estara linkado a #otros bots. set botnet-nick "Bot" listen 4567 all set protect-telnet 1 set dcc-sanitycheck 0 set ident-timeout 6 set require-p 0 set open-telnets 0 set stealth-telnets 0 set use-telnet-banner 1 set connect-timeout 15 set dcc-flood-thr 6 set telnet-flood 5:5 set paranoid-telnet-flood 0 set resolve-timeout 20 ##### MORE ADVANCED STUFF ##### set ignore-time 10 set hourly-updates 00 set owner "sicario" set notify-newusers "sicario" set default-flags "hp" set whois-fields "url birthday" set remote-boots 0 set share-unlinks 0 set die-on-sighup 0 set die-on-sigterm 0 set must-be-owner 1 set max-dcc 50 set dcc-portrange 1024:65535 set enable-simul 1 set allow-dk-cmds 1 #Aqui configuras la ruta de los modulos. Los modulos son #sentencias adicionales en C, que te proporcionan #utilidades fuera del propio eggdrop. set mod-path "modules/" #Aqui levantas el modulo de canales y lo configuras. loadmodule channels set chanfile "bot.chan" set ban-time 300 set exempt-time 60 set invite-time 60 set force-expire 1 set share-greet 0 set use-info 1 #Lo que sigue son los parametros globales para control de #canales. set global-flood-chan 6:6 set global-flood-deop 0 set global-flood-kick 0 set global-flood-join 0 set global-flood-ctcp 6:6 set global-chanset { -clearbans -enforcebans +dynamicbans +userbans -autoop -bitch +greet +protectops +statuslog -stopnethack -revenge -secret +autovoice +cycle +dontkickops -wasoptest -inactive +protectfriends -shared -seen +userexempts +dynamicexempts +userinvites +dynamicinvites } set global-chanmode "nt" #Si deseas tener un canal especifico con protecciones distintas #las adicionas a partir de aqui. channel add #canal { chanmode "+nt" idle-kick 0 need-op { needop "#canal" } need-invite { needinvite "#canal" } need-unban { needunban "#canal" } need-key { needinvite "#canal" } need-limit { needinvite "#canal" } flood-chan 6:6 flood-deop 0 flood-kick 0 flood-join 0 flood-ctcp 6:6 } channel set #canal -clearbans -enforcebans +dynamicbans +userbans +userinvites channel set #canal -autoop -bitch +greet +protectops +protectfriends channel set #canal -stopnethack -revenge +autovoice -secret -shared +cycle channel set #canal +dontkickops -wasoptest -inactive -seen +statuslog #estos son algunos procesos que se ejecutan automaticamente si #el robot necesita Op, necesita ser invitado al canal o #quitarce un ban. proc needop {channelname} { global botnick nick botpass eggnick putserv "PRIVMSG NickServ :identify $eggnick $botpass" putserv "PRIVMSG ChanServ :op $channelname $botnick" } proc needinvite {channelname} { global botnick nick botpass eggnick putserv "PRIVMSG NickServ :identify $eggnick $botpass" putserv "PRIVMSG ChanServ :invite $channelname $botnick" } proc needunban {channelname} { global botnick nick botpass eggnick putserv "PRIVMSG NickServ :identify $botpass" putserv "PRIVMSG ChanServ :unban $channelname all" } #Aqui levantas el modulo de servidor y lo configuras. loadmodule server set net-type 3 set nick "Bot" set altnick "Bot_" set realname "http://home.dal.net/sicario/" set init-server { start } proc start {} { global botnick botpass eggnick putserv "NickServ IDENTIFY $eggnick $botpass" putlog "Identifying to NickServ (Auto-Identification)" putserv "MODE $botnick +iw-xs" } #Aqui configuras la lista de servidores al cual se conectara el #robot. set servers { tsunami.dal.net ced.se.eu.dal.net paranoia.se.eu.dal.net } set keep-nick 1 set use-ison 1 set strict-host 0 set quiet-reject 0 set lowercase-ctcp 0 set answer-ctcp 3 set flood-msg 3:3 set flood-ctcp 3:3 set never-give-up 1 set strict-servernames 0 set default-port 6669 set server-cycle-wait 10 set server-timeout 10 set servlimit 0 set check-stoned 0 set use-console-r 1 set debug-output 0 set serverror-quit 0 set max-queue-msg 350 set trigger-on-ignore 0 set double-mode 1 set double-server 1 set double-help 1 #Aqui levantas el modulo para CTCP eventos. loadmodule ctcp set ctcp-version "Eggdrop 1.6.3 admin: sicario" set ctcp-finger "Eggdrop 1.6.3 admin: sicario" set ctcp-userinfo "Eggdrop 1.6.3 admin: sicario" set ctcp-mode 2 #Aqui levantas el modulo para IRC. loadmodule irc set bounce-bans 1 set bounce-modes 0 set kick-bogus-bans 0 set bounce-bogus-bans 1 set max-bans 45 set max-modes 45 set allow-desync 1 set kick-bogus 0 set ban-bogus 0 set kick-fun 0 set ban-fun 0 set learn-users 0 set wait-split 600 set wait-info 1 set mode-buf-length 200 set no-chanrec-info 1 set revenge-mode 1 set bounce-exempts 0 set bounce-invites 0 set max-exempts 20 set max-invites 20 set bounce-bogus-exempts 0 set kick-bogus-exempts 0 set bounce-bogus-invites 0 set kick-bogus-invites 0 set prevent-mixing 1 ##### TRANSFER MODULE ##### #loadmodule transfer #set max-dloads 2 #set dcc-block 0 #set copy-to-tmp 1 #set xfer-timeout 35 ##### SHARE MODULE ##### #loadmodule share #set allow-resync 1 #set resync-time 900 #set private-owner 1 #set private-global 1 #set private-globals "mnot" #set private-user 1 ##### FILESYSTEM MODULE ##### #loadmodule filesys #set files-path "/home/robot/bot/filesys" #set incoming-path "/home/robot/bot/incoming" #set upload-to-pwd 0 #set filedb-path "" #set max-file-users 2 #set max-filesize 700000 ##### NOTES MODULE ##### loadmodule notes set notefile "seafish.notes" set max-notes 5 set note-life 90 set allow-fwd 1 set notify-users 1 set notify-onjoin 1 ##### CONSOLE MODULE ##### loadmodule console set console-autosave 1 set force-channel 0 set info-party 1 ##### WOOBIE MODULE ##### # this serves absolutely no purpose and is for demonstrative # purposes only #loadmodule woobie ##### SEEN MODULE ##### ##### BLOWFISH MODULE ##### checkmodule blowfish ##### ASSOC MODULE ##### # uncomment this line to load assoc support, i.e naming channels on # the botnet #loadmodule assoc ##### WIRE MODULE ##### # this module provides all the standard .wire commands via dcc. # it's an encrypted partyline communication tool, compatible with wire.tcl # uncomment this line to load it #loadmodule wire #Aqui colocas los scripts que vayas a usar, estos son algunos #ejemplos. Recuerda que los scripts necesitan alguna #configuracion adicional en el eggdrop o en el mismo script, #lee la ayuda de cada script. source scripts/bnc.tcl source scripts/randversion.tcl source scripts/bseen.tcl source scripts/responde.tcl source scripts/count.tcl source scripts/ping.tcl source scripts/chatstats.tcl --------- End Una vez que hayas terminado de editar el archivo de configuracion, procedes a ejecutar el robot, como esta sera la primera vez, tendras que usar la siguiente linea de comando : #./eggdrop -m conf Suponiendoce que hayas renombrado el archivo eggdrop.simple.conf por conf Una vez que el robot se haya conectado, procedes a enviarle un privado por el IRC, poniendo la siguiente linea : /msg Bot hello El bot te reconocera como su propietario u Owner, procedes a configurar tu clave /msg Bot PASS tuclave Ahora le haces un DCC Chat, pones tu clave y digitas .die , todos los comandos del robot dentro del Chat son precedidos por un . como indicador de comando. Tambien puedes matar el PID del proceso ejecutandoce del Bot. #kill -9 <#PID> Luego de haber echo esto, procedes a ejecutar el robot sin necesidad de poner el parametro -m #./eggdrop conf Aquí te muestro los parametros para ejecucion del bot : -n Ejecuta el robot en modo no background, mostrandote todos los procesos del bot en la terminal de la consola. -nt Ejecuta el robot en modo no background, mostrandote un entorno parecido al ircII. -nc Ejecuta el robot en modo no background, mostrandote informacion del canal cada 10sg. -m Se utiliza la primera vez en la ejecucion de un eggdrop, para crear el archivo de usuarios. -v Solo muestra la version del eggdrop al momento de desconectarce. Niveles de acceso al robot. Los comandos que puedas ejecutar tanto por DCC chat como por MSG, estan definidos de acuerdo al nivel de acceso que tengas al robot. n (owner) es el creador del robot, el maximo nivel. m (master) tiene acceso a adicionar/eliminar/modificar usuarios en el canal. o (op) Puede tener estado de operador en el canal. d (deop) No puede tener estado de operador en el canal. k (kick) Un usario con este flag, es automaticamente expulsado del canal. f (friend) Este flag indica estar en la lista de Friends del robot. a (auto-op) El robot da automaticamente el modo de Operador al entrar al canal, siempre en cuando el parametro autoop de la configuracion este +autoop v (auto-voice) El robot da automaticamente el modo de Voice al entrar al canal, siempre en cuando el parametro autovoice de la configuracion este en +autovoice Para visualizar los comandos a los que tienes acceso, solo digita .help Comentarios/sugerencias a : sicario@phreaker.net ----------------------------------------------------------------------------- -[ Eggdrops II]------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- Comandos, BotNet, File Server y Scripts en el IRC Bot Eggdrop Continuando con nuestros temas relacionados al IRC, en el numero anterior explicamos como configurar, instalar y poner en linea un Eggdrop para Linux. Ahora veremos como usar ese robot, comandos basicos, BotNet y uso de Scripts. Comandos -------- Algunos robots usan scripts para aceptar comandos mediante simples msg o querys, comandos para administracion y control de un canal, llevar estadisticas y otras utilidades. Lo mas recomendable es separar esos accesos, el eggdrop viene por defecto para utilizar comandos de administracion solo por DCC Chat, debido a la seguridad de los passwords y usuarios, es preferible dejar que eso trabaje asi, los demas procesos como estadisticas u otras utilidades, estan orientados al uso de cualquier usuario, entonces lo logico es que trabajen por medio de msg o comandos públicos, luego hablaremos de algunos de esos scripts. Comandos de DCC Chat Los comandos usados en un dcc chat van precedidos del . Tomaremos como nombre del robot: Black-Dragon Al costado de la sintaxis de cada comando colocare el atributo minimo requerido para acceder a dicho comando, separado por un |. Ejemplo adduser | +m ------- -------------------- -- comando parametros atributo ---------------------------- sintaxis +n <= owner +m <= master +o <= operador +t <= botnet master adduser | +m Este comando es usando para añadir un usuario, siempre en cuando este se encuentre en el canal, monitoreado por el robot. El robot automaticamente tomara los datos que necesita del info del usuario en linea, es decir no habra necesidad de indicarle cual es su user id ni su hostmask. Ejemplos .adduser sicario Al anyadir un usuario tendras que asignarle atributos, ya sea owner, master u operador, con el comando .chattr , si no configuras eso, el usuario no podra usar ningun comando. Luego de asignarle un nivel, el usuario tendra que configurar su clave, enviando un mensaje con el comando pass Ejemplos /msg Black-Dragon pass zasd763j <= Este comando es mediante msg Una vez hecho esto, el robot confirma la configuracion de la clave enviando un notice al nuevo usuario, para poder enviarle un Dcc Chat y entrar en el party line del robot. away [away-message] | all users Funciona de la misma manera que el AWAY del IRC, solo que el estado de away es marcado en el party line del robot, el mensaje de away es mostrado si algun usuario utiliza el comando .who, para marcar tu retorno puedes utilizar el comando .back o simplemente .away sin mensaje alguno. Ejemplos .away No estoy. back | all users Desactiva tu estado de away. Ejemplos .back backup | +n Se utiliza para realizar un backup de la lista de usuarios. bans all Muestra la lista de bans activos y los bans permanentes del robot. Ejemplo .bans all +ban | +m Este comando es similar a un auto kick ban, es decir el ban que se coloque es permanente, y solo puede eliminarlo un usuario que tenga como atributo minimo +m. Ejemplos .+ban #CDLR *!*@200.37.2.* Spammer <= Coloca un ban permanente a todo el dominio 200.37.2.* y con una razon. .+ban *shit*!*@* No eres bienvenido <= Coloca un ban a todo aquel que use como user id *shit* o trate de usar dicho texto como nickname. El modo de colocar los parametros de este comando es el mismo a un /ban, un /mode +b en el irc, puedes usar muchas variantes para el hostmask dependiendo de que tanto quieras evitar el ingreso de alguien. -ban | +m Utilizado para borrar un ban permanente o temporal, de la lista de baneados del robot. Ejemplos .-ban 1 <= Borra el ban numero 1 de la lista. .-ban *shit*!*@* <= Borra el ban que cumpla *shit*@* como hostmask. banner | all users Muestra un mensaje a todos los usuarios conectados al bot en el party line. Ejemplos .banner El bot sera desconectado por unos momentos boot [reason] boot [reason] | +t Expulsa a un usuario de el party line, con un mensaje opcional. Ejemplos .boot sicario fuera! chattr [attributes] [channel] | +m Sirve para asignarle o quitarle atributos a un usuario, globalmente si el bot esta en varios canales, o en un canal determinado. Ejemplos .chattr sicario +m <= Anyade a sicario como master global, es decir en todos los canales monitoreados por el robot. .chattr sicario -o #CDLR <= Quita el nivel de operador a sicario en el canal #CDLR. .chattr sicario -m|+o #CDLR <= Quita el nivel de master globalmente y da el atributo de operador en el canal #CDLR a sicario. Para ver la lista de atributos puedes usar el comando .help whois - Solo el creador del robot puede anyadir y remover usuarios con atributos "n" ( owner ), "m" (master) y "t" (botnet masters). chnick | +t Cambia el nick de un usuario registrado en el robot. Ejemplos .chnick sicario daemon chpass [newpassword] | +t Cambia el password de un usuario. Ejemplos .chpass sicario Xfrt45fd die [reason] | +n Finaliza la ejecucion del robot. Si no especifias una razon, saldra el nick de el usuario owner que ejecuto el comando, como razon del die. Ejemplos .die Fuera de linea por mantenimiento +host | +m Anyade un hostmask al registro de un usuario en el robot. Se usa este comando cuando un determinado usuario, modifica su user id o el sitio de donde se conecta. Ejemplos .+host sicario *!epic@*.sicario.org Existe el comando ident, que se utiliza para autentificarse con el robot mediante un msg. Sintaxis del comando /msg ident El unico requisito para usar este comando, es usar el nick con el que estas registrado al robot o ignora el mensaje que le envies. Ejemplos /msg Black-Dragon ident 87653 <= Este comando es un simple msg. Con esto el robot anyadira automaticamente tu nuevo hostmask y podras enviarle un Dcc Chat y entrar al Party Line. -host | +m Remueve un hostmask de un usuario en el robot. Ejemplos .-host sicario *!newbie@*.tux.org +ignore [comment] | +m Anyade un host a la lista de ignorados, con tu nickname y un comentario como datos adicionales. Este ignore es permanente, asi que no expira automaticamente, ya que es anyadido manualmente, no por alguna proteccion del robot contra flood o generado por algun script, para eliminarlo tendras que usar el -ignore. Ejemplos .+ignore *!*@*.nobody.net <= Ignoras a todo el que entre con ese host. .+ignore *!*@200.6.4.20 <= Ignoras al que entre con ese IP. .+ignore *Zealot*!*@* Por gay <= Ignoras al que trate de usar como nickname Zealot o como user id Zealot. Ademas pones el motivo, asi otro usuario con nivel de Master sabra el porque del ignore. -ignore | +m Remueve un ignore de la lista de ignorados del robot. Puedes usar el numero de ignore o la mascara con que fue anyadida. Ejemplos .-ignore 3 .-ignore *!*@200.6.4.20 ignores | +m Muestra la lista de ignorados del robot. Ejemplos .ignores jump Permite hacer un cambio de servidor, si no especificas el server, saltara al proximo de la lista, en el archivo de configuracion. Ejemplos .jump .jump matrix.dal.net 6668 kick | +o Sirve para expulsar un nick del canal monitoreado por el robot, se puede especificar el canal, si el robot esta en varios canales, y el motivo del Kick como parametros opcionales. Si pretendes aplicar este comando a un usuario del robot, solo podras hacerlo con usuarios que tengan los mismos atributos o menores que los tuyos. Ejemplos .kick sicario shut up! <= Expulsa a sicario con el mensaje "shut up!" .kick #CDLR sicario <= Expulsa a sicario del canal #CDLR sin ningun mensaje. kickban | +o Se utiliza este comando para expulsar y poner un ban a un determinado nick, el ban que se coloca es temporal, este ban expira dependiendo del tiempo que se se especifica en el archivo de configuracion del robot. Ademas se puede utilizar hostmasks para remplazar al nickname. Ejemplos .kickban sicario shut up! <= Coloca el ban y expulsa a sicario, con un mensaje. .kickban #CDLR *!*@*.org.pe <= Coloca un ban a el dominio *.org.pe en el canal #CDLR y expulsa a todo aquel que cumpla esa condicion. .kickban *sicario*!*@* <= Coloca un ban a todo aquel que use como user id *sicario* o use como nickname *sicario* modules | +m Da una lista de los modulos ejecutandose en el robot. Ejemplos .modules Black-Dragon msg | all users Envia un mensaje a un canal o nick determinado. Ejemplos .msg #CDLR hola! <= envia un mensaje al canal #CDLR .msg sicario Hey que tal <= Envia un mensaje a sicario. Este comando se utiliza para que el robot pueda enviar mensajes con su propio nick, es decir sicario recibira un query o mensaje con el nick de Black-Dragon no sabra que usuario del robot lo esta haciendo, siempre en cuando sicario no sea usuario del robot. op | +o Utilizado para obtener o dar el mode de operador en un canal. Ejemplos .op sicario <= Da el modo de operador a sicario. .op #CDLR sicario <= Da el modo de operador a sicario en el canal #CDLR deop | +o Quita el modo de operador. Solo se puede deopear a usuarios con igual o menos atributos. Ejemplos .deop sicario .deop #CDLR sicario loadmod | +n Pone en ejecucion un modulo. Loads a module. Ejemplos .loadmod stats rehash | +n Vuelve a cargar el archivo de configuracion del robot, se usa después de hacer cambios, editando directamente o después de cambiar valores de variables con el comando .set al archivo de configuracion. Al hacer un rehash el robot se actualiza, vuelve a cargar los scripts, grava los usuarios y vuelve a cargar la lista del user file. Ejemplos .rehash say | all users Usado para enviar mensaje con el nick del robot a un canal determinado. Ejemplos .say Hola que tal .say #CDLR hey tengo vida! soy inteligencia artificial unloadmod | +n Desmonta un modulo en ejecucion. Ejemplos .unloadmod stats +user [hostmask] | +m Este comando es para anyadir un usuario sin la necesidad de que este se encuentre presente en el canal. Ejemplos .+user sicario *!epic@206.138.105.10 <= Anyades a sicario como user, el cual se conecta de dicho IP y usa como user id epic. Cuando un usuario es anyadido al robot, el registro que se crea de ese usuario es en base a 3 datos : 1. El nick, en este caso sicario. 2. El user id, en este caso epic. 3. El hostmask. Si el usuario no cumple con estos tres requisitos, el robot no lo reconoce como user, no podra configurar su clave, ni mucho menos hacerle un chat al robot, para entrar al Party Line y usarlo. -user | +m Elimina el usuario especificado en el robot. Ejemplos .-user sicario voice | +o Coloca el modo de +v a un determinado nick. Ejemplos .voice sicario <= Da modo de +v al nick sicario .voice #CDLR sicario <= Da modo de +v al nick sicario en el canal #CDLR El uso del +v o voice, nada mas sirve si el canal esta en modo moderado, es decir cuando solo los operadores y los que tengan este modo +v pueden escribir en la ventana publica del canal. devoice | +o Quita el modo +v a un nick. Ejemplos .devoice sicario .devoice #CDLR sicario who | all users Muestra una lista de los usuarios conectados en el party line con el robot. Ejemplos .who whois | all users Este comando es usado para visualizar informacion de un usuario, aun si este no esta conectado al robot en el party line. Nos da el info, comentarios, hostmask y los atributos de dicho usuario. Ejemplos .who sicario BotNet ------ Los eggdrops tienen la habilidad de poder unirse con otros eggdrops, a esto se le denomina BotNet, creando entre ellos una especie de pequenya red de IRC. Esto te permite tener mas de un robot para proteger tu canal, los robots linked pueden tener registros de usuarios comunes de forma global o de un canal especifico. Algunos terminos usados : - BotNet: Termino usado para describir multiples robots conectados. - Link : Termino que indica el actual enlace de un robot. - Hub : Un eggdrops es llamado Hub, cuando uno o mas robots estan linked hacia él. - Leaf : Es un robot dentro del BotNet que no puede conectarse a mas de un robot. - Share : Termino usado para describir que dos robots estan compartiendo usuarios. - Share Bots : Termino para describir a varios robots compartiendo usuarios. Flags : h ( hub ) : Indica que el robot anyadido es un Hub. a ( alternate ) : Indica que el robot es un Hub alternativo, si por algun caso tu robot no puede conectarse al hub, tratara de conectarse al hub con el flag alternate. l ( leaf ) : Indicas que tu robot solo hara un link a un robot. r ( reject ) : Un robot con este flag rechaza cualquier intento de enlace. s ( shared ) : Indica que puedes compartir el registro de usuarios con el bot anyadido. Comandos del BotNet : +bot Crea un nuevo usuario como Bot. Ejemplos .+bot Robot .+bot Robot bot.sicario.net:65432 -bot Elimina un usuario registrado como bot. Ejemplos .-bot Robot botattr [attributes] [channel] Primite dar y cambiar los atributos de un Bot. Ejemplos .botattr Robot +s botinfo Muestra informacion de un Bot linked en el BotNet. bots Muestra la lista de Bots linked en el BotNet. bottree Muestra un diagrama en tree-format de los enlazados en el BotNet. chaddr Cambia la direccion Ip y/o el puerto de un Bot Ejemplos .chaddr Robot ircbots.sicario.net:4567 Seguiremos un procedimiento para crear un BotNet, teniendo como : Black-Dragon <- Hub Monitor y Compiler <- Leaf bots Bottree : Black-Dragon | \___ Monitor | \___ Compiler Antes que nada tienes que asegurarte en el archivo de configuracion de tu eggdrop, en la parte de channel set que este la opcion de shared como +shared. Ademas debes levantar los modulos de transfer y share : loadmodule transfer loadmodule share 1. En el hub anyadimos los leaf bots : .+bot Monitor .+bot Compiler 2. Les asignamos los flags correspondientes a nivel de usuario : .chattr Monitor +o <-- Operador .chattr Compiler +o 3. Les asignamos los flags a nivel de botnet : .botattr Monitor +s <-- Compartira sus usuarios con los leaf bots. .botattr Compiler +s 4. En los leaf bots, anyades el Hub. Para esto tendras que saber el host y el puerto por el cual el Hub acepta conexiones de Telnet. Suponiendo que nuestro Hub tiene como host sicario.net y acepta conexiones por el puerto 4567. Digitas en el party line del leaf bot: .+bot Black-Dragon sicario.net:4567 5. Asignas flags de usuario al Hub : .+chattrr Black-Dragon +o 6. Asignas flags del BotNet al Hub : .+botattr Black-Dragon +h Aqui es donde puedes anyadir al hub como alternate, poniéndole como flag +a Si anyades el Hub como +h el leaf bot se conectara automaticamente al Hub bot. Los pasos 4,5 y 6, como es obvio tendras que hacerlo en ambos robots Monitor y Compiler. File Server ----------- Un eggdrop puede ser usado como un servidor de archivos, podras subir y descargar archivos, una herramienta muy util para intercambio de informacion y todo tipo de files. Para poder usar este recurso del Eggdrop tienes que levantar el modulo de FileSystem en el archivo de configuracion de tu robot. ##### FILESYSTEM MODULE ##### loadmodule filesys set files-path "/home/robot/bot/filesys" <-- Indicas la ruta donde se almacenaran los archivos. set incoming-path "/home/robot/bot/incoming" <-- Directorio por defecto. set upload-to-pwd 1 <-- Este parametro indica : . Si esta en 1, todos los archivos seran almacenados a partir del directorio indicado en el files-path, eso quiere decir que dentro de esta ruta puede haber sub-directorios, y los usuarios podran colocar sus archivos donde mejor les convenga. . Si esta en 0, todos los archivos seran almacenados en el directorio indicado en incoming-path. set filedb-path "" <-- Se supone que crea un archivo oculto donde lleva un registro del File System, tienes que indicar la ruta donde se creara el archivo .filedb .No lo he usado. set max-file-users 2 <-- Indica la cantidad maxima de usuarios conectados al file server del robot. set max-filesize 700000 <-- Indica el tamanyo maximo en KiloBytes que podra tener cada archivo que se quiera subir. set dcc-limit 1 <-- Indica el numero de downloads que puede tener un usuario. set require-x 1 <-- Indica que un usuario que tenga acceso al FilServer debe tener el flag de +x, 0 = Off 1 = On ############################# Para poder usar el FilServer del robot es necesario tener como minimo el flag de +o en el robot. Hay dos niveles de usuario en el FileServer : j ( Janitor ) : Tiene acceso a comandos de administracion del fileserver. x ( Xfer ) : Tiene acceso al fileserver, si esta el parametro set require-x en 1. Comandos del FileServer : Para ingresar al fileserver, digitas : .files en el party line. Janitor : hide : Marca un archivo como oculto. .hide unhide: Quita el atributo de oculto a un archivo. .unhide lsa : Lista los archivos, incluyendo los ocultos. .lsa [filemask] mkdir: Crea un directorio. .mkdir mv : Para mover un archivo o un grupo, ademas se usa para también renombrar archivos. .mv rm : Borra un archivo. .rm rmdir: Borra un directorio vacio. .rmdir Xfer / Usuarios comunes. ls : Lista los archivos del FileServer. .ls [filemask] get : Para descargar un archivo. .get [nick] cancel: Para cancelar una transferencia. .cancel pwd : Muestra el directorio actual. .pwd cd : Para cambiar de directorio actual. .cd quit : Para abandonar el FileServer. .quit El envio de archivos al fileserver consiste en solo enviar un dcc send al robot. Scripts ------- Los scripts de un eggdrop son sentencias creadas mediante el lenguaje TCL. Existen infinidad de scripts, dependiendo de su uso, se pueden clasificar en: Scripts de proteccion Scripts de uso general Scripts de guerra Vamos a mencionar algunos que utilizo. - Bass's Seen script. Este script crea una base de datos de los usuarios en linea, entradas, salidas, desconexiones, kicks, bans de un canal. Permitiéndote buscar usuarios por nick o direcciones de IP. Primero descargas el script, editas el archivo bseen.tcl para configurar los parametros que te indica, luego lo anyades en el conf de tu robot : source scripts/bseen.tcl y le das un .rehash al robot. Los comandos que puedes usar son : Publico : !seen [#canal] ejemplos : !seen sicario !seen sicario #cdlr <--- solo se indica el canal, si el robot esta monitoreando mas de un canal. Por MSG : seen [#canal] Por DCC Chat : .seen [#canal] Ademas puedes usar variantes en los querys como por ejemplo : !seen sica* !seen *indecopi.org* !seen *200.4.* !seen *.edu #cdlr El eggdrop posee un modulo que te permite realizar el seen sin necesidad de un script, llamado seen.mod. Solo hace falta que levantes el modulo en el conf del robot : loadmodule seen Si quieres revisar el modulo lo encuentras en el directorio de tu robot ../eggdrop/src/mod/seen.mod/ - Rand Version Este script devuelve un ctcp-version reply aleatorio de una lista que puedes modificar. Es muy util si no quieres que sepan que version de eggdrop estas usando, o si quieres joder poniendo que tu robot esta en Windows usando mIRC. Simplemente editas el randversion.tcl configurando los parametros que te pide y lo adicionas en tu conf : source scripts/randversion.tcl Luego un .rehash - Sentinel Un script de proteccion, personalmente el mejor. Te permite controlar : CTCP Flood al canal : Cuando envian peticiones de ctcp al canal. Join/Part Flood al canal : Tecnica muy usada, que causa mucho danyo si lo hacen varios floodbots. Nick Flood al canal : Otra tecnica que consiste en el cambio de nicks para crear flood. Text Flood al canal : Técnica que consiste en enviar lineas continuas de texto para crear flood en un canal. Es muy comun ver robots que usan estas tecnicas combinadas y joden un huevo. Teniendo este script bien configurado mandas a esos flooders al carajo. Ademas posee parametros para configurar protecciones del mismo bot, es decir evitar que le metan flood al mismo robot, ya sea de CTCP o msg, ignorando a dichos atacantes. Es muy simple de configurar, te pongo aqui los parametros mas importantes : # Bot CTCP flood. set sl_bcflood 4:4 <--- Indicas que solo va aceptar 4 peticiones de ctcp en 4 segundos de un mismo nick, si alguien le envia mas de eso, ignora al host. Si pones 0:0 asume que esta en off. # Bot MSG flood. set sl_bmflood 6:6 <--- Indicas que solo va recibir 6 lineas de texto en 6 segundos como mensajes de privado. # Channel CTCP flood. set sl_ccflood 4:4 <--- Indicas que solo podran hacer 4 peticiones de ctcp al canal en 4 segundos y dara un kickban al flooder. # Channel join-part flood. set sl_jflood 3:3 <--- El mismo nick solo podra entrar y salir 3 veces en 3 segundos, para meterle un kickban por idiota. # Channel nick flood. set sl_nkflood 3:3 <--- Solo podra cambiarse 3 veces de nick en 3 segundos. set sl_ban 5 <--- Cantidad de minutos que baneara el host del flooder después de poner en moderado y de solo invitados el canal. set sl_banmax 50 <--- Maximo numero de bans activos en el canal. set sl_igtime 5 <--- Cantidad de minutos para ignorar a los flooders. set sl_ilocktime 5 <--- Cantidad de segundos en que el canal estara bloqueado, este parametro es muy importante, si pones 0 se asume que esta en off entonces el solo invitados no se quitara automaticamente. set sl_mlocktime 5 <--- Cantidad de segundos en que el canal quedara en modo moderado. Igual que el anterior, si pones 0 queda off y el robot no lo quitara automaticamente. Esos son los parametros mas importantes, con eso aseguras una proteccion optima de tu canal. - CHATstats Este es un script muy bueno para crear estadisticas de un canal, creando una base de datos con lo usuarios, palabras en un ranking. Estos reportes creados por el script crean paginas en html que pueden ser actualizados por ftp automaticamente por el robot de acuerdo a un tiempo determinado en la configuracion o colocarlos en un directorio local. Las paginas que crean son de : - Informacion variada del canal ( ChanStats ) - Actividad en el canal durante horas especificas, basado en texto escrito por los usuarios del canal. ( Activity Stats ) - Informacion variada del robot y del botnet ( BotStats ) Existe un modulo para el eggdrop llamado stat.mod que no viene por defecto en el instalador. El unico detalle es que si ya instalaste tu robot, tendras que hacerlo de nuevo, copiando este modulo al directorio ../src/mod/ de tu instalador, procediendo luego a configurar, compilar y por ultimo instalar el robot. Este modulo te crea estadisticas en html de los canales monitoreados, ademas que te proporciona comandos publicos. - Spam Check Script para controlar el Spamm en un canal, especificamente con los spammers que envian privados al hacer un join o un part del canal, ademas puedes controlar el envio de virus, ya que detecta los dcc que envian automaticamente los usuarios. Basicamente el funcionamiento del script consiste en un ciclo de entradas y salidas del canal por parte del robot, para detectar Spammers, esto de acuerdo a un tiempo determinado que configuras. Aqui los parametros : set mc_sc(ign:wrds) "pass op invite ident" <--- Aqui pones las palabras que el robot va ignorar, si alguien le hace un privado. Ya que existen algunos comandos por msg publicos o solo para usuarios del robot, no querras que los tome como Spammers. set mc_sc(act:wrds) { <-- Aqui colocas las palabras que el robot tomara en *http://* cuenta para considerar que el privado proviene de *www.* un Spammer. *sex* *join #* *goto #* } set mc_sc(act:wrds) { <-- Si configuras esta linea tendras que comentar el * parametro anterior por que con este set, le estas } indicando al robot que tome cualquier palabra como Spamm excepto los set mc_sc(ign:wrds). Te recomendaria no usarlo, es preferible que tome solo algunas palabras, por que si no estarias anyadiendo palabras a ignorar y es todo un lio. set mc_sc(sc:cyclerate) 9:20 <-- Aqui indicas el tiempo minimo y maximo para realizar el ciclo de Join/Part del robot para realizar el chequeo de Spammers, es decir entre 9 como minimo y 20 minutos como maximo el robot saldra n veces, la cantidad de veces es aleatoria. set mc_sc(joind) 10 <-- Aqui indicas el tiempo en segundos que el robot estara fuera del canal antes de entrar nuevamente. set mc_sc(exempt:op) 1 <-- Aqui indicas que los operadores no seran tomados en cuanta al momento del chequeo de Spammers. 0 = Si 1 = No set mc_sc(exempt:voice) 1 <-- Lo mismo que el anterior, solo que este es aplicado a los usuarios con Voice. set mc_sc(exc:ban) 5 <-- Aqui indicas la cantidad de minutos del ban al Spammer. set mc_sc(exc:message:dccsend) "Anti Spam, Don't dcc send me anything." set mc_sc(exc:message:privmsg) "Anti Spam, Don't message me." set mc_sc(exc:message:notice) "Anti Spam, Don't notice me." set mc_sc(exc:message:invite) "Anti Spam, Don't invite me to your lame channel." Estos 4 parametros son los mensajes que el robot usa para expulsar a los spammers. set mc_sc(bant) 2 <-- Aqui indicas el tipo de ban que aplicara el robot. Tipos de ban : 0 - *!user@host.domain 1 - *!*user@host.domain 2 - *!*@host.domain 3 - *!*user@*.domain 4 - *!*@*.domain 5 - nick!user@host.domain 6 - nick!*user@host.domain 7 - nick!*@host.domain 8 - nick!*user@*.domain 9 - nick!*@*.domain set mc_sc(glob_ban) 1 <-- Aqui indicas si el ban sera global o solo en el canal donde fue detectado el spammer. 0 = Si 1 = No Luego de configurar el TCL script, lo anyades en el conf del robot y le das un rehash para activar la proteccion, en el Party Line con el robot usas el siguiente comando : .chanset +-spamcycle +-spamcheck Ejemplos : .chanset #cdlr +spamcycle +spamcheck <-- Indicas que el script estara activo en el canal #cdlr, haciendo un ciclo de Join/Part +spamcycle y controlando los spammers +spamcheck .chanset #cdlr -spamcycle +spamcheck <-- Indicas que solo controlara el spamm mas no hara el ciclo de Join/Part Existe un inconveniente en el uso de este script al activar el spamcycle, en servidores donde el acceso a tener op esta dado por servicios, por ejemplo en DalNet, donde es muy comun la caida del ChanServ, servicio de administracion de canales, cuando no esta activo el robot al salir del canal y volver a entrar no podra subir como operador, la solucion esta en usar un robot principal, que este siempre en el canal, usando otro para el Spam Check. CDLR <-- Robot principal Black-Dragon <-- Robot para el Spam Check En CDLR adicionas a Black-Dragon como usuario y le das el flag de Auto Op ( +a ), problema solucionado. Toda informacion sobre eggdrops, descarga de archivos, scripts : http://www.eggheads.org/ http://www.egghelp.org/ http://www.eggfaq.com/ http://mars.age.psu.edu/ http://www.tclscripts.com/ Como habran podido ver, los eggdrops son robots de irc muy completos, de ahi su gran preferencia por gente que conoce de IRC. Espero que con este y el articulo tratado en el numero anterior sea suficiente para poder levantar tu robot y administrarlo sin ningun problema. Me despido, Cualquier duda o comentario: sicario@phreaker.net *EOF*