1 คะแนน โดย GN⁺ 2025-02-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • LinuxPDF เป็นเดโมที่รัน Linux VM ภายใน PDF โดยวางหน้าจอ VM และ UI สำหรับรับคีย์บอร์ดไว้ใน PDF เดียวกัน
  • สภาพแวดล้อมที่รองรับถูกจำกัดไว้ที่ เบราว์เซอร์ที่ใช้ Chromium ดังนั้นจึงยากที่จะคาดหวังให้ทำงานได้ในสภาพแวดล้อม PDF อื่น
  • การป้อนคีย์สามารถทำได้โดยกด ปุ่มคีย์ บนหน้าจอ หรือพิมพ์โดยตรงในช่องกรอกด้านบนเพื่อส่งไปยัง VM
  • คีย์ที่มีให้ประกอบด้วย Esc, Tab, Enter, Shift, Ctrl, Alt, ปุ่มลูกศร, Home/End, PgUp/PgDn, F1~F12 รวมถึงปุ่มตัวเลขและตัวอักษร
  • ผู้ใช้ที่ต้องการตรวจสอบการทำงานสามารถดูซอร์สโค้ดได้ในรีโพซิทอรี linuxpdf บน GitHub

เดโม Linux VM ภายใน PDF

  • LinuxPDF เป็นเดโมที่รัน Linux VM ภายในเอกสาร PDF
  • สภาพแวดล้อมการทำงานถูกจำกัดไว้ที่ เบราว์เซอร์ที่ใช้ Chromium
  • บนหน้าจอมีข้อความ Loading... เพื่อแสดงสถานะการโหลดของ VM

การส่งคีย์อินพุตไปยัง VM

  • วิธีป้อนข้อมูลมี 2 แบบ
    • กด ปุ่มคีย์ ที่แสดงบนหน้าจอ
    • พิมพ์โดยตรงในช่องกรอก Type here for keyboard inputs.
  • สามารถตรวจสอบคีย์ที่กำลังกดอยู่ได้ในส่วน Pressed:

ชุดคีย์ที่มีให้

  • คีย์ควบคุมและคีย์พิเศษ
    • Esc, Tab, Caps, Enter, Shift, RShift, Ctrl, Alt, Space, Menu
    • Home, Ins, Del, End, PgUp, PgDn
  • ปุ่มลูกศรและปุ่มฟังก์ชัน
    • ^, <, v, >
    • ตั้งแต่ F1 ถึง F12
  • คีย์อินพุตทั่วไป
    • ตัวเลข 1~0, -, =
    • ปุ่มตัวอักษรแบบ QWERTY
    • [, ], ;, ', ,, ., /, \\, `

ซอร์สโค้ด

  • Source code: รีโพซิทอรีซอร์สโค้ดของ LinuxPDF

1 ความคิดเห็น

 
GN⁺ 2025-02-08
ความคิดเห็นบน Hacker News
  • ใช้งานไม่ได้ และเอกสารไม่ตอบสนอง อ้างอิงว่าใช้ เครื่องพิมพ์ HP DeskJet 2820e

    • ดูเหมือนว่าทุกครั้งที่สแกน จะต้องวงกลมคีย์ที่ถูกต้อง แล้ว ป้อนกลับเข้าไปในสแกนเนอร์ซ้ำ ๆ
    • จริง ๆ แล้ว PDF มีฟีเจอร์ที่กำหนดแยกกันได้ว่าองค์ประกอบใดจะ แสดงบนหน้าจอและพิมพ์ออกมา (Optional Content)
  • ช่วงไม่กี่วันที่ผ่านมา “รัน Linux ใน PDF” กับ “วิธีใส่ PDF เข้าไปใน LLM” กลายเป็นประเด็นคนละเรื่องกัน ถ้าผู้คนเริ่มนำ PDF parser และ evaluator หลายชนิดไปผูกกับ LLM ก็น่าจะเกิดความเป็นไปได้ในการแฮ็กที่น่าสนใจไม่น้อย

    • อาจใช้รัน Linux ภายใน LLM เพื่อ ขโมยทรัพยากรคอมพิวต์ แล้วเอาไปใช้ฝึก LLM หรือขุด Bitcoin ก็ได้
    • PDF เป็น attack vector ที่น่าดึงดูดมากมาโดยตลอด คนส่วนใหญ่มอง PDF เป็นแค่เอกสารข้อความ และไม่รู้ว่าสามารถฝังโค้ดที่รันได้ลงไปง่าย ๆ
      เมื่อรวมกับข้อเท็จจริงที่ว่า reader ยอดนิยมอย่าง Acrobat มีช่องโหว่เยอะจนน่ากลัว ก็กลายเป็นประตูทางเข้าที่สมบูรณ์แบบสำหรับแฮ็กบริษัท
  • เป็นโพสต์ที่ขึ้นมาเมื่อไม่กี่วันก่อน: https://news.ycombinator.com/item?id=42891937
    ใน repository ก็มีคำอธิบายและข้อมูลว่าองค์ประกอบภายในทำงานอย่างไรด้วย

  • ในที่สุดก็มาสักที พูดมุก “จะเอา Linux.js ใส่ใน PDF เพื่อรัน Linux ใน PDF ในเบราว์เซอร์ใน Linux ใน PDF ในเบราว์เซอร์ใน Linux” มานานเกินไปแล้ว

    • ถ้าพูดให้ถูกก็ยังไม่ใช่ PDF นี้ยัง เปิดเบราว์เซอร์ไม่ได้!
  • การทำสิ่งนี้ด้วย JavaScript ให้ความรู้สึกเหมือนโกงนิดหน่อย สงสัยว่า PostScript จะทำอะไรคล้าย ๆ กันได้ไหม

    • ทำได้ แต่ไม่ใช่ใน PDF เพราะ PDF รองรับแค่ ซับเซตที่ไม่ Turing-complete ของ PostScript เนื่องจากผู้ออกแบบ PDF เห็นว่าการใส่ภาษาที่ Turing-complete ลงในรูปแบบเอกสารจะก่อปัญหาด้านประสิทธิภาพ
      ภายหลังจึงเปลี่ยนใจและเพิ่มการรองรับ JavaScript
    • ในแง่การคำนวณแล้วทำได้ PostScript มี การคำนวณเลขจำนวนเต็ม ที่จำเป็นต่อการจำลอง CPU x86 และยังมีสตริงไบต์ที่แก้ไขได้ เหมาะสำหรับใช้เป็นหน่วยความจำของอีมูเลชัน
    • PostScript มี zmachine.ps ซึ่งเป็น ZMachine interpreter สำหรับเล่นเกม text adventure
      แน่นอนว่ายังมี chess engine และ tic-tac-toe ที่ทำด้วย PostScript ด้วย และถ้ามีความอดทนพอ ก็น่าจะเล่นเกม NES ได้ แต่อาจต้องจัดการ stack เยอะหน่อย
  • ในที่สุดก็รัน rm -rf / ใน PDF ได้แล้ว

    • PostScript รองรับสิ่งนั้นผ่านโอเปอเรเตอร์ "shredpage"
  • ถ้าคัดลอกสิ่งนี้ 10 ชุดใส่ USB drive ก็จะได้เพลิดเพลินกับ Kubernetes cluster แบบพกพา
    https://news.ycombinator.com/item?id=42681039

  • VirusTotal ตรวจพบอย่างน้อย 3 รายการ แต่ไม่แน่ใจว่ามีความหมายแค่ไหน
    ClamAV: Js.Trojan.Obfus-48
    Cylance: Unsafe
    Google: Detected

  • ใน about:config ของ Firefox ให้ตั้ง pdfjs.enableScripting เป็น false

  • แล้วมี PDF editor สำหรับ Linux ที่รัน Linux ใน PDF ได้ด้วยไหม? ใน Evince โหลดไม่ขึ้น

    • ที่ผมรันได้มีแค่ Chrome เท่านั้น Adobe Reader, Firefox, Evince ฯลฯ ใช้ไม่ได้
      งานประเภท “เขียนโค้ดใน PDF” แบบนี้ส่วนใหญ่ดูเหมือนจะตั้งเป้าให้ Chrome เป็น runtime เท่านั้น ไม่แน่ใจว่ามีเหตุผลอย่างเช่น Chrome อนุญาตให้รันโค้ดในเอกสารได้มากกว่าหรือเปล่า