Google Widevine DRM 逆向破解原理
当用户在播放器播放视频时会通过设备cdm device_client_id_blob与device_private_key创建初始化信息,携带pssh生成验证令牌向代{过}{滤}理服务器请求,代{过}{滤}理服务器将请求发送。Widevine DRM加密视频后会生成视频mpd文件,视频分片、kid与key、并创建许可证代{过}{滤}理服务器,mpd文件是XML格式,内包含视频信息以及请求时所需要的
本人业余爱好,文章写的不够完善望大佬指导,轻喷哦,我会努力学习~
一、介绍
Google Widevine DRM 是谷歌旗下数字版权加密(DRM)解决方案,于2010年收购Widevine!Widevine DRM是一套完整的的数字版权加密系统,为各大厂商免费提供Widevine drm系统,用户端主要内置于Android系统以及各大浏览器,Android等,用于加密音视频资源流媒体传输,以达到视频不被传播,即使下载也无法正常观看,常见传输协议DASH、HLS、MSS以及CENC和CMAF~ 更多信息参考base64:aHR0cHM6Ly93d3cud2lkZXZpbmUuY29tLw==
二、原理
Widevine DRM分为三个级别的等级,分别为L3、L2、L1,其中L3最不安全,也是网络上存在破解工具最多的!
下面以L3介绍:
服务端在谷歌,当厂商使用Widevine DRM加密视频后会生成视频mpd文件,视频分片、kid与key、并创建许可证代{过}{滤}理服务器,mpd文件是XML格式,内包含视频信息以及请求时所需要的PSSH!
下面就是随机一个MPD文件内的pssh:
<cenc:pssh>
AAAAQHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACAIARIQ8npD5kgfRJ21xDjHEqF34hoEa2t0diIEa2t0dg==
</cenc:pssh>
当用户在播放器播放视频时会通过设备cdm device_client_id_blob与device_private_key创建初始化信息,携带pssh生成验证令牌向代{过}{滤}理服务器请求,代{过}{滤}理服务器将请求发送Widevine许可证服务器,~
通过则返回解密视频所需要的key,即可正常解密观看视频~
浏览器请求代理许可证服务器:
最终用python 模拟还原请求结果:
大家有疑问可以评论区留言,我会看的~
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)