-[ 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 <sicario@sicario.net>"
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 pblicos, 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 <nickname> <channel> | +m
		------- --------------------   --   
		comando     parametros         atributo
                ----------------------------
                          sintaxis

+n <= owner
+m <= master
+o <= operador
+t <= botnet master


adduser <nickname> <channel>	| +m
Este comando es usando para aadir 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 <password>

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 <channel> <hostmask> <reason>	| +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 <hostmask/number>		| +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 <text>		| 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 <nickname> [reason]
boot <nick@bot> [reason]	| +t
Expulsa a un usuario de el party line, con un mensaje opcional.

Ejemplos 
        .boot sicario fuera!

 
chattr <nickname> [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 <oldnick> <newnick>	| +t
Cambia el nick de un usuario registrado en el robot.

Ejemplos
        .chnick sicario daemon
 

chpass <nickname> [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 <nickname> <hostmask>	| +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 <botname> ident <clave>
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 <nickname> <hostmask>	| +m
Remueve un hostmask de un usuario en el robot.

Ejemplos 
        .-host sicario *!newbie@*.tux.org 


+ignore <hostmask> [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 <hostmask OR number>	| +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 <irc-server> <irc-port>
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 <channel> <nickname> <reason>	| +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 <channel> <nickname> <reason>	| +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 <botname>	| +m
Da una lista de los modulos ejecutandose en el robot.

Ejemplos
	.modules Black-Dragon 

msg <channel/nickname> <message>	| 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 <channel> <nickname>		| +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 <channel> <nickname>	| +o
Quita el modo de operador. Solo se puede deopear a usuarios con igual o menos
atributos.

Ejemplos
	.deop sicario
	.deop #CDLR sicario

loadmod <module>	| +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 despus de
hacer cambios, editando directamente o despus 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 <channel> <message>		| 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 <module>	| +n
Desmonta un modulo en ejecucion.

Ejemplos
	.unloadmod stats 
        
                
+user <nickname> [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 <nickname>	| +m
Elimina el usuario especificado en el robot.

Ejemplos
        .-user sicario
 
voice <channel> <nickname>	| +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 <channel> <nickname>	| +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 <nickname>	| 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 <bot> <address:botport>
Crea un nuevo usuario como Bot.

Ejemplos 
	.+bot Robot 
	.+bot Robot bot.sicario.net:65432 

 
-bot <bot> 
Elimina un usuario registrado como bot.

Ejemplos 
	.-bot Robot 

 
botattr <nickname> [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 <bot> <address:botport> 
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, ponindole 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 <file(s)>
                unhide: Quita el atributo de oculto a un archivo.
		       .unhide <file(s)>	
		lsa  : Lista los archivos, incluyendo los ocultos.
		       .lsa [filemask]
                mkdir: Crea un directorio.
		       .mkdir <dir>
		mv   : Para mover un archivo o un grupo, ademas se usa para
		       tambin renombrar archivos.
		       .mv <source> <dest>
		rm   : Borra un archivo.
		       .rm <file(s)>
		rmdir: Borra un directorio vacio.
		       .rmdir <dir>
               
	Xfer / Usuarios comunes.
		ls   : Lista los archivos del FileServer.
		       .ls [filemask]
		get  : Para descargar un archivo.
		       .get <file> [nick]
		cancel: Para cancelar una transferencia.    
		       .cancel <file>
                pwd  : Muestra el directorio actual.       
                       .pwd
                cd   : Para cambiar de directorio actual.   
                       .cd <dir>
                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. Permitindote 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 <query> [#canal]  
	      ejemplos :
			!seen sicario 
			!seen sicario #cdlr <--- solo se indica el canal, si
                                                 el robot esta monitoreando
                                                 mas de un canal.

   Por MSG :  seen <query> [#canal]
   Por DCC Chat :  .seen <query> [#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 : Tcnica 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
                          despus 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 <canal> +-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*