“เมื่อ Kindle ไม่ให้ดาวน์โหลดหนังสือที่ซื้อ — นักพัฒนาแฮกระบบเว็บเพื่ออ่านในแอปที่ตัวเองเลือก”
Pixelmelt นักพัฒนาสายแฮกเกอร์สายเทคนิค ได้เขียนบล็อกเล่าประสบการณ์สุดหัวร้อนหลังซื้อ eBook จาก Amazon แล้วพบว่าไม่สามารถอ่านผ่านแอปอื่นได้เลย Kindle Android app ก็ดันแครชซ้ำ ๆ ส่วน Kindle Web Reader ก็ไม่ให้ดาวน์โหลดไฟล์หรือ export ไปยัง Calibre ซึ่งเป็นแอปจัดการหนังสือยอดนิยมของสาย eBook
เขาจึงตัดสินใจ “reverse-engineer” ระบบ obfuscation ของ Kindle Web Reader เพื่อดึงข้อมูลหนังสือออกมาอ่านในแอปที่ตัวเองเลือก โดยพบว่า Amazon ใช้เทคนิคซับซ้อนหลายชั้นเพื่อป้องกันการเข้าถึงเนื้อหาจริง เช่น:
การแปลงตัวอักษรเป็น glyph ID แบบสุ่ม
การเปลี่ยน mapping ทุก 5 หน้า
การฝัง path SVG ที่ทำให้ parser ภายนอกอ่านผิด
การใช้หลาย font variant และ ligature
การจำกัด API ให้โหลดได้ทีละ 5 หน้าเท่านั้น
Pixelmelt ลองใช้ OCR แต่ล้มเหลว จึงหันมาใช้เทคนิค “pixel-perfect matching” โดยเรนเดอร์ glyph เป็นภาพ แล้วใช้ perceptual hash และ SSIM เพื่อจับคู่กับตัวอักษรจากฟอนต์ Bookerly ที่ Amazon ใช้
ผลลัพธ์คือ เขาสามารถถอดรหัส glyph ทั้งหมด 361 แบบจากหนังสือ 920 หน้า และสร้างไฟล์ EPUB ที่มีการจัดรูปแบบเหมือนต้นฉบับแทบทุกประการ
เขาย้ำว่าเป้าหมายไม่ใช่การละเมิดลิขสิทธิ์ แต่เพื่ออ่านหนังสือที่ “ซื้อมาแล้ว” ในแอปที่ตัวเองเลือก และเพื่อเรียนรู้เทคนิคด้าน SVG, hashing และ font metrics
ข้อมูลในข่าว
นักพัฒนาไม่สามารถอ่าน eBook ที่ซื้อจาก Amazon ในแอปอื่นได้
Kindle Android app แครช และ Web Reader ไม่ให้ดาวน์โหลดหรือ export
Amazon ใช้ระบบ obfuscation หลายชั้นเพื่อป้องกันการเข้าถึงเนื้อหา
ตัวอักษรถูกแปลงเป็น glyph ID แบบสุ่ม และเปลี่ยนทุก 5 หน้า
API จำกัดให้โหลดได้ทีละ 5 หน้า
glyphs ถูกฝังด้วย path SVG ที่ทำให้ parser อ่านผิด
ใช้หลาย font variant เช่น bold, italic, ligature
OCR ล้มเหลวในการจับคู่ glyph กับตัวอักษร
ใช้ perceptual hash และ SSIM เพื่อจับคู่ glyph กับฟอนต์ Bookerly
ถอดรหัส glyph ได้ครบ 361 แบบจากหนังสือ 920 หน้า
สร้างไฟล์ EPUB ที่มีการจัดรูปแบบเหมือนต้นฉบับ
ย้ำว่าเป้าหมายคือการอ่านหนังสือที่ซื้อมาแล้ว ไม่ใช่ละเมิดลิขสิทธิ์
ได้เรียนรู้เทคนิคด้าน SVG rendering, hashing และ font metrics
https://blog.pixelmelt.dev/kindle-web-drm/ 📚 “เมื่อ Kindle ไม่ให้ดาวน์โหลดหนังสือที่ซื้อ — นักพัฒนาแฮกระบบเว็บเพื่ออ่านในแอปที่ตัวเองเลือก”
Pixelmelt นักพัฒนาสายแฮกเกอร์สายเทคนิค ได้เขียนบล็อกเล่าประสบการณ์สุดหัวร้อนหลังซื้อ eBook จาก Amazon แล้วพบว่าไม่สามารถอ่านผ่านแอปอื่นได้เลย Kindle Android app ก็ดันแครชซ้ำ ๆ ส่วน Kindle Web Reader ก็ไม่ให้ดาวน์โหลดไฟล์หรือ export ไปยัง Calibre ซึ่งเป็นแอปจัดการหนังสือยอดนิยมของสาย eBook
เขาจึงตัดสินใจ “reverse-engineer” ระบบ obfuscation ของ Kindle Web Reader เพื่อดึงข้อมูลหนังสือออกมาอ่านในแอปที่ตัวเองเลือก โดยพบว่า Amazon ใช้เทคนิคซับซ้อนหลายชั้นเพื่อป้องกันการเข้าถึงเนื้อหาจริง เช่น:
🔡 การแปลงตัวอักษรเป็น glyph ID แบบสุ่ม
🔡 การเปลี่ยน mapping ทุก 5 หน้า
🔡 การฝัง path SVG ที่ทำให้ parser ภายนอกอ่านผิด
🔡 การใช้หลาย font variant และ ligature
🔡 การจำกัด API ให้โหลดได้ทีละ 5 หน้าเท่านั้น
Pixelmelt ลองใช้ OCR แต่ล้มเหลว จึงหันมาใช้เทคนิค “pixel-perfect matching” โดยเรนเดอร์ glyph เป็นภาพ แล้วใช้ perceptual hash และ SSIM เพื่อจับคู่กับตัวอักษรจากฟอนต์ Bookerly ที่ Amazon ใช้
ผลลัพธ์คือ เขาสามารถถอดรหัส glyph ทั้งหมด 361 แบบจากหนังสือ 920 หน้า และสร้างไฟล์ EPUB ที่มีการจัดรูปแบบเหมือนต้นฉบับแทบทุกประการ
เขาย้ำว่าเป้าหมายไม่ใช่การละเมิดลิขสิทธิ์ แต่เพื่ออ่านหนังสือที่ “ซื้อมาแล้ว” ในแอปที่ตัวเองเลือก และเพื่อเรียนรู้เทคนิคด้าน SVG, hashing และ font metrics
✅ ข้อมูลในข่าว
➡️ นักพัฒนาไม่สามารถอ่าน eBook ที่ซื้อจาก Amazon ในแอปอื่นได้
➡️ Kindle Android app แครช และ Web Reader ไม่ให้ดาวน์โหลดหรือ export
➡️ Amazon ใช้ระบบ obfuscation หลายชั้นเพื่อป้องกันการเข้าถึงเนื้อหา
➡️ ตัวอักษรถูกแปลงเป็น glyph ID แบบสุ่ม และเปลี่ยนทุก 5 หน้า
➡️ API จำกัดให้โหลดได้ทีละ 5 หน้า
➡️ glyphs ถูกฝังด้วย path SVG ที่ทำให้ parser อ่านผิด
➡️ ใช้หลาย font variant เช่น bold, italic, ligature
➡️ OCR ล้มเหลวในการจับคู่ glyph กับตัวอักษร
➡️ ใช้ perceptual hash และ SSIM เพื่อจับคู่ glyph กับฟอนต์ Bookerly
➡️ ถอดรหัส glyph ได้ครบ 361 แบบจากหนังสือ 920 หน้า
➡️ สร้างไฟล์ EPUB ที่มีการจัดรูปแบบเหมือนต้นฉบับ
➡️ ย้ำว่าเป้าหมายคือการอ่านหนังสือที่ซื้อมาแล้ว ไม่ใช่ละเมิดลิขสิทธิ์
➡️ ได้เรียนรู้เทคนิคด้าน SVG rendering, hashing และ font metrics
https://blog.pixelmelt.dev/kindle-web-drm/