声明:未经许可禁止下载传播,本文仅做技术思路分享。
本文封面图源自:http://www.elecfans.com/d/928711.html
前言
技术要点:如何跟踪调试混淆后的JS代码
利用Fiddler的AutoResponder功能跟踪调试混淆后的JS代码,从而破解视频。注:原视频AES128加密
过程
破解视频得先得到视频地址,分析关键词定位请求包。video 58425.m3u8
m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般存在服务器的内存中),通过m3u8解析出来路径,然后去请求。
这样每次请求很小有段视频,可以做到近似于实时播放的效果。
下面是分析返回的data内容,返回包太长就不贴了。
直接Base64或其他简单的解密没得到结果,从前端JS文件入手,毕竟如果前端不解析数据怎么拿到视频地址。从JS文件搜索到m3u8关键字:
/resources/js/video/xxxx-media-play.min.js?v=2e030753c7
把带m3u8关键字请求分析下,定位到下面这段函数
将JS保持到本地,使用Fiddler AutoResponder模块替换JS
本地替换JS,也就是说浏览器再次请求
/resources/js/video/xxxx-media-play.min.js?v=2e030753c7
这个地址的时候,将返回本地的JS文件,方便调试跟踪JS流程
下面我在返回之前在控制台打印输出e的值,console.log(e);
可以看到m3u8返回的视频地址已经解析打印到控制台
下面提取出解析data视频地址的js,其中data就是待解密的数据,sectionID是章节ID
var t = new Rusha,
i = sectionID + "xxx",
n = t.digest(i).substr(0, 32);
xxtea.toString(xxtea.decrypt(data), xxtea.toBytes(n + sectionID)))
将data值放进去,然后在视频页面打开控制台输入JS代码,同样得到解密后的数据
Ts文件直接访问就可以下载,但是下载的视频是不能观看的,因为使用了AES-128加密,需要得到Key,才能解密
Key地址也有了:/video/key/58425
继续解密,搜索关键字定位JS函数
联系上下文可以看出以上部分大概就是解密拿到Key的函数,
修改本地JS,在返回前弹下值看看
得到key:ad5192cbc9bd44a0849159f888be09d6
Key也有了,那么尝试还原视频下载ts片段,/58421/58423/58425_d/480/584251.ts?v=1531378765
下载OpenSSL for Windows,然后利用openssl aes-128-cbc解密
openssl aes-128-cbc -d -in 584251.ts -out media_decryptd_0.ts -iv 99b74007b6254e4bd1c6e03631cad15b -K ad5192cbc9bd44a0849159f888be09d6
key正确则无回显,错误会提示
看下视频能否正常观看,发现是可以的,接下来只需要把所有的ts片段批量解密再合并即可。
本文始发于微信公众号(米斯特安全团队):记一次破解某平台视频全过程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论