ygcaicn / keledge

可知pdf下载(文字版)/高教书苑pdf下载/悦读全文pdf下载
41 stars 53 forks source link

如何解密AES-CBC加密的图片呢 #12

Closed sdieedu closed 4 years ago

sdieedu commented 4 years ago

http://2020lib.ebook.hyread.com.cn/bookDetail.jsp?id=37564 讯号与系统 书翻页的时候,先传一个js文件,https://service.ebook.hyread.com.cn/ebookservice/epubreader/hyread/v3/public/b2522d7717.w.js 一个图片文件 https://service.ebook.hyread.com.cn/ebookservice/comic/CyU3LKyaz91bBMqf0Uhyku9GN9XWl06a5VtF-ueHEDtfp87TLLCCldWKKcO562ewEgEBczJcvLqWzinjGKmjMrHkRv1LZdBjyf0S0Y641tw/5Yug6o2s65eg5IKz5Zav6IGD74Gi6rmU6qia47-_6Jm24K62?assetUUID=8a8a84ca5c1b0382015f6b043e627a1e js显示是AES-CBC。 重点:想知道:如何利用js文件解密那个图片地址传来的图片。

其实:每一页解密后的图片可以开发工具里面都可以看到,是: blob:https://service.ebook.hyread.com.cn/9db64c6a-8ebe-497d-8f47-abbf20d71853 关键是blob的无法下载,只能另存为,特痛苦。

ygcaicn commented 4 years ago

稍微看了一下应该是b2522d7717.w.js XHR去请求加密图片地址,请求完之后解密生成blob对象,最后把blob对象给html dom的src,也就是blob:https://service.ebook.hyread.com.cn/9db64c6a-8ebe-497d-8f47-abbf20d71853这个blog后面的地址就是bolb对象的标记,没有实际意义

另外b2522d7717.w.js本身又由其它js Ajax请求来的,我尝试overwrite会出现同源限制。要想要overwrite还要找到他的initiator,进行overwrite。

综上,解密我也没有什么好办法。

笨办法倒是有:模拟点击加载全部,下载每个blob

function saveBlob(url, name){
    var link = document.createElement('a');
    link.href = url;
    link.download = name;
    link.click();
}
saveBlob("blob:https://service.ebook.hyread.com.cn/9db64c6a-8ebe-497d-8f47-abbf20d71853", "1.jpg")

全部下载大概可以这样:

var page = 1;
var t = setInterval(function(){
    url = $("xxxx")...;
    name = `${page}.jpg`;
    saveBlob(url, name);
    page+=1;
    if(p>allpages)
       clearInterval(t);
    click_next()
},1000)
sdieedu commented 4 years ago

非常感谢大侠的提示,问个问题: 你的函数最后一句 saveBlob("blob:https://service.ebook.hyread.com.cn/9db64c6a-8ebe-497d-8f47-abbf20d71853", "1.jpg")

问题是:例子里面的blob后面的标识数字标识 9db64c6a-8ebe-497d-8f47-abbf20d71853 每次都变化,如何修正上面这个指令?

blob:https://service.ebook.hyread.com.cn/9db64c6a-8ebe-497d-8f47-abbf20d71853

ygcaicn commented 4 years ago

saveBlob("blob:https://service.ebook.hyread.com.cn/9db64c6a-8ebe-497d-8f47-abbf20d71853", "1.jpg")

saveBlob("blob:https://service.ebook.hyread.com.cn/9db64c6a-8ebe-497d-8f47-abbf20d71853", "1.jpg") 是使用demo,具体见下方setInterval的代码啊

sdieedu commented 4 years ago

热心楼主谢谢 任意一本书http://2020lib.ebook.hyread.com.cn/bookDetail.jsp?id=37564 阅读后都会到: https://service.ebook.hyread.com.cn/ebookservice/epubreader/hyread/v3/reader.jsp 打开开发工具的控制台,输入 var page = 1; var t = setInterval(function(){ url = $("https://service.ebook.hyread.com.cn/ebookservice/epubreader/hyread/v3/reader.jsp")...; name = ${page}.jpg; saveBlob(url, name); page+=1; if(p>allpages) clearInterval(t); click_next() },1000)

function saveBlob(url, name){ var link = document.createElement('a'); link.href = url; link.download = name; link.click(); }

URL我无论如何选择:比如 url = $("https://service.ebook.hyread.com.cn/ebookservice/epubreader/hyread/v3/reader.jsp")...; 或者 url = $("http://2020lib.ebook.hyread.com.cn/service/ebookService.jsp?act=previewBook&brn=37564")...;

有同样错误错误:Uncaught SyntaxError: Unexpected token '...'

我暴力修改成 url =“https://service.ebook.hyread.com.cn/ebookservice/epubreader/hyread/v3/reader.jsp“; 可以成功,不断确认下载jpg图片,但是每个都是2K的小图片,大小不对。

哪里出问题了?url参数如何填写才可以确保下载正确的图片?

ygcaicn commented 4 years ago

先学习一下JQuery吧

sdieedu commented 4 years ago

悲剧 我工作中只用matlab做仿真,java相关等没学过,哎