Widevine 是 Google 开发的 DRM 技术。分为 L3, L2 和 L1 这3个级别,保护等级递增。L3 级别是纯软件实现;L2 和 L1 级别需要硬件支持(如 soc 或单独芯片提供的 TEE(Trusted execution environment, 可信计算环境))。
Android 设备可能支持 Widevine 的 L3 或 L1 级别。(某些未受Google验证的设备也可能根本不支持 Widevine)
PC 上的 Chrome / Chrome OS 等最高只支持 L3。
Android
Android 设备上的 widevine 实现一般在设备 flash 存储某个系统分区里存储 DRM keys。而解锁(unlock) bootloader 通常会删除或修改这个分区里的 DRM keys。导致设备的 widevine 级别永久下降 (常常由 L1 降为 L3)。某些设备上重新锁上(relock) bootloader 会恢复原有 widevine 级别。某些手机解锁 bootloader 也会保持 L1 (主要是一些中国大陆制造商的手机,严格说这不符合 Google 规定)。
可以使用"DRM info" (apkpure) 这个 App 检测本机的 widevine 级别。
一些 Android App (主要是流媒体类App如Netflix) 会验证设备的 Widevine 级别。通常限制为:
- 播放 HD 以下分辨率(< 720P)视频:需要 L3. (Netflix Android App 对 L3 设备强制 540P)
- 播放 HD 及以上分辨率(>= 720P)视频:需要 L1。
可以使用一些 Magisk 模块强制某些 App 无视设备 widevine 级别也能播放 HD 视频。某些 App 也可以使用修改版本达到同样效果。
- Netflix: Netflix Enabler (Magisk module)
PC
PC Chrome 上的情况有所不同。Chrome 在 PC 上只有 L3,但 netflix 支持 720P 播放,通过第三方扩展可以提升到 1080P。
破解
Widevine 通过 CDM (Content Decryption Modules) 解密视频。每种设备(例如某个版本的 Chrome、某个型号的 Android 手机)的 CDM 都不同,内置了唯一的密钥(key)。
视频网站或 Google可以远程吊销某个 key,使该 CDM 无法再使用。
L1
根据 2019 年国外网络媒体对盗版影视组织 The Scene 的采访(中文版)。盗版影视组织的黑客使用自己开发的特制工具以破解 Widevine (L1 级别)保护的视频(比如 Netflix的 4k),然后以解密后的未加密形式视频(WEB Release)在各个种子站发布。这些工具是高度保密的,仅在盗版影视组织内部流通,并且需要经常更新以支持破解最新的 Widevine。
另一种方式是使用视频录制硬件/软件提取 Netflix 播放的 4k视频(webrip),这种方式相对容易。最简单的是使用 HDMI 视频采集卡 (需要支持 hdcp。HDMI <= 2.0 的 hdcp 已经被破解了(对应最高 hdcp 2.2。更高版本 hdcp 是否已经破解不清楚),淘宝上买个支持 HDCP 2.2 的 HDMI 采集器也就100多块钱)。理论上这种方式提取的视频质量与原始版本无差异。
L3
Widevine 的 L3 广泛用于 PC / 浏览器环境。由于是纯软件实现的,理论上肯定可以破解。2020年发布的widevine-l3-decryptor 这个 Chrome 扩展 可以破解旧版 Windows Widevine CDM (widevinecdm.dll 4.10.1610.0) 保护的网页视频。根据该扩展说明,其原理是对 widevinecdm.dll 进行反混淆和反编译。widevinecdm.dll 是 Windows 平台负责解密 Widevine DRM 保护的视频的私有二进制文件(由 Google 提供),其本身是高度混淆过的。该扩展对 widevinecdm.dll 的逆向工程步骤:Reversing the old Widevine Content Decryption Module(中文翻译)。
可以看到,PC 平台上 Widevine 的 L3 级别 DRM 保护方案本质上就是混淆(加密形式的视频、用来解密视频的密钥(其本身也是加密形式)都直接从服务器发送给了客户端)。