lunes, 14 de mayo de 2007

UUencode

ZorphDark

Cuando queremos enviar un programa o un clip de video a través del correo electrónico y el servidor SMTP nos devuelve la noticia de que es imposible la entrega, debido a restricciones en las políticas de seguridad de la red, acudimos al envío punto a punto utilizando el HyperTerminal de Windows. Lamentablemente, la alternativa falla cuando no tenemos un módem o una línea telefónica disponible. Pero no vale la pena enojarse con nuestro prehistórico sistema de telecomunicaciones, ya que hace varias décadas -por cuestiones tecnológicas, y no de caprichos- se habían presentado situaciones similares. El problema de enviar archivos binarios a través de un protocolo diseñado para la transferencia de textos, se resolvió desarrollando un eficiente algoritmo de conversión de binarios a texto ASCII y viceversa. Nos referimos al UUencode y el UUdecode, respectivamente.

Las molestias ocasionadas por los filtros de nuestros servidores pueden acabarse, gracias al empleo de estas herramientas. Con sólo convertir, por ejemplo, una imagen a texto, podríamos enviarla sin problemas en el cuerpo de nuestro mensaje sin que del lado de allá descubran fácilmente a qué nos dedicamos. Claro que, si empleamos algún método de encriptación sencilla como ROT13, seguramente les pondríamos un poco más difícil el hurgar.

Debido a la ventaja que supone este método, tanto por la infraestructura de comunicación nacional, como por el hecho de tener que ejercitar la mente al abrir la consola de comandos de Microsoft Windows (o de alguna que otra distribución de GNU/Linux), a partir del próximo número se distribuirán todos los ejecutables por esta vía. En la carpeta de programas les enviamos dos pequeños archivos: UUencode.com y UUdecode.com. Este último se utilizará para decodificar el texto publicado en archivos binarios. Pero antes de entrar en detalles, explicaremos cómo funciona el método de codificación.

El UUencode emplea un algoritmo que transforma el código binario en texto ASCII. Normalmente es leído por herramientas de compresión como el WinRAR, WinZIP o WinACE, pero si se abre con un editor de texto, podremos ver que comienza con la línea:

begin <mode> <file>

Donde <mode> indica en octales los permisos de lectura, escritura y ejecución, y <file> muestra la cadena de texto con que se nombrará al archivo binario tras el proceso de decodificación.

El cuerpo del contenido ASCII se divide en subgrupos de 3 bytes, agregando ceros si tienen un tamaño menor de 24 bits. Cada uno de estos grupos está dividido en seis secciones compuestas por los caracteres 32 a 95 de la tabla ASCII. Algunos caracteres ubicados por encima de este rango pueden ser utilizados, pero sólo serán relevantes sus primeros seis bits a la derecha. Cada grupo de 60 caracteres es mostrado en líneas independientes, precedidas por el caracter ASCII 77 (M), excepto la última línea de información. Bajo ésta, se genera el caracter ASCII 96 (`) y, a continuación, la cadena de texto end que indica el final del archivo.

Prácticamente, todos los sistemas operativos actuales se basan en el estándar ASCII, por lo que no debe surgir ningún problema durante el proceso de codificación-decodificación. Pues llevemos a la práctica lo aprendido mediante un ejemplo bien sencillo. A continuación se muestra el nuevo logotipo de la revista, con un formato PNG, cuya paleta de colores adaptativa está reducida a 31 colores para minimizar el tamaño del archivo a alrededor de 1.95 Kb:

begin 644 logo.png
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
;LORX>%;^`_[Z$N;-7)G``````$E%3D2N0F""
`
end

Como se puede apreciar, la conversión ha incrementado el tamaño final en un considerable porciento. Esto es un poco incómodo si queremos ganar en espacio, pero en cuanto a sencillez, se puede decir que vale la pena. Ahora sólo resta copiar todo el código en un editor de texto plano y guardarlo en un archivo, preferentemente de extensión UUE. Luego se debe ejecutar el UUdecode.com y teclear su ruta completa. Es aconsejable ubicar el archivo en la misma carpeta donde se encuentra este programa, para sólo tener que escribir el nombre del archivo. Si queremos sobreescribir un fichero con el mismo nombre del que estamos decodificando, debemos introducir el parámetro -o antes de la ruta; sino, se mostrará un mensaje de error.

Para codificar archivos binarios el procedimiento es muy similar. Sólo basta escribir la ruta y el nombre del fichero para que se genere una copia codificada con extensión UUE de forma predeterminada.

Esto es todo lo básico que se puede explicar acerca de estas herramientas. Esperamos que con un poco de práctica puedan, sin dificultad, convertir todos los programas que publicaremos dentro de la sección "Códigos" en lo adelante.



Artículos relacionados


No hay comentarios: