Skip to content

Latest commit

 

History

History
57 lines (46 loc) · 1.66 KB

README.md

File metadata and controls

57 lines (46 loc) · 1.66 KB

网易云音乐

1、参考文章

2、解析原理

核心js文件:https://s3.music.126.net/web/s/core_218ed265fbaa5bb4f64fdbcaaefef8ba.js

逆向入口(格式化之后在8015行左右)

var v = encrypt.asrsea(JSON.stringify(r), enk.emj2code(["流泪", "强"]), enk.BASE_CODE, enk.emj2code(["爱心", "女孩", "惊恐", "大笑"]));
return a.body = obj2query({
    params: v.encText,
    encSecKey: v.encSecKey
}),

params

追踪之后可以发现

params参数也就是v.encText是通过将

{"hlpretag":"<span class=\\"s-fc7\\">","hlposttag":"</span>","s":"音乐名","type":"1","offset":"0","total":"true","limit":"30","csrf_token":""}

经过两次AES CBC加密得到的

关键代码如下

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()
    }

encSecKey

encSecKey的获取就有亿点点恶心了。。。

关键代码(很短):

function c(a, b, c) {
    var d, e;
    return setMaxDigits(131), d = new RSAKeyPair(b, "", c), e = encryptedString(d, a)
    }

然而,当你欢喜地把这段代码扔到execjs里执行,你就会发现根本执行不了

原因就出在RSAKeyPair

这个函数依赖BigInt.jsBarrett.js(找到我崩溃...)

将这三部分代码合并,就成了crack.js