美文网首页后浪 · 正青春
记一次跟随跟随吾爱大佬帖子破解有限制的网页pdf

记一次跟随跟随吾爱大佬帖子破解有限制的网页pdf

作者: 日之朝矣 | 来源:发表于2021-09-08 23:01 被阅读0次

    起因:


    R语言老师发了一个压缩包,压缩包内有两个HTML格式的文件,解压出来打开HTML文件,却发现内容是以PDF形式展示的,而且在右上角还有着授权码,剩余阅读次数,看着这些玩意儿,我陷入了沉思,原来PDF也能加密了吗?!


    自己尝试搞:


    既然是老师发的东西,肯定是好多人都一起用的,这限制了阅读次数,那还让不让人看了,我这边看十次,别人不都看不了了,不行,得想办法整一下。

    第一次

    第一个想到的方法是直接HTML转PDF,用各种转换器如:福昕高级PDF编辑器,PDFCandy,网页在线转换。

    • 福昕高级PDF编辑器:error
    • PDFCandy:转换出来的PDF只有1KB,打开无内容
    • 在线HTML转PDF:超过文件大小限制

    结果:全灭

    第二次

    第二个想到的方法是PDF去密码工具,然后反应过来,我这现在还是HTML格式,没法用。

    第三次

    第三个方法:网络搜索! 抱着试一试的心态先去 吾爱破解论坛 搜了一下,好家伙,还真有,可怜巴巴的两个搜索结果正好有一个符合我的需求,这里链接奉上:

    记一次有限制的网页pdf破解- 吾爱破解

    跟随大佬帖子进行操作


    帖子里只是记录了大佬的破解过程,看了下大概,我觉得我也可以重现!

    初步分析

    首先是打开控制台,F12没用,ctrl+shift+i或者直接从浏览器选项的更多工具里都能打开,估计是js里把F12禁用了吧,用VSCode打开这个网页文件,前面代码还真是这样


    直接用浏览器打开这玩意儿,显示的是这样(自己作死想试试剩余阅读次数为0次时会发生什么,然后就把阅读次数消耗完)

    一个html却有40多M,数据肯定都在本地,这点大佬的帖子里指出来了,而且直接猜测是base64。
    直接往后看,看到了三个eval(),这个玩意儿当时在学js的时候看到过,但没看懂到底该咋用

    接受一个参数,如果eval()被调用时,会将参数解释为实际的ECMAScript语句,然后插入当前位置,通过eval()执行的语句属于调用位置的上下文

    算了还是跟着大佬继续往下看,在弹窗出现时断点,然后点确定,断到后,格式化下代码,发现了一些东西


    往下翻一下,同样找到了这玩意儿,果然,,我这份PDF和大佬那份是同一个类型的限制,虽然大佬在文章里吐槽过一次这个判断,我也想再吐槽一次,这特么,直接摆明了呗。


    之后两种方式来去除限制
    先把msg == 'true'时,里面的代码复制一下

    第一种

    在打开文件后,网页弹窗 “您阅读时间已经到期…………” 时,点一次确定,然后刷新,这次弹窗后先别点确定,ctrl+shift+i打开开发人员工具,找到控制台,把复制到的东西直接粘贴到输入栏,点回车,然后会发现没反应,控制台的东西压根就没发出去,就像自己没点到回车一样,这都是正常的,再点一下弹窗的确定,会发现已经能正常阅读了,控制台的代码也发出去成功运行了。这也是帖子中大佬的操作,个人感觉每次打开都要搞一遍挺烦的,直接看第二种方法吧。

    这里大佬进行了一步代码解密,无奈我实在太菜,重现不了大佬这一步,但是对之后的操作没有影响

    第二种

    到这里后,用vscode打开这个HTML,找到这个地方,if里面的东西剪切出来,然后把判断给删掉保存,就完事了,虽然不是PDF格式,但没了阅读限制,正常使用是没问题了,也能发给别人用了。

    提取密码,保存为PDF

    在通过上一步第一种方法时,能看到一瞬间的密码输入框,翻了翻帖子发现,之后PDF提取出来后,PDF是含有密码的。
    大佬列出了两种方法,无奈看不懂JS解密法,还是滚回去看劫持事件法吧。

    劫持事件法

    在开发者工具里的Element中,找到那一瞬间的密码输入框在html中的位置,给确定按钮加一个断点


    然后刷新页面,点击弹窗里的确定,这时候开发者工具会自动跳出来

    格式化代码

    点击3的位置,定位到修改代码的地方,给这里加上断点this.input.value指的应该就是输入框里的密码了

    之后的操作震惊到我了,原来还可以这样!
    加上断点后刷新页面


    恢复执行,然后格式化代码,鼠标放在this.input.value上,密码便出现了,就是%qwerASDF.+,这个密码就是PDF文档的密码

    下载PDF

    把下面代码复制到控制台,执行,便能得到PDF文件,PDF的密码就是上一步的密码

    var bstr = atob(PDFData)//atob()方法将base64数据解码
    var leng = bstr.length//获取文件长度
    var u8arr = new Uint8Array(leng)//新建Uint8数组存放字节
    while(leng--){
        u8arr[leng] =  bstr.charCodeAt(leng)//转Unicode编码
    }
    const blob = new Blob([u8arr], {type:'application/pdf'});//新建blob协议
    const fileName = `jiemipdf.pdf`;//文件名
    const link = document.createElement('a');//新建a链接标签
    link.href = window.URL.createObjectURL(blob);//添加下载地址
    link.download = fileName;//文件名
    link.click();//模拟点击事件
    window.URL.revokeObjectURL(link.href);//执行下载操作
    

    总结

    虽然我几乎是跟着大佬完全来了一遍,但成功将PDF整出来的成就感还是满满的,吾爱论坛注册三年了,第一次成功跟着大佬完成了破解,泪目,老白嫖怪了。

    相关文章

      网友评论

        本文标题:记一次跟随跟随吾爱大佬帖子破解有限制的网页pdf

        本文链接:https://www.haomeiwen.com/subject/cvmpwltx.html