1 puntos por GN⁺ 2025-02-08 | 1 comentarios | Compartir por WhatsApp
  • LinuxPDF es una demo que ejecuta una VM de Linux dentro de un PDF, colocando en el mismo PDF la pantalla de la VM y una interfaz de entrada por teclado
  • El entorno de ejecución está limitado a navegadores basados en Chromium, por lo que es difícil esperar que funcione en otros entornos de PDF
  • La entrada de teclado puede enviarse a la VM pulsando los botones de teclas en pantalla o escribiendo directamente en el cuadro de entrada superior
  • Las teclas disponibles incluyen Esc, Tab, Enter, Shift, Ctrl, Alt, flechas, Home/End, PgUp/PgDn, F1~F12, además de teclas numéricas y alfabéticas
  • Quienes quieran revisar la implementación pueden ver el código fuente en el repositorio linuxpdf de GitHub

Demo de una VM de Linux dentro de un PDF

  • LinuxPDF es una demo que ejecuta una VM de Linux dentro de un documento PDF
  • El entorno compatible está limitado a navegadores basados en Chromium
  • En la pantalla aparece el texto Loading..., que indica el estado de carga de la VM

Enviar entrada de teclado a la VM

  • Hay dos formas de introducir datos
    • Pulsar los botones de teclas mostrados en pantalla
    • Escribir directamente en el cuadro de entrada Type here for keyboard inputs.
  • La tecla presionada actualmente puede verse en el área Pressed:

Configuración de teclas disponibles

  • Teclas de control y especiales
    • Esc, Tab, Caps, Enter, Shift, RShift, Ctrl, Alt, Space, Menu
    • Home, Ins, Del, End, PgUp, PgDn
  • Flechas y teclas de función
    • ^, <, v, >
    • De F1 a F12
  • Entrada de teclas comunes
    • Números 1~0, -, =
    • Teclas alfabéticas QWERTY
    • [, ], ;, ', ,, ., /, \\, `

Código fuente

  • Source code: repositorio del código fuente de LinuxPDF

1 comentarios

 
GN⁺ 2025-02-08
Opiniones en Hacker News
  • No funciona y el documento no responde. Como referencia, usé una impresora HP DeskJet 2820e

    • Parece que habría que ingresarlo repetidamente en el escáner, marcando con un círculo la tecla correcta cada vez que se escanea
    • En realidad, PDF tiene una función para definir por separado qué elementos se muestran en pantalla y cuáles se imprimen (Optional Content)
  • En los últimos días se volvieron tema tanto “ejecutar Linux dentro de un PDF” como “la forma de meter PDFs en un LLM”, así que cuando la gente empiece a conectar varios tipos de parsers y evaluadores de PDF a los LLM, podrían surgir posibilidades de hackeo bastante interesantes

    • Se podría ejecutar Linux dentro de un LLM para robar recursos de cómputo, y usarlos para entrenar el LLM o minar Bitcoin
    • PDF siempre ha sido un vector de ataque muy atractivo. La mayoría lo considera solo un documento de texto y no sabe que se puede insertar código ejecutable con facilidad
      Si a eso se suma la terrible cantidad de vulnerabilidades en lectores populares como Acrobat, se convierte en una puerta de entrada perfecta para hackear una empresa
  • Es un post que salió hace unos días: https://news.ycombinator.com/item?id=42891937
    En el repositorio también hay explicaciones e información sobre cómo funciona el mecanismo interno

  • Por fin llegó. Llevaba demasiado tiempo haciendo el chiste de “voy a meter Linux.js en un PDF para ejecutar Linux dentro de un PDF dentro de un navegador dentro de Linux dentro de un PDF dentro de un navegador dentro de Linux”

    • No exactamente. ¡Este PDF todavía no puede abrir un navegador!
  • Hacer esto con JavaScript se siente un poco como hacer trampa. Me pregunto si algo parecido sería posible con PostScript

    • Sería posible, pero no dentro de un PDF. PDF solo soporta un subconjunto no Turing-completo de PostScript, porque los diseñadores de PDF consideraban que meter un lenguaje Turing-completo dentro de un formato de documento causaría problemas de rendimiento
      Más tarde cambiaron de opinión y agregaron soporte para JavaScript
    • Desde el punto de vista computacional, sí es posible. PostScript tiene las operaciones aritméticas con enteros necesarias para emular una CPU x86, y también cadenas de bytes mutables que sirven bien como memoria de emulación
    • En PostScript existe zmachine.ps, un intérprete de ZMachine con el que se pueden jugar aventuras de texto
      Por supuesto, también hay motores de ajedrez y tres en raya hechos en PostScript, y con suficiente paciencia se podrían jugar juegos de NES, aunque quizá haya que manipular mucho la pila
  • Por fin podremos ejecutar rm -rf / dentro de un PDF

    • PostScript soporta eso con el operador "shredpage"
  • Si copias 10 de estos y los metes en una unidad USB, puedes disfrutar de un clúster Kubernetes portátil
    https://news.ycombinator.com/item?id=42681039

  • En VirusTotal aparecen al menos 3 detecciones, aunque no estoy seguro de si eso significa algo
    ClamAV: Js.Trojan.Obfus-48
    Cylance: Unsafe
    Google: Detected

  • En about:config de Firefox basta con configurar pdfjs.enableScripting en false

  • Pero ¿existe también un editor de PDF para Linux que ejecute Linux dentro de un PDF? En Evince no carga

    • El único lugar donde pude ejecutarlo fue Chrome. No funciona en Adobe Reader, Firefox, Evince, etc.
      La mayoría de estas cosas de “programar dentro de un PDF” parecen apuntar solo a Chrome como entorno de ejecución. No sé si será porque Chrome permite ejecutar más código dentro de los documentos o por alguna razón similar