Verschleierung von Buchinhalten: Kindle-Obfuskation entschlüsselt

Neben Code versuchen Unternehmen gern, Daten zu verschleiern und damit nur über ihre Software zugänglich zu machen, was auf Englisch als obfuscation bezeichnet wird. Der Programmierer und Blogger Pixelmelt beschreibt, wie er das Verschleierungssystem von Amazon umgangen(öffnet im neuen Fenster) hat, weil die Kindle App von Amazon nicht fehlerfrei funktionierte. Zuvor kaufte er ein E-Book bei Amazon und versuchte, dieses herunterzuladen, um es seiner Sammlung von E-Books aus anderen Quellen hinzuzufügen.
Zum Ärger des Bloggers ließ sich das gekaufte E-Book weder für das Offlinelesen herunterladen noch in eine universelle Bibliothek, wie Calibre, exportieren. Die persönliche Schlussfolgerung, "das ist Miete, kein Kauf" , veranlasste Pixelmelt dazu, sich das E-Book-System von Amazon zu entschlüsseln, um das bezahlte Buch in seine Bibliothek aufnehmen zu können.
Da die Web-Version des Kindle-Readers funktionierte, konnte Pixelmelt sich die technischen Details des Kindle-Cloud-Reader-API genauer ansehen. Nach der erfolgreichen Authentifizierung mittels Session Cookies, Rendering Token und ADP Session erhielt er schließlich eine Tar-Datei. Diese enthielt fünf Dateien, von denen insbesondere jene mit dem Text des Buches und jene mit den SVG-Definitionen für jedes Zeichen zu einer Herausforderung wurde.
184 API-Anfragen später
Beide Dateien waren mit Verschleierungsmechanismen versehen, wobei Amazon nicht nur den Code an sich schwerer lesbar machte, sondern das Alphabet für den Text des Buches alle fünf Seiten randomisierte. Für ein 920-seitiges Buch waren deshalb 184 Anfragen an das API notwendig.
Aber auch die Datei mit den SVG-Definitionen enthielt als Mikro-Move-To-Operationen bezeichnete Befehle, die in Browser unschädlich sind, aber SVG-Bibliotheken in Python dazu bringt, fehlerhafte Verbindungen herzustellen. Hinzu kamen vier verschiedene Varianten der Schriftart plus Ligaturen, die entschlüsselt werden mussten.
Um nun jedes Zeichen korrekt entschlüsseln zu können, renderte Pixelmelt jede SVG-Definition als hochauflösendes Bild und generierte einen Perceptual Hash für jeden Buchstaben. Dieser diente nach dem Prinzip, dieselbe Form liefert denselben Hash, als Identifikator für den zu entschlüsselnden Text.
Schließlich gelang es, mit den rekonstruierten Daten eine Epub-Datei zu erstellen, die nicht vom Original zu unterscheiden war. Pixelmelt resümiert, dass Amazon sehr großen Aufwand in die Web-Obfuscation gesteckt habe. Obwohl der von ihm betriebene Aufwand, nur um ein Buch zu lesen, sehr hoch war, sei es ihm die Mühe wert gewesen, in den tatsächlichen Besitz seines gekauften E-Books zu kommen.



