记一次对网易云前端接口的逆向
记一次对网易云前端接口的逆向
从二维码登录接口入手
- 界面如图
- 扫个码看看
是一串链接,有一个 codekey
参数
- 打开控制台抓包,找到关键的数据包,返回的
unikey
对应的就是codekey
- 看看payload,两个参数,
params
和encSecKey
- 点入发起程序
- 打个断点,刷新并重新触发
- 看到了熟悉的参数
下断点看看值t
- 根据堆栈一步一步往前找到生成参数的位置
- 找到了
- 关键部位
- 打开控制台,先看看
params
如何生成
d
的值d
的赋值代码
1 |
|
其中 (0,y.emj2code)(["流泪", "强"])
相当于 y.emj2code(["流泪", "强"])
- 进一步发现,这几个值应该都是常量
1 |
|
- 接着分析
y.asrsea
函数
打个断点,运行到这里
1 |
|
- 看看
a
函数
AES
、iv
、CBC
没加密字段,一看就知道啥加密方式了 XD
使用了AES的CBC模式进行加密,
e
为待加密文本,t
为密钥,偏移量iv
是0102030405060708
- 验证一下,对上了
- 第二次加密同理,使用
m3iws/mCg11hFMWMpeAXIJ33nggE141odvQwXdMOvv8=
为密文,随机的16位a-zA-Z0-9字符作为密钥。
- 再看看
encSecKey
怎么生成
- 很巧,就在
a
函数附近,u
函数就是用来生成encSecKey
的
1 |
|
- 三个函数
到这里第一眼没看出来是什么加密方法,看函数名应该和RSA有关。把代码喂给ChatGPT,告诉我是一个
nopadding
的RSA加密。开开心心让它写了一段RSA加密的python代码来验证。
然后傻眼了,加密结果一直在变,前端的加密结果是不变的。
又花了一段时间在互联网搜寻一番,发现了原来python的rsa没有实现nopadding的加密。。。
从网上找了一篇解决方案https://www.cnblogs.com/pythonClub/p/10464745.html
校验一下,没问题
看看其他的接口
分析了一下其它的接口,发现用的都是同一套加密方案。
于是,在这里简单整理一下收集到的其他接口
获取二维码
1 |
|
POST参数 | 类型 | 描述 |
---|---|---|
params |
string |
必选 {"type":1,"noCheckToken":true} 字符串AES加密结果 |
encSecKey |
string |
必选 AES_KEY的RSA加密结果 |
获取登录状态
1 |
|
POST参数 | 类型 | 描述 |
---|---|---|
params |
string |
必选 {"type":1,"noCheckToken":true,"key":"{codekey}"} 字符串AES加密结果,其中{codekey} 由获取二维码接口生成 |
encSecKey |
string |
必选 AES_KEY的RSA加密结果 |
返回值 | 类型 | 描述 |
---|---|---|
code |
int |
800 -> 二维码不存在或已过期 801 -> 等待扫码 802 -> 授权中 803 -> 授权登陆成功 |
message |
string |
消息 |
获取歌曲播放地址
1 |
|
POST参数 | 类型 | 描述 |
---|---|---|
params |
string |
必选 {"ids":"[{song_id}]","level":"standard","encodeType":"aac","csrf_token":"{csrf_token}"} 字符串AES加密结果,其中{codekey} 由获取二维码接口生成 |
encSecKey |
string |
必选 AES_KEY的RSA加密结果 |
获取歌曲评论
1 |
|
POST参数 | 类型 | 描述 |
---|---|---|
params |
string |
必选 {"rid":"R_SO_4_{song_id}","threadId":"R_SO_4_{song_id}","pageNo":"{pageNo}","pageSize":"{pageSize}","cursor":"{timeStamp}","offset":"0","orderType":"1","csrf_token":"{csrf_token}"} 字符串AES加密结果,其中{codekey} 由获取二维码接口生成 |
encSecKey |
string |
必选 AES_KEY的RSA加密结果 |
(完)
记一次对网易云前端接口的逆向
http://xciphand.github.io/2024/02/05/记一次对网易云前端的逆向/