逆向目标
- 接口:https://passport.fang.com/loginwithpwdStrong.api
- 加密参数:pwd
- Gt、Chanllenge、Validate:都是滑块轨迹加密参数,本章不做分析
逆向过程
通过分析网络请求,可以发现loginwithpwdStrong.api就是我们要找的目标,然后分析Initiator如下,直接点击跟进去,发现了我们要找的目标
加密参数分析
在 pwd: encryptedString(key_to_encode, that.password.val()) 所在行打个断点,重新拖动滑块后发现在断点处断住了
可以看到encryptedString就是加密对象
直接跟进去,如下:
可以把整个RSA.min.js文件拷贝下来,这个时候就剩一个key_to_encode参数,我们发现无法跟进去,那我们就直接搜索这个参数
直接跟进去就看到了我们要找的东西
至此,所涉及到加密参数都已分析完毕,如下结果
function setMaxDigits(n) {
maxDigits = n;
ZERO_ARRAY = new Array(maxDigits);
for (var t = 0; t < ZERO_ARRAY.length; t++)
ZERO_ARRAY[t] = 0;
bigZero = new BigInt;
bigOne = new BigInt;
bigOne.digits[0] = 1
}
function BigInt(n) {
this.digits = typeof n == "boolean" && n == !0 ? null : ZERO_ARRAY.slice(0);
this.isNeg = !1
}
function biFromDecimal(n) {
for (var u = n.charAt(0) == "-", t = u ? 1 : 0, i, f, r; t < n.length && n.charAt(t) == "0"; )
++t;
if (t == n.length)
i = new BigInt;
else {
for (f = n.length - t,
r = f % dpl10,
r == 0 && (r = dpl10),
i = biFromNumber(Number(n.substr(t, r))),
t += r; t < n.length; )
i = biAdd(biMultiply(i, lr10), biFromNumber(Number(n.substr(t, dpl10)))),
t += dpl10;
i.isNeg = u
}
return i
}
function biCopy(n) {
var t = new BigInt(!0);
return t.digits = n.digits.slice(0),
t.isNeg = n.isNeg,
t
}
function biFromNumber(n) {
var t = new BigInt, i;
for (t.isNeg = n < 0,
n = Math.abs(n),
i = 0; n > 0; )
t.digits[i++] = n & maxDigitVal,
n = Math.floor(n / biRadix);
return t
}
function reverseStr(n) {
for (var i = "", t = n.length - 1; t > -1; --t)
i += n.charAt(t);
return i
}
function biToString(n, t) {
var r = new BigInt, i, u;
for (r.digits[0] = t,
i = biDivideModulo(n, r),
u = hexatrigesimalToChar[i[1].digits[0]]; biCompare(i[0], bigZero) == 1; )
i = biDivideModulo(i[0], r),
digit = i[1].digits[0],
u += hexatrigesimalToChar[i[1].digits[0]];
return (n.isNeg ? "-" : "") + reverseStr(u)
}
function biToDecimal(n) {
var i = new BigInt, t, r;
for (i.digits[0] = 10,
t = biDivideModulo(n, i),
r = String(t[1].digits[0]); biCompare(t[0], bigZero) == 1; )
t = biDivideModulo(t[0], i),
r += String(t[1].digits[0]);
return (n.isNeg ? "-" : "") + reverseStr(r)
}
function digitToHex(n) {
var t = "";
for (i = 0; i < 4; ++i)
t += hexToChar[n & 15],
n >>>= 4;
return reverseStr(t)
}
function biToHex(n) {
for (var i = "", r = biHighIndex(n), t = biHighIndex(n); t > -1; --t)
i += digitToHex(n.digits[t]);
return i
}
function charToHex(n) {
var t = 48
, u = t + 9
, i = 97
, f = i + 25
, r = 65;
return n >= t && n <= u ? n - t : n >= r && n <= 90 ? 10 + n - r : n >= i && n <= f ? 10 + n - i : 0
}
function hexToDigit(n) {
for (var t = 0, r = Math.min(n.length, 4), i = 0; i < r; ++i)
t <<