以下是手动获取key的方法:

下断点
Disable Cache

  • 此时在console执行btoa(String.fromCharCode.apply(null, new Uint8Array(i._sce_dlgtqredxx)))即可得到base64形式的key

得到base64形式的key

注意这里的界面方式是AES-ECB,并非AES-CBC
实际上和优酷是一类方法,所以请如果要用vvtoolbox_gui_series下载请选择AES-YK方法(v0.4.0版起)
然后通过支持aes解密的下载器配合key下载即可~

动图演示:

http://pan.iqiyi.com/ext/paopao/?token=eJxjYGBgmBQtsZUBBHZNkQAAFYwDIQ.gif
动图演示

标签: aes

已有 29 条评论

  1. 下断点,直接卡死,请问该教程是否还有效

    1. 后来去吃了个饭没管它,后来出来了。。。有办法提取js吗

      1. 我对js不是太熟悉,这个你可以自己尝试一下。我认为简单的暴力的方案是想办法替换js内容,可以参考【本地实时修改js文件以调试网页js的方案】一文。

  2. 大佬,这个网站的课程视频怎么解密呀,我买了但是是用七牛云加密的,貌似不太好解。
    https://edu.hltrader.com/index/mulitcourse/detail.html?cid=57

    1. 看不了,不知

      1. 需要先微信登录付费才能看的,这个能找人破解解密吗?
        这是m3u8文件里的:

        EXTM3UEXT-X-VERSION:3EXT-X-MEDIA-SEQUENCE:0EXT-X-ALLOW-CACHE:YESEXT-X-TARGETDURATION:17EXT-X-KEY:METHOD=QINIU-PROTECTION-10,IV=0x1370fabca4354bf72fd3867426bb5ab6EXTINF:11.066667,

        /5t2z9mIR2ZKG20c7w5PeHsrDNjA=/lkPvVm4OZhCDSz8KUwpaMarO4gS4/000000.ts

        EXT-X-KEY:METHOD=QINIU-PROTECTION-10,IV=0x428d89a125f1359a6dead497f5027d97EXTINF:10.033333,

        /5t2z9mIR2ZKG20c7w5PeHsrDNjA=/lkPvVm4OZhCDSz8KUwpaMarO4gS4/000001.ts

        EXT-X-KEY:METHOD=QINIU-PROTECTION-10,IV=0xf7d3ef325ff0cea8c90f0c874486d274EXTINF:16.666667,
        1. 就是这两个代码(播放时会显示在屏幕上),还有一个显示网址和名称的代码找不到:

          第9课-课程总结 <div class="video-box"> <video id="video" class="video video-js vjs-big-play-centered"></video> <div class="video-user"> 用户馮王正在学习中 </div> <!-- <button id="zoom">全屏</button> --> </div> </div>
        2. 看起来是AES加密的变种,研究研究可能还是有搞头,不过我还是建议直接录屏来得快。

          1. 就是有的HTML元素可以设置显示与否的属性,你可以F12在Element界面操作,具体的要具体分析,我有不知道这个播放的时候什么样子,指点不了。另外什么跑马灯hhh

          2. 咋修改?有教程指点一下吗?去跑马灯吧

          3. 这个应该稍微修改下前端就行了。。

          4. 好的,不过直接录屏有字幕滚动的,学员信息和开课方网站,这个能去掉吗?

  3. 老哥,能帮忙看看这新东方怎么下载吗?
    https://study.koolearn.com/tongyong/learning/27224/-1/8119850

    1. 大佬用你的方法找到了key,但是解密出了问题
      def decrypto(key, text):

      cryptor = AES.new(key.encode('utf-8'), AES.MODE_ECB) plain_text = cryptor.decrypt(text) return plain_text.rstrip(b'\0')

      txt = open("1.ts", 'rb').read()

      with open('2.ts', 'wb') as file:

      file.write(decrypto(key, txt))

      1.ts是直接下载的ts文件,解密出来的2.ts使用ffmpeg转码报错:
      Invalid data found when processing input
      好像是没解密成功,问一下这代码有什么问题吗?

      1. 你可以把一个不加密的ts通过ECB加密,然后用ffmpeg你看看能不能读出信息来。
        你再试试直接用ffmpeg读取1.ts,有没有什么信息。
        读取信息命令 ffmpeg -i 1.ts

        1. 好的,大佬。我刚按照你说的尝试了一番,ffmpeg能获取未加密的ts信息,但加密的时候遇到了问题,用Python的aes加密要求数据是字符串,读入的ts二进制数据加密不了,转字符串也一直报错,后来用PHP,
          $c = file_get_contents("1.ts");
          // 加密
          $encrypt = openssl_encrypt($c, 'AES-128-ECB', "WHYtgTZwgJYDGZaA1O+bfQ==");
          file_put_contents("2.ts", base64_decode($encrypt));
          $a = file_get_contents("2.ts");
          // 解密
          $decrypt = openssl_decrypt(base64_encode($a), 'AES-128-ECB', "WHYtgTZwgJYDGZaA1O+bfQ==");
          file_put_contents("3.ts", $decrypt);

          1是未加密,2是加密,3是还原,获取信息1,3正常,均能播放,2提示:Invalid data found when processing input,感觉应该是编码的问题,大佬可以给个你之前写的工具的思路吗?

          1. 我上面回答的意思是这个加密并不是对整个文件加密,所以不能直接对整个文件直接解密。至于其他信息,不能告知。

    2. 大概看了下,这个key很好获取,比如在hls.min.js的this.str2ab(r.key)处下断点就能拿到key,本质是AES加密,可能是ECB或者CBC,下载找个能解密AES的应该就行了。

  4. abc abc

    csdn学院用阿里云点播加密方式是使用AES-ECB算法的,你的AES-YK我没反编译,在我的了解中AES中也没有这种加密模式,但是差不多意思就是以对下载的加密ts文件中的音视频数据流(已被加密)和获取到的key进行AES-ECB解密,我说得没错吧...(其实我还能说得更加详细)

    1. AES-YK中YK指的是youku,因为软件功能之一是用来解密优酷普通加密的,而csdn这个恰好是用的阿里的方案,两者解密方案本质上是一样的。

    2. abc abc

      其实我已经找到了关键代码。。。烦就烦在阿里对ts文件加密的位置(注意:是位置)比较变态。。。

  5. ddz ddz

    大佬,这个断点是怎么找到的,我找单步跟了好久都没有找到这个断点。最近研究了好多视频的解密,七牛什么的,就是这个阿里的没找到断点的地方,还望大佬赐教

    1. 你可以在case "demux"处的decryptdata进行反向寻找,最后可以定位到这个地方。

      1. ddz ddz

        谢谢,我研究研究

  6. 您可真是大神啊!我用你的方法成功了,都不敢相信成功了!终于可以下载CSDN用血汗钱买的课程了

    1. QQ1471885188 QQ1471885188

      你好请问获取到密码后如何替换m3u8里面的密码,为啥我替换后还是不能解密失败

  7. d8899p d8899p

    大佬能不能录制一个gif=-=小白看的有点蒙

    1. 已经补充了动图,你可以看一下这个演示:
      动图演示 http://pan.iqiyi.com/ext/paopao/?token=eJxjYGBgmBQtsZUBBHZNkQAAFYwDIQ.gif

  8. d8899p d8899p

    你好问下如何下断点呀,老哥=-=

添加新评论