blog.dieschburg.com

Introduction

Il y a quelques temps, j'ai réalisé que je possédais plusieurs dizaines de livres kindle achetés par facilité sur amazon et que je lisais sur mon téléphone à l'aide de l'application Android. Ayant une nouvelle liseuse non kindle, j'ai tout normalement éprouvé le besoin de récupérer ces livres et de les transformer en epub pour pouvoir en disposer sur n'importe quel dispositif.

J'ai cependant les contraintes fortes suivantes :

  • je ne travaille que sous linux et n'ai aucun poste windows.
  • je ne dispose pas de liseuse kindle

Il y a quelques temps je me débarrassais des DRM à l'aide de calibre (https://calibre-ebook.com/fr/download) et du fork noDRM du plugin DeDRM (https://github.com/noDRM/DeDRM_tools). Une multitude de guide existe sur internet pour cela et décrire la procédure n'est pas l'objet de cet article. Sous linux, il fallait utiliser wine et installer une vielle version de l'application Kindle (1.17 si je me souviens bien).

En réessayant récemment, ,je me suis rendu compte avec effroi que cette vieille version du programme ne fonctionnait plus en renvoyant un message disant que l’ordinateur n'était pas connecté à Internet. Après quelques recherches, je me suis rendu copte que cette vieille version utilisait des API que Amazon avait décomissionnées. Plus possible donc d’utiliser cette méthode.

J'ai d'abord essayé de faire fonctionner les nouvelles versions de l'application kindle sous wine mais sans succès. Elles crashent toutes avec le message d'erreur suivant : “0024:err:module:loader_init “KRFDynamic.dll” failed to initialize, aborting”. J'ai essayé pas mal de choses mais sans succès.

Après plusieurs heures d'essai erreur, j'ai fini par trouver une solution viable. J'ai tellement galéré que je me suis dit que j'allais décrire la méthode ici afin que d'autres en profitent.

En bref la solution consiste à :

  • Installer un émulateur Android (Genymotion)
  • Installer une image custom android 11
  • Installer un apk d'emulation arm pour pouvoir installer l'application amazon kindle
  • Installer une version adéquate de l'application Androis car les récentes ont changé leur système de stockage de clé
  • Télécharger tous mes livres dans l'application
  • Récupérer les fichier kfx par adb
  • Récupérer la configuration de l'application kindle par adb
  • Importer cette configuration dans le plugin DeDRM de calibre
  • Enlever les DRM de tous mes livres ;)

Installation de Android 11 et de l'application Kindle

J'ai utilisé Genymotion (https://www.genymotion.com/) émulateur. Il a le désavantage de demander la création d'un compte mais a également les avantages suivants :

  • inclus dans la plupart des distributions linux et facilement installable
  • est très facile à prendre en main
  • les images sont toutes rootées et l'utilisation de adb est extrêmement simple

Une fois Genymotion installé, j'ai choisi un custom phone avec Android 11.

Une fois l'imgae installée, il est impossible à ce stade d'installer l'application Amazon Kindle car cette dernière nécessite de tourner sous l'architecture ARM. Afin de contourner ce problème, il faut installer libhoudini en suivant les instruction suivantes : https://github.com/niizam/Genymotion_A11_libhoudini

Cela implique une commande adb mais se fait relativement sans douleur.

Une fois cette opération effectuée, on peut maintenant installer l'application Amazon Kindle. Ile ne faut cependant pas prendre la dernière car les clés de stockages ne sont plus stockées dans une db sqlite mais bien dans un fichier crypté que je ne suis pas parvenu à décrypter. J'ai donc utilisé la version Amazon 8.39 de 2022 Le fichier kindle-8-39-0-100-1-3-237316-0.apk est trouvable sur https://kindle.fr.uptodown.com/android/versions

Une fois téléchargé, il suffit de faire un glisser / déposer du fichier sur la fenêtre de l'émulateur qui tourne. L'installation se fait alors automatiquement.

Une fois l'application installée, il faut maintenant s'authentifier sur son compte Amazon et télécharger les livres un par un.

Récupération des livres et de la configuration sur votre ordinateur

Pour ce faire, nous allons utiliser adb qu'il faut installer au préalable.

Une fois adb installé :

  • Lancer genymotion et l'image android 11
  • Exécuter les commandes suivantes en shell sur votre ordinateur afin de télécharger les livres et la configuration nécessaire à l'importation des clés de cryptage nécessaires au plugin DeDRM :

adb pull /storage/self/primary/Android/data/com.amazon.kindle . adb shell "su -c 'cat /data/data/com.amazon.kindle/databases/map_data_storage.db'" > map_data_storage.db

Importation des clés dans le plugin DeDRM

Après avoir installé le plugin DeDRM et activer le plugin From KFX (https://github.com/noDRM/DeDRM_tools)

  • Lancer calibre
  • Préférences
  • Extensions
  • Trouver DeDRM –> personnaliser l'extension
  • Cliquer sur kindle for android ebooks
  • Cliquer sur le +
  • Ajouter le fichier mapdatastorage.db récupéré ci-dessus par adb

Une fois cela effectué, on sauvegarde tous les changements.

Import des livres dans calibre

  • Cliquer sur la flèche à coté de ajouter des livres et choisir “ajouter à partir des dossiers et sous dossiers”
  • Choisir le dossier où vous avez effectué le adb pull ci-dessus. Le dossier contient des fichiers kfx.

Si tout se passe bien, tous vos livres sont maintenant importés dans calibre et DRM free. Il ne reste plus qu'à les convertir en epub si nécessaire.

Voilà, en espérant avoir pu aider quelqu'un....

#calibre #dedrm #epub