金昌市网站建设_网站建设公司_Node.js_seo优化
2026/1/17 15:28:37 网站建设 项目流程

中国台湾电子书主流平台之一的读墨Readmoo拥有十分全面的书库,虽然其使用的支付平台为 藍新金流NewebPay 导致不支持银联UnionPay,国内发卡行的VISA/MasterCard也可能拒付,对中国大陆并不友好。
但是出于读墨采用了非常简单的Readium LCP加密形式,我们只要挖出其主密钥或Passphrase,即可完成全盘破解。所以进行了尝试,并在此公开大致思路和流程。

让我们从事后诸葛亮的较为简单的路线来讲解思路。

判定加密方式

随便挑选一本免费电子书作为测试,下载下来后,通过Filza浏览数据目录可以看到一个LCPL文件,EPUB结构里有encryption.xml,图像和XHTML被加密过。
这是典型的Readium LCP加密

寻找解法

打开LCPL文件,可以看到Readmoo使用了RSAv1_5加密用户密钥(User Key)和内容密钥(Content Key)。根据Readium LCP标准,再观察encryption.xml,内容解密都采用SHA256,Key为内容密钥(Content Key),IV直接就是文件头16字节。
那我们的首要目标就是挖出适用于内容密钥解密的RSA私钥。

使用IDA Pro打开可执行文件,观察到Readmoo并没有静态链接OpenSSL库,那么其一定使用了iOS标准API进行解密,即 CCCryptCC_SHA256SecKeyDecryptSecKeyCreateDecryptedData

在可执行文件中只有SecKeyDecrypt,那就是它了。
观察CC_SHA256的Xref可以发现其主要用在用户数据收集上,和主解密流程关系不大。而CCCrypt只用在了一个函数上,该函数几乎集成了全部的解密需求。

那就好办了,编写一个frida脚本,直接勾CCCryptSecKeyDecrypt即可。

观察抓取到的SecKeyDecrypt第一个参数SecKeyRefAttributes,发现V_Data项直接就是RSA的二进制表示,而extr标识标记为1,标明该RSA是可导出的。
改进frida脚本,使其直接打印规范的PEM文件到终端,复制保存即可。

解密

用Base64解码LCPL文件中的Content Key,然后读取PEM私钥,使用RSAv1_5进行解密,就得到了直通全部内容的钥匙。
按照encryption.xml中的标记,对文件进行解密即可。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询