JS逆向 关于某文库在线阅读PDF的技术分析

admin 2024年11月11日10:45:49评论12 views字数 1533阅读5分6秒阅读模式

前一段时间XX文库出现了一个bug,在线阅读PDF给的是无加密的版本,当时爬虫很多导致访问速度变慢,为了防范爬虫弄了验证码和IP访问限制,就在前几天终于把这个bug修好了,具体时间也许有出入,不过这并不重要,重要的是新版本PDF全部换成了DRM加密的,经过我的分析XX文库其实用了Foxit PDF SDK的DRM加密,不出意外的使用了wasm,凭我的水平是无法逆向出来加密算法的,但我想到了一个曲线救国的方法,在我查看Foxit PDF SDK资料的时候发现,完整功能的在线PDF阅读是包含打印功能的,而XX文库把打印功能禁用了,因此我只需要用Foxit PDF SDK在本地搭一个服务器,然后用XX文库的DRM信息进行解密就可以本地查看PDF了,然后本地可以打印PDF,至此就完成了曲线救国的方法,此时还有个小问题,打印的PDF会缺失目录,直接通过Foxit导出目录比较麻烦,需要对他的库很熟悉再进行hook应该可以实现,但我发现了更简单的方法,在书籍详情页是有目录的,只需把网页的目录拿到格式化输出即可,最开始想着对网页标签元素下手,在用ChatGPT写了一些代码后发现不怎么好处理层级关系,然后就想着能不能绕过,也许目录数据是异步加载渲染的,最终发现目录直接存在vNodes数组变量中,后面的事情就简单了,和ChatGPT沟通后写出了导出目录的js代码,直接在console中运行即可,上面的思路我都已经实现了,由于我写的只是思路,因此并没有给出技术细节,具体的细节留给大家去探索,第一次发技术帖还是有点小激动的,上面看似轻描淡写给出的思路,实际上是经过很多探索得到的,因此想着发帖纪念一下,最后附上导出目录的代码吧:

// 定义一个变量存储所有输出的文本块var output = "";// 定义一个函数来计算层级,直到 pId = 0function getIndentLevel(node, nodes) {    let level = 0;    let currentNode = node;    // 遍历找父节点,直到 pId = "0"    while (currentNode.pId !== "0") {        level++; // 每找到一层父节点就增加一级缩进        currentNode = nodes.find(n => n.id === currentNode.pId); // 找到父节点    }    return level;}// 遍历 zNodes 数组for (var i = 0; i < zNodes.length; i++) {    var currentNode = zNodes[i];    var name = currentNode.name;    var url = currentNode.url;    // 使用正则表达式提取 bookPageNum    var bookPageNumMatch = url.match(/bookPageNum=(d+)/);    var bookPageNum = bookPageNumMatch ? bookPageNumMatch[1] : "No bookPageNum";    // 计算当前节点的缩进级别    var indentLevel = getIndentLevel(currentNode, zNodes);    // 用制表符缩进    var indent = "t".repeat(indentLevel);    // 将当前节点的 name 和 bookPageNum 通过制表符分隔,并追加到输出文本中    output += indent + name + "t" + bookPageNum + "n";}// 最后一次性输出整个文本块console.log(output);

· 今 日 推 荐 ·

PC逆向 -- 系统调用

扫描二维码下载学习视频

JS逆向  关于某文库在线阅读PDF的技术分析

本文内容来自网络,如有侵权请联系删除

JS逆向  关于某文库在线阅读PDF的技术分析

原文始发于微信公众号(逆向有你):JS逆向 -- 关于某文库在线阅读PDF的技术分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月11日10:45:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JS逆向 关于某文库在线阅读PDF的技术分析https://cn-sec.com/archives/3382450.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息