Salta ai contenuti

IRCd y Máscaras

El IRCd

El ircd (Internet Relay Chat daemon) es una aplicación que permite chatear a través del protocolo IRC en un servidor1. Sin profundizar más en esta definición, podemos intuir que, cuando un usuario se conecta, se comunica con el IRCd.

¿Cómo está estructurado IRC?

IRC es un protocolo (mIRC, en cambio, es un cliente2). Cuando nos conectamos al chat, en realidad, nos estamos conectando a un servidor individual de la red (en nuestro caso, IRCGate). Todos los servidores de la red están conectados entre sí para compartir información y ofrecer servicios. Una vez conectados al servidor, estamos en línea. Estar en línea nos permite enviar mensajes y comandos al servidor, y por lo tanto, comunicarnos con otros usuarios3, incluso si no estamos en un canal.

Entrar en un canal (a través del comando JOIN que veremos a continuación) nos permite ver una lista de usuarios presentes y comunicarnos más fácilmente con ellos. Veamos algunos comandos del IRCd.

Comandos del IRCd

El ircd ofrece varios comandos. A continuación, solo menciono algunos que considero básicos:

  • JOIN: con el comando /join #nombreCanal1[, #nombreCanal2] se puede entrar a uno o más canales. Es lo mismo que hace mIRC cuando nos conectamos y entramos automáticamente en algunos canales.
  • PART: con el comando /part #nombreCanal1[, #nombreCanal2] se puede salir de uno o más canales sin desconectarse del servidor.
  • QUIT: con el comando /quit, se puede desconectar del servidor al que estamos conectados.
  • WHOIS: con el comando /whois nick, se pueden visualizar algunas informaciones relevantes sobre el usuario considerado.

Estos son solo algunos de los muchos comandos disponibles. A continuación, menciono una lista de comandos que muestran los comandos disponibles:

  • /helpop ?usercmds
  • /helpop ?umodes (lo veremos en futuras lecciones)
  • /helpop ?chmodes (lo veremos en futuras lecciones)
  • Otros que no se tratan en este curso.

Si, por ejemplo, estamos interesados en cómo funciona el comando WHOIS, podemos escribir: /helpop ?whois.

Dejo al usuario la tarea de informarse sobre los comandos mencionados, cómo funcionan y su sintaxis4: AWAY, WHO, USERHOST, USERIP, VERSION, CYCLE, LUSERS, PRIVMSG, WATCH, INVITE, ISON, NICK, NOTICE, ACCEPT, KICK, TOPIC.

¿Todos los comandos son del IRCd?

La respuesta, naturalmente, es no. De hecho, hay comandos disponibles solo en su cliente (por lo que no necesariamente funcionan para otros usuarios) y alias5. Un ejemplo de alias es GHOST.

Las máscaras

Introducción a las máscaras

Retomando el comando WHOIS que acabamos de ver, introducimos el concepto de máscara (más común como “mask” en inglés). Una máscara es completa cuando sigue la siguiente sintaxis: nick!ident@host. Las máscaras nos permiten identificar, aunque no necesariamente de manera única, a un usuario.

Características de una máscara

Además de estar formada, en su totalidad, por nick, ident y host, la máscara permite un manejo más avanzado a través del uso de comodines. Los comodines disponibles son ? (signo de interrogación) y * (asterisco).

¿Por qué nos interesan las máscaras?

Las máscaras son de interés por muchas razones. En este curso, nos interesan principalmente para bloquear, establecer excepciones e invitaciones. Discutiremos estos temas en próximas lecciones.

Resumen de la lección en clase

~MyWay: Primero, veamos cómo funcionan las cosas aquí en el chat.

Hay servidores conectados entre sí que forman la red Orixon. Cuando un usuario se conecta, simplemente se conecta a uno de estos servidores donde se ejecuta un programa llamado ircd.

@newmoon: Aquí estoy.

%Jerod: Sí.

~MyWay: Para que el programa que se ejecuta en el servidor y el cliente (el programa con el que chatean) de los usuarios puedan entenderse, se necesita un protocolo. Un protocolo es un conjunto de reglas comunes, un poco como el idioma italiano. A la palabra “HOLA”, todos le damos el mismo significado y por eso podemos entendernos. Lo mismo ocurre con estos dos programas. El protocolo (es decir, el idioma que hablan) es IRC.

Una vez que el usuario se conecta a uno de estos servidores donde se ejecuta el ircd, está en línea. Por lo tanto, para estar en línea no es necesario estar en ningún canal. Podemos enviar comandos al ircd y comunicarnos con otros (/msg Jerod hola).

Ahora, ya que estar en línea sin saber quién más está en línea y, por lo tanto, no poder comunicarse no es útil (al menos para nuestros propósitos), se inventaron los canales. Dentro de un canal es posible escribir en común y ver a otros usuarios que están allí.

Para entrar en un canal, se utiliza el comando JOIN (por lo tanto, la palabra JOIN es parte del protocolo IRC, un poco como HOLA en el idioma italiano). Por lo tanto, cuando estamos en tux`script y hacemos doble clic en un canal para entrar, mirc simplemente

está traduciendo ese clic en /JOIN #ChatGratis. De la misma manera, para salir hay el comando /PART, que permite dejar un canal, mientras que el comando /QUIT permite desconectarse del servidor (y por lo tanto de la red).

Otro comando muy interesante que discutiremos más en las próximas lecciones es el comando /WHOIS (¿quién es?). Que permite obtener información detallada sobre un usuario.

Claramente, el protocolo IRC es mucho más amplio y hay muchos otros comandos, por lo que hay una serie de comandos para acceder a las “guías en línea”. Por ejemplo, si escribes /helpop ?uerscmds puedes ver estos comandos mencionados hasta ahora. Si quieres conocer específicamente cómo funciona o las características de un comando, puedes escribir /helpop ?nombrecomando (ES. /helpop ?JOIN).

Cada mensaje que enviamos, antes de llegar al usuario, pasa por el servidor. Por lo tanto, tenemos una situación así: Usuario1 -> Servidor -> Usuario2. Si el usuario 2 responde: Usuario2 -> Servidor -> Usuario1.

Sin embargo, el ircd no es el único objeto con el que comunicamos, también hay otros programas, además del ircd, que permiten el uso de algunas características adicionales. Los services son un ejemplo; cuando te conectas y te identificas, simplemente estás enviando un mensaje privado a un usuario particular llamado NICKSERV, que es un programa junto al ircd, que te permite reconocerte y conectarte a tu cuenta, lo cual de otra manera no podrías hacer. De hecho, originalmente, no se contemplaban estos mecanismos adicionales y podían surgir una serie de problemas. Para aquellos interesados en una de las razones para agregar los services, pueden buscar en Google bajo el término “IRC TAKEOVER”.

Ahora, decíamos que uno de los comandos que más nos interesan, como moderadores, es el WHOIS. Para hacer el whois puedes hacer /whois nick o hacer clic derecho en el nick de un tipo aleatorio y presionar whois.

Jerod es Jerod![email protected] Nombre real para Jerod: Usuario de Colloquy Información sobre Jerod: está usando modos +irxt Jerod está autenticado como: Jerod Jerod está en los canales: +#ChatJuegos, +#ChatGratis, %#cursomod El servidor de Jerod: genesi.orixon.org - Servidor IRC IPv6/IPv4 por fred El tiempo de inactividad de Jerod: 0d 0h 11m 46s Hora de acceso de Jerod: sáb may 4 11:32:06 2013 Información WHOIS para Jerod recibida de genesi.orixon.org

~MyWay: Hoy el sujeto seleccionado es… Jerod. Jerod![email protected]. En la primera línea del whois, vemos lo que se llama “máscara”. La máscara está compuesta por 3 partes, nickname!ident@host-criptado. Ahora, sobre el nickname supongo que no tienen dudas. Es el que eliges. El ident, de la misma manera, es una palabra que eliges con un máximo de 10 caracteres. El host, sin embargo, te lo asigna el ISP cuando te conectas a internet (sería el IP básicamente), para que los demás no puedan rastrear tu ip, este host se encripta. Además, (siempre a través de los services) hay la posibilidad, como en el caso de Jerod, de tener un host personalizado que se llama VHOST (host virtual). El vhost es gestionado por HOSTSERV (todos los services terminan en SERV). Por lo que cuando te identificas a través de nickserv, inmediatamente después hostserv te coloca el host virtual que has elegido, que se superpone a tu host original. ¿Por qué nos interesan tanto las máscaras? Porque a través de ellas “construimos” baneos, excepciones, invitaciones y muchas otras cosas. Ahora tomemos como ejemplo los baneos

, para entender cómo funcionan. Si quisiera bloquear a Jerod, debería establecer un bloqueo en su máscara y, por lo tanto, en Jerod![email protected]. Ahora, sin entrar en detalles de cómo se hace, ya que lo veremos en las próximas lecciones, tratemos de entender cómo el ircd “lee” la máscara. Escribir Jerod!Jer

[email protected] para el ircd significa decir: toma ese usuario que tiene estas propiedades:

  • como nick tiene jerod Y
  • como ident tiene jerod Y
  • como host tiene vop.chatt-gratis.net

Sólo si estas tres condiciones se cumplen al mismo tiempo, entonces la máscara tiene efecto. Este tipo de máscara, formada por los 3 parámetros, se llama máscara completa. Es bueno conocerla, pero como pueden imaginar, no es conveniente, ¿por qué? Porque si impongo un bloqueo en todo eso, ya que las 3 condiciones deben cumplirse, si Jerod cambia el nick, entra de nuevo, porque una de las 3 ya no se cumple.

@newmoon: Apaga el modem.

~MyWay: Con este fin, los creadores han pensado en permitir el uso de caracteres comodín. Un carácter comodín es un símbolo especial que permite reemplazar uno o más caracteres. En particular, en las máscaras, estos símbolos especiales son sólo dos:

  • uno es el ?
  • el otro es *

El signo de interrogación reemplaza sólo un carácter. El asterisco, sin embargo, reemplaza de 0 a n (“infinitos”) caracteres. Claramente estos símbolos están limitados a su zona. Es decir, si pongo el asterisco en lugar de Jerod, _![email protected], no es que esto también funcione después del ! Porque el ! delimita el espacio de acción, advierte al ircd que justo después comienza el ident. Así que el símbolo ya no tiene efecto a partir de ahí. Por lo tanto, tendré que usar otro: _!*@vop.chatt-gratis.net. Y de esta manera no estoy haciendo más que decir:

  • cualquier nick
  • cualquier ident
  • siempre que tenga como host vop.chatt-gratis.net

De esta manera, como pueden imaginar, se pueden hacer “combinaciones” un poco más poderosas. Ahora, por lo general, para aquellos que nunca han visto máscaras, es difícil entrar en la mentalidad, así que hasta la próxima lección haremos ejercicios sobre esto y trataremos de profundizar en ello tanto como sea posible. Mientras tanto, ¿tienen preguntas hasta ahora?

%Jerod: Sí, una.

~MyWay: Dinos Jerod.

%Jerod: ¿Puedo poner un * o un ? también en el host?

~MyWay: Sí, claro, puedes ponerlo en cualquier parte de la máscara.

%Jerod: Ok.

~MyWay: Veamos algunos ejemplos. Si escribo pro* ¿qué estoy representando? Todas las palabras que comienzan con PRO y continúan como quieran, ya que después hay un asterisco que dice “cualquier secuencia de caracteres”.

%Jerod: Pro y todos los otros caracteres posibles.

@newmoon: Producto.

~MyWay: Por lo tanto, PRObar, PROducto, PRO (sin nada más), PROfugo, etc.

%Jerod: Protuberancia. Ok.

@newmoon: Máximo 10 caracteres.

~MyWay: Eso depende de dónde lo pongas. Si lo pones en el ident sí, son un máximo de 10. Si no, en general son “infinitos”.

%Jerod: Ah, lo entiendo.

~MyWay: Cabe señalar que si coloco el asterisco al principio de la palabra, entonces estoy configurando la máscara en un SUFJO. Si lo pongo al final, un PREFIJO. Si lo pongo al principio y al final, estoy diciendo que una palabra determinada debe estar en el centro. MON. Sin embargo, ten en cuenta que * también significa ningún carácter. Así que esto toma MONdo, amMONiaco, etc. aMON y así sucesivamente.

%Jerod: Ok.

Ejercicios

Se les pide a los candidatos moderadores que construyan una o más máscaras (el número mínimo de máscaras necesarias) para hacer coincidir:

  1. todos los usuarios que tienen un apodo que termina en “gene”;
  2. todos los usuarios que tienen el ident igual a “cgiirc”;
  3. todos los usuarios que tienen el host que termina en “.telecomitalia.it”;
  4. todos los usuarios que tienen un ident de 9 caracteres;
  5. todos los usuarios que tienen un ident más corto de 10 caracteres, excepto aquellos de 5 caracteres (es decir, [1..4] y [6..9]), el hostname que termina en .telecomitalia.it y el apodo que termina en “_j”.

Se les pide a los candidatos, describir para qué sirven los siguientes comandos y explicar cómo se utilizan:

  1. userhost
  2. userip
  3. away
  4. who
  5. version
  6. cycle
  7. lusers
  8. privmsg
  9. watch
  10. invite
  11. ison
  12. nick
  13. notice
  14. kick
  15. topic
Soluciones
  1. *gene!*@*
  2. *!cgiirc@*
  3. *!*@*.telecomitalia.it
  4. *!?????????@*
  5. Esto se hace usando varias máscaras. De esta manera podemos dividir una regla que de otra manera no podríamos hacer, en varias reglas distintas: de hecho, podemos obtener los ident más cortos de 10, (excepto la longitud 5) usando 8 máscaras: *_j!?@*.telecomitalia.it, *_j!??@*.telecomitalia.it, *_j!???@*.telecomitalia.it, *_j!????@*.telecomitalia.it, *_j!??????@*.telecomitalia.it, *_j!???????@*.telecomitalia.it, *_j!????????@*.telecomitalia.it, *_j!?????????@*.telecomitalia.it De esta manera, para hacer una analogía, es como si hubiéramos utilizado la unión de conjuntos (con una regla no puedo establecer una máscara que tome los de 1 y los de 2, pero mediante la unión de dos máscaras, sí).

Otros ejercicios

Si las máscaras todavía les parecen difíciles, les invito a producir la solución (siempre usando máscaras mínimas), para hacer coincidir:

  1. Todos los usuarios que tienen el host encriptado que comienza con “118FAAD.”;
  2. Todos los usuarios que tienen el host encriptado que termina con “.ip173.fastwebnet.it”;
  3. Todos los usuarios que tienen el ident que termina con “_j” y el host que termina con “.retail.telecomitalia.it”;
  4. Todos los usuarios que tienen un ident y un nick exactamente iguales; 5. Todos los usuarios que tienen un ident y un nick que comienzan igual.

Notas

Footnotes

  1. Computadora constantemente conectada a internet.

  2. Programa utilizado por el usuario para conectarse.

  3. Todas las comunicaciones, ya sean en el canal o en privado, no pasan directamente de usuario a usuario, sino a través del servidor, que siempre es nuestro intermediario. Esto tiene ventajas y desventajas.

  4. La sintaxis es la rama de la lingüística que estudia las diferentes formas en que las palabras se combinan para formar una proposición y las diferentes formas en que las proposiciones se conectan para formar una oración. En nuestro caso, nos referimos a la forma correcta de combinar palabras para formar un comando funcional.

  5. Abreviatura o agrupación, en un solo comando, de uno o más comandos.