虎牙登录参数js分析

文章目录

          • 1. 网址
          • 2. 模拟登录
          • 3. 定义入口函数
          • 4. 源码

1. 网址

https://www.huya.com/g

2. 模拟登录

虎牙登录参数js分析_第1张图片

单击进入login 的js文件

虎牙登录参数js分析_第2张图片
搜索password:
在这里插入图片描述

单步进去加密逻辑,此处即为入口函数

虎牙登录参数js分析_第3张图片

3. 定义入口函数
function getPwd(password) {
return this.toHex(this.core(this.toArray(password)))
}

接下来找到各个加密方法即可,其实就是入口函数下面几个方法

4. 源码
toArray = function(e) {
for (var t = (e.length + 8 >> 6) + 1, o = new Array(16 * t), n = 0; 16 * t > n; n++) o[n] = 0;
for (n = 0; n < e.length; n++) o[n >> 2] |= e.charCodeAt(n) << 24 - 8 * (3 & n);
return o[n >> 2] |= 128 << 24 - 8 * (3 & n),
o[16 * t - 1] = 8 * e.length,
o
},
toHex = function(e) {
for (var t = "0123456789abcdef",
o = "",
n = 0; n < 4 * e.length; n++) o += t.charAt(e[n >> 2] >> 8 * (3 - n % 4) + 4 & 15) + t.charAt(e[n >> 2] >> 8 * (3 - n % 4) & 15);
return o
},
core = function(e) {
for (var t = e,
o = new Array(80), n = 1732584193, a = -271733879, s = -1732584194, i = 271733878, r = -1009589776, c = 0; c < t.length; c += 16) {
    for (var d = n,
    l = a,
    u = s,
    p = i,
    m = r,
    h = 0; 80 > h; h++) {
        o[h] = 16 > h ? t[c + h] : this.rol(o[h - 3] ^ o[h - 8] ^ o[h - 14] ^ o[h - 16], 1);
        var g = this.add(this.add(this.rol(n, 5), this.ft(h, a, s, i)), this.add(this.add(r, o[h]), this.kt(h)));
        r = i,
        i = s,
        s = this.rol(a, 30),
        a = n,
        n = g
    }
    n = this.add(n, d),
    a = this.add(a, l),
    s = this.add(s, u),
    i = this.add(i, p),
    r = this.add(r, m)
}
return new Array(n, a, s, i, r)
},
add = function(e, t) {
var o = (65535 & e) + (65535 & t),
n = (e >> 16) + (t >> 16) + (o >> 16);
return n << 16 | 65535 & o
},
rol = function(e, t) {
return e << t | e >>> 32 - t
},
ft = function(e, t, o, n) {
return 20 > e ? t & o | ~t & n: 40 > e ? t ^ o ^ n: 60 > e ? t & o | t & n | o & n: t ^ o ^ n
},
kt = function(e) {
return 20 > e ? 1518500249 : 40 > e ? 1859775393 : 60 > e ? -1894007588 : -899497514
}

function getPwd(password) {
return this.toHex(this.core(this.toArray(password)))
}

你可能感兴趣的:(Encryption,and,decryption)