样例网址:aHR0cHM6Ly90di5jY3R2LmNvbS8yMDIyLzA5LzMwL1ZJREVnZ0ZRYmZ6NmlMeXZjN0F4d0NlZjIyMDkzMC5zaHRtbA==
站内之前也曾经发过相关的问题
1.CCTV视频m3u8视频下载,下载下来时长正确,有声音,但是画面是马赛克。
2.请帮忙下载这个CCTV的视频,难道是加密了吗?
3.【震惊】发现一种极其罕见的m3u8魔改加密
从网页上看是正常的视频

但是直接下载ts后播放,神奇的事情发生了

画面是一片灰的,但是声音还是正常,说明应该是只加密的视频,而音频没有加密,经过很长的一段js分析,发现是加密了视频的es流部分,解密的逻辑被放到了wasm中。

点播视频是调用的【CNTVH5PlayerModule._vodplay】进行解密,下载wasm进行反汇编

样本明显被添加了控制流混淆,这里的特征还是挺明显的,理论上可以尝试进行还原,到时还没搞完,这里就不说了。既然这样的话,那就直接上大杀器吧jsrpc
首先下载win发行版,然后运行

此时服务端已经开启,然后利用浏览器的overwride功能注入【resouces】文件夹下的【JsEnv_Dev.js】,然后按照readme,注册一个调用加密函数的方法,再刷新页面

此时服务已经连上,可以rpc来调用网页的js函数了。
接着是分离,需要先从ts中分离出pes,再从pes中分离出es流
分离出pes可以参考阿里云Web播放器,m3u8的ts文件解密下载过程实现
上面文章中详细的分析说明分离pes,然后pes再分分离出若干个NAL单元以及跟在后面的es数据,这些es数据就是需要解密的数据,使用jsrpc解密后在重新包装pes到ts
