我想知道如何从Kindle书中剥离DRM。我想从亚马逊购买Kindle电子书。我将剥离DRM,然后将其转换为Epub(以便可以在连接到我的iPhone的头戴式耳机上收听)和PDF格式(因此,在收听的同时,我可以使用我的基于Ubuntu的发行版,并为书加注)。
我已经花了一个小时的时间搜索剥离DRM的软件,但只找到内容似乎没有帮助或我不信任的页面链接。
我想知道如何从Kindle书中剥离DRM。我想从亚马逊购买Kindle电子书。我将剥离DRM,然后将其转换为Epub(以便可以在连接到我的iPhone的头戴式耳机上收听)和PDF格式(因此,在收听的同时,我可以使用我的基于Ubuntu的发行版,并为书加注)。
我已经花了一个小时的时间搜索剥离DRM的软件,但只找到内容似乎没有帮助或我不信任的页面链接。
Answers:
我将不讨论删除DRM的合法性,因为它因国家/地区而异-在某些情况下属于合理使用,在另一些情况下情况不明朗,而在另一些情况下则显然是非法的。
在Ubuntu 18.04上,以下步骤对我有用。
sudo apt-get install wine64
sudo apt-get install calibre
# sudo apt-get install winetricks # this is optional — see below
wget https://github.com/apprenticeharper/DeDRM_tools/releases/download/v6.6.3/DeDRM_tools_6.6.3.zip
(紧密基于官方FAQ(快照)中的信息。链接到最新版本。)
为了获得最佳结果,您需要使用旧版Kindle for PC(≤1.17)。(稍晚一些的版本(≥1.24)对下载的图书使用次优的KFX文件格式,而DeDRM插件根本无法“利用”了最近的版本。)
不幸的是,该版本的PC版Kindle无法从亚马逊网站上获得,因此您需要使用google / duckduckgo作为文件名KindleForPC-installer-1.17.44170.exe
,然后从一些粗略的网站上下载该文件名。为确保您已下载“原始”文件(而不是带有奖励恶意软件的修改版),您需要检查文件的哈希值。(md5被“破坏”,sha1被部分“破坏”,所以我建议您不要完全依靠它们。)
sha256sum KindleForPC-installer-1.17.44170.exe | grep 14e0f0053f1276c0c7c446892dc170344f707fbfe99b6951762c120144163200
如果您不信任我,互联网上的一个随机人,告诉您正确的哈希,(您没有理由),可以转到上面的官方常见问题解答-毕竟,您已经信任DeDRM插件不要恶意。(出于某种原因,在FAQ中的sha256哈希中有一个空格。)
我们无法使用PC版Kindle的winetricks,因为它安装的版本1.20不合适。
wine64 KindleForPC-installer-1.17.44170.exe
输入您的亚马逊帐户详细信息,将相关书籍下载到“设备”(即您的计算机)等。
unzip DeDRM_tools_6.6.3.zip
calibre-customize --add DeDRM_calibre_plugin/DeDRM_plugin.zip
另外,解压缩后,您可以通过Calibre的标准UI进行安装。(首选项>高级>插件>从文件加载插件。)
如果您使用的是WINE / Linux,则DeDRM插件不会在没有任何麻烦的情况下“自动”提取密钥。
DeDRM_calibre_plugin/DeDRM_plugin_ReadMe.txt
包含有关如何进行的一些建议。他们部分地为我工作,但不是全部。
为了提取DRM密钥,一个python脚本(由口径插件提供的)将需要运行中酒(最好)的口径插件本身。因此,您需要在wine环境中安装python。
这里有两种选择-使用winetricks或从python官方网站手动安装。
wget https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi
msiexec /i python-2.7.13.msi ALLUSERS=1
请注意,这与当前的说明有所不同,DeDRM_calibre_plugin/DeDRM_plugin_ReadMe.txt
因为必须添加ALLUSERS=1
。
如果您使用的是从Ubuntu的存储库安装的winetricks(版本为18.04),那么很遗憾,只有python-2.6(可以使用进行安装winetricks python26
)可用。由于口径插件当前将标准python-2.7安装的路径硬编码,因此不是最佳选择。因此,您要么需要修补口径插件,要么自己运行wine python脚本并复制解密密钥。
如果您有较新版本的winetricks,则可以安装python-2.7。
winetricks python27
为了使口径插件运行脚本,您必须告诉它您的Wine安装位置(所谓的“ WINEPREFIX”)。默认情况下,wineprefix为~/.wine/
。您可以通过以下方式告诉口径插件WINEPREFIX
,您可以在Calibre中转到“首选项”>“高级”>“插件”>“文件类型插件”>“ DeDRM”>“自定义插件”>“ Kindle for PC和Adobe Digital Editions”。您可以通过按“ +”按钮来提示脚本的运行-否则,当您首次尝试使用Kindle DRM添加书籍时,脚本将运行。
就是这样—当您将书本添加到机芯时,它们会被自动删除DRM。另外,您可以查看下面的(几乎)cli版本,该版本除去了我的大多数详细说明。
不要一口气复制粘贴所有这些内容,因为这行不通-其中几个步骤需要人工参与。
sudo apt-get install wine64
sudo apt-get install calibre
mkdir -p ~/Downloads/kindle_dedrm/
cd ~/Downloads/kindle_dedrm/
# somehow get KindleForPC-installer-1.17.44170.exe
# check its hash
sha256sum KindleForPC-installer-1.17.44170.exe | grep 14e0f0053f1276c0c7c446892dc170344f707fbfe99b6951762c120144163200
wine64 ~/Downloads/kindle_dedrm/KindleForPC-installer-1.17.44170.exe &
# Enter your amazon account details, download your relevant books to the device etc.
wget https://github.com/apprenticeharper/DeDRM_tools/releases/download/v6.6.3/DeDRM_tools_6.6.3.zip
unzip DeDRM_tools_6.6.3.zip
# Install plugin (could also use Calibre's GUI)
calibre-customize --add DeDRM_calibre_plugin/DeDRM_plugin.zip
wget https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi
msiexec /i python-2.7.13.msi ALLUSERS=1
# Configure the calibre dedrm plugin with the correct wineprefix
# (could also use Calibre's GUI)
# (could also save it to a file and run, say,
# python add_wine_prefix_to_dedrm_config.py #)
python -c '
import json
import os
home = os.path.expanduser("~")
file = open(home + "/.config/calibre/plugins/dedrm.json", "r+")
dedrm_config = json.load(file)
dedrm_config["kindlewineprefix"] = home + "/.wine/"
file.seek(0)
json.dump(dedrm_config, file)
file.truncate()
file.close()
'
# Add all your Kindle books to the Calibre Library for automatic processing
calibredb add ~/Documents/My\ Kindle\ Content/*.azw --with-library="Calibre Library"
## (Optionally) list your books
# calibredb list --with-library="Calibre Library"
## (Optionally) export the first book
# calibredb export 1 --with-library="Calibre Library"
## (Optionally) export all your books
# calibredb export --all --with-library="Calibre Library"