Cara Amazon Kindle Web DRM Dilewati
(blog.pixelmelt.dev)- Karena masalah ketidakstabilan serius pada aplikasi Kindle, penulis mencoba membaca ebook yang dibeli di Amazon dengan pembaca lain
- Sistem DRM web Amazon menerapkan perlindungan berlapis dengan pemetaan karakter yang diacak
- Dengan memakai pemetaan font yang benar-benar berbeda di setiap permintaan, upaya peretasan biasa menjadi jauh lebih sulit
- Penulis mengembangkan cara untuk memulihkan semua glif yang diacak menjadi karakter asli melalui hashing berbasis gambar dan pencocokan font berbasis SSIM
- Hasilnya, penulis menyelesaikan solusi untuk memulihkan dan menyimpan seluruh buku yang dibeli secara utuh di pustaka ebook pribadi seperti Calibre
TL;DR
- Setelah membeli ebook Amazon pertamanya, penulis sangat frustrasi oleh ketidakstabilan aplikasi Kindle Android
- Ia hanya ingin bisa membaca secara bebas saat offline, tetapi merasa terganggu karena tidak bisa mengunduh dan mencadangkan
- Saat menganalisis sistem DRM pembaca web Amazon, ia berhadapan dengan struktur pengacakan dan pemetaan alfabet yang kompleks
- Dengan hash gambar dan metode pencocokan font, ia berhasil memecahkan pengacakan dan memulihkan buku yang dimilikinya
- Dalam penggunaan kode ini, ia menekankan pentingnya kepemilikan atas buku yang dibeli dan hak untuk mencadangkannya
Amazon Membuat Ini Menjadi Pribadi
Satu-Satunya Kali Saya Mencoba Melakukan Semuanya dengan Benar
- Sebelumnya ia kebanyakan mendapatkan ebook lewat jalur tidak resmi, tetapi kali ini mencoba membeli secara resmi di Amazon untuk mendukung penulis
- Saat membuka buku di aplikasi Kindle, aplikasi terus crash sehingga praktis tidak bisa dibaca dengan baik
Saya Hanya Ingin Membaca Buku Saya
- Karena aplikasi tidak stabil, ia mencoba memakai pembaca web, tetapi menemukan bahwa unduhan offline dan integrasi dengan pembaca eksternal semuanya diblokir
- Tidak bisa terhubung ke pustaka pribadi seperti Calibre, tidak bisa dicadangkan, bahkan Amazon bisa menghapusnya kapan saja
- Ia pun sadar bahwa ini pada praktiknya adalah bentuk sewa, bukan kepemilikan nyata
Ini Menjadi Soal Pribadi
-
Ia bisa saja memilih refund atau jalur tidak resmi, tetapi demi membuktikan kepemilikan atas buku yang dibeli, ia memutuskan merekayasa balik klien web tersebut sendiri
-
Saat menganalisis permintaan jaringan di Kindle Cloud Reader (web), ia menemukan endpoint
/renderer/render -
Syarat yang dibutuhkan untuk mengunduh
- Cookie sesi (login Amazon)
- Token rendering (didapat dari API
startReading) - Token sesi ADP (autentikasi tambahan)
-
Jika permintaan dikirim dengan header dan cookie yang sama seperti browser, server akan memberikan file TAR
-
Contoh isi file TAR
page_data_0_4.json: (informasi teks, tetapi sebenarnya bukan teks)glyphs.json: definisi SVG untuk semua karaktertoc.json: data daftar isimetadata.json: metadatalocation_map.json: informasi pemetaan lokasi
Lapisan Obfuscation Neraka Ebook ala Amazon
-
Contoh data yang muncul saat mengekstrak teks
{ "type": "TextRun", "glyphs": [24, 25, 74, 123, 91, 18, 19, 30, 4, ...], "style": "paragraph" }- Bukan karakter asli, melainkan array ID glif
- Setiap ID glif tidak terikat ke karakter tertentu, melainkan disajikan sebagai gambar berbasis SVG
- Strukturnya seperti substitution cipher, sehingga pemetaan karakter dan ID glif tidak tetap
Alfabetnya Berubah Setiap. Lima. Halaman.
- Setiap 5 halaman, pemetaan glif diacak ulang
- Di setiap permintaan, diterapkan mapping table yang berbeda, sehingga seluruh ebook tidak bisa dipetakan atau ditafsirkan sekaligus
- Sebagai contoh, untuk buku 920 halaman
- Perlu 184 permintaan
- Perlu 184 kali memecahkan alfabet acak
- Harus mengidentifikasi total 361 glif unik
- Harus mendekode 1,051,745 glif
Petunjuk Font Palsu (Mereka Makin Licik)
- Di dalam path SVG ada perintah move kecil yang tidak bermakna (
m3,1 m1,6 m-4,-7)- Di browser tetap dirender normal, tetapi di library SVG Python dan sejenisnya muncul garis sambung yang salah
- Ini membuat parsing sederhana berbasis unit path gagal
- Solusinya, seluruh path harus dirender sekaligus dengan setia saat parsing
Banyak Varian Font
- Font yang dipakai juga bukan satu, melainkan 4 jenis terpisah (bookerly_normal, italic, bold, bolditalic)
- Ligatur, karakter khusus (ffi, fl, dll.) juga ada sebagai glif terpisah, sehingga pemetaan makin sulit
OCR Itu Biasa Saja (Percobaan Saya yang Gagal)
- Ia mencoba menafsirkan gambar glif hasil render dengan alat OCR yang sudah ada
- Tingkat pengenalan sekitar 51%, sisanya gagal
- Karakter tunggal tanpa konteks sulit dibedakan oleh OCR (1, l, I, tanda baca, dll. sering tertukar)
Solusi yang Benar-Benar Berhasil
- Di setiap permintaan,
glyphs.jsonmemuat informasi path SVG - Walaupun ID glif selalu berubah, bila karakternya sama maka bentuk SVG-nya juga sama
Mengapa Perbandingan SVG Langsung Gagal
- Saat membandingkan koordinat path SVG secara langsung, perbedaan kecil dan variasi perintah path membuat pendekatan itu gagal
Pencocokan Setepat Piksel
- SVG dirender menjadi gambar lalu dibandingkan pada level piksel untuk mengidentifikasi glif yang sama
- Semua SVG diubah menjadi gambar beresolusi 512x512 (menggunakan cairosvg)
- Setiap gambar diproses dengan perceptual hash — jika bentuknya sama, nilai hash akan cocok
- 184 pemetaan alfabet acak digabung berdasarkan nilai hash
- Untuk mencocokkan dengan karakter asli, setiap karakter dari font Bookerly TTF dibandingkan memakai metode SSIM (Structural Similarity Index)
Mengapa SSIM Sangat Cocok Untuk Ini
- SSIM membandingkan struktur gambar sehingga perbedaan kecil dalam rendering, anti-aliasing, dan ketidaksesuaian ukuran masih bisa ditoleransi
- Untuk setiap glif yang belum diketahui, karakter TTF dengan skor SSIM tertinggi dipilih sebagai pasangan
Menangani Kasus Tepi
- Ligatur (ff, fi, fl, ffi, ffl) memperlakukan beberapa karakter sebagai satu glif, sehingga ditambahkan langsung ke TTF dan ikut diproses dengan hash
- Karakter khusus dan berbagai gaya font (tebal, italic, tebal-italic) semuanya dikelola sebagai pustaka terpisah
Momen Saat Semuanya Berhasil
Statistik Akhir
=== NORMALIZATION PHASE ===
Total batches processed: 184
Unique glyphs found: 361
Total glyphs in book: 1,051,745
=== MATCHING PHASE ===
Successfully matched 361/361 unique glyphs (100.00%)
Failed to match: 0 glyphs
Average SSIM score: 0.9527
=== DECODED OUTPUT ===
Total characters: 5,623,847
Pages: 920
- Semua karakter berhasil didekode secara akurat, menghasilkan pemulihan dengan tingkat kelengkapan tinggi
Rekonstruksi EPUB dengan Format yang Sempurna
- Dengan memanfaatkan informasi koordinat blok teks, gaya font, dan tautan internal di dalam data JSON
- Ia dapat menghasilkan EPUB yang mempertahankan pemisahan paragraf, perataan, bold·italic, ukuran font, dan tautan internal sedekat mungkin dengan aslinya
Kesimpulan Sebenarnya
- Amazon terbukti telah mengerahkan upaya besar pada DRM web-nya
- Untuk penggunaan praktis, upaya ini memang berlebihan, tetapi tetap bernilai sebagai pembelajaran dan demo teknis
- Ia menekankan bahwa tujuan pembahasan ini adalah mencadangkan buku milik pembeli sendiri dan melindungi hak kepemilikan
Referensi (kode open source)
- PixelMelt/amazon_book_downloader GitHub
- Alat untuk mencadangkan buku yang dibaca di pembaca web Amazon
- Secara otomatis menyelesaikan struktur DRM rumit seperti pada contoh di atas
- Berguna untuk koleksi pribadi serta perlindungan data dan riset
1 komentar
Komentar Hacker News
Ingin berbagi satu fakta menarik. Di AS, kasus seperti ini termasuk jenis pernyataan yang dari sudut pandang jaksa bisa dikenai hukuman <i>pidana</i> (semoga itu tidak benar-benar terjadi, dan jika pengadilan menghormati Amandemen Pertama, saya berharap kasus seperti itu akan ditolak). Ini bukan sekadar masalah perdata seperti pencemaran nama baik atau penipuan, melainkan sesuatu yang bisa membuat polisi datang langsung dan menangkap orang. Jika Anda penasaran kenapa DRM begitu dibenci oleh para insinyur, bukan hanya karena itu pekerjaan yang merepotkan, tetapi juga karena saat mengalaminya sendiri di komputer Anda, itu benar-benar sangat menjengkelkan. Yang lebih parah, jika Anda memberi tahu seseorang betapa bodoh, tidak nyamannya, dan mudah dibobolnya sistem ini, ternyata itu pun dilarang secara hukum. Untuk detail lebih lanjut, lihat artikel EFF.
Saya memang tidak suka DMCA, tetapi saya ragu bahwa tulisan ini sendiri melanggar 17 USC § 1201. Tentu melanggar jika benar-benar membobol DRM atau menyediakan kode terkait, tetapi saya penasaran apakah pernah ada kasus orang dihukum hanya karena "mendeskripsikannya dengan kalimat". Saya ingin tahu apakah ada preseden di mana seseorang benar-benar dituntut dengan cara seperti ini, yakni penjelasan teknis semata. Teks undang-undangnya mengatakan “tidak seorang pun boleh membobol DRM”, dan hanya melarang distribusi “teknologi, produk, atau layanan”. Ini tampaknya ditulis dengan hati-hati agar tidak diterapkan pada media tradisional atau posting semacam ini. Lihat teks lengkap undang-undangnya.
Saya pikir hukum yang berlaku sekarang benar-benar harus diubah. Saya berpendapat bahwa jika sebuah karya didistribusikan dengan DRM, maka karya itu seharusnya selamanya dikecualikan dari perlindungan hak cipta. Alasannya, DRM berfungsi untuk secara permanen mengeluarkan karya dari domain publik. Bahkan, saya pikir jika seseorang secara tidak sengaja mendistribusikan demo atau pratinjau dengan DRM, hak ciptanya juga harus dianggap gugur.
Untuk buku yang hanya bisa dibeli di Amazon, dulu saya membelinya, mengunduhnya lewat aplikasi desktop, lalu memasukkannya ke Calibre dan mengonversinya ke epub sambil menghapus DRM agar bisa dibaca di Kobo. Tetapi belakangan Amazon memperketat DRM-nya sehingga cara ini tidak lagi bisa dipakai. Jadi sekarang saya malah membaca buku-buku itu lewat salinan bajakan.
Amazon memang bermasalah, tetapi sebagian tanggung jawab juga ada pada penerbit besar. Salah satu penerbit besar menekan Amazon agar celah DRM ini benar-benar ditutup, dan mengancam akan menarik semua kontennya jika tidak dilakukan (saya bekerja di Kindle pada 2017-2019, dan berada di tim pengembang kode yang di-reverse engineer oleh OP).
Saya mengenal seseorang yang benar-benar menulis buku, jadi saya tahu betapa tidak lakunya buku di era distribusi ilegal internet. Saya mengerti keinginan untuk bisa memakai buku sesuka hati setelah membelinya, tetapi mengunduh salinan bajakan setelah membeli buku dan mendukung penulis adalah dua hal yang terpisah. Anda tetap bisa membantu penulis dengan membeli bukunya secara resmi. Buku sangat murah dibandingkan nilai dan jam hiburan yang diberikannya.
Buku mungkin adalah bentuk hiburan termurah yang ada. Menurut saya nilainya luar biasa dibanding harganya. Saya menyarankan membeli secara resmi sebagai bentuk dukungan kepada penulis dan penerbit. Kalau kondisi sedang sulit, perpustakaan juga pilihan yang bagus. Saya mengenal seseorang yang mengunduh buku secara ilegal tetapi menghabiskan ratusan dolar untuk streaming atau game battle pass. Sulit dimengerti; menurut saya buku itu terlalu murah. Saya membeli seluruh seri Storm Archives karya Brandon Sanderson dalam bentuk ebook seharga $10 (hiburan 100 jam). Itu berarti 10 sen per jam.
Belakangan saya sempat ingin membelikan istri saya ereader, lalu saya menonton video Louis Rossman tentang DRM Kindle dan juga mendengar banyak pujian untuk Kobo di sini. Akhirnya saya rasa saya juga akan membeli Kobo.
Mungkin pada akhirnya kita akan sampai pada hari ketika orang membaca atau memindai ebook yang terkunci DRM dengan kamera pemindai buku fisik.
Saya jadi merasa tidak ada yang lebih menakutkan daripada insinyur yang marah! Tulisan ini benar-benar luar biasa dan menunjukkan esensi sejati dari hacking. "Apakah ini hanya demi membaca satu buku? Tidak. Apakah ini demi membuktikan pendapat saya? Jelas iya. Apakah saya belajar tentang rendering SVG, perceptual hashing, dan font metrics? Sepertinya iya"
Saya penasaran apakah alat DeDRM buatan apprenticealf yang dulu saya pakai (sekarang fork nodrm/DeDRM_tools) masih bisa dipakai untuk mengunduh lewat aplikasi Kindle PC. Mungkin hanya bekerja di versi lama aplikasi PC, dan bahkan tanpa memakai versi terbaru pun, dulu sempat bisa mencegah unduhan kfx dengan mengutak-atik registry agar menerima format azw3. Di wiki yang ditautkan di bagian atas README repo, pada bagian yang menyebut bahwa proyek itu tidak lagi dipelihara, ada penjelasan soal ini. Hanya dengan cara itulah kita bisa mendapatkan ebook yang lebih mendekati aslinya (bukan sekadar tampilan layar yang mirip). Fakta bahwa kita harus sejauh ini saja sudah konyol. Salut untuk mereka yang tetap sabar bertahan demi membobol DRM Amazon.
Metode pembobolan DRM setelah file diunduh runtuh karena Amazon menghapus fitur "Download & transfer via USB". Sejak itu saya tidak pernah lagi membeli ebook Amazon. Membeli buku lalu mengunduh versi bajakan tanpa DRM menjadi alternatif yang setidaknya masih realistis.
Saya memakai alat berbayar bernama epubor, dan itu bisa menghapus hampir semua DRM dari kindle, kobo, Adobe, dan lain-lain lalu mengonversinya ke epub. Alat ini kompatibel dengan versi terbaru aplikasi, dan kalau diblokir pun pembaruannya cepat keluar. Memang terasa aneh harus membayar buku sekaligus membayar alat penghapus DRM, tetapi begitulah kenyataannya.
Di versi lama aplikasi PC, unduhan masih didukung, tetapi versi yang didukung tidak bisa mengunduh buku yang dirilis setelah April 2025.
Untuk buku Audible, saya merekomendasikan Libation.
Setelah fungsi unduhan di Amazon dihapus, saya membebaskan semua buku yang saya miliki dan memindahkan seluruh sistem saya ke Kavita+koreader. Ke depan saya tidak berniat membeli buku kindle lagi. Kedua perangkat kindle saya juga sudah di-jailbreak dan dipasangi koreader. Sekarang sinkronisasi progres dengan Kavita juga sudah ada, jadi dari sisi fitur tidak ada kekurangan lagi.
Sejak jailbreak besar terakhir untuk perangkat Kindle dirilis, saya juga memakai koreader di Scribe. Untuk sinkronisasi progres saya menggunakan Hardcover (alternatif Goodreads). Hanya saja, rekomendasi bukunya masih belum terlalu cocok dengan selera saya, meski saya berharap akan membaik jika jumlah penggunanya bertambah.
Fakta bahwa Calibre bisa mengirim buku ke KOreader lewat wifi membuat jailbreak itu benar-benar sepadan. Ereader saya berikutnya kemungkinan akan saya pilih dari kobo atau produk lain yang bisa menjalankan KOreader tanpa banyak repot.
Menghapus DRM ebook sudah semacam standar. Kalau tidak, saya bahkan tidak bisa membacanya di Kobo. Saya juga tidak pernah mendaftarkan reader ke Adobe, dan tidak membuat akun Kobo (bahkan setup awalnya pun saya lewati).
Situasi DRM Kindle benar-benar yang terburuk. Dulu, cukup menambahkan plugin DeDRM ke Calibre dan file KFX dari aplikasi Kindle for PC bisa dengan mudah didekripsi. Sejak awal 2025, itu sudah diblokir sehingga tidak memungkinkan lagi. Para ahli memang masih bisa membobolnya, tetapi sekarang mereka tidak lagi membagikan caranya. Bahkan pemelihara pluginnya pun berhenti merilis versi resmi karena khawatir identitasnya terekspos. Lihat tautan terkait 1, tautan terkait 2. Belakangan ini Amazon benar-benar sangat agresif memblokir metode bypass, jadi kalau ada buku yang Anda butuhkan, sebaiknya hapus DRM-nya secepat mungkin.
Sepertinya cara melepas DRM ebook Amazon tidak terlalu efektif untuk komik/graphic novel Amazon. Karena itu belakangan saya berhenti memakai Amazon dan sepenuhnya pindah ke Kobo yang DRM-nya lebih mudah ditembus. Tetapi karena Amazon mengakuisisi Comixology, mereka masih punya koleksi komik paling besar.
Untuk gambar, masalahnya masih belum benar-benar terpecahkan, dan ada obfuscation tambahan yang diterapkan secara terpisah
Komik memerlukan 'gambar' satu halaman penuh, jadi penghapusan DRM tidak mudah. Saya penasaran apakah Anda sempat menganalisis request jaringan, atau bagaimana penanganan gambar dijelaskan kepada penulis
Mungkin Anda sudah tahu, tetapi saya punya pengalaman mudah mendapatkan konten komik dengan kartu perpustakaan lewat hoopla. Tergantung kondisi perpustakaan daerah masing-masing, tetapi saya bisa menemukan sekitar 35% komik yang saya cari. Memang bukan judul terbaru, tetapi rilisan baru dari 6-12 bulan sebelumnya biasanya bisa diakses tanpa masalah besar
DMCA bisa menjegal kapan saja. Saya harap penulisnya benar-benar menjaga anonimitas, kalau tidak, dampak baliknya bisa besar. Lihat kasus terkait 1, kasus terkait 2.
Ini tidak terkait langsung dengan tulisan kali ini, tetapi saya ingin berbagi informasi yang agak berhubungan dengan diskusinya. Saat buku tidak bisa diunduh dari Amazon, ada cara celah yang cukup niche, yaitu mengambil ebook dari perpustakaan yang mendukung Overdrive/libby. Beberapa aplikasi perpustakaan memungkinkan file ber-DRM diunduh langsung, lalu bisa diproses dengan Adobe+Calibre. Memang perlu kartu perpustakaan dan ketersediaan buku yang diinginkan juga jadi faktor, tetapi untuk saya, 90% buku yang saya butuhkan bisa diatasi dengan cara ini.