Un utilisateur frustré par les limitations imposées par Amazon sur les livres numériques achetés via Kindle a entrepris de contourner les protections du service pour récupérer réellement sa propriété intellectuelle. Après avoir acheté légalement un ebook, il s’est heurté à l’inutilité de l’application Kindle pour Android, truffée de bugs et incapable de fonctionner sans plantages répétés. Pire encore : impossible d’exporter le livre pour le lire hors ligne dans un autre logiciel comme Calibre, ou même de le sauvegarder. Amazon verrouille ainsi les ouvrages derrière son écosystème, transformant une « achat » en location précaire, où le contenu peut disparaître à tout moment sur décision de la plateforme. Indigné par cette restriction — « J’ai payé pour ce livre, il est à moi » —, l’auteur a décidé de reverse-engineerer le système d’obfuscation web d’Amazon pour en extraire le texte brut.

Son investigation commence par l’analyse du Kindle Cloud Reader, la version web du lecteur. Les requêtes vers l’API `read.amazon.com/renderer/render` révèlent que les pages sont servies sous forme d’archives TAR contenant des fichiers JSON : `page_data_.json` (le « texte »), `glyphs.json` (des définitions SVG pour chaque caractère), ainsi que des métadonnées et une table des matières. Mais le « texte » n’en est pas vraiment un : il s’agit d’une suite d’identifiants numériques (`glyphs`) correspondant à des formes vectorielles, et non à des caractères Unicode. Amazon utilise un chiffrement par substitution dynamique* : chaque symbole (comme la lettre « T ») se voit attribuer un identifiant aléatoire qui change à chaque requête — toutes les cinq pages en moyenne. Pour une livre de 920 pages, cela implique 184 jeux de correspondances uniques à décrypter, avec 361 glyphes distincts (lettres, ponctuation, ligatures) et plus d’un million d’occurrences à traiter.

Les obstacles ne s’arrêtent pas là. Les fichiers SVG des glyphes intègrent des faux indices de hinting — des micro-commandes de déplacement (`m3,1 m1,6`) qui brouillent les contours lors d’un rendu hors navigateur, rendant toute comparaison directe des formes inefficace. Les tentatives de reconnaissance optique (OCR) sur les glyphes rendus échouent misérablement (seulement 51 % de succès), confondant les caractères similaires (« l », « I », « 1 ») ou les ligatures (« ff », « fi »). Pire, Amazon utilise quatre variantes de police (normale, italique, gras, gras-italique) avec des ligatures spécifiques, multipliant la complexité.

La solution finale repose sur une approche en deux temps. D’abord, l’auteur exploite le fait que les formes SVG des glyphes restent identiques malgré leurs identifiants changeants. Il rend chaque glyphe en image haute résolution (512×512 px) via `cairosvg`, puis génère un hash perceptuel (pHash) pour chaque rendu. Ces empreintes permettent de créer une table de correspondance normalisée : peu importe l’ID du glyphe dans une requête donnée, son hash le relie toujours au même caractère. Ensuite, il compare ces hashs à une bibliothèque de référence construite en rendant manuellement chaque symbole (A-Z, a-z, ponctuation) depuis les polices TTF officielles de Bookerly (la famille de polices d’Amazon). Pour affiner la précision, il utilise l’indice de similarité structurelle (SSIM), qui évalue la ressemblance entre images en ignorant les variations mineures de rendu (antialiasing, échelle). Résultat : un taux de reconnaissance parfait (100 % des 361 glyphes identifiés, avec un SSIM moyen de 0,9527).

La dernière étape consiste à reconstituer un fichier EPUB fidèle à l’original. Les données JSON incluent non seulement les glyphes, mais aussi leur positionnement (`rect`), leur style (gras, italique), la taille de police, et les liens internes. En exploitant ces informations, l’auteur reconstitue la mise en page exacte : sauts de paragraphes (via les coordonnées Y), alignement du texte (motifs des coordonnées X), et même les styles typographiques. Le livre final, exporté en EPUB, est quasi identique à la version Kindle — mais cette fois, libre de toute DRM et utilisable dans n’importe quel logiciel.

Cette aventure illustre l’absurdité des protections d’Amazon, qui transforment les clients en locataires précaires de leur propre bibliothèque. Si l’entreprise consacre d’énormes ressources à obfusquer ses contenus, c’est moins pour lutter contre le piratage que pour verrouiller les utilisateurs dans son écosystème. Comme le souligne l’auteur, la solution la plus simple aurait été de « trouver » le livre ailleurs en trente secondes… mais le principe était ailleurs : « J’ai payé. Ce livre m’appartient. » Le reverse engineering devient alors un acte de résistance contre les pratiques abusives des géants du numérique.