QQ音乐API签名算法分析
本帖最后由 初亦泽 于 2021-1-3 16:44 编辑# 1、背景
不知道什么时候开始,各家音乐APP都开始对API进行加密,最近一段时间对六大音乐平台的加密算法进行了研究,逆向了网页端、安卓端等等,已经掌握了各家的加密算法。
|平台|加密算法|非加密接口|专属资源|海外IP支持|
|---|---|---|---|---|
|QQ|MD5|存在,可完全替代加密接口|需要绿钻Cookie|不支持,需要国内IP代{过}{滤}理|
|KW|DES|存在,可完全替代加密接口|不需要额外信息|支持|
|KG|MD5|存在,不能完全替代加密接口|需要豪华会员Cookie|不支持,需要国内IP代{过}{滤}理,或者在请求url后面加上area_code=0|
|WY|AES、RSA、MD5|存在,少数接口不能使用未加密接口,如登录|需要黑胶Cookie|不支持,但可通过设置X-Real-IP规避|
|MG|MD5|存在,可完全替代加密接口|不需要额外信息|支持|
|XM|MD5|存在,可完全替代加密接口|不需要额外信息|不支持,需要国内IP代{过}{滤}理|
# 2、QQ音乐sign计算
首先说明,所有加密接口都有非加密的替代接口,但是以后肯定是向加密接口发展,两个最基础的API是
```html
https://u.y.qq.com/cgi-bin/musicu.fcg支持加密和非加密
https://u.y.qq.com/cgi-bin/musics.fcg 仅支持加密
```
具体的下面的分析写在PDF里,可以从附件下载。
也可以看看在线版:https://blog.csdn.net/qq_23594799/article/details/111477320
.版本 2
.子程序 取sign, 文本型
.参数 提交的信息, 文本型
.局部变量 a, 字节集
.局部变量 b, 字节集
.局部变量 i, 整数型
.局部变量 MD5, 文本型
.局部变量 sign, 文本型
.局部变量 zd, 文本型
.局部变量 Ls, 整数型, , "0"
MD5 = 校验_取md5_文本 (提交的信息, 真, 真, 假)
sign = “zzb”
a = { 21, 4, 9, 26, 16, 20, 27, 30 }
.计次循环首 (取字节集长度 (a), i)
sign = sign + 取文本中间 (MD5, 取字节集数据 (取字节集中间 (a, i, 1), 3, 1) + 1, 1)
.计次循环尾 ()
a = 字节集_十六进制到字节集 (“D42D5044C3A3A3CB9DDCFE5BCC4F6806”)
b = 字节集_十六进制到字节集 (MD5)
.计次循环首 (取字节集长度 (a), i)
加入成员 (Ls, 位异或 (取字节集数据 (取字节集中间 (a, i, 1), 3, 1), 取字节集数据 (取字节集中间 (b, i, 1), 3, 1)))
.计次循环尾 ()
zd = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789”
i = 0
.计次循环首 (5, )
sign = sign + 取文本中间 (zd, 右移 (Ls , 2) + 1, 1)
sign = sign + 取文本中间 (zd, 位或 (左移 (位与 (Ls , 3), 4), 右移 (Ls , 4)) + 1, 1)
sign = sign + 取文本中间 (zd, 位或 (左移 (位与 (Ls , 15), 2), 右移 (Ls , 6)) + 1, 1)
sign = sign + 取文本中间 (zd, 位与 (Ls , 63) + 1, 1)
i = i + 3
.计次循环尾 ()
sign = sign + 取文本中间 (zd, 右移 (Ls , 2) + 1, 1)
sign = sign + 取文本中间 (zd, 左移 (位与 (Ls , 3), 4) + 1, 1)
a = { 18, 11, 3, 2, 1, 7, 6, 25 }
.计次循环首 (取字节集长度 (a), i)
sign = sign + 取文本中间 (MD5, 取字节集数据 (取字节集中间 (a, i, 1), 3, 1) + 1, 1)
.计次循环尾 ()
返回 (到小写 (sign))
不就是这个吗 学习到了,这就去搞KW 谢谢分享
谢谢分享
谢谢分享 谢谢楼主分享了{:1_893:} 我說怎麽有那麽多聚合音樂網站,原來是有高手都做出來文檔了。 不错的学习文章 谢谢楼主分享 感谢分享