优酷视频下载

您所在的位置:网站首页 优酷视频秘密怎么破解的 优酷视频下载

优酷视频下载

2024-03-19 23:37| 来源: 网络整理| 查看: 265

优酷当前(2020年4月)采用的视频加密技术是极容易被破解的。现行的视频加密算法主要是AES加密算法。服务器端生成AES加密算法的密匙,对视频文件进行加密。客户端请求得到加密视频和密匙,通过解密程序还原出可播放的视频。直接破解加密视频是几乎不可能的。密匙一般也不是直白的传递的,一般都会采用一些混淆算法。破解的重点就在于这个解密程序。如果这个解密程序是经过编译的二进制程序,那么就需要经过反汇编来还原其中的细节来破解。而优酷的解密程序采用的是一段javascript代码,这就相当于直接告诉了我们整个解密程序的源代码。我们通过Chrome的DevTools很容易就能获取完整的解密算法以及AES密匙。

加密视频的下载

加密视频的获取与未加密的视频获取是一样的。打开Chrome的DevTools(F12),F5刷新页面。在Network选项卡中的Filter输入appinfo,过滤出的HTTP请求的返回内容中包含了各个版本的m3u8文件的url。代码片段示例

123456789"size": 65043082,"subtitle_lang": "default","media_type": "standard","drm_type": "copyrightDRM","stream_type": "3gphd","width": 480,"logo": "none","m3u8_url": "http://valipl.cp31.ott.cibntv.net/...","height": 270 解密代码

优酷会为视频的解密部分单独开一个进程。这一部分的代码可以在DevTools的Sources->Page中找到。Page中的top是主进程。一般的网页只有这一个进程就足够了。但是像AES解密这样有较高计算复杂度的工作另开一个子进程有不少好处,优酷采取了这一技术(HTML5 WebWork 技术)。这一进程名称在优酷的播放网页中由一串数字和字母组成。代码片段示例

1function TS_MUXER_SOURCE(e) { ... }

这一段代码就是优酷控制视频解密的代码,它是完全可见的。

密匙的获取

直接进入子进程的控制台,tsMuxer.options.decodeKey就是解密密匙。

完整的下载方案

已经有人写了一个下载+解码+合并的软件,参考vvtoolbox gui series v0.4.4 – 在线网络视频下载器,支持m3u8下载、视频解析、AES解密、优酷普通DRM解密、下载弹幕等功能。原文中提到的获取密匙方法已经失效,但是我们可以通过上文的方法获取密匙。

我们只需要在子进程控制台输入

1btoa(String.fromCharCode.apply(null, new Uint8Array(tsMuxer.options.decodeKey)))

就可以得到该工具适用的BASE64编码的解密密匙。

题外话

优酷的这波加密操作有点让人看不懂。那么正常的视频加密技术应该是个啥样呢?当前最流行的要数Google的Widevine。Widevine本质上也是AES加密,不同的是它分发密匙是由Google的服务器发给可信的客户端,解码过程是调用低层库。Chrome浏览器和安卓系统都是支持Widevine的。Firefox也可以安装插件支持。

Widevine的安全等级分三级,分别为L1/L2/L3,L1最高,L3最低。目前Widevine L3以遭破解。参考。破解原理参考12。L3对硬件没有要求,其解密过程是一个白盒AES解密,可以通过DFA还原出密匙。L2/L1将部分/全部解密计算放在TEE (Trusted Execution Environment)中进行,需要硬件支持。这时AES解密就不是白盒了,而是灰盒/黑盒,DFA失效。

当然,现在也有消息称intel cpu的TEE已遭破解,如果这是事实,那么Widevine L1/L2也不再安全。

相比起来,优酷的解密策略应该算是“透明盒”了。

后续吐槽

继续测试了下优酷的TV版App抓包。HTTP GET https://ups.cp31.ott.cibntv.net/ups/get.json的返回结果即使不是VIP账户也有4K视频的m3u8的url,而且同一集电视剧不同分辨率下的密匙都没变,网页端和TV端的视频共享密匙!也就是说非VIP用户也可以下载到独播的4K视频。优酷的加密系统简直形同虚设。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3