吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7635|回复: 86
上一主题 下一主题
收起左侧

[Web逆向] 某hukem3u8解密简单分析

  [复制链接]
跳转到指定楼层
楼主
我是不会改名的 发表于 2022-7-21 21:38 回帖奖励
本帖最后由 我是不会改名的 于 2022-7-22 20:56 编辑

某huke解密简单分析

相关地址

API 文档

M3U8批量下载器 V1.4.8 0508

python之初学RAS库实现:加密,解密,签名,验签
M3U8批量下载器 V1.4.7 http方式调用之Python的实现

自研播放器指引.md

正文部分

先随便打开一个地址,获取m3u8地址,发现直接下不了,但是key确实只有16位,换成ecb解密,同样不行,说明key可能加密了。

注意到key链接,很明显人家都提示了,腾讯云的,aes加密,后面token是看开头eyjh,直接base64解码

解码过后,发现有几个可以的参数

先百度搜一下,最终在腾讯云点播api文档中发现有部分描述

但很奇怪啊,key链接中的overlayKey是空的,反而还多了个cipheredOverlayKey,百度一下

很明显加密了,分析下cipheredOverlayKey,看这种字符串没有符号,多半就是hex值,编码一下看看

256字节的,而且发现每次都不一样,估计就是rsa加密了,但很奇怪啊,并没有找到解密的地方,只有公钥,同时发现在请求m3u8地址的时候也发送了cipheredOverlayKey,说明很可能服务端是根据客户端来返回相关地址。

直接搜索overlayKey,在相关位置打上断点,刷新,再次播放视频。发现会在这里断下

单步跟进去,发现有Math.random(),很明显了,overlayKey和overlayIv都是随机生成的,那么后面批量下载的时候可以考虑直接写死'00000000000000000000000000000000'(我已经验证了,没问题可以解密)

                        function r() {
                            var t = ""
                              , e = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
                            for (i = 0; i < 32; i++) {
                                t += e[o(0, 15)]
                            }
                            return t
                        }
                        function o(t, e) {
                            return Math.floor(Math.random() * (e - t + 1) + t)
                        }

继续走下去,或者看下图

在这里反复横跳了好多次,最终发现在这里面的i = this.enModule.generatePlayCgiUrl(i))方法中,i也就是url地址发生了变化,多了个cipheredOverlayKey,

            u && (i += (~i.indexOf("?") ? "&" : "?") + u,
            i = i.replace("?&", "?"),
            Hls$1 && Hls$1.isSupported() && !IS_ANY_SAFARI && (this.enModule = new Enc,
            i = this.enModule.generatePlayCgiUrl(i))),
            this.getInfoRetryTimes = 0,
            this.getInfoRequest = function(t) {
                t && (i = i.replace(SERVER_PATH_V4, SERVER_PATH_BACKUP)),
                IE_VERSION && IE_VERSION < 10 ? jsonp(i, {
                    param: l,
                    timeout: 3e3,
                    prefix: "TcCallBack"
                }, bind(this, this.onResultV4)) : xhr({
                    url: i,
                    timeout: 3e3
                }, bind(this, this.onResultV4))
            }

跟进这个方法,同时前面提到了可能是ras,搜索PublicKey,下断点,继续跟进,过程很艰难,直接说结果大概这个位置,已经获取公钥,准备设置公钥。

然后加密并完善地址,

然后发送数据返回请求,继续跟进,

在这里就很明显了,a就是解密后的key,解密的key和iv就是overlayKey和overlayIv,解密内容是n,即返回的key。控制台打印一下key

复制key和m3u8,用下载器下载,没问题,到此基本结束了。

总结

大致流程,就是,先获取课程id,去获取psign

然后生成overlayKey和overlayIv,并加密

再去请求获取,m3u8地址(返回的是多码流,推荐使用逍遥大仙的下载器下载)

再获取某个清晰度m3u8地址

获取key链接,解密key

下载视频

M3U8批量下载器 V1.4.7 http方式调用之Python的实现

后记

研究过程中发现h5以及app均未使用改加密方式,全为key未加密的m3u8地址,闲麻烦的可以去看看app或者改ua。

人家huke很良心了,每天可以免费看一个,就别去搞人家了。

本文仅供学习交流

免费评分

参与人数 32吾爱币 +37 热心值 +27 收起 理由
一家之言 + 1 + 1 谢谢@Thanks!
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wlr + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
笔墨纸砚 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
南风未起. + 1 热心回复!
ChenXin0073 + 1 + 1 我很赞同!
shangxian555 + 1 + 1 谢谢@Thanks!
xiong930626 + 1 + 1 用心讨论,共获提升!
笙若 + 1 + 1 谢谢@Thanks!
XXFFKK + 1 已经处理,感谢您对吾爱破解论坛的支持!
steven026 + 1 + 1 我很赞同!
moerduo0 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
ofo + 1 + 1 overlayKey和overlayiv用随机数得到M3U8中的KEY地址,无法访问...
chengdragon + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
xfrisk + 1 谢谢@Thanks!
李佑辰 + 1 + 1 闲麻烦的可以去看看app或者改ua
YYL7535 + 1 + 1 谢谢@Thanks!
z158936962 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
yjn866y + 1 + 1 热心回复!
AirTed + 1 + 1 用心讨论,共获提升!
dizzy0001 + 1 + 1 我很赞同!大佬!
wpeqq + 1 用心讨论,共获提升!
WuJ1n9 + 2 + 1 我很赞同!
外酥内嫩 + 1 + 1 谢谢@Thanks!
漁滒 + 3 + 1 我很赞同!
MXGT + 1 我很赞同!
beiliangv5 + 1 我很赞同!
zhoushengzhi + 1 + 1 用心讨论,共获提升!
chinawolf2000 + 1 + 1 热心回复!
xuqingfeng33489 + 1 我很赞同!
我是在成器 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
爱在何方 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
我今天是大佬 发表于 2023-6-14 13:50
本帖最后由 我今天是大佬 于 2023-6-14 13:53 编辑
lavyw 发表于 2023-6-13 18:15
目前阶段拿到了drmToken  ,cipheredOverlayKey ,cipheredOverlayIv,后面F12 白屏了,不能 js 调试,拿 ...

结论就是这个网页请求一段代码, 这段代码不准你按F12. 那么只要直接把这段代码屏蔽掉就行了

需要屏蔽的请求地址为
https://www.zlketang.com/wwwstatic/common/console-ban.min.js

具体流程如下:




推荐
lavyw 发表于 2023-6-13 18:15
lavyw 发表于 2023-6-13 18:06
https://www.zlketang.com/vplay/play.html?course_id=6369&subject_id=57&web_auth_id=6399&year=2023
...

目前阶段拿到了drmToken  ,cipheredOverlayKey ,cipheredOverlayIv,后面F12 白屏了,不能 js 调试,拿不到公钥, 所以卡住了
沙发
漁滒 发表于 2022-7-21 22:05
3#
ZhuanZhuYuIT 发表于 2022-7-21 22:28
膜拜大佬
4#
sakei 发表于 2022-7-21 22:42
确实是大牛啊  等还是看不懂
5#
Airey 发表于 2022-7-21 23:32
火钳刘明学习了
6#
Noren 发表于 2022-7-21 23:50
感谢分享
7#
xianjing0630 发表于 2022-7-22 00:02
虽然看不懂   但是也要支持一下。。
8#
leong 发表于 2022-7-22 00:06
火钳刘明
9#
louischeung004 发表于 2022-7-22 03:33
看不懂就是看不懂,但是也要支持一下
10#
china08 发表于 2022-7-22 05:19
为什么不直接用F12,那样不是更简单吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 10:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表