某hukem3u8解密简单分析

admin 2022年7月23日01:30:21安全文章评论18 views2196字阅读7分19秒阅读模式

某hukem3u8解密简单分析

相关地址

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解码

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

单步跟进去,发现有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)
                        }

继续走下去,或者看下图

某hukem3u8解密简单分析

在这里反复横跳了好多次,最终发现在这里面的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))
            }

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

然后加密并完善地址,

某hukem3u8解密简单分析

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

总结

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

某hukem3u8解密简单分析

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

某hukem3u8解密简单分析

再获取某个清晰度m3u8地址

某hukem3u8解密简单分析

获取key链接,解密key

某hukem3u8解密简单分析

下载视频

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

某hukem3u8解密简单分析

某hukem3u8解密简单分析

后记

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

该内容转载自网络,更多内容请点击“阅读原文”

某hukem3u8解密简单分析



原文始发于微信公众号(web安全工具库):某hukem3u8解密简单分析

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月23日01:30:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  某hukem3u8解密简单分析 http://cn-sec.com/archives/1194139.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: