19 agosto 2009

Frases para la posteridad - Curso 2008-2009

Aunque con un poco de retraso, publico las frases de este año.

Aviso que, dado que se tratan de frases dichas en una ingeniería informática, empiezan a tener ya cierto nivel técnico y de frikismo. Así que si no las entendéis no os preocupéis. XD

Un saludo,
Morpheus

16 agosto 2009

Conversión de texto a ASCII y hexadecimal y cifrado con MD5 y SHA-1 en GNU/Linux

Buenas!

Alguna vez, por simple curiosidad o por trastear alguna base de datos de algún programa que haya instalado en mi ordenador (como por ejemplo Wordpress), he necesitado convertir un texto de ASCII a hexadecimal, o viceversa, o quizás haya querido cifrar (uso cifrar, por ser correcto y no levantar muchas ampollas, pero creo que, a mi parecer, no hay motivos para no usar encriptar teniendo en cuenta la palabra criptografía) algún tipo de texto.

Es por esto que he escrito este mini manual para hacer esas tareas y para tenerlo como apunte, sobre todo la transformación de hexadecimal a ASCII, que por alguna extraña razón me ha costado dar con ella, más concretamente dar con el comando adecuado para ello.

Espero que este post os sea útil.

Conversión a ASCII y hexadecimal

Para convertir un texto en ASCII a hexadecimal (lo que el ordenador realmente almacena en su memoria), podemos utilizar el comando xxd (que viene incluido con el editor de textos vim):

$ xxd
hola
0000000: 686f 6c61 0a hola.

Para que acabe el comando y nos escriba el resultado tenemos que pulsar Ctrl+D.

Si queremos que nos escriba (o lea) el resultado sin esa estructura, podemos utilizar el argumento -p:

$ xxd -p
hola
686f6c610a

Con el uso de este argumento, el programa ya nos escribe el resultado al pulsar Entrar o Enter, y usamos Ctrl+D para terminar el comando (o también podemos usar Ctrl+C, que interrumpe y para el comando).

Ahora, si lo que queremos es transformar un texto en hexadecimal a ASCII, utilizaremos el mismo comando con el argumento -r del mismo modo:

$ xxd -r
0000000: 686f 6c61 0a hola.
hola

$ xxd -r -p
686f6c610a
hola

En estos últimos 2 casos podéis utilizar el último procedimiento que hemos explicado antes de ellos para terminar el comando.

Y si queréis redireccionarlos a un archivo de salida:

$ xxd -p > hola.hex
hola

o utilizar un archivo de entrada:

$ xxd -r -p < hola.hex
hola

Si queréis hacer cosas parecidas pero con una interfaz gráfica, podéis usar Ghex, un editor hexadecimal para GNOME.

Cifrado mediante MD5 y SHA-1

Ahora pasemos al cifrado de texto con MD5, un algoritmo bastante conocido de hash (identificador único de un archivo o texto). Para ello, utilizaremos el comando md5sum, y el argumento -, que le indica al comando que queremos que nos cifre lo que le vamos a escribir.

$ md5sum -
hola4d186321c1a7f0f354b297e8914ab240 -

En este caso, nos ha hecho falta pulsar 2 veces Ctrl+D.

Tengo que hacer notar que es muy importante escribir exactamente lo que queremos que nos cifre, sin espacios ni saltos de línea de más, ya que nos dará resultados muy diferentes:

$ md5sum -
hola 51db41a195b9a4b26f9e1f16d72e7b20 -

$ md5sum -
hola
916f4c31aaa35d6b867dae9a7f54270d -

En este último caso, en el que pulsáis Entrar, sólo teneís que pulsar una vez Ctrl+D.

Cómo podéis observar, la cosa cambia enormemente, pero el resultado no queda claro, ya que se entremezcla con los datos que hemos introducido. En este caso, pues, lo mejor es redireccionar el resultado a un archivo:

$ md5sum - > salida.txt
hola

Observamos que el resultado es el mismo:

$ more salida.txt
4d186321c1a7f0f354b297e8914ab240 -

Podemos, como ya hemos hecho anteriormente, redireccionar la entrada al comando. Sin embargo, tenemos que recordar la importancia de que el texto introducido en el archivo sea exactamente el mismo que queremos cifrar, teniendo en cuenta que algunos editores de texto, como Gedit, incluyen por defecto un salto de línea final en el documento. Por tanto debemos estar muy seguros de que el archivo que utilizamos no tenga espacios ni saltos de línea de más.

$ md5sum < hola.txt
4d186321c1a7f0f354b297e8914ab240 -

En caso de que queramos cifrar el texto mediante el algoritmo SHA1, sólo tenemos que utilizar el comando sha1sum y proceder de la misma manera que con md5sum:

$ sha1sum < hola.txt
99800b85d3383e3a2fb45eb7d0066a4879a9dad0 -

Ambos comandos de cifrado son parte del proyecto GNU.

Un saludo,
Morpheus

04 agosto 2009

Tercer blogeaños

Hoy hace ya 3 años que empecé con este blog, y sinceramente, ando algo preocupado: últimamente no tengo creatividad o inspiración alguna!

Me asusta un poco ver la cantidad de posts que he escrito otros años y los que llevo este, y ya no sé si pensar si es la universidad o la vagancia veraniega o qué.

Sin embargo, en mis planes aún no está dejar este blog, aunque últimamente no sepa de qué escribir.

Sobre la vagancia he de decir que creo que me estoy habituando un poco a escribir posts largos, más que cortos (algo que solía hacer antes más a menudo). Esto me ha hecho pensar que quizá me vendría bien hacer un Twitter o algo semejante en dónde escribir esas pequeñas cosas que a veces quiero contar, pero que su escasa longitud me hace desistir de escribir.

Qué opináis vosotros? Debo ponerme un poco más las pilas a la hora de escribir posts, aunque sean cortos, o debo hacerme un Twitter o algo por el estilo?

De todos modos, sigo un poco desinspirado ya que últimamente tampoco hago fotos (y algunas que hice me está costando subirlas Flickr), el AMV que hace tiempo que tengo en mente sigue estancado y la partida de rol que estoy preparando tiene más o menos la misma actividad. Argg! Qué me está pasando?!

Espero ponerme un poco las pilas este mes de agosto y darle un poco más al coco para ver si así consigo atraerme a un par de musas, o bien un poco de voluntad, que tampoco estaría mal.

En fin, ojalá este no sea el último blogeaños que tenga (me daría un poco de pena). De todos modos, esto siempre me servirá para desahogarme un poco (espero).

Un saludo,
Morpheus

Sobre estándares abiertos y el vídeo con HTML 5

Muchos me habréis oído hablar sobre las bondades del software libre, y reconozco que para mí es algo bastante relevante en mi vida informática, al menos desde un punto de vista ético/filosófico.

Sin embargo, no creo que todo el mundo deba usar software libre (aunque creo que podría llegar a ser lo ideal), sino que, a mi parecer, y para armonizar la convivencia entre aquellos que usamos diferentes programas informáticos, más allá de si son o no libres, lo realmente importante es usar estándares y formatos abiertos, y esto sí que creo que es algo que debemos hacer todos, e incluso se debería imponer.

Por qué?

Pongamos un ejemplo, sacado del Blog de Loretahur:

Voy a rellenar una solicitud y mi flamante boli Bic no pinta en el documento. La letra pequeña del documento dice que solo se puede escribir con Inoxcrom.

Los estándares son protocolos o formatos que se han reconocido como tales por organizaciones como ISO o ECMA entre otras, o bien su uso masivo los han convertido en normas (si se trata de este último caso, se conocen como estándares de facto).

El problema surge cuando esos protocolos o formatos estándares no son abiertos o libres o bien no están libres de patentes (o las patentes no son libres y accesibles). Es entonces cuando esas normas o estándares sólo pueden ser accedidos por unos pocos y, por tanto, sólo pueden ser usados por los usuarios de una sola aplicación, lo que significa que si yo uso una aplicación diferente a la tuya, y la tuya hace uso de ese estándar no abierto, yo no podré usar o leer los documentos que me envies, dado que los desarrolladores de esa aplicación no han podido acceder a esa norma.

Pero si en vez de utilizar un estándar no abierto usases un estándar abierto, este podría ser transmitido a cualquier persona y programa sin que hubiera ningún problema, siempre y cuando a los desarrolladores de la aplicación que usas estén dispuestos a implementar el soporte para ese formato o que si lo implementan lo hagan bien.

Es por eso que creo que es tan importante el uso de estándares y formatos abiertos: para que, independientemente de la plataforma, independientemente del programa, independientemente del sistema operativo, pueda transmitir información y pueda recibirla, sin tener que estar preocupándome sobre si el formato que me han enviado funcionará o no en mi programa.

Formatos abiertos en Internet

Recientemente ha sido publicado Firefox 3.5, que incorpora algunos elementos de HTML 5, la nueva versión de HTML, aún en desarrollo, y que han traído cierta controversia al mundo de los navegadores. El elemento que más controversia ha creado ha sido la marca <video>, que pretende facilitar la inclusión de vídeos en páginas web sin tener que usar Flash.

Cuál es el problema? Os preguntaréis. El problema no tiene que ver con Firefox en sí, sino más bien con la marca <video>: qué codificador (códec) debemos utilizar para esos archivos de vídeo?

Esta pregunta ha creado mucha controversia.

Firefox ha apostado por el códec de vídeo libre Ogg (Theora), que ya ha implementado en la versión 3.5.

Opera también ha apostado por Ogg, pero de momento sólo tienen versiones experimentales de su navegador soportando el códec.

Por otra parte, Apple prefiere utilizar el códec estándar H.264 (no libre, comúnmente utilizado en archivos mp4) en su navegador Safari, alegando dudas respecto a la patente de Ogg (a mi parecer, algo irónico); Google opina que H.264 es mejor que Ogg (aunque hay quien lo pone en duda), aunque dará soporte para ambos códecs en su navegador Google Chrome, pero no podrá distribuir H.264 a terceras partes, como Chromium, la base de Chrome liberada por Google; y finalmente, Nokia se niega a utilizar Ogg por ser incompatible con el DRM y además lo califica de propietario.

Si esta cantidad de intereses enfrentados os parece poco, tenéis que saber que aún no hemos hablado de las webs:

Dailymotion da un apoyo total a Firefox y a Ogg, y ya cuentan con una demo para Firefox 3.5, teniendo en sus planes convertir todos sus videos al formato. Mientras, la Wikipedia lleva ya alojando algunos videos en Ogg y deshechando el uso de mp3, comprometiéndose a dar soporte a este formato con HTML 5.

Pero, al igual que con los navegadores, no todas las webs van a dar apoyo a Ogg y una de ellas es el archiconocido Youtube, que hace ya tiempo que empezó a servir vídeos en H.264 para la versión HD del portal, y que ya cuenta con una demo de HTML 5 con este códec.

Así pues, si te interesa la portabilidad, los estándares abiertos y sobre todo, la interoperabilidad, debemos conocer y apoyar aquellos formatos libres que permitan llegar a esas metas.

Yo, por mi parte, ya he subido mis videos a Dailymotion.

Por cierto, antes de irme, por qué no os enseño qué tal funciona esa etiqueta con el trailer de Big Buck Bunny:

Actualización 6/08/2009: Por si no había suficiente lío, Google ha comprado On2, la empresa que creó y liberó la base del códec Ogg Theora.

Enlaces relacionados:

Un saludo,
Morpheus