云展网加密书籍算法解密
本帖最后由 涛之雨 于 2022-8-8 13:28 编辑# 绪论
(好久没发帖了)
本帖起因
> python下载云展网书籍并合并为PDF
> https://www.52pojie.cn/thread-1672367-1-1.html
> (出处: 吾爱破解论坛)
# 定位
定位到解密代码的位置
这里不赘述,页面里有一个`iframe`,`iframe`中为核心预览页,抓包发现有zip文件下载,并且如图所示,请求了zip文件后,继续请求了带有`PDF`magic头的`blob`协议,多半就是本地解密后丢到pdf里运行了。。
`PDFjs`库不会取消过程中产生的`blob`链接,新页面打开,发现有密码,
根据请求堆栈找一下密码计算的位置,这密码不就有了么
啥?不会?~~(这都不知道就不要学了)~~行!我录gif动画!
还是看不懂?=_=那我确实是没办法了,要不多看看?
然后就是下载zip,解压试一下。。。emmm好像`zip`文件也加密了,打不开,magic头也不对。
该分析解密部分了。
# 解密
反正解密的地方都找到了,分析就完了。
>试读结束,以下内容为付费阅读部分,请先自觉到文末免费评论,再返回此处继续阅读
---
(↑↑人与人之间的信任↑↑)
(中国人不骗中国人)
解密的核心代码:
请求连接,获取到`x.zip`文件(图中`response`,二进制数据,下称:`zip数据`),
其中,获取到的`zip数据` 第`1083`位 至 倒数`1003`位 为`加密后的pdf数据`(图中`blob`定义处)
(好嘛,不是什么所谓的zip文件)
`zip数据`的 第`1080`位 至 第`1083`位 的十六进制字符串为密码的前半截,
后半截为`zip数据` 倒数第`1003`位 至 倒数第`1000`位 的十六进制字符串
两段密码拼接为完整密码
pdf密码到此结束。
pdf文件本身还需要进行解密,
`加密后的pdf数据`前4000位字节码依次被`255`减去即为原始数据(似乎就是`unsigned int`取反)
# 检验
静态分析完,进行验证。
下载`1.zip`,16进制打开。
读取第`1080`位 至 第`1083`位 的十六进制字符串(注意是10进制),进行对比。
|||
| ------------------------------------------------------------ | ------------------------------------------------------------ |
读取 倒数第`1003`位 至 倒数第`1000`位 的十六进制字符串,进行对比。(注意从文件末尾向前查找)
|||
| ------------------------------------------------------------ | ------------------------------------------------------------ |
> 大部分编辑器可以通过快捷键`Ctrl + G`跳转
>
> 010 Editor可以通过`<xxx`从文件末尾向前进行跳转
>
> 其余软件请自行斟酌。
随手写个js脚本放到console控制台里跑一下,把解密后的数据粘贴回16进制编辑器。
```js
`DA AF BB B9 D2 CE D1 CB F5 DA 38 13 70 5D F5 DA
...............这里省略好多行.....................
DA B6 91 89 90 9C 9E 8B 96 90 91 C5 DF 8F 9E 8B`.split(/ |\n/g).filter(a=>a).map(a=>(255-Number("0x"+a)).toString(16)).join(" ")
```
脚本附在上面
输入pdf密码`zOTibU`,成功解密。
# 成品
算法都给你了,自己写。 瑾年Lee 发表于 2022-8-8 17:30
有没有大佬解惑下那个js脚本怎么用,复制下载的PDF文件编码发现运行不出来
那个脚本是手动复制删除多余字节后pdf的前4000位十六进制字符串,粘贴到前面的那两个`之间,敲回车后就会计算出255减去每个值的数值并且转为16进制,console里会显示部分,后面会有“复制”,点击复制,粘贴回pdf里就可以了
(其实py的话也就几行,也不需要什么库,但是py需要环境。。。) 图片没有显示出来 写的不错咩~~ 虽然看不懂,担佩服之情连绵不绝 算了,我还是下载成品去吧! 大佬牛啊先收藏了再说 本想给你1000CB,想想还是让你自己来拿!:lol
写的不错咩 大佬厉害 大佬威武 http://pic.rmb.bdstatic.com/bjh/703625a5bdb22c0fb07c81e1396eb218.png