¿Pensabas que ya nada te sorprendería en el mundo de la tecnología? Mira lo que te mostramos hoy. Se trata de un proyecto donde un estudiante universitario logró colocar un sistema Linux dentro de un archivo PDF. ¿No lo crees? Pruébalo.

El código C se puede compilar para ejecutarse dentro de un PDF
Este “hack” es tan extraño como brillante. Un joven estudiante logró colocar una distro Linux dentro de un PDF usando el proyecto TinyEMU. Podrías pensar que los archivos PDF son solo documentos estáticos, pero, sorprendentemente, el formato PDF admite Javascript con su propia biblioteca estándar separada.
La especificación completa de Javascript en PDFs solo fue totalmente implementada por Adobe Acrobat e incluye funcionalidades interesantes, como la capacidad de renderizar en 3D, hacer solicitudes HTTP y detectar todos los monitores conectados al sistema del usuario. Sin embargo, en Chromium y otros navegadores, solo se implementó un subconjunto muy reducido de esta API, por razones obvias de seguridad. Con esto, podemos realizar cualquier tipo de computación, pero con una entrada y salida extremadamente limitadas.
El código C se puede compilar para ejecutarse dentro de un PDF usando una versión antigua de Emscripten que genera código asm.js en lugar de WebAssembly. Con esto, fue posible compilar una versión modificada del emulador RISC-V TinyEMU para asm.js, que se puede ejecutar dentro del PDF. Para la entrada, hay un teclado virtual implementado con varios botones y un cuadro de texto donde el usuario puede escribir para enviar comandos a la máquina virtual.
El mayor problema aquí es el rendimiento del emulador. Por ejemplo, el kernel de Linux tarda entre 30 y 60 segundos en arrancar dentro del PDF, lo que es más de 100 veces más lento de lo normal. Desafortunadamente, no hay forma de solucionar esto, ya que la versión de V8 usada por el motor PDF de Chrome tiene su compilador JIT desactivado, destruyendo su rendimiento.
Para el sistema de archivos raíz, hay versiones disponibles en 64 y 32 bits. La versión estándar es un sistema Buildroot de 32 bits (precompilado y extraído de los ejemplos originales de TinyEMU), pero también hay una versión de 64 bits de Alpine Linux. Sin embargo, el emulador de 64 bits es aproximadamente dos veces más lento, por lo que normalmente no se utiliza. Puedes descargar el PDF aquí.
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.