Como participante activo en es.comp.hackers (cuando todavía se podía leer algo interesante en ese grupo) publiqué un par de artículos (que pretendían haber formado parte de una larga serie) sobre los protoclos clásicos sobre los que se mueve la Red.
Mi intención era hacerlos desde un punto de vista práctico y os aseguro que pretendía ser ameno y divertido.
He aquí el primero de ellos, donde hablo del protocolo POP, que es el que se usa para recoger el correo electrónico. Os ruego encarecidamente que disculpeis los chistes ridículos y la tortura a la que someto al lenguaje, pero en su contexto original no parecía tan mala idea.
Amo a vé: Lo más primerísimo de las cosas primeras: Que conste que yo no soy un jakes ni nada parecido, que no quiero malentendidos. Que esas cosas tan raras que haseis son mu difíciles pa mí. Lo que si soy es un aficionadillo a mi emulador de terminal (hay quién colecciona sellos...) y, viendo que hay algunas lagunas por aquí con esto del POP3 (mucho empaquetar TCP a mano, pero luego a algunos le fallan los protocolos esenciales ;-P), pues aquí va un esquema de qué se puede hacer con este protocolo. Los Winoduwseros me hacéis el favor de buscaros un emulador de terminal como dios manda, porque el que trae el Windows es una vergüenza. (Si hay algún makero en el grupo, también puedo recomendarle algo ¿O creíais que no había emuladores de terminal para mac?) Personalmente os aconsejo CRT o KoalaTerm, que son cómodas de usar y muy completas. están disponibles en la red (Si queréis os busco las URLs) y son shareware de 30 días. Solo hay que pagar la licencia y yastá. (habrá quién aconseje una visita a astalavista.box.sk, pero eso es ilegal y está muy feo) Hoy, para todos ustedes, cómo leer e-milios con vuestro emulador de terminal: Para leer los e-milios, al contrario que para mandarlos, tienes que conectarte a TU servidor de correo. El puerto POP es, normalmente, el 110 (No es obligatorio que sea este puerto, pero yo NUNCA he visto una máquina que use otro) De modo que coges tu terminal y te enchufas al 110 de tu servidor (no olvides tener el eco local activado, por favor) En adelante, todo lo que vaya precedido de +OK son las respuestas del host (si todo va bien, las respuestas del servidor POP siempre van precedidas de +OK. Si hay algo que falla, te pondrá -ERR), y lo que vaya detrás de // son comentarios míos. Los nombres entre "<" y ">" son variables, que tienes que poner o que te responde, que iré explicando sobre la marcha. A POP3 le da igual que uses mayúsculas o minúsculas. Las respuestas del host pueden cambiar un poco, pero más o menos serán las que pongo: // Bueno, pues te conectas y el servidor te dice: +OK POP3 server ready // está esperando a que le digas quién eres: USER <fulano> // se entiende que "fulano" eres tú, o sea, lo que vienen delante de la arroba en tu dirección de correo. Ahora te pide la passoword: +OK password required for user <fulano> // y tu se la dices (mucho ojo si hay curiosos mirando por encima del hombro, que aquí no se sustituye por asteriscos): PASS <clave> // si todo ha ido bien te responderá: +OK maildrop ready //bueno, ya estamos dentro. Ahora vamos a ver que podemos hacer. EL puñetero POP no tiene ningún comando HELP, así que habrá que empaparse los RFCs. NOOP // este comando significa "no operation", y hace exactamente eso: NADA. ¿Y para qué demonios sirve no hacer nada? Pues, por ejemplo, los servidores pop, si pasas demasiado tiempo sin enviar ningún comando, se desconectan automáticamente. Para evitar esto, puedes mandar comandos NOOP cada cierto tiempo, mientras buscas en tu disco la copia de este artículo para ver cómo se escribe ese comando que se te ha olvidado. STAT // de "statistic", te da los datos generales de tu mailbox. La respuesta que te da es: +OK <numero> <bytes> // donde "numero" es el número de mensajes que tienes y bytes el peso TOTAL en bytes de esos mensajes. (algunas versiones dan más datos) LIST // de "list", lista. Pues eso, te da una lista de los mensajes que tengas, en el siguiente formato: +OK <n> messages (<bytes> octets) 1 <bytes1> 2 <bytes2> [...] n <bytesn> . // donde "n" es el número de mensajes, bytes el peso TOTAL de estos en bytes y la lista numerada es eso, una lista de 1 a n con el peso en bytes de cada uno. Al final te pone un punto en una línea, para que sepas que ha terminado. // Algunos servidores no darán los datos totales con este comando, y simplemente dirán: +OK scan listing follows 1 <bytes1> 2 <bytes2> [...] n <bytesn> . // En el comando LIST se puede poner un parámetro: el número de mensaje. De este modo nos da los datos de solo ese mensaje: LIST 2 //te dará los datos del mensaje 2: +OK 2 <bytes2> //Ahora empezamos a meternos en lo interesante: RETR <numero> //donde "numero" es el número de mensaje, nos saca el mensaje por pantalla: +OK <bytes> octets <(Aquí va el texto del mensaje)> <(y mucho más texto)> . // "bytes es el peso en bytes del mensaje, debajo viene el mensaje (con cabecera y todo), y al final un punto solitario. //El siguiente comando interesante es: TOP <numero> <lineas> //donde "numero" es el número de mensaje y "líneas" las líneas a partir de la primera que quieres que se te muestren del mensaje. Sirve, en mensajes demasiado largos, para ver el principio de estos. Si pones TOP 1 10, por ejemplo, se te mostrará la cabecera del primer mensaje y sus 10 primeras líneas, si pones TOP 2 0, saldrá la cabecera del segundo mensaje. // Ahora que ya has leído tu mensaje, mejor será que lo borres, para que no ocupe espacio: DELE <numero> // que, evidentemente, borra el mensaje indicado en "numero". //En realidad DELE no borra los mensajes, estos se marcan como borrados pero no se borran efectivamente hasta que terminas la sesión POP3. De modo que, si has borrado uno o más mensajes y te arrepientes, puedes recuperarlos con el siguiente comando: RSET // Que recupera TODOS los mensajes que hubiera marcados como borrados. // Ya casi estamos acabando, y nos encontraos con uno de esos comandos "tontos" que a una máquina le van muy bien, pero que sirven de poco para las personas: UIDL <numero> // Donde "numero" es opcional, y representa un número de mensaje. Este comando te devuelve una lista de los mensajes y su número de "Unique-ID Listing", que es un número bastante inútil que solo se usa para administración del servidor de correo (algunos clientes, como Netscape, también los usan). // Y, cuando te aburras de meter comandos, pones: QUIT // y sacabó. // Y, por último, como imagino que esto a los hackers les puede interesar, comentaré que existe una forma "segura" de autenticarse en algunos servidores POP3, por medio de la siguiente orden: APOP <nombre> <fingerprint> //donde "nombre" es tu login y "fingerprint" es una clave que se calcula del siguiente modo: // Si el servidor soporta APOP, en el banner de presentación (el primer texto que te sale al conectar) debe salir algo así <123.4567@host>, donde hostname es el nombre del servidor, y los números anteriores varían en cada sesión (concretamente son el PID del proceso en ejecución y la hora del sistema). //Vale: se supone que tú tienes que coger esa cadena, añadirle detrás tu clave y aplicarle una función de tipo hash, llamada MD5. Una función hash es un algoritmo que, a partir de un texto de longitud arbitraria obtiene una cadena de una longitud preestablecida. Además, no se puede invertir el proceso. // De este modo ya tenemos una fingerprint encriptada que mandamos al servidor. Este, que evidentemente no puede desencriptarla, encripta la copia de la clave que tiene él del mismo modo y las compara. Si todo va bien, estás autorizado. Pos nada, espero haber servido de algo. La verdad es que existen algunos comandos más, pero estos son lo más o menos universales. Para más datos consultad el RFC 1939.