Comment contourner le DRM web de Kindle d’Amazon
(blog.pixelmelt.dev)- En raison de la grave instabilité de l’application Kindle, l’auteur a tenté de lire sur un autre lecteur un ebook acheté sur Amazon
- Le système de DRM web d’Amazon applique une double, voire triple protection via plusieurs couches de sécurité et un mapping de caractères aléatoire
- Il complique les tentatives de piratage classiques en utilisant un mapping de polices entièrement différent à chaque requête
- Une méthode a été développée pour restaurer tous les glyphes aléatoires en vrais caractères grâce au hachage basé sur l’image et au matching de polices basé sur le SSIM
- Au final, une solution complète a été mise au point pour restaurer et archiver intégralement les livres achetés dans une bibliothèque personnelle d’ebooks comme Calibre
TL;DR
- Après l’achat de son premier ebook Amazon, l’auteur a été fortement mécontent de l’instabilité de l’application Kindle sur Android
- Il voulait simplement lire librement hors ligne, mais l’impossibilité de télécharger et de sauvegarder le livre l’a rapidement frustré
- En analysant le système DRM du lecteur web d’Amazon, il s’est retrouvé face à une structure complexe d’aléa et de mapping alphabétique
- Grâce à une approche par hachage d’image et matching de polices, il a résolu cette randomisation et restauré avec succès les livres qu’il possédait
- L’utilisation de ce code s’inscrit, selon lui, dans l’importance du droit de propriété et de sauvegarde sur les livres achetés
Amazon en a fait une affaire personnelle
La seule fois où j’ai essayé de faire les choses correctement
- Auparavant, l’auteur obtenait surtout ses ebooks par des voies non officielles, mais il a tenté pour la première fois un achat officiel sur Amazon afin de soutenir l’auteur
- En ouvrant le livre dans l’application Kindle, celle-ci plantait en permanence, rendant la lecture pratiquement impossible
Je voulais juste lire mon livre
- À cause de l’instabilité de l’application, il a essayé d’utiliser le lecteur web, mais a découvert que le téléchargement hors ligne comme l’intégration avec un lecteur externe étaient tous bloqués
- Il était impossible de l’intégrer à une bibliothèque personnelle comme Calibre, impossible d’en faire une sauvegarde, et Amazon pouvait même le supprimer à tout moment
- Il a alors compris qu’il s’agissait en pratique d’une forme de location sans véritable propriété
Cela devient personnel
-
Il aurait pu demander un remboursement ou passer par une voie non officielle, mais il a décidé de faire lui-même l’ingénierie inverse du client web pour prouver la propriété du livre acheté
-
En analysant les requêtes réseau dans Kindle Cloud Reader (web), il a identifié l’endpoint
/renderer/render -
Conditions nécessaires au téléchargement
- Cookie de session (connexion Amazon)
- Jeton de rendu (obtenu via l’API
startReading) - Jeton de session ADP (authentification supplémentaire)
-
En envoyant la requête avec les mêmes en-têtes et cookies que le navigateur, un fichier TAR est renvoyé
-
Exemple de contenu du fichier TAR
page_data_0_4.json: (informations textuelles, mais ce n’est pas réellement du texte)glyphs.json: définition SVG de tous les caractèrestoc.json: données de table des matièresmetadata.json: métadonnéeslocation_map.json: informations de mapping des positions
Les couches d’obfuscation infernales du DRM ebook d’Amazon
-
Exemple de données obtenues lors de l’extraction du texte
{ "type": "TextRun", "glyphs": [24, 25, 74, 123, 91, 18, 19, 30, 4, ...], "style": "paragraph" }- Elles sont composées non pas de vrais caractères, mais d’un tableau d’identifiants de glyphes
- Chaque
glyph IDn’est pas fixé à un caractère précis : il est fourni comme une image basée sur SVG - La structure repose sur un chiffrement par substitution, où le mapping entre caractères et
glyph IDn’est pas constant
L’alphabet change toutes les cinq pages
- Le mapping des glyphes est réinitialisé aléatoirement toutes les 5 pages
- Un mapping table différent est appliqué à chaque requête, rendant impossible un mapping ou un décodage global de l’ebook en une seule fois
- Exemple pour un livre de 920 pages
- 184 requêtes nécessaires
- 184 alphabets aléatoires à déchiffrer
- 361 glyphes uniques à identifier au total
- 1,051,745 glyphes à décoder
De faux indices de police (ils deviennent sournois)
- Les chemins SVG contiennent de minuscules commandes de déplacement sans signification (
m3,1 m1,6 m-4,-7)- Dans le navigateur, le rendu reste correct, mais dans des bibliothèques SVG Python, cela crée des lignes de connexion erronées
- Cela vise à faire échouer un parsing simple basé sur l’analyse unitaire des chemins
- Lors du parsing réel, le problème se résout en rendant fidèlement le chemin complet en une seule fois
Plusieurs variantes de police
- La police n’existe pas en une seule version mais en 4 variantes distinctes (
bookerly_normal,italic,bold,bolditalic) - Les ligatures et caractères spéciaux (
ffi,fl, etc.) existent également comme glyphes séparés, ce qui complique davantage le mapping
L’OCR, c’est moyen (ma tentative ratée)
- Tentative d’interprétation des images de glyphes rendues avec des outils classiques de reconnaissance optique de caractères (OCR)
- Environ 51 % de taux de reconnaissance, le reste échoue
- Les caractères isolés sans contexte sont indistinguables pour l’OCR (
1,l,I, ponctuation, etc.)
La solution qui a vraiment fonctionné
- Chaque requête inclut dans
glyphs.jsonles informations de chemins SVG - Même si les
glyph IDchangent à chaque fois, la forme SVG (l’image) reste identique pour un même caractère
Pourquoi la comparaison directe des SVG a échoué
- La comparaison directe des coordonnées de chemins SVG échoue à cause de légères différences et de variations dans les commandes de chemin
Matching pixel-perfect
- Les glyphes identiques ont été identifiés en rendant les SVG en images puis en les comparant pixel par pixel
- Conversion de tous les SVG en images 512x512 (
cairosvg) - Traitement de chaque image avec un hachage perceptuel (Perceptual hash) — si la forme est identique, la valeur de hachage correspond
- Fusion des 184 mappings d’alphabets aléatoires à partir de ces hachages
- Pour associer les glyphes à de vrais caractères, comparaison de chaque caractère de la police TTF Bookerly via SSIM (Structural Similarity Index)
- Conversion de tous les SVG en images 512x512 (
Pourquoi le SSIM est parfait ici
- Le SSIM compare la structure des images et tolère de faibles différences de rendu, l’anticrénelage et les écarts de taille
- Pour chaque glyphe inconnu, le caractère TTF avec le meilleur score SSIM est retenu
Gestion des cas limites
- Les ligatures (
ff,fi,fl,ffi,ffl) sont traitées comme un seul glyphe pour plusieurs caractères, elles ont donc été ajoutées directement au TTF puis hachées - Les caractères spéciaux et les différents styles de police (gras, italique, gras italique) sont eux aussi gérés dans des bibliothèques séparées
Le moment où tout a fonctionné
Statistiques finales
=== 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
- Tous les caractères ont été décodés avec exactitude, permettant une restauration très fidèle
Reconstruction EPUB avec une mise en forme parfaite
- En exploitant les informations de coordonnées des blocs de texte, styles de police et liens internes présentes dans les données JSON
- génération d’un EPUB conservant au plus près l’original, y compris séparation des paragraphes, alignement, gras, italique, taille de police et liens internes
La vraie conclusion
- Amazon a manifestement investi beaucoup d’efforts dans son DRM web
- Cela demande un travail excessif pour un usage pratique, mais l’ensemble a de la valeur comme apprentissage technique et démonstration
- Il est rappelé que l’objectif est la sauvegarde personnelle et la protection de la propriété des livres achetés
Ressources de référence (code open source)
- PixelMelt/amazon_book_downloader GitHub
- Outil permettant de sauvegarder les livres lus dans le lecteur web d’Amazon
- Résout automatiquement des structures DRM complexes comme dans l’exemple de l’article
- Utile pour l’archivage personnel, la protection des données et la recherche
1 commentaires
Avis Hacker News
Petit fait intéressant à partager. Aux États-Unis, il s’agit de l’un de ces types de propos qui, du point de vue du procureur, peuvent théoriquement faire l’objet de poursuites <i>pénales</i> (j’espère que cela n’arrivera pas en pratique, et je m’attends à ce que ce soit rejeté si les tribunaux respectent le Premier Amendement). Ce n’est pas une simple affaire civile comme la diffamation ou la fraude : la police peut littéralement venir vous arrêter. Si vous vous demandez pourquoi les ingénieurs détestent autant les DRM, ce n’est pas seulement parce que c’est pénible à gérer au travail ; c’est aussi extrêmement agaçant quand on en fait soi-même l’expérience sur son propre ordinateur. Plus grave encore, si vous expliquez à quelqu’un à quel point c’est stupide, peu pratique et facile à contourner, cela aussi peut être interdit par la loi. Pour plus de détails, voir l’article de l’EFF.
Je n’aime pas le DMCA, mais je doute que ce texte en lui-même viole le 17 USC § 1201. Contourner un DRM ou fournir du code lié à cela serait évidemment une violation, mais je me demande s’il existe réellement des cas où une simple « description en phrases » a été sanctionnée. J’aimerais bien voir une jurisprudence où quelqu’un aurait été poursuivi uniquement pour une explication technique de ce type. Le texte de loi dit essentiellement « nul ne doit contourner un DRM » et interdit seulement la diffusion de « technologies, produits ou services ». Il semble avoir été rédigé avec soin pour ne pas s’appliquer à la presse traditionnelle ou à des billets de ce genre. Voir le texte complet.
À mon avis, la loi actuelle doit absolument changer. Je soutiens que si une œuvre est distribuée avec un DRM, elle devrait être exclue à jamais de la protection du droit d’auteur. En effet, le DRM a pour effet d’empêcher durablement l’entrée de l’œuvre dans le domaine public. J’irais même jusqu’à dire que si une démo ou un aperçu est distribué avec un DRM, même par erreur, le copyright devrait être annulé.
Pour les livres disponibles uniquement chez Amazon, avant j’achetais le livre, je le téléchargeais avec l’application de bureau, puis je le mettais dans Calibre pour le convertir en epub tout en retirant le DRM, afin de le lire sur Kobo. Mais récemment, Amazon a renforcé son DRM et cette méthode ne fonctionne plus. Du coup, maintenant, je finis simplement par trouver ces livres en version pirate et les lire ainsi.
Amazon a sa part de responsabilité, mais certains grands éditeurs aussi. L’un d’eux a fait pression sur Amazon pour qu’il corrige impérativement cette faille DRM, en menaçant sinon de retirer tout son contenu (j’ai travaillé chez Kindle de 2017 à 2019, dans l’équipe qui développait le code qu’OP a rétroconçu).
Quelqu’un que je connais écrit lui-même des livres, donc il voit très bien à quel point ils se vendent mal à l’ère de la diffusion illégale en ligne. Je comprends l’envie d’utiliser un livre librement après l’achat, mais retélécharger une version pirate après l’avoir acheté et soutenir les auteurs sont deux choses différentes. On peut acheter le livre pour aider l’auteur. Les livres sont très bon marché au regard de la valeur et du temps de divertissement qu’ils apportent.
Les livres sont probablement la forme de divertissement la moins chère. Le rapport qualité-prix est énorme. Je recommande donc l’achat officiel pour soutenir les auteurs et les éditeurs. Si vos moyens sont limités, la bibliothèque est aussi une très bonne option. Je connais quelqu’un qui pirate des livres mais dépense des centaines de dollars dans le streaming ou les jeux à battle pass. Franchement, les livres sont absurdement bon marché. J’ai acheté toute la série Storm Archives de Brandon Sanderson en ebook pour 10 $ (100 heures de divertissement), soit 10 centimes de l’heure.
J’étais justement sur le point d’acheter une liseuse à ma femme, puis je suis tombé sur une vidéo de Louis Rossman à propos du DRM Kindle, et en plus j’ai vu ici beaucoup d’éloges pour Kobo. Au final, je pense que je vais acheter une Kobo moi aussi.
On finira peut-être par voir arriver le jour où les gens liront ou scanneront des ebooks verrouillés par DRM avec des caméras de scanner pour livres papier.
Il n’y a rien de plus redoutable qu’un ingénieur en colère ! Ce billet était incroyable et montre parfaitement l’essence du hacking. « Est-ce que je voulais juste lire un seul livre ? Non. Est-ce que je voulais prouver mon point ? Certainement. Est-ce que j’ai appris le rendu SVG, le perceptual hashing et les métriques de police ? Apparemment oui. »
Je me demande si l’outil DeDRM d’apprenticealf que j’utilisais autrefois (aujourd’hui repris dans le fork nodrm/DeDRM_tools) permet encore de télécharger via l’application Kindle pour PC. Il se peut que cela ne fonctionne qu’avec d’anciennes versions de l’application PC, et même sans la toute dernière version, il était possible à une époque d’empêcher le téléchargement en KFX via un hack du registre pour récupérer le format azw3. C’est mentionné dans le wiki lié en haut du README du dépôt, dans le passage expliquant que le projet n’est plus maintenu. C’est le seul moyen d’obtenir un ebook plus proche de l’original, plutôt qu’un simple affichage qui lui ressemble. Le simple fait qu’il faille aller jusque-là est absurde. Respect à tous ceux qui persistent à essayer de faire sauter le DRM d’Amazon.
La méthode de piratage du DRM après téléchargement s’est effondrée quand Amazon a supprimé la fonction « Télécharger et transférer via USB ». Depuis, je n’ai plus jamais racheté d’ebooks Amazon. Acheter le livre puis télécharger illégalement une copie sans DRM reste à peu près la seule alternative réaliste.
J’utilise un outil payant appelé epubor, qui retire le DRM de presque tout — Kindle, Kobo, Adobe, etc. — puis convertit en epub. Il est compatible avec les dernières versions des applications, et quand quelque chose casse, une mise à jour arrive vite. C’est étrange de devoir payer le livre puis aussi l’outil de suppression du DRM, mais c’est la réalité.
Les anciennes versions de l’application PC prennent bien en charge le téléchargement, mais les versions prises en charge ne téléchargent pas les livres publiés après avril 2025.
Pour les livres Audible, je recommande Libation.
Depuis qu’Amazon a supprimé la fonction de téléchargement, j’ai libéré tous les livres que je possédais et j’ai complètement migré vers Kavita + koreader. Je n’ai plus l’intention d’acheter le moindre livre Kindle à l’avenir. J’ai aussi jailbreaké mes deux Kindle pour y installer koreader. Maintenant, la synchronisation de progression avec Kavita fonctionne aussi, donc il ne me manque plus rien côté fonctionnalités.
Depuis la sortie du dernier gros jailbreak pour appareils Kindle, j’utilise moi aussi koreader sur un Scribe. Pour la synchronisation de progression, j’utilise Hardcover (une alternative à Goodreads). En revanche, les recommandations ne correspondent pas encore très bien à mes goûts, mais j’espère que cela s’améliorera avec davantage d’utilisateurs.
Le jailbreak en valait vraiment la peine, rien que pour la fonction de Calibre qui envoie des livres à KOreader en wifi. Mon prochain lecteur sera probablement un Kobo ou un autre appareil sur lequel KOreader fonctionne sans prise de tête.
La suppression des DRM des ebooks est presque une norme. Sinon, on ne peut même pas les lire sur Kobo. Je n’ai pas non plus enregistré ma liseuse chez Adobe, ni créé de compte Kobo (j’ai même contourné la configuration initiale).
La situation du DRM Kindle est vraiment catastrophique. Avant, il suffisait d’ajouter le plugin DeDRM à Calibre pour décrypter facilement les fichiers KFX de l’application Kindle for PC. Depuis le début de 2025, ce n’est plus possible. Les experts continuent bien à le casser, mais ils ne partagent plus leurs méthodes. Même le mainteneur du plugin a arrêté les releases officielles par crainte d’être identifié. Voir lien connexe 1, lien connexe 2. De nos jours, Amazon bloque les contournements de façon très agressive, donc si vous avez besoin d’un livre, mieux vaut retirer le DRM au plus vite.
La méthode de suppression du DRM des ebooks Amazon ne semble probablement pas très bien fonctionner pour les mangas et romans graphiques Amazon. C’est pourquoi j’ai récemment abandonné Amazon pour passer complètement à Kobo, où le DRM est plus facile à casser. Mais comme Amazon a racheté Comixology, il conserve toujours la collection de BD la plus vaste.
Les images ne sont pas encore complètement résolues, et il y a en plus une couche d’obfuscation séparée.
Pour les mangas, il faut les « images » de page entière, donc retirer le DRM n’est pas simple. Je me demande si l’auteur a analysé les requêtes réseau, ou ce qu’il advient exactement des images.
Vous le savez peut-être déjà, mais j’ai eu de bons résultats avec hoopla pour obtenir facilement des BD via une carte de bibliothèque. Cela dépend bien sûr de votre bibliothèque locale, mais j’y ai trouvé environ 35 % des mangas que je cherchais. Il n’y a pas toujours les tout derniers titres, mais pour des nouveautés sorties il y a 6 à 12 mois, ça marchait plutôt bien.
Le DMCA peut vous retomber dessus à tout moment. J’espère que l’auteur a bien pris soin de protéger son identité, sinon le retour de bâton pourrait être sévère. Voir cas connexe 1, cas connexe 2.
Ce n’est pas directement lié à cet article, mais je partage une information un peu connexe à la discussion. Quand on ne peut pas télécharger un livre depuis Amazon, il existe une méthode de contournement de niche : récupérer l’ebook via une bibliothèque prenant en charge Overdrive/Libby. Certaines applications de bibliothèque permettent de télécharger directement les fichiers protégés par DRM, qu’on peut ensuite traiter avec Adobe + Calibre. Il faut bien sûr une carte de bibliothèque, et la disponibilité du livre reste une variable, mais pour moi cette méthode couvre 90 % des livres dont j’ai besoin.