逆向案例二十六——webpack自执行函数是完整的,但我们只需要加载器,某职业技术学校登陆密码逆向

网址:统一身份认证平台

找到登陆包,搜索找到加密位置。

找到加密位置,打上断点

 

分析,E就是加密结果

 

进入n.i函数,就是t.i,看一下这个函数,传一个值,然后不变的返回,所以没什么意义

因此直接看u.c,很明显的webpack,找到前面定义u的位置,打上断点,释放其他断点,然后刷新页面。

进入n,发现它是一个完整的自执行函数 。总共有7万多行,我们只复制加载器,导出加载器,删除初始化。改成字典格式。

补充细枝末节,接下来就是补充函数模块。

缺少45模块,回到初始n(45) ,找到函数复制。可以发现,这是在子文件中

 

整体结果展示。

完整代码:

var yangxin;
window=global;
!function(e) {
    function t(n) {
        console.log(n)
        if (r[n])
            return r[n].exports;
        var o = r[n] = {
            i: n,
            l: !1,
            exports: {}
        };
        return e[n].call(o.exports, o, o.exports, t),
        o.l = !0,
        o.exports
    }
    yangxin=t
    var n = window.webpackJsonp;
    window.webpackJsonp = function(r, i, a) {
        for (var c, u, l, s = 0, f = []; s < r.length; s++)
            u = r[s],
            o[u] && f.push(o[u][0]),
            o[u] = 0;
        for (c in i)
            Object.prototype.hasOwnProperty.call(i, c) && (e[c] = i[c]);
        for (n && n(r, i, a); f.length; )
            f.shift()();
        if (a)
            for (s = 0; s < a.length; s++)
                l = t(t.s = a[s]);
        return l
    }
    ;
    var r = {}
      , o = {
        1: 0
    };
    t.e = function(e) {
        function n() {
            c.onerror = c.onload = null,
            clearTimeout(u);
            var t = o[e];
            0 !== t && (t && t[1](new Error("Loading chunk " + e + " failed.")),
            o[e] = void 0)
        }
        var r = o[e];
        if (0 === r)
            return new Promise(function(e) {
                e()
            }
            );
        if (r)
            return r[2];
        var i = new Promise(function(t, n) {
            r = o[e] = [t, n]
        }
        );
        r[2] = i;
        var a = document.getElementsByTagName("head")[0]
          , c = document.createElement("script");
        c.type = "text/javascript",
        c.charset = "utf-8",
        c.async = !0,
        c.timeout = 12e4,
        t.nc && c.setAttribute("nonce", t.nc),
        c.src = t.p + "" + e + "." + {
            0: "9cb4f940d5df451f543d"
        }[e] + ".js";
        var u = setTimeout(n, 12e4);
        return c.onerror = c.onload = n,
        a.appendChild(c),
        i
    }
    ,
    t.m = e,
    t.c = r,
    t.i = function(e) {
        return e
    }
    ,
    t.d = function(e, n, r) {
        t.o(e, n) || Object.defineProperty(e, n, {
            configurable: !1,
            enumerable: !0,
            get: r
        })
    }
    ,
    t.n = function(e) {
        var n = e && e.__esModule ? function() {
            return e.default
        }
        : function() {
            return e
        }
        ;
        return t.d(n, "a", n),
        n
    }
    ,
    t.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    t.p = "/",
    t.oe = function(e) {
        throw console.error(e),
        e
    }
}({
    45: function(e, t, n) {
        "use strict";
        function a(e) {
            U = e,
            R = new Array(U);
            for (var t = 0; t < R.length; t++)
                R[t] = 0;
            q = new i,
            F = new i,
            F.digits[0] = 1
        }
        function i(e) {
            this.digits = "boolean" == typeof e && 1 == e ? null : R.slice(0),
            this.isNeg = !1
        }
        function r(e) {
            var t = new i(!0);
            return t.digits = e.digits.slice(0),
            t.isNeg = e.isNeg,
            t
        }
        function o(e) {
            var t = new i;
            t.isNeg = e < 0,
            e = Math.abs(e);
            for (var n = 0; e > 0; )
                t.digits[n++] = e & X,
                e = Math.floor(e / j);
            return t
        }
        function s(e) {
            for (var t = "", n = e.length - 1; n > -1; --n)
                t += e.charAt(n);
            return t
        }
        function c(e, t) {
            var n = new i;
            n.digits[0] = t;
            for (var a = C(e, n), r = H[a[1].digits[0]]; 1 == k(a[0], q); )
                a = C(a[0], n),
                digit = a[1].digits[0],
                r += H[a[1].digits[0]];
            return (e.isNeg ? "-" : "") + s(r)
        }
        function l(e) {
            for (var t = "", n = 0; n < 4; ++n)
                t += J[15 & e],
                e >>>= 4;
            return s(t)
        }
        function u(e) {
            for (var t = "", n = (h(e),
            h(e)); n > -1; --n)
                t += l(e.digits[n]);
            return t
        }
        function p(e) {
            return e >= 48 && e <= 57 ? e - 48 : e >= 65 && e <= 90 ? 10 + e - 65 : e >= 97 && e <= 122 ? 10 + e - 97 : 0
        }
        function d(e) {
            for (var t = 0, n = Math.min(e.length, 4), a = 0; a < n; ++a)
                t <<= 4,
                t |= p(e.charCodeAt(a));
            return t
        }
        function m(e) {
            for (var t = new i, n = e.length, a = n, r = 0; a > 0; a -= 4,
            ++r)
                t.digits[r] = d(e.substr(Math.max(a - 4, 0), Math.min(a, 4)));
            return t
        }
        function _(e, t) {
            var n = "-" == e.charAt(0)
              , a = n ? 1 : 0
              , r = new i
              , o = new i;
            o.digits[0] = 1;
            for (var s = e.length - 1; s >= a; s--) {
                r = f(r, b(o, p(e.charCodeAt(s)))),
                o = b(o, t)
            }
            return r.isNeg = n,
            r
        }
        function f(e, t) {
            var n;
            if (e.isNeg != t.isNeg)
                t.isNeg = !t.isNeg,
                n = g(e, t),
                t.isNeg = !t.isNeg;
            else {
                n = new i;
                for (var a, r = 0, o = 0; o < e.digits.length; ++o)
                    a = e.digits[o] + t.digits[o] + r,
                    n.digits[o] = a % j,
                    r = Number(a >= j);
                n.isNeg = e.isNeg
            }
            return n
        }
        function g(e, t) {
            var n;
            if (e.isNeg != t.isNeg)
                t.isNeg = !t.isNeg,
                n = f(e, t),
                t.isNeg = !t.isNeg;
            else {
                n = new i;
                var a, r;
                r = 0;
                for (var o = 0; o < e.digits.length; ++o)
                    a = e.digits[o] - t.digits[o] + r,
                    n.digits[o] = a % j,
                    n.digits[o] < 0 && (n.digits[o] += j),
                    r = 0 - Number(a < 0);
                if (-1 == r) {
                    r = 0;
                    for (var o = 0; o < e.digits.length; ++o)
                        a = 0 - n.digits[o] + r,
                        n.digits[o] = a % j,
                        n.digits[o] < 0 && (n.digits[o] += j),
                        r = 0 - Number(a < 0);
                    n.isNeg = !e.isNeg
                } else
                    n.isNeg = e.isNeg
            }
            return n
        }
        function h(e) {
            for (var t = e.digits.length - 1; t > 0 && 0 == e.digits[t]; )
                --t;
            return t
        }
        function v(e) {
            var t, n = h(e), a = e.digits[n], i = (n + 1) * B;
            for (t = i; t > i - B && 0 == (32768 & a); --t)
                a <<= 1;
            return t
        }
        function E(e, t) {
            for (var n, a, r, o = new i, s = h(e), c = h(t), l = 0; l <= c; ++l) {
                n = 0,
                r = l;
                for (var u = 0; u <= s; ++u,
                ++r)
                    a = o.digits[r] + e.digits[u] * t.digits[l] + n,
                    o.digits[r] = a & X,
                    n = a >>> K;
                o.digits[l + s + 1] = n
            }
            return o.isNeg = e.isNeg != t.isNeg,
            o
        }
        function b(e, t) {
            var n, a, r, o = new i;
            n = h(e),
            a = 0;
            for (var s = 0; s <= n; ++s)
                r = o.digits[s] + e.digits[s] * t + a,
                o.digits[s] = r & X,
                a = r >>> K;
            return o.digits[1 + n] = a,
            o
        }
        function y(e, t, n, a, i) {
            for (var r = Math.min(t + i, e.length), o = t, s = a; o < r; ++o,
            ++s)
                n[s] = e[o]
        }
        function w(e, t) {
            var n = Math.floor(t / B)
              , a = new i;
            y(e.digits, 0, a.digits, n, a.digits.length - n);
            for (var r = t % B, o = B - r, s = a.digits.length - 1, c = s - 1; s > 0; --s,
            --c)
                a.digits[s] = a.digits[s] << r & X | (a.digits[c] & V[r]) >>> o;
            return a.digits[0] = a.digits[s] << r & X,
            a.isNeg = e.isNeg,
            a
        }
        function T(e, t) {
            var n = Math.floor(t / B)
              , a = new i;
            y(e.digits, n, a.digits, 0, e.digits.length - n);
            for (var r = t % B, o = B - r, s = 0, c = s + 1; s < a.digits.length - 1; ++s,
            ++c)
                a.digits[s] = a.digits[s] >>> r | (a.digits[c] & Y[r]) << o;
            return a.digits[a.digits.length - 1] >>>= r,
            a.isNeg = e.isNeg,
            a
        }
        function S(e, t) {
            var n = new i;
            return y(e.digits, 0, n.digits, t, n.digits.length - t),
            n
        }
        function x(e, t) {
            var n = new i;
            return y(e.digits, t, n.digits, 0, n.digits.length - t),
            n
        }
        function O(e, t) {
            var n = new i;
            return y(e.digits, 0, n.digits, 0, t),
            n
        }
        function k(e, t) {
            if (e.isNeg != t.isNeg)
                return 1 - 2 * Number(e.isNeg);
            for (var n = e.digits.length - 1; n >= 0; --n)
                if (e.digits[n] != t.digits[n])
                    return e.isNeg ? 1 - 2 * Number(e.digits[n] > t.digits[n]) : 1 - 2 * Number(e.digits[n] < t.digits[n]);
            return 0
        }
        function C(e, t) {
            var n, a, o = v(e), s = v(t), c = t.isNeg;
            if (o < s)
                return e.isNeg ? (n = r(F),
                n.isNeg = !t.isNeg,
                e.isNeg = !1,
                t.isNeg = !1,
                a = g(t, e),
                e.isNeg = !0,
                t.isNeg = c) : (n = new i,
                a = r(e)),
                new Array(n,a);
            n = new i,
            a = e;
            for (var l = Math.ceil(s / B) - 1, u = 0; t.digits[l] < G; )
                t = w(t, 1),
                ++u,
                ++s,
                l = Math.ceil(s / B) - 1;
            a = w(a, u),
            o += u;
            for (var p = Math.ceil(o / B) - 1, d = S(t, p - l); -1 != k(a, d); )
                ++n.digits[p - l],
                a = g(a, d);
            for (var m = p; m > l; --m) {
                var _ = m >= a.digits.length ? 0 : a.digits[m]
                  , E = m - 1 >= a.digits.length ? 0 : a.digits[m - 1]
                  , y = m - 2 >= a.digits.length ? 0 : a.digits[m - 2]
                  , x = l >= t.digits.length ? 0 : t.digits[l]
                  , O = l - 1 >= t.digits.length ? 0 : t.digits[l - 1];
                n.digits[m - l - 1] = _ == x ? X : Math.floor((_ * j + E) / x);
                for (var C = n.digits[m - l - 1] * (x * j + O), N = _ * z + (E * j + y); C > N; )
                    --n.digits[m - l - 1],
                    C = n.digits[m - l - 1] * (x * j | O),
                    N = _ * j * j + (E * j + y);
                d = S(t, m - l - 1),
                a = g(a, b(d, n.digits[m - l - 1])),
                a.isNeg && (a = f(a, d),
                --n.digits[m - l - 1])
            }
            return a = T(a, u),
            n.isNeg = e.isNeg != c,
            e.isNeg && (n = c ? f(n, F) : g(n, F),
            t = T(t, u),
            a = g(t, a)),
            0 == a.digits[0] && 0 == h(a) && (a.isNeg = !1),
            new Array(n,a)
        }
        function N(e, t) {
            return C(e, t)[0]
        }
        function I(e) {
            this.modulus = r(e),
            this.k = h(this.modulus) + 1;
            var t = new i;
            t.digits[2 * this.k] = 1,
            this.mu = N(t, this.modulus),
            this.bkplus1 = new i,
            this.bkplus1.digits[this.k + 1] = 1,
            this.modulo = P,
            this.multiplyMod = A,
            this.powMod = W
        }
        function P(e) {
            var t = x(e, this.k - 1)
              , n = E(t, this.mu)
              , a = x(n, this.k + 1)
              , i = O(e, this.k + 1)
              , r = E(a, this.modulus)
              , o = O(r, this.k + 1)
              , s = g(i, o);
            s.isNeg && (s = f(s, this.bkplus1));
            for (var c = k(s, this.modulus) >= 0; c; )
                s = g(s, this.modulus),
                c = k(s, this.modulus) >= 0;
            return s
        }
        function A(e, t) {
            var n = E(e, t);
            return this.modulo(n)
        }
        function W(e, t) {
            var n = new i;
            n.digits[0] = 1;
            for (var a = e, r = t; ; ) {
                if (0 != (1 & r.digits[0]) && (n = this.multiplyMod(n, a)),
                r = T(r, 1),
                0 == r.digits[0] && 0 == h(r))
                    break;
                a = this.multiplyMod(a, a)
            }
            return n
        }
        function M(e, t, n) {
            this.e = m(e),
            this.d = m(t),
            this.m = m(n),
            this.chunkSize = 2 * h(this.m),
            this.radix = 16,
            this.barrett = new I(this.m)
        }
        function D(e, t, n) {
            return new M(e,t,n)
        }
        function L(e, t) {
            for (var n = new Array, a = t.length, r = 0; r < a; )
                n[r] = t.charCodeAt(r),
                r++;
            for (; n.length % e.chunkSize != 0; )
                n[r++] = 0;
            var o, s, l, p = n.length, d = "";
            for (r = 0; r < p; r += e.chunkSize) {
                for (l = new i,
                o = 0,
                s = r; s < r + e.chunkSize; ++o)
                    l.digits[o] = n[s++],
                    l.digits[o] += n[s++] << 8;
                var m = e.barrett.powMod(l, e.e);
                d += (16 == e.radix ? u(m) : c(m, e.radix)) + " "
            }
            return d.substring(0, d.length - 1)
        }
        function Q(e, t) {
            var n, a, i, r = t.split(" "), o = "";
            for (n = 0; n < r.length; ++n) {
                var s;
                for (s = 16 == e.radix ? m(r[n]) : _(r[n], e.radix),
                i = e.barrett.powMod(s, e.d),
                a = 0; a <= h(i); ++a)
                    o += String.fromCharCode(255 & i.digits[a], i.digits[a] >> 8)
            }
            return o.charCodeAt(o.length - 1),
            o
        }
        t.a = a,
        t.b = D,
        t.c = L,
        t.d = Q;
        var U, R, q, F, K = 16, B = K, j = 65536, G = j >>> 1, z = j * j, X = j - 1;
        a(20);
        var H = (o(1e15),
        new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"))
          , J = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f")
          , V = new Array(0,32768,49152,57344,61440,63488,64512,65024,65280,65408,65472,65504,65520,65528,65532,65534,65535)
          , Y = new Array(0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535)
    },
})

u = yangxin(45)
u.a(131);
var password = '123456';
var b = u.b("010001", "", "00b5eeb166e069920e80bebd1fea4829d3d1f3216f2aabe79b6c47a3c18dcee5fd22c2e7ac519cab59198ece036dcf289ea8201e2a0b9ded307f8fb704136eaeb670286f5ad44e691005ba9ea5af04ada5367cd724b5a26fdb5120cc95b6431604bd219c6b7d83a6f8f24b43918ea988a76f93c333aa5a20991493d4eb1117e7b1")
function encrypted_pwd(b,password){
    E = u.c(b, password)
    return E
}

console.log(encrypted_pwd(b,password))

猜你喜欢

转载自blog.csdn.net/m0_57265868/article/details/140520463