记录一次网页PDF破解
我们要上汇编语言和接口技术这门专业课,但是因为疫情在家上网课,我们没有课本,老师给我们发了他购买的电子版的(有次数限制,发给我们的时候已经没了)我们只能看到一个没有文字的网页PDF,在网上找了好大一圈都没有这本书的PDF,没办法只能从破解文件下手
先用edge浏览器打开看看,如图
点击确定,F12
打开控制台,打不开应该是被禁用了
通过ctrl
+shift
+I
发现可以打开控制台,那就肯定是JS
限制的,通过VS Code
打开查看文件后能看到(设置(注释)这么明显,看来是个好程序员!!)
一个文件大概50+M,数据应该都在本地
继续在VS Code
中往下翻可以看到一段内容,如下
大致能猜测为base64
在格式化之后的代码中可以看到失败的alert
提示过期,上面就应该是成功的判断
复制粘贴去控制台运行(哎,成了)
这就运行出来了
这就是上面的主要代码了
var DEFAULT_URL = '';
var pdfUrl = document.location.search.substring(1);
if (null == pdfUrl || '' == pdfUrl) {
var BASE64_MARKER = ";base64,";
var preFileId = '';
var pdfAsDataUri = "data:application/pdf;base64," + PDFData;
var pdfAsArray = convertDataURIToBinary(pdfAsDataUri);
DEFAULT_URL = pdfAsArray;
function convertDataURIToBinary(data) {
var point = data.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
var b64 = data.substring(point).replace(/[\n\r]/g, '');
var raw = window.atob(b64);
var rawlength = raw.length;
var U8array = new Uint8Array(new ArrayBuffer(rawlength));
for (i = 0; i < rawlength; i++) {
U8array[i] = raw.charCodeAt(i) & 255;
}
return U8array;
}
}
原文档是用applocation/pdf
协议生成的pdf,同意我也可以用blob协议下载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文件拖入等待十几秒即可完成
License:
CC BY 4.0