1 Punkte von GN⁺ 2025-02-08 | 1 Kommentare | Auf WhatsApp teilen
  • LinuxPDF ist eine Demo, die eine Linux-VM in einem PDF ausführt und die VM-Anzeige zusammen mit einer UI für Tastatureingaben direkt im PDF platziert
  • Die Laufzeitumgebung ist auf Chromium-basierte Browser beschränkt, daher ist in anderen PDF-Umgebungen kaum mit einer Funktion zu rechnen
  • Tastatureingaben können an die VM gesendet werden, indem man die Tastenschaltflächen auf dem Bildschirm anklickt oder direkt in das Eingabefeld oben tippt
  • Zu den bereitgestellten Tasten gehören Esc, Tab, Enter, Shift, Ctrl, Alt, Pfeiltasten, Home/End, PgUp/PgDn, F1~F12 sowie Ziffern- und Buchstabentasten
  • Wer die Implementierung prüfen möchte, kann den Quellcode im GitHub-Repository linuxpdf ansehen

Demo einer Linux-VM in einem PDF

  • LinuxPDF ist eine Demo, die eine Linux-VM in einem PDF-Dokument ausführt
  • Die unterstützte Umgebung ist auf Chromium-basierte Browser beschränkt
  • Auf dem Bildschirm erscheint der Hinweis Loading..., der den Ladezustand der VM anzeigt

Tastatureingaben an die VM senden

  • Es gibt zwei Eingabemethoden
    • Die auf dem Bildschirm angezeigten Tastenschaltflächen anklicken
    • Direkt in das Eingabefeld Type here for keyboard inputs. tippen
  • Die aktuell gedrückte Taste kann im Bereich Pressed: überprüft werden

Verfügbare Tastenbelegung

  • Steuer- und Sondertasten
    • Esc, Tab, Caps, Enter, Shift, RShift, Ctrl, Alt, Space, Menu
    • Home, Ins, Del, End, PgUp, PgDn
  • Pfeiltasten und Funktionstasten
    • ^, <, v, >
    • F1 bis F12
  • Normale Tasten
    • Ziffern 1~0, -, =
    • QWERTY-Buchstabentasten
    • [, ], ;, ', ,, ., /, \\, `

Quellcode

1 Kommentare

 
GN⁺ 2025-02-08
Meinungen auf Hacker News
  • Funktioniert nicht, und das Dokument reagiert nicht. Zur Info: Verwendet wurde ein HP DeskJet 2820e Printer

    • Vermutlich müsste man bei jedem Scan den richtigen Schlüssel einkreisen und ihn so wiederholt in den Scanner eingeben
    • PDF hat tatsächlich eine Funktion, mit der sich getrennt festlegen lässt, welche Elemente auf dem Bildschirm angezeigt und welche gedruckt werden (Optional Content)
  • In den letzten Tagen waren „Linux in einem PDF ausführen“ und „PDFs in LLMs einspeisen“ jeweils ein Thema; wenn Leute anfangen, verschiedene Arten von PDF-Parsern und -Evaluatoren an LLMs anzuschließen, dürfte das ziemlich interessante Hacking-Möglichkeiten eröffnen

    • Man könnte Linux innerhalb eines LLM ausführen, um Rechenressourcen abzugreifen, und damit dann das LLM trainieren oder Bitcoin minen
    • PDF war schon immer ein sehr attraktiver Angriffsvektor. Die meisten denken bei PDFs einfach nur an Textdokumente und wissen nicht, dass man recht einfach ausführbaren Code einbetten kann
      Kombiniert man das noch mit der erschreckend großen Zahl an Schwachstellen in beliebten Readern wie Acrobat, wird es zum perfekten Einfallstor, um ein Unternehmen zu hacken
  • Das war ein Beitrag von vor ein paar Tagen: https://news.ycombinator.com/item?id=42891937
    Im Repository gibt es ebenfalls Erklärungen und Informationen dazu, wie die Interna funktionieren

  • Endlich ist es da. Ich mache schon viel zu lange den Witz, ich würde „Linux.js in ein PDF packen und dann Linux in einem PDF in einem Browser in Linux in einem PDF in einem Browser in Linux ausführen“

    • Nicht ganz. Dieses PDF kann noch keinen Browser öffnen!
  • Das mit JavaScript zu machen fühlt sich ein bisschen wie Schummeln an. Ich frage mich, ob etwas Ähnliches auch mit PostScript möglich wäre

    • Möglich schon, aber nicht innerhalb eines PDFs. PDF unterstützt nur eine nicht Turing-vollständige Teilmenge von PostScript, weil die PDF-Designer der Ansicht waren, dass eine Turing-vollständige Sprache in einem Dokumentformat Performance-Probleme verursachen würde
      Später haben sie ihre Meinung geändert und JavaScript-Unterstützung hinzugefügt
    • Aus rechnerischer Sicht ist es möglich. PostScript hat die für eine x86-CPU-Emulation nötigen Ganzzahl-Arithmetikoperationen sowie veränderbare Byte-Strings, die sich gut als Emulationsspeicher eignen
    • Für PostScript gibt es zmachine.ps, einen ZMachine-Interpreter, mit dem man Textadventures spielen kann
      Natürlich gibt es auch eine in PostScript geschriebene Schach-Engine und Tic-Tac-Toe; mit genug Geduld ließen sich vermutlich auch NES-Spiele spielen, auch wenn man dafür womöglich viel am Stack herumhantieren müsste
  • Endlich kann man rm -rf / in einem PDF ausführen

    • PostScript unterstützt das mit dem Operator "shredpage"
  • Wenn man das zehnmal kopiert und auf einen USB-Stick packt, kann man einen portablen Kubernetes-Cluster genießen
    https://news.ycombinator.com/item?id=42681039

  • Bei VirusTotal gibt es mindestens 3 Treffer, aber ich bin mir nicht sicher, ob das aussagekräftig ist
    ClamAV: Js.Trojan.Obfus-48
    Cylance: Unsafe
    Google: Detected

  • In Firefox kann man in about:config einfach pdfjs.enableScripting auf false setzen

  • Gibt es eigentlich auch einen PDF-Editor für Linux, der Linux innerhalb eines PDFs ausführt? In Evince lädt es nicht

    • Bei mir lief es nur in Chrome. In Adobe Reader, Firefox, Evince usw. funktionierte es nicht
      Diese Art von „Coding im PDF“ scheint meistens ausschließlich Chrome als Laufzeitumgebung anzuvisieren. Ob das daran liegt, dass Chrome mehr Codeausführung innerhalb von Dokumenten erlaubt, weiß ich nicht genau