利用条件断点完成widevine-l3-guesser对shaka的适配

August 6, 2021 · 分享 · 637次阅读

Q: widevine-l3-guesser是何物?
A: 它就是近期新出的,针对widevinecdm.dll 2209版本的widevine解密key获取插件

项目地址

项目初期版本比较耗费CPU,堪比挖矿~不过新版本已经可以做到秒出key了

使用很简单,下载项目后,chrome通过加载已解压的扩展程序即可,即选择解压后的项目文件夹

随后打开使用widevine相关的视频网站,控制台就会自动打印解密key

当然也可以选择修改版,无需打开控制台就能直接复制key

2021-08-06T03:32:21.png

以上不是重点,该项目用的eme_interception.js对使用shaka套件的一类网站不适用

具体原因不太清楚(不是特别了解前端的东西),总之就是一些hook失效了,Satsuoni本人也不太清楚,毕竟他也不是做前端开发的

widevine-l3-guesser最新版已经修复了

不过Satsuoni提到可以在onSessionMessage_的附近手动断点,然后调用解密的函数完成解密

具体参见

首先对可以正常使用该插件的bitmovin进行分析

可以看到解密实际上是调用WidevineCrypto.decryptContentKey并传入license请求体与响应体进行的解密

具体解密过程不用关心,只要知道应该传什么就可以了

2021-08-06T03:38:57.png

Shaka Player Demo上,通过在onSessionMessage_下断点,可以看到这里就是请求体,不过这个时候还没有响应体

2021-08-06T03:41:03.png

所以继续跟下去,发现在这里就是响应体

2021-08-06T03:43:57.png

那么在这里下断点手动调用WidevineCrypto.decryptContentKey即可

但是手动肯定很麻烦,此时可以利用条件断点一劳永逸,同时WidevineCrypto.decryptContentKey也是全局的

那么可以添加下面的条件,这样实际上不会停在这里,因为断在这里之后又把判断条件改回去了,但同时会调用解密函数

this.injectFlag ? this.injectFlag=true : Object.defineProperty(this,"injectFlag",{get:()=>true}),WidevineCrypto.decryptContentKey(request.body, new Uint8Array(response.data)),false

oCam_2021_08_06_11_50_26_563.gif

如此一来对于使用shaka套件的网站也可以方便使用了,当然不同网站可能有差异,所每个网站都需要下一次断点

条件断点的一些骚操作见文末文章

参考

ENJOY 6

none

最后编辑于2个月前

添加新评论

avatar

未末

118

文章数

260

评论数

7

分类

新鲜出炉の评论

获取CSDN学院m3u8解密的key
路人甲
路人甲2021-10-05

请问这个方法失效了么?获取到的是空串

获取CSDN学院m3u8解密的key
DK爱梦游
DK爱梦游2021-09-29

大佬求教,51cto的KEY怎么获取?

XstreamDL-CLI BUG修复记录
poohboy
poohboy2021-09-25

大佬,我想问一下,iqiyi的m3u8是不是没法获取?我只找到了一个dash链接,然后手动下载了里面的m4s,但用nilaoda的那个解密工具解不了,老提示获取kid失败

XstreamDL-CLI BUG修复记录
Andist
Andist2021-09-17

en……实在不好意思,代理我知道怎么启用了。我只勾选了自定义代理,但没有填写proxy参数,我太愚钝了对不起!!!

XstreamDL-CLI BUG修复记录
Andist
Andist2021-09-17

感谢您开发的这款软件,对于第一次下载mpd的小白而言很友好! 这段时间用下来就是有时候下载直连的海外视频流时可能因为网络状况不佳,会有下载不完整的问题,下载完进度没到100%,但是也合并解密了,不知道能否增加下载不完整在最后输出报错信息的功能呢? 以及我想请教一下如何让下载器使用小飞机的代理呢?我尝试在“使用自定义代理”的选项上勾选,但是好像命令行中没有变化? (另外我猜您图中的样本是在下载CP+上的用九柑仔店是吗?我也很喜欢这部剧,是我心目中排名第一的台剧哈哈)