天翼云登录参数 password 、comParam_curTime、comParam_seqCode、comParam_signature JavaSrcipt逆向
目标网站
https://m.ctyun.cn/wap/main/auth/login?redirect=/my
目标参数
要逆向的有 password、comParam_curTime、comParam_seqCode、comParam_signature 四个参数
逆向分析
打开搜索工具栏,根据经验搜索**password:**得到
猜测password大概在此处加密
userName: Object(w["g"])(r.value),
password: encodeURI(Object(w["c"])(a.value, Object(w["f"])(Object(w["g"])(r.value))))
此处添加断点,输入账号、密码,从新登录,断点断住,分析得出密码在此处加密。
只要解出 Object(u[“c”])、Object(u[“f”])、Object(u[“g”])、a.value、s.value 即可
在控制台输入 **a.value、s.value,**其值分别为账号、密码
Object(w[“c”]) 方法是一个 M 函数:
M = function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "",
t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
}, r = t.enc,
a = void 0 === r ? "Utf8" : r,
o = t.mode,
c = void 0 === o ? "ECB" : o,
i = t.padding,
u = void 0 === i ? "Pkcs7" : i,
d = p.a.enc[a].parse(n),
s = {
mode: p.a.mode[c],
padding: p.a.pad[u]
}, l = p.a.TripleDES.encrypt(e, d, s);
return l.toString()
}
p.a 属性不用扣代码,使用 crypto-js 第三方模块就可以
Object(w[“f”]) 方法是一个 _ 函数:
_ = function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {
};
if (e && "string" === typeof e) {
var t = n.text || "0",
r = n.length || 24;
if (e.length < r) for (var a = e.length; a < r; a++)
e += t;
else e = e.substring(0, r);
return e
}
}
Object(w[“g”]) 方法是一个 K 函数:
Q = function() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
return e.replace(/\s+/g, "")
};
代码:
// crypto-js 模块安装命令:npm i crypto-js --save
const CryptoJS = require('crypto-js')
const T = function (e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""
, t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
}
, a = t.enc
, r = void 0 === a ? "Utf8" : a
, c = t.mode
, i = void 0 === c ? "ECB" : c
, o = t.padding
, u = void 0 === o ? "Pkcs7" : o
, d = CryptoJS.enc[r].parse(n)
, l = {
mode: CryptoJS.mode[i],
padding: CryptoJS.pad[u]
}
, s = CryptoJS.TripleDES.encrypt(e, d, l);
return s.toString()
}
const F = function (e) {
var n = arguments.length > 1 && void 0 !==