点击上方Spiders and AI,选择置顶/星标公众号

干货福利,第一时间送达!

JS逆向之某学习平台加密视频解密插图

首先在此声明,本文章仅仅用于研究学习,不可用于任何商业活动,否则后果自负。如侵权请与我联系,立即删除。

今日npy


aHR0cHM6Ly9rYW95YW4uaWNvdXJzZTE2My5vcmcvY291cnNlL3Rlcm1zLzE0NjMxOTk0NDYuaHRtP2NvdXJzZUlkPTEwMDMyOTMwMDI=

(这个是我选择的,自己可以用自己的课程)

唠嗑


嗯~~~,没啥好说的,我也不知道说啥~~~,猛男羞涩JS逆向之某学习平台加密视频解密插图1,哈哈哈哈。

加密分析与定位


JS逆向之某学习平台加密视频解密插图2

下图就是m3u8文件,但是它又与我们平时见的m3u8文件不同。

JS逆向之某学习平台加密视频解密插图3

上图就是我们平时见的m3u8文件

那我们就要解密它了。这里我是通过通用栈寻找加密。

JS逆向之某学习平台加密视频解密插图4
WPS图片编辑

我们进入这个栈。

JS逆向之某学习平台加密视频解密插图5
image

黄色那个就是该栈定位的地方,我们可以在这个页面看到有secondaryDecrypt,也就是解密之类的意思,我也不确定是不是解密之地,先在这里下断点,看是否断在这里。如果是就非常NICE,不是的话就再找。

JS逆向之某学习平台加密视频解密插图6
JS逆向之某学习平台加密视频解密插图7

可以发现已经成功断下,并且这个secondaryDecrypt(e.data, t.videoId)中的e.data就是我们看到的m3u8的数据,t.videoIdm3u8的url中video后面的数字。

我们看一下全选这个,看一下解密后的数据是不是我们常见的m3u8文件。

JS逆向之某学习平台加密视频解密插图8

嗯~~~,不错呀,就是我们常见的,那我们保存一下这个文件,下载一个ts文件,看看能不能打开。

JS逆向之某学习平台加密视频解密插图9

ε=(′ο`*)))唉!无语子,打不开,这种情况下,要不是真的损坏了,要不就是加密了。那我们看看这个文件有没有加密的标志性字符。

JS逆向之某学习平台加密视频解密插图10

可以看到上图绿框的,EXT-X-KEY:METHOD=AES-128 ......但是就发现一个url,没有key或者iv,那keyivurl里面,那我们就打开一下那个url,其实这个url在下面会打开

JS逆向之某学习平台加密视频解密插图11
JS逆向之某学习平台加密视频解密插图12

上图就是打开的url,这个里面既没有key,又没有iv关键词,那可能是被加密的。

这时我们可以发现,在解密那个m3u8文件的下面,下面还有一个类似的加密,并且它上面有个如下判断if ("manifest" !== o && /hls\/key/.test(a.url)),并且这个hls\/key也在那个url中出现了,那我们继续让我们它运行,看它是否在此断下。

JS逆向之某学习平台加密视频解密插图13

可以发现它断在这里了,没错了,它也是通过这个函数解密的,这个我对比过数据是一样的。,我们看一下它解密后的数据。

JS逆向之某学习平台加密视频解密插图14

就是这个了,不过这里是16进制,我们进到这个加密函数,看看16进制之前的数据。

JS逆向之某学习平台加密视频解密插图15

红框就是16进制前的数据,这里我们就需要这个数据。

但是这个就只有一个数据,并且这个数据为32位,那这个到底是key还是iv呢,这里暂时还无法确定,如果有经验的可以确定它可能是key

这说明还要找一下另一参数。这里把之前所有的断点remove,我是通过ts文件请求的调用栈查找的。这里这个调用栈跟上面用的调用栈是一样的,其实就是上面那个黄色的地方。打上断点,它就断在这里了。

JS逆向之某学习平台加密视频解密插图16

可以看到这里有ivkey,但是这个不是字符,这里我们转换一下。

JS逆向之某学习平台加密视频解密插图17

可以看到这里的上图的值与我们url那个解密出来的一样。那说明那个url解密的就是key,这个iv经过我多次对比发现,它就是那个ts的序号,比如一个ts是以32结尾,那就在它前面补14个0就好了,这样即使它iv了,是个16为的。这里我使用的是openssl解密

 命令
openssl aes-128-cbc -d -in 文件路径 -out 保存路径 -nosalt -iv 自己的iv -K 自己的key

结果及其演示


JS逆向之某学习平台加密视频解密插图18

END


好了,这一期就到此为止,这个解密还是不难的,没什么环境问题,里面用到的加密也是常见的加解密。

就不说了,我们下期再见!