某浪新版key解密

查看 75|回复 5
作者:ling02123   
"

  • 浏览器抓包分析

    1.  m3u8包分析


    Fohdu15KRc89-y6_JZBArAJiRo_8.png (112.57 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:40 上传

    还是经典的 m3u8文件格式,对比上个版本没有太大出入,key_url 一样没有用上。既然没有抓到key链接,直接转去分析ts 解密逻辑。
    2. ts 包分析随便断住一个ts 包,跟进解密函数。
    如图


    FknWS2XOrtWomTwenRjqcTKSs9pM.png (116.34 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:40 上传

    参数说明 :       j  :  ts 字节流       q  :  30 位数组      $  :   16位数组毫无疑问这里就是解密操作了,接下重点分析 参数如何生成以及后续的解密操作。

  • 参数生成 & 解密操作

    准备工作:



    Fg5Qc7ZDaGNFNGXHBeyR3uGptm3Q.png (100.77 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:40 上传

    如图 ,网页上浪浪已经提前把 console hook 了,我们需要在网页加载的时候保存一份console方便后续分析。
  • 初分析:



    FsJ1v6C1DqaaMC6uB9a2tqzRFvDC.png (120.08 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:41 上传



    Fh5ug_WrPNRy29Pnc7K_09GsuU8E.png (62 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:41 上传

    仔细观察这个解密函数,你会毫无头绪,往下拉来观察一下这个函数如何初始化,发现是一个类似于JSVMP的东西,先传入大个很长的字符串还有一些乱七八糟的东西。多次调试发现里面的明文很少很少,挑出几个有明文的地方插桩分析。


    FmgqEIPcl1vORhsyKfiK2dD9orPm.png (54.37 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:41 上传

    例如这个地方的 oe.apply() 其实是函数调用,能看到一些明文,可以在这里下断,可以多下几个日志断点,信息越多越容易分析。
  • 下面结合输出的日志来辅佐分析:



    FnL2frwuDKykAZsFQCSed0U6oyIh.png (155.89 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:42 上传

    OK,日志嘎嘎输出。
  • 输出图1分析:
    第一步:开局我们拿到了一个30位的数组,在第一步的时候他把数组拿到了。然后进行了一下   fromCharCode()  经过尝试  '1-yuYeqlPlHMU85XD+UOdM+QHmG8/P'   字符串就是30位数组 ,顺便一提 yuYeqlPlHMU85XD+UOdM+QHmG8/P 是由 'play_licenses' 接口返回
    数组如下,下面还会一直分析数组:[49, 45, 121, 117, 89, 101, 113, 108, 80, 108, 72, 77, 85, 56, 53, 88, 68, 43, 85, 79, 100, 77, 43, 81, 72, 109, 71, 56, 47, 80]
    第二 三步:关键词test,那必须是正则的test,可以看到他把一开始加上的 '1-' 去掉了,变成 'yuYeqlPlHMU85XD+UOdM+QHmG8/P'  就是接口直接返回的明文




    FsP3maa045-qOBFgNqILSupm4dbl.png (74.05 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:42 上传


  • 输出图2分析:
    很显然 他直接 atob 这个明文,atob 就是浏览器原生的base64解密函数。base64解密完的就是下面第二步的字符串。'Êæ\x1EªSå\x1CÅ
    Fr1HO6qDnL36vEgCflMLi-8Pm2oc.png (27.8 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:45 上传


  • 输出图3分析:

    这里他又把21位变成了18位的数组 ,嗨哟你干嘛真的是,对比一下18位跟21位的区别[230, 30, 170, 83, 229, 28, 197, 60, 229, 112, 254, 80, 231, 76, 249, 1, 230, 27]  len:18发现他把前面一个和最后俩个分割掉了。




    FiV4G87wkO1qIhEoCOPVLGBvPOy_.png (154.98 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:45 上传


  • 输出图4分析:
    [230, 30, 170, 83, 229, 28, 197, 60, 229, 112, 254, 80, 231, 76, 249, 1, 230, 27]  okok,我按照这个分析一波,大胆推测一下 250 ^ 230 = 28    28 + 21 = 49230 -> '1'同理 能得到第二个神秘数字就是 85



    FixA_iedeelKv_fPQ1BuRt_VupYV.png (121.11 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:46 上传

  • 输出图5分析:
    [230, 30, 170, 83, 229, 28, 197, 60, 229, 112, 254, 80, 231, 76, 249, 1, 230, 27]  [Python] 纯文本查看 复制代码qq = [250,85,230, 30, 170, 83, 229, 28, 197, 60, 229, 112, 254, 80, 231, 76, 249, 1, 230, 27]
    pp = []
    for index,i in enumerate(qq):
        if index>=2:
            a = (qq[index - 2] ^ i) +21
            pp.append(a)
    print(pp)  #此时的18位数组[49, 96, 97,  98,  100, 100, 53, 53, 53, 97, 48, 53, 46, 49,  51,  98, 52, 47] [Python] 纯文本查看 复制代码str(bin(index)).count('1')
    可以生成这些数字。分析到现在,完整算法意境分析完了,经过多次测试这个算法能解密其他play_licenses,这次分析也算成功了。



    Fkw_s8OmMOe5ok7ordvM5dQ9NA0f.png (70.38 KB, 下载次数: 0)
    下载附件
    2023-2-23 14:46 上传

    还原算法后也和网页一样能正常解密视频。
  • 总结
        这次浪浪更新的难度适中,很适合分析,过程很详细,也可以动手分析一下,细节也讲解到位了,把各个分析部分组装一下就能用。

    数组, 下载次数

  • bigqyng   

    跟大佬学习一下
    yangfan233   

    向大佬学习
    szxizhijiang   

    文章 很精彩,但是太复杂了,正常人取key就是一步到位
    LuckyClover   

    看到这样的解密就很舒服,分给你
    zfyln   

    没看明白,怎么直接解密
    您需要登录后才可以回帖 登录 | 立即注册