      ******************************************************************
      **          						      **
      **                 Instalando Bots en el IRC		      **
      **							      **
      ******************************************************************



Lo primero feliz ao nuevo a todos/as ;). En este texto voy a intentar explicar
como instalar y configurar un bot permanente en el irc, es decir, que este las
24 horas del dia, 365 dias al ao. Para eso me voy a basar en el eggdrop 1.2.0,
que es un bot de unix muy bueno. El codigo fuente lo podeis bajar de la pagina
del canal #hacker_novatos: http://hello.to/hacker_novatos, seccion Archivos.

Pues bien, como iba diciendo, el eggdrop es un bot programado en C pero que
emplea el lenguaje TCL. Es un bot muy usado, por ejemplo en undernet. En el
irc-hispano segun me han dicho Scytale es un eggdrop modificado y traducido
por Goku. Pues bien, pasemos ya a los requisitos que necesita un sistema para
tener un eggdrop.


1.- Requisitos:

. Necesitas tener una cuenta en algun sistema Unix, que permita hacer ftps, y
que no te anden matando el proceso cada poco. Para esto ultimo puedes usar tu
imaginacion o usar alguna shell gratuita, etc.

. Que el sistema permita compilar con el GCC.

. Que este el TCL, version 7.4 o superior, instalado en la makina.


Pues bien, una vez que ya tengas todo lo necesario tendras que subir el codigo
fuente del eggdrop (eggdrop1.2.0.tgz) al servidor, por ftp por ejemplo. Si la
makina tiene el puerto 21 cerrado haces un ftp a tu ordenata y lo bajas, si el
comando ftp esta desactivado mejor buscate otra cuenta :). Una vez que tengas
el fichero en el servidor, haces un telnet y lo descomprimes poniendo lo si-
guiente: "gzip -dr eggdrop1.2.0.tgz;tar -xf eggdrop1.2.0.tar". Se te creara un
directorio con el nombre eggdrop1.2.0 (Ya se que lo estoy explicando todo,
perdonenme los que controlan un poco de unix ;). Bueno, pues entras a ese di-
rectorio y pones "./configure" para que cree los archivos necesarios para la
compilacion. Despues de que acabe pones "make" para compilarlo (todo esto sin
las comillas claro). Bueno, si todo ha ido bien se te creara un ejecutable lla-
mado eggdrop. Tb habra un archivo de configuracion llamado eggdrop.conf, renom-
bralo a otro nombre mas comodo, como por ejemplo conf a secas (mv eggdrop.conf
conf), y le das permiso de ejecucion con chmod +x conf.
En la version 1.2.0 hay un bug en la instalacion, y es que los modulos
tendrian que estar en el directorio modules, para corregirlo creas un link con
"ln -s . modules", estando en el directorio donde esta el binario eggdrop. Pues
bien, ahora vamos a ver el fichero de configuracion.


2.- Fichero de configuracion.

Si hiciste lo que dije antes el fichero se llamara conf, lo editas con tu edi-
tor favorito (vi por ejemplo). La primera linea sera algo parecido a:
#!/path/to/eggdrop, ahi tendras que poner la ruta completa al ejecutable egg-
drop, por ejemplo #!/home/pepe/eggdrop1.2.0/eggdrop. Luego viene el apartado
General Stuff.

2.1.- General Stuff.

Vayamos linea por linea (Las que no sean importantes las saltare de comentar).

set nick "Lamestbot"  --> Aqui esta el nick que tendra el bot en el irc
set altnick "Llamabot"  --> Nick que tendra si el primero esta ocupado
set username "lamest"   --> Informacion que saldra al hacerle un whois
set realname "/msg LamestBot hello" --> Informacion que saldra al hacerle un
                                        whois

set admin "Lamer <email: lamer@lamest.lame.org>" --> Nombre y email del ad-
						     ministrador del bot

set learn-users 1 --> Lo comentare mas adelante, dejarlo en 1.

set servers {        --> Aqui hay que poner la lista de servidores a la que se
irc.arrakis.es:6667      conectara el bot, si uno falla salta al siguiente, y
irc.jet.es:6667          asi.
}

Al final de este apartado viene lo de los versions, userinfos,etc. Aqui podeis
poner algo de este tipo, para que pase desapercibido.

# several variables exist to better blend your egg in.  they are
# ctcp-version, ctcp-finger, and ctcp-userinfo.  you can use set
# to set them to values you like.
set ctcp-version "Mirc 5.41"
set ctcp-finger "Mirc 5.41"
set ctcp-userinfo "Mirc 5.41"

2.2.- Channel Protection.

Aqui es donde se le indican los canales a los que entrar, las opciones,etc.
Al principio por defecto estaran los canales #botcentral y #lamest. Para bo-
rrarlos borra estas lineas:

channel add #lamest {
  chanmode "+nt-likm"
  idle-kick 0 						--
  need-op { putserv "PRIVMSG #lamest :op me please!" }  l
  need-invite { putserv "PRIVMSG #lamest :let me in!" } l  Todo esto es lo
  need-key { putserv "PRIVMSG #lamest :let me in!" }    l  que dira en el
  need-unban { putserv "PRIVMSG #lamest :let me in!" }  l  irc si necesita
  need-limit { putserv "PRIVMSG #lamest :let me in!" }  l  op, una key, etc.
}							--

channel add #botcentral {
  chanmode "+mntisl 1"
  idle-kick 1
}
channel set #botcentral +bitch +clearbans +enforcebans -greet +revenge

Y tendras que comentar con un "#", todas estas:

channel set #lamest -clearbans
channel set #lamest +enforcebans
channel set #lamest +dynamicbans
channel set #lamest +userbans
channel set #lamest +autoop
channel set #lamest -bitch
channel set #lamest +greet
channel set #lamest +protectops
channel set #lamest +statuslog
channel set #lamest +stopnethack
channel set #lamest +revenge
channel set #lamest -secret
channel set #lamest -shared

Pues bien, ahora que ya esto todo limpio vamos a crear nuestro canal. Imagine-
mos que nuestro canal se llama #micanal, y que queremos que el bot este todo
el dia en ese canal. Lo primero sera aadir al fichero algo como esto:

channel add #micanal {
  chanmode "+nt-likm"
  idle-kick 0
}

No importa donde lo aadamos, siempre que es en la seccion de Channel Protec-
tion. Lo del chanmode es los modos que queremos que tenga el canal. Una vez
que este creado el canal habra que aadirle las opciones que son todas estas:

.clearbans: Quita todos los bans cuando el bot entra al canal
.enforcebans: Si por ejemplo alguien banea a una persona, el bot le kickea
              automaticamente.
.dynamicbans: Guardar que la lista de bans no sea demasiado larga, por ejemplo,
              quita bans de gente que no estan en el canal y si vuelven a en-
              les pone el ban otra vez.
.userbans: Permite poner bans directamente (sin ser a traves del bot).
.autoop: Les da op a los que tienen el flag +o automaticamente al entrar al ca-
         canal.
.bitch: Solo los usuarios registrados en el bot con el flag +o pueden tener op.
.greet: Dice el user's info de un usuario cuando entra al canal.
.protectops: Si alguien con el flag +o pierde el op, se lo vuelve a dar.
.statuslog: Logea el status del canal cada 5 minutos.
.stopnethack: Si alguien entra con op al canal, por ejemplo de un netsplit, el
              bot se lo quita.
.revenge: Si alguien le quita el op al bot, y luego lo recupera, le baneara del
          canal.
.secret: El canal sera secreto.
.shared: Esto no se lo que es XD.

Una vez que tengas elegidas las opciones las declaras con una linea de este ti-
po: channel set #micanal +bitch +clearbans +enforcebans -greet +revenge, po-
niendo tu las opciones que quieras claro.

Luego ya viene las opciones de Logs, que lo configuras a tu gusto, y de direc-
torios y de File system, que sirve para hacer una especie de ftp con el bot,
que si quieres usarlo pues investigas :) (este texto solo explica lo basico).


2.3.- Startup, Modules y BotNet.

En el apartado Startup tendras que comentar(#) la linea que pone: 
die "Please edit your config file." , por razones obvias :).

En el apartado de los Modulos pues lo dejas como esta. Y en el de botnet
hay una opcion que pone listen 3333 all, asi si por ejemplo el bot esta ins-
talado en makina.com, y haces un telnet a makina.com al puerto 3333 pues podras
manejar el bot igual que si estuvieras en el irc.


3.- Arrancando el bot por primera vez.

Por fin! :D, una vez que ya esta todo configurado arrancaras el bot con el co-
mando ./conf -m. Si todo va bien se conectara al irc y entrara al canal
#micanal. La primera vez que arranca es especial, ya que el que le haga un
query y le ponga la palabra "hello" pasara a ser el dueo del bot, asi que ya
sabes..a poner hello :). Una vez que lo hayas puesto el bot te dira que elijas
un password, lo eliges. Una vez que ya esta todo matas el proceso del bot, la
pid la guarda en un fichero llamado pid.conf o algo asi. Despues editas de
nuevo el fichero conf y buscas la linea set learn-users 1, y lo cambias por 0.
Esta linea lo que hace es habilitar lo del hello, y ahora que ya eres el dueo
pues la desactivas :). Para arrancar el bot otra vez pones ./conf simplemente,
lo del -m solo hace falta la primera vez.


4.- Manejando el bot desde el IRC.

Pues hala, ahora que ya ta todo toca manejarlo, aadir usuarios, etc. Hay va-
rios tipos de usuarios por defecto, el +n sera el owner del bot (el jefe), y
podra ejecutar todos los comandos, asi como cambiar la configuracion. El si-
guiente sera el master +m, que podra ejecutar casi todos los comandos, aadir
usuarios,etc., el op +o, es el que puede pedir op al bot, y este se lo dara,
pero no puede ni aadir usuarios, ni nada.

Para manejar el bot hay varios caminos, esta el query para usuarios normales
(+o), ya que tiene muy pocos comandos, y el dcc, que trae muuchos mas comandos
y que es para el +m y el +n. (Tb esta el telnet, pero es igual que el dcc).
Para el dcc le haces un dcc chat normal al bot, lo que pasa que una vez dentro
es una especie de partyline con los otros usuarios conectados al bot, por lo
que los comandos siempre iran precedidos de un punto,ej: .help,.kick,etc.
Con .help comando aparace una ayuda mas detallada del comando en cuestion.
Aqui pongo una lista de comandos sacados de un articulo muy bueno de Axl.

Comandos de uso Comun:

     op |nick| : Da op al Nick indicado. 
     deop |nick| : Quita op. 
     +ban |nick| : Banea a Nick. 
     bans : Nos muestra la lista de Bans en el
     canal. 
     -ban |ban_num| : Unbanea el numero de ban
     indicado. 
     who : Muestra la gente conectada al Bot. 
     bottree : Muestra el rbol de Bots. 
     note |nick| #comentario# : Le escribe a Nick
     una nota. 
     notes read : Lee las notas que te han escrito. 
     notes erase : Borra todas tus notas. 
     newpass : Cambia tu password. 
     kick |nick| : Echa del canal a Nick. 
     kickban |nick| : Echa y Banea a Nick. 
     info #comentario# : Guarda tu comentario y lo
     dice cada vez que entras en el canal. 

Comandos para el Mantenimiento (solo para +m)

     chattr |nick| +/-flags : Cambia el status del
     usuario en el Bot, Ej: ".chattr tDyK +n" hace
     que el user tDyK pase a ser owner del Bot. 
     adduser |nick| Hace que Nick sea usuario del
     Bot, por defecto sin privilegios. El Usuario ha
     de estar en el Canal. 
     set |setting| flag : Cambia alguno de los sets
     internos del Bot. Si no ponemos el flag nos
     muestra el que tenga. Ej: ".set log-time 0" 
     save : Guarda los cambios (de settings, de
     usuarios...) que hayamos hecho en el Bot. Por
     defecto guarda estos cambios cada hora. 
     boot |user| : Echa a User del party line del
     Bot. 
     status : Muestra el estado actual del Bot. 
     dccstat : Muestra las conexiones via DCC que
     tiene el Bot actualmente. 
     rehash : Vuelve a cargar el fichero de
     configuracin 
     die : "Mata" al Bot. Solo +n 
     jump : Hace que el Bot salte al siguiente
     Server en la lista de servers. 


Si tanto comando te lia, para aadir un usuario al bot, haz simplemente esto:
hazle un dcc chat al bot, una vez dentro pones .match * para ver todos los
usuarios que hay registrados en el bot, si por ejemplo quieres aadir a uno
con el nick JUAN, pones .adduser JUAN, y luego .chattr +o JUAN. Ya esta, ahora
JUAN debe hacer esto otro: hacerle un query al bot y poner: pass miclave, la
clave pone la que quiera claro. Luego para que el bot le de op le hace un query
y pone op miclave. Como al principio el bot solo guarda una mask de JUAN, si
este entra un dia con una mask distinta el bot no le reconocera, para aadir
la nueva mask debe poner ident miclave, y luego ya op miclave. Nota: Para aa-
dir a alguien el usuario debe estar en ese momento en el canal.

Nota: Todos los passwords estaran encriptados, de forma que ni el administrador
      sabra que clave eligen los usuarios.


5.- Formas de caskar un eggdrop.

Hay varias formas de colgar un eggdrop, la mayoria son sobreescribiendo un
buffer, armando un lio impresionante que el sistema no es capaz de arreglar.

5.1.- Note command: el comando .note sirve para mandar una especie de mails
entre los usuarios del egg. Pues bien, si alguien hace un .note aaaaaaa(bastan-
tes a's)@dummy, el bot se cuelga.

5.2.- Ban command: lo mismo pero con el comando +ban; .+ban aaaaaaa...

5.3.- Jump command: .jump irc.arrakis.es 6667 aaaaaaaaaaaaaa...

5.4.- Mkdir command: .mkdir aaaaaaaaaaaaa... funciona aunque no tengas permi-
so para crear directorios.


6.- Despedida.

Pues venga, ya me voy. El articulo es un poco basico, pero es que el
eggdrop es muy amplio, tendras que investigar lo que keda por tu cuenta ;).
Hala, un saludo a toda la pea del #hacker_novatos, en especial a Sp4rk, ulan,
kr0n0, RiSeHack, ^NewBie^, Freedom, Asturcon y a Conde Vampiro ;). Ah, y un
saludo a mi novia. Byes.

Nota: Ya se que el articulo se sale un poco de lo que es el hack en si, pero
      crei que podria ser util a alguien.


PoSiDoN
hacker_novatos@hello.to
http://hello.to/hacker_novatos

-------------------------------------------------------------------------------------

Este trozo ha sido aadido por el-brujo, www.elhacker.net


.adduser nick ---> para aadir un usuario
.deluser nick --> para borrar usuario

para poner password
/msg nombre_del_bot pass PASSWORD

para aadir modos al usuario
.chattr el-brujo +v #barcelona
.chattr el-brujo +o #bara
.chattr ^NIT^ +o #HackersESpaa

Para hacer master
.chattr Lanselot #barcelona +m
.chattr isma #barcelona +o

Modos de usuario

v - voice --> le dara voz al usuario
o - op
m - master --> si el canal es suyo hazle master de su canal
n - owner --> mmm
f - friend --> no aplicar el revenge, entre otras cosas
p - partyline access 



para que te salude al entrar
.info comentario

para decir algo
.say #canal algo

.tcl putserv "nick nombre_bot"


para que pille otro servidor de irc
que el owner te de privilegios para hacerlo
.jump server port
.jump (aleaotrio)

por si el bot que se queda pillado
.reset
.rehash --> vuelve a coger la configuracin
.restart --> vuelve a entrar al irc

para que no repita lo que dices
.echo off

para que te coga el DCC aadir la mask:
.+host el-brujo el-brujo!*danger*@*

para quitar mascaras
.-host el-brujo  *!*danger*@216.188.81*

Para ver el estado del bot
.status

Par ver los usuarios del bot, con su acceso, mascaras, etc
.match *