Contenido principal

yEnc: yEncoder y yDecoder online

Julio 3, 2009

"yEnc es un nuevo método de codificación que ofrece transmisión eficiente y adecuada para los binarios en Usenet (O por correo electrónica y otras aplicaciones). Otros métodos de codificación son Base64, BinHex, Uuencode.
yEnc no es un formato de audio (Como MP3), video (Como AVI, MOV, ...) o imagen (Como GIF o JPEG).

Las transferencias de noticias y correos electrónicos requieren que los binarios adjuntos sean codificados antes de ser enviados. Y son decodificados luego de que han sido recibidos. Normalmente todo esto es hecho por tú lector de noticias (O un programa de mail). No lo ves, es mas, la mayoría no lo sabe.

La codificación es necesaria porque los métodos especiales para transferir noticias y correos (Protocolos) lo requieren. Un mensaje con un binario que no ha sido codificado es dañado durante la transmisión o la transmisión es denegada totalmente.

Transportar mensajes por noticias o correo electrónico fue restringido a carácteres US-ASCII cuando los protocolos fueron escritos (20 años atrás). Estos servicios han sido creados para transportar solo texto plano. Carácteres especiales (Carácteres de control, símbolos, carácteres no imprimibles) estaban prohibidos y eran usados para propósitos especiales. Pero las personas quisieron enviar también adjuntos binarios por las noticias y correos electrónicos, fue así que algunos 'trucos' fueron implementados: El binario era cambiado a "carácteres ASCII permitidos" antes de la transmisión (Codificación) y luego al binario luego de la transmisión (Decodificación). Los métodos de codificación aún respetan esas viejas limitaciones y son usados en todas partes.
Desafortunadamente hay un precio por esos 'trucos': La codificación hace a un mensaje mas grande. Y no solo un poco, sino 33%-40% mas grandes que el adjunto original. Esto resulta en 33%-40% mas carácteres para el mensaje, 33%-40% mas tiempo de transmisión y 33%-44% mas de espacio en el disco duro donde los mensajes son almacenados.

Mientras tanto, Usenet es capáz de transmitir más que carácteres ASCII permitidos, también podría transportar otros carácteres. Sólo unos pocos carácteres especiales aún están prohibidos. Desafortunadamente las codificaciónes nunca cambiaron. Nosotros seguimos usando BASE64, BinHex, UUencode. Todos desperdiciamos todos los días el ancho de banda, tiempo, espacio de disco duro y dinero.

yEnc es ahora una propuesta de método de codificación que utiliza el hecho de que los servidores de noticias pueden transportar hoy en día binarios mas eficiente. Con los correos electrónicos, la situación es un poco mas complicada porque hay un montón de viejos programas y computadores implicados. Pero también habrán potencial para ahorrar."
Extraido de http://www.yenc.org/whatis.htm

Espero que la traducción no sea mala, igualmente cabe aclarar que el texto es del 2002. Personalmente no confio mucho en lo que dice, porque los tiempos cambian, y ahora tenemos mucha mas velocidad de transmisión y discos duros con increible capacidad de almacenamiento, ahora el desperdicio no importa mucho, lo que si importa es el dinero, así que por esta grandiosa publicación los invito a todos a donar!

Jaja, Basta de bromas!, el verdadero sentido de esta publicación es el presentar una nueva herramienta online llamada "yEnc Online", permite codificar y decodificar mensajes y archivos binarios tal cuál está especificado en el formato para el yEnc (http://www.yenc.org/yenc-draft.1.3.txt), el código fuente puede ser visto desde acá http://www.sinfocol.org/code.php?c=008sSs7ILMsv1jcyMLDUNzDXj0zNS9YryCgoBgA y descargado de acá: http://www.sinfocol.org/archivos/2009/07/Yenc.phps (Ojo!, es la clase que codifica y decodifica, ejemplos al final)
La herramienta limita los mensajes a doscientos cincuenta mil (250000) carácteres ya que hay herramientas como yEnc32 que permite codificar y decodificar con el pequeño algoritmo (Además soporta los archivos por partes que yEnc online no soporta).
Para los interesados, el pequeño algoritmo en pseudocódigo es este:

N = longitud TEXTO
para i, desde 1 hasta N
    ascii = Código ASCII de TEXTO en posición i
    ascii = (ascii + 42) módulo 256
    si ascii = {0, 9, 10, 13, 32, 46, 61} entonces
        ascii = (ascii + 64)
        salida = salida + "=" + carácter de ascii
    sino
        salida = salida + carácter de ascii
    fin sin
fin para

Próximamente yEnc online funcionará en Cryptos.

Ejemplos de como usar la clase Yenc.php
Para codificar usamos el método "encode", que recibre tres parámetros (En orden de aparición)
:arrow: Nombre del archivo
:arrow: Mensaje
:arrow: Opcional, Carácteres por línea

<?php
include('Yenc.php'); //Incluimos la clase
$yenc = new Yenc(); //Instanciamos el objeto
echo $yenc->encode('nombre_del_archivo.txt', 'hola mundo YENC!', 3); //El 3 es opcional e indica el número de carácteres por línea

Y la salida es esta:

=ybegin line=3 size=16 name=nombre_del_archivo.txt
���
�J�
���
�J�
oxm
K
=yend size=16 crc32=98A1E88D

Para decodificar usamos el método "decode" que únicamente recibe como parámetro el mensaje codificado:

<?php
include ('Yenc.php'); //Incluimos la clase
$yenc = new Yenc(); //Instanciamos el objeto
$datos = file_get_contents('nombre_del_archivo.txt'); //Leemos los datos del archivo "nombre_del_archivo.txt"
echo $yenc->decode($datos); //Decodificamos e imprimimos

Y su salida es:

hola mundo YENC!

Archivado en: Criptografía, Miscelaneo |

1 comentario

  1. Arthusu Mayo 8, 2012 @ 2:35 am

    Gracias con esta herramienta online pude pasar un reto ademas me baje la herramienta que esta en binario y es gui jeje, saludos :D

Deja un comentario