记一次破解某平台视频全过程

admin 2019年6月5日01:41:19评论54 views字数 1439阅读4分47秒阅读模式

声明:未经许可禁止下载传播,本文仅做技术思路分享。

本文封面图源自: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片段批量解密再合并即可。



本文始发于微信公众号(米斯特安全团队):记一次破解某平台视频全过程

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2019年6月5日01:41:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次破解某平台视频全过程http://cn-sec.com/archives/354080.html

发表评论

匿名网友 填写信息