逆向网址
aHR0cHM6Ly9tdXNpYy4xNjMuY29t
逆向链接
aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvc29uZz9pZD0yMTA4ODI3MDEz
逆向接口
aHR0cHM6Ly9tdXNpYy4xNjMuY29tL3dlYXBpL3NvbmcvZW5oYW5jZS9wbGF5ZXIvdXJsL3Yx
逆向过程
请求方式:POST
参数构成:
【params】 Dr5PjFX9UmxjGjvzghpTmOLNBDkkgxkFsxqZxr0iEY2bMHmTl3zK1pb6KXAlC6jaGU3WVagwqAHBltXe2m0Sn5jPuAXFIQLZB/dkSrptQ5O7sKTldVelBecqSEddmhiVcSVpotqSIPUeQab3YAz0Ug==
【encSecKey】 baf1566a6a95c1930450121bd12ed940dbe2a8e8d318bcbc680fcf405734a1f556e127ef5335e573206d9f9413dfdc293fd96bb15ea6448d6413e5c759c1df4cf57b32d8a09eea1de30ac936ab08df31e15b7fc537a6129e0af1d775fc7dcc80e1fc67eb2891cc0413818b1659051703b79fecd9de14e9a3d3a7c0c022ef2a56
调试过程
根据断点可快速进入发包内容
XHR 方断点方式进入【core_68e6bfa8b271f010cf6aea1c538364fc.js】
全局搜索【 encSecKey 】
变量 bVi1x 结果值为我们需要的结果 【window.asrsea(JSON.stringify(i7b), bsu0x(["流泪", "强"]), bsu0x(Xo3x.md), bsu0x(["爱心", "女孩", "惊恐", "大笑"]));】
断点技巧:调试可知 X7Q 为接口地址
那么可以将断点设置为:条件断点
X7Q.indexOf( 'enhance' ) != -1
意思就是请求链接中匹配到关键词【enhance】 才会断住,其余链接则放过
扣取代码
ar bVi1x = window.asrsea(JSON.stringify(i7b), bsu0x(["流泪", "强"]), bsu0x(Xo3x.md), bsu0x(["爱心", "女孩", "惊恐", "大笑"]));
var c7f = NEJ.P
, ev8n = c7f("nej.g")
, u7n = c7f("nej.j")
, j7c = c7f("nej.u")
, Xo3x = c7f("nm.x.ek")
, l7e = c7f("nm.x");
var bsu0x = function(cxU6O) {
var m7f = [];
j7c.bh7a(cxU6O, function(cxT6N) {
m7f.push(Xo3x.emj[cxT6N])
});
return m7f.join("")
};
根据调试可知:参数 【i7b】 值是定值,ids为歌曲编号
那么主要问题就是上述代码中的变量是如何来的?
var c7f = NEJ.P
, ev8n = c7f("nej.g")
, u7n = c7f("nej.j")
, j7c = c7f("nej.u")
, Xo3x = c7f("nm.x.ek")
, l7e = c7f("nm.x");
那么我给上述位置打上断点, 刷新页面。
在控制台中输出【c7f】点击可直接进入到函数体内部
将该自执行体复制下来,
依此方式扣取下来发现内部很多都在混合调用。 很难辨别那个自执行是我们需要的 那个不是我们需要的, 干脆将我们定位到加密的函数之上的所有均拿出来
确定加密
那么就会发现关键词【 CryptoJS 】加密库
调用改写
那么这时候只需要稍微改写下我们的代码文件即可。
function getEnc( ids ){
var bsu0x = function(cxU6O) {
var m7f = [];
j7c.bh7a(cxU6O, function(cxT6N) {
m7f.push(Xo3x.emj[cxT6N])
});
return m7f.join("")
};
var str = {
"ids": ids,
"level":"standard",
"encodeType":"aac",
"csrf_token":""
}
return window.asrsea(JSON.stringify(str), bsu0x(["流泪", "强"]), bsu0x(Xo3x.md), bsu0x(["爱心", "女孩", "惊恐", "大笑"]));
}
调用方式
console.log( getEnc([454698657]) )
执行结果
****************************
扣取下代码后,在浏览器环境下运行是没有问题的,但是我们单独执行却不吐值,这主要是因为存在环境检测,所以还需要进行补环境操作。我们下篇文章在讲如何进行补环境