﻿﻿{"id":1406,"date":"2025-10-17T16:19:34","date_gmt":"2025-10-17T14:19:34","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/quand-amazon-transforme-vos-ebooks-en-manuscrits-medievaux-impossible-a-dechiffrer-ou-presque\/"},"modified":"2025-10-17T16:19:34","modified_gmt":"2025-10-17T14:19:34","slug":"quand-amazon-transforme-vos-ebooks-en-manuscrits-medievaux-impossible-a-dechiffrer-ou-presque","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/quand-amazon-transforme-vos-ebooks-en-manuscrits-medievaux-impossible-a-dechiffrer-ou-presque\/","title":{"rendered":"Quand Amazon transforme vos ebooks en manuscrits m\u00e9di\u00e9vaux impossible \u00e0 d\u00e9chiffrer ou presque"},"content":{"rendered":"<p>Voici l\u2019histoire de Pixelmelt,<br \/>\n<a href=\"https:\/\/blog.pixelmelt.dev\/kindle-web-drm\/\">un d\u00e9veloppeur<\/a><br \/>\nqui voulait simplement sauvegarder en local un ebook achet\u00e9 sur Amazon pour le lire avec une autre app parce que l\u2019app Kindle d\u2019Android a crash\u00e9 une fois de trop \u00e0 son go\u00fbt.<\/p>\n<p>Mais c\u2019est impossible. Pas de bouton download, pas d\u2019export, que dalle\u2026 M\u00eame si vous avez achet\u00e9 le livre, c\u2019est Amazon qui d\u00e9cide de comment et de quand vous pouvez le lire.<\/p>\n<p>Bref, frustr\u00e9, il se tourne alors vers le Kindle Cloud Reader, la version web de l\u2019app. Et l\u00e0, il d\u00e9couvre un truc incroyable ! Amazon a cr\u00e9\u00e9 un syst\u00e8me d\u2019obfuscation tellement complexe qu\u2019il ressemble aux techniques de cryptographie des manuscrits anciens. Mais siii, vous savez, ces textes enlumin\u00e9s que seuls les moines pouvaient d\u00e9chiffrer au Moyen-\u00c2ge. Amazon a r\u00e9invent\u00e9 le concept en version num\u00e9rique.<\/p>\n<p>Pour fonctionner, le Kindle Cloud Reader utilise un endpoint de rendu qui n\u00e9cessite plusieurs tokens d\u2019authentification. D\u00e9j\u00e0 c\u2019est pas simple. Mais \u00e7a se corse un peu plus quand on regarde le texte qui s\u2019affiche car ce ne sont pas des lettres ! Ce sont des glyphes, essentiellement des s\u00e9ries de coordonn\u00e9es qui dessinent une lettre. Ainsi, au lieu de stocker le caract\u00e8re \u2018T\u2019, Amazon stocke \u201c<em>glyphe 24<\/em>\u201d qui correspond \u00e0 une forme dessin\u00e9e via des commandes SVG. Et ces glyphes changent de mapping toutes les 5 pages, un peu comme un codex (coucou Dan Brown ^^) o\u00f9 l\u2019alphabet se transforme \u00e0 tous les chapitres.<\/p>\n<p>Du coup, pour son livre de 920 pages, il a fallu faire 184 requ\u00eates API distinctes. Chaque requ\u00eate r\u00e9cup\u00e8re un nouveau jeu de glyphes soit au total 361 glyphes uniques d\u00e9couverts, et 1 051 745 glyphes \u00e0 d\u00e9coder. Oui, \u00e7a fait plus d\u2019un million de symboles \u00e0 traduire pour lire un seul livre.<\/p>\n<p>Amazon a m\u00eame ajout\u00e9 des pi\u00e8ges comme des micro-op\u00e9rations MoveTo compl\u00e8tement inutiles dans les SVG qui s\u2019affichent parfaitement dans le navigateur mais cassent toute tentative de parsing automatique. C\u2019est de l\u2019anti-scraping plac\u00e9 l\u00e0 volontairement, comme des fausses pistes dans des cryptogrammes m\u00e9di\u00e9vaux destin\u00e9es \u00e0 tromper les copistes non autoris\u00e9s.<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/kindle-drm-obfuscation-reverse-engineering-amazon\/kindle-drm-obfuscation-reverse-engineering-amazon-2.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Face \u00e0 ce d\u00e9lire, notre d\u00e9veloppeur est alors devenu malgr\u00e9 lui un crypto-arch\u00e9ologue. Sa m\u00e9thode a donc \u00e9t\u00e9 de comparer pixel par pixel chaque caract\u00e8res, valider chaque hypoth\u00e8se, pour tout reconstruire patiemment. Je vous passe les d\u00e9tails techniques mais il a sorti chaque glyphe SVG sous la forme d\u2019une image, puis a compar\u00e9 ces images pour trouver leur correspondance avec les vraies lettres en utilisant un outil (SSIM) qui simule la perception humaine pour \u00e9valuer la similarit\u00e9 entre deux images.<\/p>\n<p>R\u00e9sultat, 100% des glyphes match\u00e9s ont un score quasi-parfait ce qui lui a permis de reconstruire un fichier EPUB complet avec le formatage, les styles, les liens internes\u2026etc. Tout y est, c\u2019est trop fort !<\/p>\n<p>Bref, Pixelmelt 1 &#8211; Amazon 0 ! Et \u00e7a, \u00e7a fait plaisir ! Maintenant si vous voulez connaitre tous les d\u00e9tails de \u00e7a et refaire la m\u00eame chez vous (pour rigoler hein, ne vous lancez pas dans dans une op\u00e9ration de piratage massif sinon vous finirez en taule comme Sarko ^^)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici l\u2019histoire de Pixelmelt, un d\u00e9veloppeur qui voulait simplement sauvegarder en local un ebook achet\u00e9 sur Amazon pour le lire avec une autre app parce que l\u2019app Kindle d\u2019Android a crash\u00e9 une fois de trop \u00e0 son go\u00fbt. Mais c\u2019est impossible. Pas de bouton download, pas d\u2019export, que dalle\u2026 M\u00eame si vous avez achet\u00e9 le livre, c\u2019est Amazon qui d\u00e9cide de comment et de quand vous pouvez le lire. Bref, frustr\u00e9, il se tourne alors vers le Kindle Cloud Reader, la version web de l\u2019app. Et l\u00e0, il d\u00e9couvre un truc incroyable ! Amazon a cr\u00e9\u00e9 un syst\u00e8me d\u2019obfuscation tellement complexe qu\u2019il ressemble aux techniques de cryptographie des manuscrits anciens. Mais siii, vous savez, ces textes enlumin\u00e9s que seuls les moines pouvaient d\u00e9chiffrer au Moyen-\u00c2ge. Amazon a r\u00e9invent\u00e9 le concept en version num\u00e9rique. Pour fonctionner, le Kindle Cloud Reader utilise un endpoint de rendu qui n\u00e9cessite plusieurs tokens d\u2019authentification. D\u00e9j\u00e0 c\u2019est pas simple. Mais \u00e7a se corse un peu plus quand on regarde le texte qui s\u2019affiche car ce ne sont pas des lettres ! Ce sont des glyphes, essentiellement des s\u00e9ries de coordonn\u00e9es qui dessinent une lettre. Ainsi, au lieu de stocker le caract\u00e8re \u2018T\u2019, Amazon stocke \u201cglyphe 24\u201d qui correspond \u00e0 une forme dessin\u00e9e via des commandes SVG. Et ces glyphes changent de mapping toutes les 5 pages, un peu comme un codex (coucou Dan Brown ^^) o\u00f9 l\u2019alphabet se transforme \u00e0 tous les chapitres. Du coup, pour son livre de 920 pages, il a fallu faire 184 requ\u00eates API distinctes. Chaque requ\u00eate r\u00e9cup\u00e8re un nouveau jeu de glyphes soit au total 361 glyphes uniques d\u00e9couverts, et 1 051 745 glyphes \u00e0 d\u00e9coder. Oui, \u00e7a fait plus d\u2019un million de symboles \u00e0 traduire pour lire un seul livre. Amazon a m\u00eame ajout\u00e9 des pi\u00e8ges comme des micro-op\u00e9rations MoveTo compl\u00e8tement inutiles dans les SVG qui s\u2019affichent parfaitement dans le navigateur mais cassent toute tentative de parsing automatique. C\u2019est de l\u2019anti-scraping plac\u00e9 l\u00e0 volontairement, comme des fausses pistes dans des cryptogrammes m\u00e9di\u00e9vaux destin\u00e9es \u00e0 tromper les copistes non autoris\u00e9s. Face \u00e0 ce d\u00e9lire, notre d\u00e9veloppeur est alors devenu malgr\u00e9 lui un crypto-arch\u00e9ologue. Sa m\u00e9thode a donc \u00e9t\u00e9 de comparer pixel par pixel chaque caract\u00e8res, valider chaque hypoth\u00e8se, pour tout reconstruire patiemment. Je vous passe les d\u00e9tails techniques mais il a sorti chaque glyphe SVG sous la forme d\u2019une image, puis a compar\u00e9 ces images pour trouver leur correspondance avec les vraies lettres en utilisant un outil (SSIM) qui simule la perception humaine pour \u00e9valuer la similarit\u00e9 entre deux images. R\u00e9sultat, 100% des glyphes match\u00e9s ont un score quasi-parfait ce qui lui a permis de reconstruire un fichier EPUB complet avec le formatage, les styles, les liens internes\u2026etc. Tout y est, c\u2019est trop fort ! Bref, Pixelmelt 1 &#8211; Amazon 0 ! Et \u00e7a, \u00e7a fait plaisir ! Maintenant si vous voulez connaitre tous les d\u00e9tails de \u00e7a et refaire la m\u00eame chez vous (pour rigoler hein, ne vous lancez pas dans dans une op\u00e9ration de piratage massif sinon vous finirez en taule comme Sarko ^^)<\/p>\n","protected":false},"author":1,"featured_media":1407,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-1406","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1406","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1406"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1406\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/1407"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}