Como dice la Wikipedia, dc es una calculadora de escritorio, en modo comando, multi-plataforma, que sigue una notación polaca-inversa, con soporte de precisión aritmética ilimitada. Es una de las utilidades Unix más antiguas que existen, más aún que el propio lenguaje C (o sea, de la época de los dinosaurios, más o menos 😉 Como muchas otras utilidades de esa añada, posee un extraordinario conjunto de funcionalidades pero su sintáxis es críptica como ella sola. Bien, ¿a qué viene todo esto? A que la primera prueba del HackIt Tolosa’09 (la prueba 0) hace uso de un truco para codificar cadenas de caracteres usando dc. Si abrimos la página del nivel 0, veremos que se nos muestra esta secuencia de comandos dc:
[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq
Al ejecutarla :
echo ‘[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq ‘ | dc
Nos muestra la cadena:
GET A LIFE!
Alguno de los participantes se tiró un buen rato probando esta cadena de caracteres como clave (en todas su posibles modalidades, ¿a que sí, ochoto? 🙂 Incluso analizando paso a paso lo que hace (un buen ejercicio que os recomiendo y que incluso xabi nos podrá mostrar).
El caso es que esa no era la solución. Si nos fijamos en el código fuente HTML de esa misma página, y nos desplazamos hacia la derecha (scroll), veremos que como comentario, aparece esta otra cadena:
16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlb xq
Siguiendo el mismo procedimiento que antes, obtenemos la clave para el siguiente nivel: «RTFM», o sea, Read The … er… FINE ? .. Manual 🙂
¿Que quieres escribir tus propias frases codificándolas con dc? No hay problema.