背景
众所周知,下载的m3u8文件无法直接播放,一般来讲m3u8文件采用AES128对称加密,并提供key、iv、ts列表。当然文件中的key与iv均为加密后的结果,需配合相应的解密文件与偏移量。本文基于某利威的player.js介绍如何利用Fiddler进行远程调试,获取AES128对称加密所需的key与iv。
设置
1、下载Fiddler,Fillder Classic即可,支持Windows(当然其它抓包与响应代理工具也可);
2、设置Tools------Options------HTTPS,勾选Capture HTTPS CONNECTS,勾选Decrypt HTTPS traffic,下拉框中选择 ...from browers only(只抓取浏览器相关网络请求)。
3、主界面右侧选择Filters,勾选Use Filters,依据实际情况进行过滤设置,这里我设置 Show only if URL contains player.js。
4、设置AutoResponder,这步是关键,勾选Enable rules、Unmatched requests passthrouth。然后点击Add Rule,默认精确匹配,干掉,直接写player.js,然后添加本地用于调试的JS文件。
实战
1、打开某网课视频(基于某利威),fiddler将会自动抓取player.js文件,见下图,可见加载的js为本地js。
2、在本地找到解密的JS,某利威的player.js解密在bt = {...}这段,因此搜索“bt = {”,修改本地js,加入debugger或者console.log即可输出相应信息。
结语
1、一开始的思路是自己搭建https服务器,利用DNS就近解析本地的js文件,后来发现如果视频网站有额外请求,则本地服务器无法正常响应,因此采用fiddler进行本地代理响应。
2、针对fiddler提供的本地代理功能,可以说是目前没有较好的解决方法,1)不属于重放攻击,时间戳无效;2)js即时加密,提高复杂度,也可以在浏览器获取原始文件;3)针对js文件不能做防盗链处理,reffer可仿造,token影响效率;4)CA安全证书解决的不是这种类型的安全问题。
3、网页JS的安全处理有待加强,本文仅限于JS安全技术研究与学习交流,请勿用于非法、商业目的。