[Web逆向] 某某云音乐歌曲评论获取JS加密分析

a1辅助网提供[Web逆向] 某某云音乐歌曲评论获取JS加密分析的下载地址,长期提供破解软件,各种线报福利等,90778是一个很好的福利资源网站

网易云音乐确实很适合练习,对于调试分析、扣代码、AES和RSA的使用都有帮助
厉害了,大神,辛苦!
orz太强了
网址:aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvc29uZz9pZD0xODcwMzkwNzA1[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
用到的工具:edge浏览器,精易编程助手!
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
首先抓包分析


先找一下返回的包,找到正确的包再看提交的参数

可以看到,这边提交了两个加密参数
params和encSenKey

首先脑子里想的第一个想法就是搜索一下参数名encSenKey

先点击第一个进入看一下

这里往上一点点直接就看到了熟悉的加密字眼:AES
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
首先不管这个AES,分析一下这个d方法

[Asm] 纯文本查看 复制代码
    function d(d, e, f, g) {          var h = {}            , i = a(16);          return h.encText = b(d, g),          h.encText = b(h.encText, i),          h.encSecKey = c(i, e, f),          h      }

首先新建一个变量h,i;
这个i是通过a方法赋值的,至于生成的什么,先不管他
h.encText是通过b方法赋值的,提交了两个参数,d和g
然后再次通过b方法赋值一次,这次提交的是自己和i
h.encSecKey是c方法赋值的,参数是c,e和f
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
打个断点看看

点击下一页评论,直接断下

可以看到,这里的g是0CoJUm6Qyw8W8jud
d是:

[Asm] 纯文本查看 复制代码
{"rid":"R_SO_4_1870390705","threadId":"R_SO_4_1870390705","pageNo":"1","pageSize":"20","cursor":"-1","offset":"0","orderType":"1","csrf_token":""}

猜想一下d是提交的获取评论的明文参数
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
这里分析一下d参数这一串是什么东西

[Asm] 纯文本查看 复制代码
{"rid":"R_SO_4_1870390705","threadId":"R_SO_4_1870390705","pageNo":"1","pageSize":"20","cursor":"-1","offset":"0","orderType":"1","csrf_token":""}

首先,映入眼帘的是rid:R_SO_4_1870390705;那么这个东西是怎么来的呢?后面的1870390705经过比对,很明显是歌曲的ID,前面的在JS中搜索一下看看
让我搜到了

至于我是怎么知道的?我找到了这里,哈哈

也就是说看你获取的类型是啥,rid前面的前缀就是什么!
threadId和rid一样,就跳过了
pageNo字面意思不难理解,就是页数
pageSize从字面意思大概也是:每页获取的数量之类的
cursor经过分析大概是上一页最后一个评论的时间参数,没有就-1
offset:0
orderType:1
csrf_token:空值
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
继续分析,走一步,看一下返回值是什么?

[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
好的,到这里再分析一波
b方法

[Asm] 纯文本查看 复制代码
    function b(a, b) {          var c = CryptoJS.enc.Utf8.parse(b)            , d = CryptoJS.enc.Utf8.parse("0102030405060708")            , e = CryptoJS.enc.Utf8.parse(a)            , f = CryptoJS.AES.encrypt(e, c, {              iv: d,              mode: CryptoJS.mode.CBC          });          return f.toString()      }

AES加密
这边已知的参数是三个


d:{"rid":"R_SO_4_1870390705","threadId":"R_SO_4_1870390705","pageNo":"1","pageSize":"20","cursor":"-1","offset":"0","orderType":"1","csrf_token":""}
g:0CoJUm6Qyw8W8jud
还有一个b方法里面的:0102030405060708


而AES加密正好是三个参数
来测试一下自己的想法

正好和上一步打的断点生成的h.encText是一样的
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
继续分析

再测试一下

果然,一模一样!
继续分析



c方法:

[Asm] 纯文本查看 复制代码
    function c(a, b, c) {          var d, e;          return setMaxDigits(131),          d = new RSAKeyPair(b,"",c),          e = encryptedString(d, a)      }

看字眼就看到RSA加密


看一下结果

提交的两个参数都是从d方法中算出来的
params就是d方法中的h.encText
encSenKey就是d方法中的h.encSecKey
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
开始扣代码
既然是AES加密CryptoJS.AES,直接搜索CryptoJS,找到他创建对象的地方开始复制

复制到精易编程助手中的JS调试这里,点击加载

直接加载成功,改写一下JS代码中的d方法!咱们就用到一个d方法,别让他变得那么复杂!

调试一下,把参数{"rid":"R_SO_4_1870390705","threadId":"R_SO_4_1870390705","pageNo":"1","pageSize":"20","cursor":"-1","offset":"0","orderType":"1","csrf_token":""}提交上去运行看一下

直接运行成功!输出出来了结果!
测试一下

正确,至此,分析结束!
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析
最后整理一下思路
经过各种拼接出来的明文Json参数{"rid":"R_SO_4_1870390705","threadId":"R_SO_4_1870390705","pageNo":"1","pageSize":"20","cursor":"-1","offset":"0","orderType":"1","csrf_token":""}
这个参数先经过固定密钥0CoJUm6Qyw8W8jud和偏移0102030405060708经过AES加密得到第一次加密结果
在经过a方法生成随机的密钥和第一次的偏移0102030405060708再次加密得到第二次加密结果
而这个结果就是提交的params参数


第二次生成的随机密钥固定参数

[Asm] 纯文本查看 复制代码
00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7

010001经过RSA加密得到的结果就是提交的第二个参数encSenKey
[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析[Web逆向] 某某云音乐歌曲评论获取JS加密分析

部分文章来自互联网,侵权删除www.a1fz.com/

www.a1fz.com A1fz网专注于福利分享,各种破解软件学习资料,视频教程等等,如有侵权告知管理员删除
币圈科学家软件免费下载网 » [Web逆向] 某某云音乐歌曲评论获取JS加密分析

发表评论