#n3ur0n4 c0rp | silicon cell into your mind

Oct/09

21

PROTOCOLO IRC II

==================================
By: z3r0.und3r
To: #n3ur0n4
Url: http://n3ur0n4.org
Reply to: z3r0.und3r@n3ur0n4.org
==================================

==================================
=>> PROTOCOLO IRC II
==================================

1.- Relax e introducción

2.- Creando mi primer conexión vía Netcat

3.- Comandos de entrada-salida de un canal

4.- Comandos de conversación

5.- El comando MODE

6.- Pateando a indeseados

7.- Obteniendo información

8.- EOF
== Relax e introducción

Como ya comentamos en nuestra primera entrega, en esta trataremos de ver lo más que se pueda. Por lo que he visto en las visitas a este blog se han dirigido mas a este post, así que deduzco que hay interés en su siguiente entrega, pero me gustaría que comentaran para saber sus dudas y/o aclaraciones.

==Creando mi primer conexión vía Netcat

“Netcat es una herramienta de diagnostico y exploración de redes. Puede crear casi cualquier tipo de conexión y tiene varias opciones integradas. Puede ser utilizado solo, como soporte para otros programas, o puede incluirse dentro de scripts SH (en Unix) o batch (en ms-dos).” [1]

Podríamos hacer la conexión vía Telnet pero como este envía cada carácter que tecleamos, no nos da opción de equivocarnos. En cambio Netcat al enviar cada retorno de línea, nos permite antes de enviar el comando, revisar la sintaxis para que no generemos errores.

En adelante pondré logs de ejemplo, y después explicare cada comando y la respectiva respuesta del servidor. Lo que nosotros enviaremos estará dispuesto de la siguiente manera comando y lo que responde el servidor será respuesta

CODE
======================
M:\> nc irc.n3ur0n4.org 6667

NOTICE AUTH :*** Checking Ident

NOTICE AUTH :*** No ident response

user z3r0 z3r0 z3r0 :z3r0

nick z3r0

PING :2041857758

pong :2041857758

:irc.n3ur0n4.org 001 z3r0 :Welcome to the Internet Relay Network z3r0

:irc.n3ur0n4.org 002 z3r0 :Your host is irc.n3ur0n4.org, running version beware1 .5.7

:irc.n3ur0n4.org 003 z3r0 :This server was created Tue Jul 13 2004 at 20:36:07 GMT

:irc.n3ur0n4.org 004 z3r0 irc.n3ur0n4.org beware1.5.7 dgikoswx biklmnoprstv

:irc.n3ur0n4.org 005 z3r0 MAP SILENCE=15 WHOX WALLCHOPS WALLVOICES USERIP CPRIVM SG CNOTICE MODES=6 MAXCHANNELS=10 MAXBANS=45 :are supported by this server :irc.n3ur0n4.org 005 z3r0 NICKLEN=9 TOPICLEN=160 AWAYLEN=160 KICKLEN=160 CHANTYP ES=#& PREFIX=(ov)@+ CHANMODES=b,k,l,rimnpst CASEMAPPING=rfc1459 :are supported by this server

:irc.n3ur0n4.org 251 z3r0 :There are 1 users and 0 invisible on 1 servers

:irc.n3ur0n4.org 255 z3r0 :I have 1 clients and 0 servers

:irc.n3ur0n4.org NOTICE z3r0 :Highest connection count: 1 (1 clients)

:irc.n3ur0n4.org 422 z3r0 :MOTD File is missing

:irc.n3ur0n4.org NOTICE z3r0 :on 1 ca 1(4) ft 10(10)

quit Saliendo ejercicio I

M:\>

======================

Netcat tiene grades posibilidades de comandos, por ahora solo nos importara la funcionalidad de crear una conexión de cualquier tipo, en este caso el servicio IRC en nuestro host virtual irc.n3ur0n4.org.

nc irc.n3ur0n4.org 6667

El nc es nuestro programa, irc.n3ur0n4.org será cambiado por el nombre del servidor al que se conectaran; en mi caso monte el bircd un censillo servidor IRC para Win32 en mi localhost. Y por ultimo el 6667 es el puerto mas común para los servidores IRC.

NOTICE AUTH :*** Checking Ident

NOTICE AUTH :*** No ident response

El servidor al conectarnos siempre lo primero que pedirá es que nos identifiquemos (no le permitirás el acceso a tu casa a un desconocido sin antes por lo menos saber su nombre), para esto tendremos que enviarle el comando USER.

user z3r0 z3r0 z3r0 :z3r0

El comando USER no devolverá mensaje alguno así que después de haberlo enviado debemos de enviar el comando NICK seguido del nombre con el que nos identificaran los demás residentes de la red IRC.

nick z3r0

ahora si ya casi estoy totalmente conectado al servicio IRC, después de mandar el comando NICK al servidor, este nos enviara un PING seguido de dos puntos y un numero aleatorio, a lo que nosotros contestaremos con un comando PONG seguido de los dos puntos y el numero aleatorio.

PING :numero_aleatorio

PONG :numero_aleatorio

El PING/PONG estarán presentes cada cierto tiempo en nuestra conexión, solo que los demás después del numero aleatorio, serán por lo general el nombre del servidor al que estés conectado un ejemplo seria: PING :irc.n3ur0n4.org a lo que nosotros contestaríamos con: PONG :irc.n3ur0n4.org

Después del PING/PONG ya estaremos finalmente conectados al servidor IRC, por lo cual nos enviara el mensaje de bienvenida, numero de canales creados, numero de usuarios conectados, servidores que conforman la red, etc.

Hasta ahora sabemos los comandos básicos para crear la conexión, el comando QUIT lo único que hace es notificarle al servidor que cierre su conexión con nosotros.

QUIT mensaje_de_salida

El mensaje_de_salida se mostrara en los cales en los que estés conectado.

==Comandos de entrada-salida de un canal

Se preguntaran, si claro ya sabemos como entrar a un servidor, pero ¿que hay de los canales?, ¿como me comunico con otras personas?.

En el IRC existen comandos para efectuar la entrada y salida de los canales presentes en la red. Pero antes tendremos que saber que canales hay en existencia para eso usamos el comando LIST que nos devolverá la lista de canales presentes en la red.

JOIN #canal

La función del comando JOIN es entrar en el canal indicado, ojo antepuesto un carácter #, ya que es el identificativo para un canal.

PART #canal :mensaje

Para abandonar un canal de conversación usaremos el comando PART seguido del canal del cual deseemos salir, el mensaje es optativo. Un uso censillo seria PART #canal.

QUIT mensaje

Este ultimo ya lo aviamos mencionado.

==Comandos de conversación

Hay dos formas de comunicarse con una persona en el IRC. Una vía canal, en el cual todos lo participantes leerán la conversación (publica), la otra es de forma directa por privado.

PRIVMSG #canal :mensaje

El comando PRIVMSG #canal envía un mensaje al canal dictado por el usuario. Cuidar que la sintaxis sea la correcta, los dos puntos no se deben omitir. También antes de poder enviar un mensaje a un canal, de veras de haber accedido a el con el comando JOIN si no marcara un error y no será enviado tu mensaje, ya que al crear un canal el servidor pone por defecto los modos no mensaje externos.

PRIVMSG nick :mensaje

Lo mismo que el anterior solo que aquí enviamos un mensaje privado a un usuario particular, este mensaje no lo podrán leer mas que el usuario que lo envía y el usuario con el nick receptor.

NOTICE #canal :noticia

Cumple con la misma función de PRIVMSG solo que esta en los clientes IRC gráficos, salta con otro color el mensaje, pero para los que estamos aprendiendo a usarle en modo texto no nos viene mal ni bien. Lo mismo pasa con la modalidad de privado. Solo que esta saltara en la misma ventana en la que estén posicionados los usuarios.

NOTICE nick :mensaje

==El comando MODE

Como ya lo vimos anteriormente, en el IRC hay jerarquía para cada usuario y también esto aplica a los canales. El comando MODE nos permitirá cambiar los distintos modos del canal y de los usuarios.

Canales

Para los canales existen modos para controlar la integridad del mismo, por si algún listillo nos quiere joder, por ejemplo cambiando el topic, si queremos que nuestro canal no se liste en el servidor, si deseamos que no entren extraños, etc. Para setear la opción solo se antepone un “+” al modo y para quitarle, solo se antepone un “-”. Nota: los [] no van incluidos en el comando, solo es para darle un poco de orden, solo usa MODE #canal +t, por poner un ejemplo.

MODE #canal [+/-]t

La opción “t” controla el acceso al topic por los usuarios normales, es decir, si lo seteo a “+t” solo los operadores del canal podrán cambiar el topic del mismo.

MODE #canal [+/-]n

Muchas veces hay personas que intentan joder desde afuera del canal, es decir, envían mensajes sin hacer siquiera un JOIN, al crear un canal se setean por default los modos +t y +n, pero no esta de mas saber para que sirve. El modo “n” controla el flujo de los mensajes externos al canal, si se setea el servidor no permitirá en envió de mensajes de personas que no estén dentro del canal.

MODE #canal [+/-]s

Tus drogos y tu no quieren que desconocidos entren al canal solo porque les suena bien su nombre, esta opción le notifica al servidor que no liste su canal al usar el comando LIST.

MODE #canal [+/-]i

Si deseas algo mas de filtrado de los usuarios que acceden a tu canal, pro que no repartir invitaciones para tu fiesta solo a los conocidos. La opción “i” solo permitirá la entrada a usuarios que tengan invitación de alguien que ya este participando en el canal al que se le ha seteado dicha opción. Para invitar a un usuario externo, tendrás que usar el siguiente comando.

INVITE nick #canal

Al usuario que invitemos le aparecerá una alerta de invitación, ya solo con un simple JOIN podrá acceder.

MODE #canal [+/-]m

La opción “m” controla los mensajes en el canal de miembros participantes en el mismo. Cuando se habilite este modo, aunque los usuarios estén dentro del canal, si no tienen privilegio de VOICE (voz), los mensajes que escriban dirigidos a ese canal, no serán entregados, el servidor le devolverá un error, ejemplo:

CODE
======================

privmsg #n3ur0n4 :Prueba de canal moderado sin privilegio de voz

:irc.n3ur0n4.org 404 z3r0 #n3ur0n4 :Cannot send to channel

======================

MODE #canal [+/-]k password

Como te puedes dar cuenta, este modo setea un clave de acceso al canal, ningún usuario podrá acceder si no sabe la clave correcta. Para poder entrar al canal de veras usar el comando JOIN con la siguiente sintaxis.

JOIN #canal password

Al setear una clave con el “+k” tendrás que removerla con “-k” seguido de la misma password.

MODE #canal [+/-]l numero

El modo “l” limita el acceso de un determinado número de usuarios. Esto es practico para cuando hay bots que se pueden clonar a si mismos, ejemplo si en el canal habemos 5 personas lo limitamos a 6 para evitar JOINs masivos, para cuando entre el numero 6, lo limitamos a 7, siempre un numero mas para tampoco no permitir el acceso al mismo.

==Usuarios

Anteriormente hablamos de los privilegios de los usuarios, de que no todos tienen la posibilidad e manejar todos los modos de usuarios y canales, sin estas restricciones el canal definitivamente seria un completo desorden.

MODE #canal [+/-]o|v nick

Los “o” operadores del canal tiene acceso a modificar todos lo modos del canal, así como kickear a cualquier usuario, bannear, dar y quitar voz, etc.

Para los “v” solo se les permitirá participar en un canal con modo “+m” (moderado).

==Pateando a indeseados

Siempre hay personas que fastidian la integridad del canal, aquellos que solo entran para romper las pelotas de los demás con insultos, spam, flood, bots indeseados, etc. Pues IRC nos tiene dos comandos útiles para joder a este tipo de personas.

KICK #canal nick :razón

El comando KICK expulsa al usuario del canal indicado con la razón descrita. Ejemplo: ” KICK #test z3r0 :Largo de aquí”.

KICK solo expulsa al usuario, pero si vuelve a hacer JOIN al canal, este entrara nuevamente, si es una llamada de atención esto es valido, pero si este tipo ya ha sobrepasado la línea existe un modo llamado BAN el cual le notifica al servidor que tal usuario no es bienvenido a nuestro canal.

Antes de proseguir, necesitamos analizar la estructura del identificador de cada usuario, nosotros solo lo identificamos por su nick, pero detrás de solo un nick el servidor lo reconoce por:

nick!~ident@host

Para cuando deseemos bannear a una persona, deberemos tomar en cuenta cada una de estas partes que conforman la identidad del usuario en el servidor.

Estas pueden combinarse de la forma en que nos venga bien, a continuación enuncio algunos ejemplos:

MODE #canal +b z3r0!*@* Banneara al usuario con el nick “z3r0″, si cambia de nick podrá volver a entrar.

MODE #canal +b *!~lestat@* Banneara a los usuarios con el ident “lestat”.

MODE #canal +b *!*@n3ur0n4.org Banneara a los usuarios con el host “n3ur0n4.org”, este también puede ser la ip del mismo, dependiendo de cómo este configurado el servidor, si banneas el host, no accederá a menos que se conecte desde otra localidad.

MODE #canal +b *!*@* No permitira la entrada a todos los usuarios que intente accede al canal, ojo no es recomendable este ultimo ;).

==Obteniendo información

El comando LIST nos devuelve la lista de canales creados en el servidor hasta el momento en que nosotros la solicitamos.

Ahora bien, para los que usan la consola para poder conectarse al servicio (que de esto trata este tuto, de dejar atrás los clientes IRC convencionales), aquí solo sabemos quienes están conectados al canal en cuando nosotros accedemos, pero que pasa si no recuerdo quienes están participando en el mismo.

NAMES #canal

Este comando nos devolverá la lista de los usuarios del canal indicado, claro esta en que tendrás que haber entrado previamente para poder consultar dicha información.

Si de información se trata disponemos de tres comandos para saber un poco mas de con quien estamos parlando de otro lado del monitor.

WHO nick devolverá la información a grandes rasgos sobre el usuario indicado, siempre y cuando este aun este online.

WHOIS nick lo mismo que el anterior solo que con mas detalle (si me equivoco corríjanme).

WHOWAS nick Este comando nos permite saber la información básica de un usuario que ya no se encuentra online.

Pero si de conseguir información se trata, es mejor consultar con los bots “nickserv, chanserv, botserv” ellos manejan más información que los comandos anteriormente listados.

Para mi estos fueron los comandos mas esenciales para saber el funcionamiento del protocolo, pero aquí les dejo una lista de los comandos que acepta y maneja el servidor bircd.

ACCOUNT ERROR MODE REHASH USERHOST
ADMIN GET MOTD RESTART USERIP
AWAY GLINE NAMES RPING VERSION
BURST HELP NICK RPONG WALLCHOPS
CLEARMODE INFO NOTICE SERVER WALLOPS
CLOSE INVITE OPER SETTIME WALLUSERS
CNOTICE ISON OPMODE SILENCE WALLVOICES
CONNECT JOIN PART SQUIT WHO
CPRIVMSG KICK PASS STATS WHOIS
CREATE KILL PING SVSNICK WHOWAS
DESYNCH LINKS PONG TIME
DIE LIST POST TOPIC
END_OF_BURST LUSERS PRIVMSG TRACE
EOB_ACK MAP QUIT USER

==EOF

Esto fue todo lo que me he inventado sobre el protocolo IRC xD, espero les haya servido, agradezco a los visitantes de este pequeño blog, aunque no a esos bots que nos estuvieron jodiendo cuando éramos un foro y ahora también están de spammers en este blog.

Cualquier duda, comentario, sugerencia, ampliación del articulo, corrección, mentada de madre, etc. Favor de comentar en este espacio o al correo de la comunidad staff@n3ur0n4.org o al de su servidor z3r0@n3ur0n4.org.

==EOF==

[1] NETCAT 1.10 Herramienta de Diagnostico y Exploración de Redes Articulo por Nahual http://www.Raza-Mexicana.org

Share and Enjoy:
  • Print
  • Twitter
  • Digg
  • Google Bookmarks
  • del.icio.us
  • Facebook

RSS Feed

No comments yet.

Leave a comment!

<< SQL-Inyection By PerverthsO

Frank Abagnale Jr. >>

n3ur0n4

#n3ur0n4 Corporation
Live Free & Die Free