某企鹅课堂视频下载分析

查看 177|回复 11
作者:WuJ1n9   
之前企鹅课堂 m3u8 没有 key 可以直接下载,现在需要简单逆向得 key 后下载。
简单分析一下,主要是记录一下操作流程,供有需要的朋友借鉴。没有什么理论和技术含量,大佬们见笑了。
首先找到视频 m3u8 链接


Xnip2022-07-19_16-01-24.jpg (344.42 KB, 下载次数: 0)
下载附件
2022-7-19 16:30 上传

在启动器中找到解密 key 的 js 文件


Xnip2022-07-19_16-02-35.jpg (172.81 KB, 下载次数: 1)
下载附件
2022-7-19 16:30 上传

进入后,搜索 decryptkey ,在最后一个搜索结果处下断


Xnip2022-07-19_16-04-28.jpg (331.97 KB, 下载次数: 1)
下载附件
2022-7-19 16:30 上传

重新加载视频,停在断点处


Xnip2022-07-19_16-07-04.jpg (386.76 KB, 下载次数: 0)
下载附件
2022-7-19 16:31 上传

注意右边的 i -> levelkey 中之后会运行出现我们需要的 m3u8 地址和 key
单步调试一会儿,key 的解密执行完成(注意可以合理使用 F11)


Xnip2022-07-19_16-10-12.jpg (375.83 KB, 下载次数: 1)
下载附件
2022-7-19 16:31 上传

可以看到,baseuri 就是 m3u8 链接,下面的 16 位就是 key,将其转换为 16 进制即可
可以使用下面的 python 一键转换(将 key 复制另存为 key.txt 即可)
fp = open('key.txt')
key = ""
for line in fp:
    i = line.split(':')[1]
    if len(hex(int(i)))



Xnip2022-07-19_16-13-17.jpg (72.9 KB, 下载次数: 0)
下载附件
2022-7-19 16:31 上传

得到 key
993aac4a86fbfdccd36b752747f7c681
和 m3u8 地址
https://1258712167.vod2.myqcloud.com/25121a6avodtransbj1258712167/c14dfd1f387702293358593079/drm/voddrm.token.dWluPTE0NDExNTIxNTQ5MjEzOTM4Nztza2V5PUB3TGU1eEt3NVI7cHNrZXk9O3Bsc2tleT07ZXh0PWY0ZWNhY2YwODhjZGIxNjU4ODBkMjEyZGFkM2FlMDA4ODM0MmE1NDYwOGY2OWU3YmMzMjRmZGUzYWYyYmQ2NjdkZGUyZGJkZDAzZDA5YjE4MWUwOGRlM2Q1MWFmOTJkZjdmMjMxMWE0M2I1YTgxYTQ2YmU5MjQwNTIyYTJhYzA4Mjc4MmU0OWE4ODY5NjYwYjt1aWRfYXBwaWQ9MTQwMDAwMDAwODt1aWRfdHlwZT0yO3VpZF9vcmlnaW5fdWlkX3R5cGU9Mjt1aWRfb3JpZ2luX2F1dGhfdHlwZT0yO2NpZD0xMzk0NTU7dGVybV9pZD05MTM1NzI0Njg7dm9kX3R5cGU9MDtwbGF0Zm9ybT0z.v.f30742.m3u8?t=62E0F1F5&exper=0&us=4476803048189060761&sign=f5beb3f7ed956147a74c04420ecbd5d7
使用 m3u8 下载器下载即可


Xnip2022-07-19_16-16-13.jpg (144.17 KB, 下载次数: 2)
下载附件
2022-7-19 16:31 上传

操作虽然不是很复杂,但毕竟不如批量程序方便,为什么不做批量呢,因为太菜不会....
各位随便看看就好

下载次数, 下载附件

blackwolf116   


WuJ1n9 发表于 2022-7-20 11:31
你发的图我这一直显示不出来,要不你把具体视频链接发我看看,按理说方法都是一样的

我发个视频,您试一试。我按照解析的方法:结果如下,
baseuri: "https://1258712167.vod2.myqcloud.com/25121a6avodtransbj1258712167/4a831bcf387702303436821737/drm/voddrm.token.dWluPTE0NDExNTE5OTI2Njc3MDQxMTtza2V5PTtwc2tleT07cGxza2V5PTtleHQ9NDY5YjRjZTZmY2NjODg1N2UwZDczMmYxOGZlN2Y1NmExMjYzOWUyOGY1ZTQ5NDJlMDFlY2E0ZWM3MGM4ZGEyNjI1NmQ4ZjcwNmJkYTc4YzQ5MmU0YjJhZTgyZGZkODY2MTkxYzM0YjJiNTE2ZTQzYzhkNjQ5Mjc4YjFkMTZjZWE3ODgzMDA4ZDk5OGZhMTE3O3VpZF9hcHBpZD0xNDAwMDAwMDA4O3VpZF90eXBlPTI7dWlkX29yaWdpbl91aWRfdHlwZT0yO3VpZF9vcmlnaW5fYXV0aF90eXBlPTI7Y2lkPTM4NTQ2NzI7dGVybV9pZD05MTM1NzI0Njg7dm9kX3R5cGU9MDtwbGF0Zm9ybT0z.v.f30742.m3u8?t=62E20643&exper=0&us=6499714836530243873&sign=feea71722d168f242c1ccd8bc154dcfc"
iv: Uint8Array(16) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, buffer: ArrayBuffer(16), byteLength: 16, byteOffset: 0, length: 16, Symbol(Symbol.toStringTag): 'Uint8Array']
key: Uint8Array(16)
0: 213
1: 1
2: 218
3: 148
4: 137
5: 5
6: 108
7: 197
8: 74
9: 57
10: 18
11: 63
12: 32
13: 7
14: 49
15: 134
你看下可否。
sun362652987   

0: 207
1: 158
2: 42
3: 8
4: 236
5: 164
6: 102
7: 227
8: 78
9: 101
10: 189
11: 184
12: 128
13: 18
14: 45
15: 47
cf9e2a08eca466e34e65bdb880122d2f
"https://1258712167.vod2.myqcloud.com/fb8e6c92vodtranscq1258712167/e421a2b15285890804885543631/drm/voddrm.token.dWluPTY1NDA3Nzc4NyZ0ZXJtX2lkPTkxMzU3MjQ2OA==.v.f30741.m3u8?t=62FB66CC&exper=0&us=1974674129671318132&sign=6730ab7fd65b0bbb6ab26bd189dab945"
楼主 这是我解析出来的key和地址 怎么放进下载器呢
china-ray   

是微信小程序的“鹅直播”吗?
WuJ1n9
OP
  


china-ray 发表于 2022-7-19 16:43
是微信小程序的“鹅直播”吗?

不是截图里还挺明显是哪家了
我是不会改名的   

你可以分析一下key哪里来的,会发现更简单。这个之前就改了,只是客户端用这个,最近网页才改的
WuJ1n9
OP
  


我是不会改名的 发表于 2022-7-19 16:49
你可以分析一下key哪里来的,会发现更简单。这个之前就改了,只是客户端用这个,最近网页才改的

嗯嗯,这种加密见挺多的,应该都不需要下断解密
有的直接base64就解出来AES的key和iv了,但这个还没分析太明白
老哥给点提示呗
hj542666772   

厉害厉害
52pojiemd5   

某CTO学院的有解密思路吗?求教教
Assimov   

感谢分享~~~~~~~~~~~
您需要登录后才可以回帖 登录 | 立即注册

返回顶部