²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿²²

³ 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 guía?

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 sabees 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 soocial .

. 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 cliennte 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 clientee 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;

    Source: geocities.com/fjpp_99