^-^
刘润钦的个人博客
科学文库下载助手 v4.0 发布
字数:523   |   时长:1分钟   |   阅读:
  1. 📥 安装与下载
  2. ✨ 两种下载模式
    1. ⚡ AES 解密下载(推荐)
    2. 🔒 SDK 提取(备用)
  3. 🚀 使用方法
  4. 🛠️ 技术原理

基于 Tampermonkey(油猴)的浏览器脚本,专为 科学文库 (book.sciencereading.cn) 设计,一键解密下载 DRM 保护的 PDF。

v4.0 相比 v2.5 进行了彻底重写,新增了直接 AES 解密模式,并修复了大文件场景下的稳定性问题。

📥 安装与下载

脚本托管在 GitHub,安装前请确保浏览器已有 Tampermonkey 或类似扩展。

✨ 两种下载模式

⚡ AES 解密下载(推荐)

直接逆向 Foxit ConnectedPDF DRM 加密,全程在浏览器内完成:

  1. 调用服务器 API 获取当前书籍的 AES 密钥(contentKey
  2. 下载加密原始 PDF
  3. 原位 AES-128-CBC 解密——不改变任何字节偏移,无需重建 xref 交叉引用表
  4. 自动剥离 CPDF 包装层(封面页外壳),恢复完整页面树
  5. 同步解密书签标题等加密字符串

优点:速度快、支持 200MB+ 大文件、书签完整。

🔒 SDK 提取(备用)

在隐藏 iframe 中加载官方福昕阅读器,复用其 WASM 解密,再导出干净 PDF。

适合 AES 模式遇到异常时的备用选项,速度较慢(需等待阅读器初始化,约 30~60 秒)。

🚀 使用方法

  1. 安装脚本
  2. 打开 科学文库 任意书籍详情页
  3. 登录账号(必须有阅读权限)
  4. 点击页面上的 「⚡ AES解密下载」 按钮(或备用的 「🔒 SDK提取」
  5. 等待状态栏显示完成,浏览器自动保存 PDF

🛠️ 技术原理

Foxit ConnectedPDF DRM 加密方案(通过逆向 gsdk.wasm 分析得到):

参数
算法AES-128-CBC
密钥contentKey(16 字节,从服务器 API 下发)
IV全零
加密范围所有 stream 数据 + 书签/元数据字符串

Web Crypto API 不支持零填充 AES,通过在密文末尾追加一个特殊计算的块使解密符合 PKCS#7 验证,再截取前 N 字节即为原始数据。

如果遇到问题,欢迎在 GitHub 提 issue 或者直接评论。

上一篇 岱宗盒子 —— 交兵安卓工具箱发布 下一篇 晴纸 —— 我的博客主题开源了