I Bypassed Amazon's Kindle Web DRM Because Their App Sucked

https://news.ycombinator.com/rss Hits: 33
Summary

TL;DRI bought my first ebook from amazonAmazon's Kindle Android app was really buggy and crashed a bunchTried to download my book to use with a functioning reader appRealized Amazon no longer lets you do thatDecided to reverse engineer their DRM system out of spiteDiscovered multiple layers of protection including randomized alphabetsDefeated all of them with font matching wizardryYou can now download the books you own books with my codePart 1: Amazon Made This PersonalThe One Time I Tried To Do Things The Right WayI've been "obtaining" ebooks for years. But this ONE time, I thought: "Let's support the author."Download Kindle app on Android. Open book.Crash.I Just Wanted To Read My BookApp crashes. Fine, I'll use the web reader.Oh wait, can't download it for offline reading. What if I'm on a plane?Hold on, I can't even export it to Calibre? Where I keep ALL my other books?So let me get this straight:I paid money for this bookI can only read it in Amazon's broken appI can't download itI can't back it upI don't actually own itAmazon can delete it whenever they wantThis is a rental, not a purchase.This does not say "Rent"It Becomes PersonalI could've refunded and pirated it in 30 seconds. Would've been easier.But that's not the point.The point is I PAID FOR THIS BOOK. It's mine. And I'm going to read it in Calibre with the rest of my library even if I have to reverse engineer their web client to do it.Reversal TimeKindle Cloud Reader (the web version) actually works. While looking through the network requests, I spotted this:https://read.amazon.com/renderer/render To download anything, you need:1. Session cookies - standard Amazon login2. Rendering token - from the startReading API call3. ADP session token - extra auth layerSending the same headers and cookies the browser does returns a TAR file.What's Inside The TAR?page_data_0_4.json # The "text" (spoiler: it's not text) glyphs.json # SVG definitions for every character toc.json # Table of contents metadata.json # Bo...

First seen: 2025-10-16 21:50

Last seen: 2025-10-18 10:56