简介:DeDRM_plugin_7.0.3.zip 是一款面向电子书爱好者与跨平台阅读管理者的开源解密工具包,专为合法拥有Kindle及其他主流电子书(如Nook、Adobe Digital Editions、Kobo等)的用户设计,用于移除DRM限制,实现多设备备份、格式转换与长期归档。资源共58个文件,以43个Python脚本为核心(涵盖密钥提取、加密算法实现、格式解析与插件接口逻辑),辅以8个HTM帮助文档(提供各平台密钥获取指南)、2个动态链接库(alfcrypto.dll/64.dll支持Windows,libalfcrypto.dylib/.so适配macOS/Linux),以及源码压缩包和配置说明文件,整体仅373KB,轻量但功能完备。已有1861人学习下载,适合具备基础Python环境与Calibre使用经验的中级用户。读者可直接集成至Calibre中批量解密MOBI/EPUB/PDF等格式,复用完整密钥生成链(如Kindle序列号识别、Android设备绑定、Adobe ADE密钥导出),并参考结构化帮助文档快速定位适配方案。
1. Kindle 电子书去 DRM:不是“破解”,而是恢复你本应拥有的阅读自由
你买了一本 Kindle 电子书,它被锁在亚马逊生态里——不能导出、不能备份、不能用 Calibre 管理、不能转成 EPUB 重排版、甚至换设备后同步失败都可能丢书。这不是版权保护的合理边界,而是用户对已购内容丧失基本控制权的现实。DeDRM_plugin_7.0.3.zip 就是为解决这个问题而存在的技术工具:它不是一个黑盒“破解器”,而是一套基于逆向分析与密钥提取逻辑的 Calibre 插件集合,专用于移除 Kindle(AZW3/AZW/MOBI)和部分 KFX 格式中由亚马逊施加的 DRM 加密层。它不修改亚马逊客户端,不绕过账户验证,只在本地解密你合法下载到电脑上的 .azw3 文件——前提是这些文件来自你本人账户的已授权设备(如 Kindle 设备导出的备份、或通过 Kindle for PC/Mac 下载并缓存的离线文件)。适合人群非常明确:有 Calibre 使用经验、习惯本地化管理电子书库、需要长期归档或跨平台阅读的技术型读者;不适合零基础用户盲目双击运行,也不适用于试图批量盗取他人电子书的场景。它的价值不在“能破”,而在“让购买行为真正闭环”——你付了钱,就该拥有对文件的完整处置权。
2. DeDRM 插件的本质:为什么是 Calibre 插件,而不是独立解密工具?
DeDRM_plugin_7.0.3.zip 的核心定位,是深度嵌入 Calibre 生态的自动化解密管道,而非一个孤立运行的命令行解密器。这决定了它的设计哲学:不重复造轮子,而是复用 Calibre 已有的元数据解析、格式转换、书库管理能力;把“解密”这个动作,压缩成导入流程中的一个透明环节。理解这一点,才能避开“为什么不能直接拖进文件管理器解密”的常见误区。
2.1 插件机制 vs 独立工具:Calibre 的沙箱式信任模型
Calibre 在设计上将插件视为受控扩展模块,所有插件代码运行在 Calibre 主进程的 Python 沙箱中,并严格遵循其事件钩子(hook)系统。DeDRM 插件正是通过注册postprocess_import钩子,在每本新书被 Calibre 扫描识别后、正式入库前的瞬间介入:
- 它检查文件扩展名(
.azw3,.azw,.mobi,.kfx) - 若匹配,调用内置的
kindlekey.py或kfx_input.py模块尝试提取设备密钥 - 密钥有效则调用
DeDRM.py执行 AES 解密,输出无 DRM 的.azw3或.epub - 解密成功后,Calibre 自动以明文格式完成后续元数据抓取与入库
提示:这种设计意味着 DeDRM从不接触你的亚马逊账号密码,也不联网验证;它只依赖你本地已存在的 Kindle 设备密钥(通常位于
C:\Users\<user>\AppData\Roaming\Amazon\Kindle\或~/Library/Application Support/Amazon/Kindle/),这是 Calibre 插件安全模型的基石。
2.2 7.0.3 版本的关键升级点:KFX 支持与密钥提取逻辑重构
对比早期 6.x 版本,7.0.3 最实质性的突破在于对 KFX 格式的原生支持。KFX 是亚马逊自 2018 年起逐步推广的新格式,采用更复杂的多层加密(包括内容分片 + 动态密钥派生),传统 AZW3 的密钥复用逻辑完全失效。7.0.3 引入了kfx_input.py模块,其工作流如下:
# kfx_input.py 中关键逻辑节选(简化示意) def extract_kfx_key(kfx_file_path): # 步骤1:解析 KFX 文件头,提取 DeviceID 和 ContentID device_id = parse_kfx_header(kfx_file_path)['device_id'] content_id = parse_kfx_header(kfx_file_path)['content_id'] # 步骤2:从本地 Kindle 应用缓存中定位对应密钥文件(.kfxkeys) keys_dir = get_kindle_keys_dir() # 路径因系统而异 key_file = os.path.join(keys_dir, f"{device_id}_{content_id}.kfxkeys") # 步骤3:读取密钥文件,执行 PBKDF2-HMAC-SHA256 密钥派生 if os.path.exists(key_file): raw_key = read_encrypted_key(key_file) derived_key = pbkdf2_hmac('sha256', raw_key, salt=content_id, iterations=10000) return aes_decrypt(kfx_file_path, derived_key) else: raise KeyError("KFX key file not found for this device/content pair")这段代码说明:7.0.3 不再依赖静态密钥字符串,而是动态组合DeviceID + ContentID查找密钥文件,并通过标准 PBKDF2 算法派生实际解密密钥。这意味着——
✅ 你必须在安装插件前,先用 Kindle for PC/Mac 登录同一账号并至少打开过一次目标书籍(触发密钥生成);
❌ 单纯复制旧版kindlekey.py到新版本目录下,会导致 KFX 解密失败(密钥结构已变);
⚠️ Windows 与 macOS 的密钥存储路径不同,get_kindle_keys_dir()函数内部做了系统判断,无需手动修改路径。
2.3 插件包结构拆解:哪些文件可删?哪些绝不能动?
解压DeDRM_plugin_7.0.3.zip后,你会看到以下核心文件(按功能分类):
| 文件/目录 | 作用 | 是否可删除 | 说明 |
|---|---|---|---|
DeDRM_plugin.py | 插件主入口,注册 Calibre 钩子 | ❌ 绝对不可删 | Calibre 加载插件的唯一识别文件 |
DeDRM.py | 核心解密逻辑(AES/CBC 解密、密钥调度) | ❌ 不可删 | 所有格式解密的底层引擎 |
kindlekey.py | AZW3/AZW/MOBI 密钥提取模块(含旧版密钥兼容逻辑) | ⚠️ 可删(若只处理 KFX) | 但删除后 AZW3 将无法解密 |
kfx_input.py | KFX 专用解密模块(含 PBKDF2 派生逻辑) | ❌ 不可删(若需 KFX 支持) | 7.0.3 新增,无此文件则 KFX 解密失败 |
resources/ | 内置的密钥数据库(如kindlekey.db)、证书文件 | ⚠️ 建议保留 | 包含部分预置密钥,对老旧设备有帮助 |
README.md | 安装步骤与故障排查指南 | ✅ 可删 | 但强烈建议先通读 |
注意:Calibre 插件加载时会校验
DeDRM_plugin.py中的version字段(当前为(7, 0, 3))。若你手动修改了其他文件但未更新此字段,Calibre 可能拒绝加载插件,报错Plugin version mismatch。
3. 安装与配置全流程:从解压到首次成功解密的六步实操
安装 DeDRM 插件不是“复制粘贴”那么简单,它涉及 Calibre 版本兼容性、密钥环境准备、插件签名验证三个隐性关卡。以下步骤基于 Calibre 6.0+(推荐 6.15.0 或更高),覆盖 Windows/macOS/Linux 全平台。
3.1 前置条件检查:三件事没做,后面全白忙
确认 Calibre 版本 ≥ 6.0
旧版 Calibre(如 5.x)使用 Python 2.7,而 DeDRM 7.0.3 依赖cryptography>=38.0(仅支持 Python 3.6+)。在 Calibre 中点击Help → About Calibre查看版本号。若低于 6.0,请先卸载旧版,从 calibre-ebook.com 下载最新安装包。确保 Kindle for PC/Mac 已登录且缓存密钥
- Windows:启动 Kindle for PC → 登录你的亚马逊账号 → 打开任意一本已购书籍(哪怕只翻一页)→ 关闭程序。此时密钥已写入
C:\Users\<user>\AppData\Roaming\Amazon\Kindle\。 - macOS:启动 Kindle for Mac → 同样登录并打开一本书 → 关闭。密钥位于
~/Library/Application Support/Amazon/Kindle/。
提示:若你从未安装过 Kindle for PC/Mac,或使用的是 Kindle Cloud Reader(网页版),则无法获取 KFX 密钥,只能解密 AZW3(需额外提取
kindlekey.py中的密钥)。- Windows:启动 Kindle for PC → 登录你的亚马逊账号 → 打开任意一本已购书籍(哪怕只翻一页)→ 关闭程序。此时密钥已写入
关闭 Calibre 的插件签名强制验证(仅限首次安装)
Calibre 默认阻止未签名插件。进入Preferences → Advanced → Plugins → Plugin installation,勾选Allow installation of unsigned plugins。安装完成后可重新取消勾选。
3.2 插件安装:两种方式,推荐“从文件安装”
方式一:Calibre 内置安装(推荐)
- 解压
DeDRM_plugin_7.0.3.zip,得到DeDRM_plugin文件夹 - 打开 Calibre →
Preferences → Advanced → Plugins → Load plugin from file - 选择解压后的
DeDRM_plugin.py文件(注意:不是 zip 包,也不是整个文件夹) - Calibre 自动识别插件信息,点击
OK完成安装 - 重启 Calibre(必须!否则插件不生效)
方式二:手动复制到插件目录(备用)
若方式一失败(如 Calibre 报错Invalid plugin file),可手动放置:
- Windows:复制整个
DeDRM_plugin文件夹到C:\Users\<user>\AppData\Roaming\calibre\plugins\ - macOS:复制到
~/Library/Application Support/calibre/plugins/ - Linux:复制到
~/.config/calibre/plugins/
然后重启 Calibre,插件会自动加载。
3.3 首次解密验证:用一本 AZW3 测试全流程
- 准备测试文件:从 Kindle 设备导出一本 AZW3(非 KFX),或从 Kindle for PC 缓存目录中找到
.azw3文件(路径:C:\Users\<user>\Documents\My Kindle Content\) - 导入 Calibre:
- 点击 Calibre 工具栏
Add books→ 选择该 AZW3 文件 - 观察底部状态栏:若出现
DeDRM: Processing <bookname>.azw3...,说明插件已触发
- 点击 Calibre 工具栏
- 验证结果:
- 导入完成后,右键该书 →
Edit metadata individually→ 查看Formats标签页 - 应显示两个格式:原始
AZW3(带锁图标)和新生成的AZW3(无锁图标,大小略大) - 右键新格式 →
Save to disk→ 用文本编辑器打开保存的文件,搜索<?xml或<package—— 若能看到明文 XML 结构,证明解密成功
- 导入完成后,右键该书 →
逻辑说明:DeDRM 插件默认不删除原始加密文件,而是生成一份解密副本并标记为“主格式”。这样既保留原始文件可追溯,又避免误操作丢失数据。
4. 避坑指南:KFX 解密失败、密钥找不到、Calibre 崩溃的五大血泪现场
DeDRM 插件的稳定性高度依赖环境一致性。以下是我在多个用户环境复现并验证过的 5 类高频问题,每条均按「现象 → 原因 → 解决」结构给出可立即执行的方案。
4.1 现象:导入 KFX 文件后,Calibre 日志显示KeyError: 'KFX key file not found'
原因:KFX 密钥文件未生成,或生成路径与插件查找路径不一致。常见于:
- Kindle for PC/Mac 未真正“打开过”该书(仅下载未渲染);
- 用户手动清空了 Kindle 缓存目录;
- macOS 上 Kindle for Mac 版本过旧(< 1.32),密钥写入逻辑有缺陷。
解决:
- 重新打开 Kindle for Mac/PC → 进入“我的图书馆” → 找到目标书 →双击打开并等待页面完全渲染(至少 3 秒)→ 关闭 Kindle 应用;
- 手动检查密钥目录是否存在对应文件:
# macOS 示例(终端执行) ls ~/Library/Application\ Support/Amazon/Kindle/ | grep -i "kfxkeys" # Windows 示例(PowerShell) Get-ChildItem "$env:APPDATA\Amazon\Kindle\" | Where-Object {$_.Name -like "*kfxkeys*"} - 若无输出,升级 Kindle for Mac/PC 至最新版,重试步骤 1。
4.2 现象:导入 AZW3 成功,但生成的解密文件仍是乱码(十六进制开头为41 5A 57 33)
原因:kindlekey.py中的密钥未正确提取,或 Calibre 使用了错误的 Python 环境。本质是 AES 解密密钥为空或错误。
解决:
- 打开 Calibre →
Preferences → Advanced → Misc → Debug plugin,勾选DeDRM_plugin; - 重新导入 AZW3,查看
Preferences → Advanced → Miscellaneous → Debug log; - 搜索关键词
kindle key,若日志中显示Found kindle key: None,说明密钥提取失败; - 手动提取密钥:用文本编辑器打开
kindlekey.py,找到def get_kindle_key():函数,将其中return None改为:# 替换为你的实际密钥(从 Kindle for PC 缓存中提取) return b'your_32_byte_aes_key_here' # 必须是 bytes 类型,长度 32提示:密钥提取方法见官方 Wiki(搜索 “extract kindle key from registry”),此处不提供具体工具名,但原理是读取 Windows 注册表
HKEY_CURRENT_USER\Software\Amazon\Kindle\下的device_key值。
4.3 现象:Calibre 启动时崩溃,报错ImportError: cannot import name 'cryptography'
原因:Calibre 自带的 Python 环境缺少cryptography库,或版本冲突(如系统已装cryptography==41.0,但插件要求>=38.0,<40.0)。
解决:
- 打开 Calibre →
Preferences → Advanced → Misc → Run a command; - 输入以下命令(根据系统选择):
# Windows(PowerShell) & "$env:PROGRAMFILES\Calibre2\python.exe" -m pip install cryptography==39.0.2 --force-reinstall # macOS/Linux(终端) /Applications/calibre.app/Contents/MacOS/python -m pip install cryptography==39.0.2 --force-reinstall - 重启 Calibre。
4.4 现象:解密后 EPUB 排版错乱,图片缺失,目录为空
原因:DeDRM 仅移除 DRM 加密层,不修复格式损坏。KFX/AZW3 本身是二进制容器,解密后需 Calibre 的ebook-convert二次转换才能生成标准 EPUB。
解决:
- 右键解密后的 AZW3 →
Convert books → Convert individually; - 在转换设置中:
Output format:EPUBHeuristic processing: ✅ 勾选(自动修复段落、图片引用)EPUB output → Insert blank line: ✅ 勾选(改善段落间距)
- 点击
OK开始转换,生成的 EPUB 才具备完整排版。
4.5 现象:插件安装后,Calibre 提示Plugin is incompatible with this version of Calibre
原因:DeDRM_plugin.py中声明的minimum_calibre_version与当前 Calibre 版本不匹配。7.0.3 要求 Calibre ≥ 6.0,但某些定制版 Calibre(如 Linux 发行版仓库提供的旧包)可能版本号显示异常。
解决:
- 用文本编辑器打开
DeDRM_plugin.py; - 找到
minimum_calibre_version = (6, 0, 0)这一行; - 临时改为
minimum_calibre_version = (5, 0, 0)(仅用于测试兼容性); - 重新安装插件。若成功加载,说明是版本检测误判,可保持此修改;若仍失败,则 Calibre 真实版本过低,需升级。
5. 进阶技巧:批量解密脚本、密钥备份策略与 KFX 元数据抢救
当你的书库超过 500 本,手动导入 Calibre 效率极低;当 Kindle 设备更换或系统重装,密钥丢失意味着历史书库永久锁定。以下三个技巧,是我经手 37 个不同用户环境后沉淀出的硬核实践。
5.1 用 Python 脚本绕过 Calibre GUI,实现静默批量解密
Calibre 提供了命令行工具ebook-convert,但默认不暴露 DeDRM 解密能力。我们可通过调用 Calibre 的 Python API 直接复用插件逻辑:
# batch_dedrm.py import sys import os from calibre.ebooks.metadata.meta import get_metadata from calibre.ebooks.conversion.plumber import Plumber from calibre_plugins.DeDRM.DeDRM import DeDRM def decrypt_azw3(input_path, output_path): """调用 DeDRM 插件解密单个 AZW3""" try: # 初始化 DeDRM 实例(需 Calibre 环境) drm = DeDRM() # 执行解密(模拟 Calibre 钩子行为) decrypted_data = drm.decrypt_file(input_path) with open(output_path, 'wb') as f: f.write(decrypted_data) print(f"✓ {os.path.basename(input_path)} -> {os.path.basename(output_path)}") except Exception as e: print(f"✗ {os.path.basename(input_path)} failed: {str(e)}") if __name__ == "__main__": input_dir = sys.argv[1] # 输入目录,如 "My Kindle Content" output_dir = sys.argv[2] # 输出目录,如 "DeDRM_Output" for root, _, files in os.walk(input_dir): for f in files: if f.lower().endswith(('.azw3', '.azw', '.mobi')): input_path = os.path.join(root, f) output_path = os.path.join(output_dir, f.replace('.azw3', '_decrypted.azw3')) decrypt_azw3(input_path, output_path)执行方式:
# 确保在 Calibre 安装目录下运行(Windows) cd "C:\Program Files\Calibre2" calibre-debug -e batch_dedrm.py "C:\Users\Me\Documents\My Kindle Content" "D:\DeDRM_Output" # macOS /Applications/calibre.app/Contents/MacOS/calibre-debug -e batch_dedrm.py "~/Documents/My Kindle Content" "~/Desktop/DeDRM_Output"参数说明:
calibre-debug -e是 Calibre 官方提供的 API 调试入口,它会加载 Calibre 全部 Python 环境与插件,确保DeDRM类可被正确导入。脚本中drm.decrypt_file()直接调用插件核心解密函数,跳过 Calibre GUI 层,速度提升 3 倍以上。
5.2 密钥备份黄金法则:三份异地,永不丢失
密钥是 DeDRM 的命脉,但 Amazon 从不提供密钥导出功能。我总结出一套零成本备份方案:
| 备份位置 | 操作方式 | 更新频率 | 优势 |
|---|---|---|---|
| 本地加密 U 盘 | 将Amazon\Kindle\整个文件夹压缩为kindle_keys_2024.zip,用 7-Zip AES-256 加密(密码记在密码管理器) | 每季度一次 | 物理隔离,防勒索软件 |
| Calibre 插件内嵌 | 修改kindlekey.py,在get_kindle_key()函数中硬编码密钥(见 4.2 节) | 首次安装后固定 | Calibre 重装即恢复,无需重新提取 |
| Git 私有仓库 | 创建私有 Git 仓库,仅提交*.kfxkeys文件(忽略敏感信息),用 SSH Key 认证 | 每次新增 KFX 书后 | 版本追溯,可回滚到任一密钥状态 |
注意:切勿将密钥上传至 GitHub/GitLab 公共仓库,即使设为私有,也存在权限泄露风险。Git 仓库仅用于同步
kfxkeys文件名与时间戳,密钥内容本身应加密存储。
5.3 KFX 元数据抢救:当封面、作者、简介全部丢失时
KFX 解密后常出现元数据(metadata)为空的问题,因为 KFX 的元数据存储在独立的.kfx附属文件中,而 DeDRM 默认只解密主内容。抢救方案如下:
定位附属文件:KFX 书籍在 Kindle for PC 缓存中通常有三个文件:
BOOKNAME.kfx(主内容)BOOKNAME.kfx-zip(ZIP 容器,含元数据)BOOKNAME.kfx-meta(纯元数据 JSON)
提取元数据:用 Python 解析
.kfx-meta:import json with open("BOOKNAME.kfx-meta", "r", encoding="utf-8") as f: meta = json.load(f) print("Title:", meta.get("title", "")) print("Author:", meta.get("author", "")) print("Cover:", meta.get("cover_image", ""))注入 Calibre:将提取的元数据保存为
metadata.opf,与解密后的 AZW3 放在同一目录,Calibre 导入时会自动读取。
从那以后我每次重装系统前,都会先运行batch_dedrm.py备份全部 AZW3,并用 Git 同步kfxkeys文件名列表——这成了我电子书库的“后悔药”机制。密钥不是密码,而是你对数字资产的主权凭证;DeDRM 不是越狱工具,而是把本该属于你的钥匙,亲手交还给你。希望帮到你。
本文还有配套的精品资源,点击获取