2024年第九届全国学生“学宪法讲宪法”(宪法小卫士)登录分析

查看 54|回复 9
作者:头脑发热的少年   
首先江湖规矩f12,找到登录接口,直接堆栈分析,找到图中的调用堆栈,别问我为什么是这个,当然是从第一个往上追的呗


image.png (317.86 KB, 下载次数: 0)
下载附件
2024-11-10 18:05 上传

其次当然是点进来了,就看到了经典的passwordSMEncryption,这不就找到了么,直接再e.passwordSMEncryption打断点,然后再跟进去


image.png (293.38 KB, 下载次数: 0)
下载附件
2024-11-10 18:08 上传

最后你猜怎么着,看到了经典的 n("8060") ,这不就是 webpack么,这就简单了呀,直接着加载器呗,在 n("8060")下断点,跟进去找加载器


image.png (297.5 KB, 下载次数: 0)
下载附件
2024-11-10 18:11 上传



image.png (287.05 KB, 下载次数: 0)
下载附件
2024-11-10 18:14 上传

找到了,直接扣下来,然后再来个外部调用


image.png (113.39 KB, 下载次数: 0)
下载附件
2024-11-10 18:17 上传

然后把要补的方法挨个补齐,最后调用加密算法,结果就直接出来了,key是验证码接口返回的


image.png (173.39 KB, 下载次数: 0)
下载附件
2024-11-10 18:19 上传

补充一哈,这三个值调用的方法是一样的,


image.png (258.86 KB, 下载次数: 0)
下载附件
2024-11-10 18:21 上传

最后直接上你们最爱的成品代码

[color=]谨记,仅用于学习交流使用,切勿用于非法用途,否则一切后果自行承担,与本作者无关

[JavaScript] 纯文本查看 复制代码window=global;
var SME
(function(e) {
    function t(t) {
        for (var a, i, c = t[0], s = t[1], u = t[2], l = 0, d = []; l  128 && (c = c.substr(c.length - 128));
            const l = e.multiply(r)
              , u = s.hexToArray(s.leftPad(l.getX().toBigInteger().toRadix(16), 64))
              , p = s.hexToArray(s.leftPad(l.getY().toBigInteger().toRadix(16), 64))
              , f = s.arrayToHex(a([].concat(u, t, p)));
            let h = 1
              , m = 0
              , g = [];
            const v = [].concat(u, p)
              , b = () => {
                g = a([...v, h >> 24 & 255, h >> 16 & 255, h >> 8 & 255, 255 & h]),
                h++,
                m = 0
            }
            ;
            b();
            for (let i = 0, s = t.length; i  {
                v = a([...b, m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, 255 & m]),
                m++,
                g = 0
            }
            ;
            y();
            for (let i = 0, s = l.length; i > 8 & 255);
            const h = a(p);
            return s.arrayToHex(a(h.concat(s.hexToArray(t))))
        }
        function v(t) {
            const e = c.multiply(new i(t,16))
              , n = s.leftPad(e.getX().toBigInteger().toString(16), 64)
              , o = s.leftPad(e.getY().toBigInteger().toString(16), 64);
            return "04" + n + o
        }
        function b() {
            const t = s.generateKeyPairHex()
              , e = l.decodePointHex(t.publicKey);
            return t.k = new i(t.privateKey,16),
            t.x1 = e.getX().toBigInteger(),
            t
        }
        t.exports = {
            generateKeyPairHex: s.generateKeyPairHex,
            compressPublicKeyHex: s.compressPublicKeyHex,
            comparePublicKeyHex: s.comparePublicKeyHex,
            doEncrypt: p,
            doDecrypt: f,
            doSignature: h,
            doVerifySignature: m,
            getPublicKeyFromPrivateKey: v,
            getPoint: b,
            verifyPublicKey: s.verifyPublicKey
        }
    },
        e0c8: function(t, e, n) {
        (function() {
            var e, n = 0xdeadbeefcafe, i = 15715070 == (16777215 & n);
            function o(t, e, n) {
                null != t && ("number" == typeof t ? this.fromNumber(t, e, n) : null == e && "string" != typeof t ? this.fromString(t, 256) : this.fromString(t, e))
            }
            function r() {
                return new o(null)
            }
            function s(t, e, n, i, o, r) {
                while (--r >= 0) {
                    var s = e * this[t++] + n + o;
                    o = Math.floor(s / 67108864),
                    n[i++] = 67108863 & s
                }
                return o
            }
            function a(t, e, n, i, o, r) {
                var s = 32767 & e
                  , a = e >> 15;
                while (--r >= 0) {
                    var c = 32767 & this[t]
                      , l = this[t++] >> 15
                      , u = a * c + l * s;
                    c = s * c + ((32767 & u) >> 30) + (u >>> 15) + a * l + (o >>> 30),
                    n[i++] = 1073741823 & c
                }
                return o
            }
            function c(t, e, n, i, o, r) {
                var s = 16383 & e
                  , a = e >> 14;
                while (--r >= 0) {
                    var c = 16383 & this[t]
                      , l = this[t++] >> 14
                      , u = a * c + l * s;
                    c = s * c + ((16383 & u) > 28) + (u >> 14) + a * l,
                    n[i++] = 268435455 & c
                }
                return o
            }
            var l = "undefined" !== typeof navigator;
            l && i && "Microsoft Internet Explorer" == navigator.appName ? (o.prototype.am = a,
            e = 30) : l && i && "Netscape" != navigator.appName ? (o.prototype.am = s,
            e = 26) : (o.prototype.am = c,
            e = 28),
            o.prototype.DB = e,
            o.prototype.DM = (1 = 0; --e)
                    t[e] = this[e];
                t.t = this.t,
                t.s = this.s
            }
            function b(t) {
                this.t = 1,
                this.s = t  0 ? this[0] = t : t = 0) {
                    var a = 8 == n ? 255 & t : g(t, i);
                    a  this.DB ? (this[this.t - 1] |= (a & (1 > this.DB - s) : this[this.t - 1] |= a = this.DB && (s -= this.DB))
                }
                8 == n && 0 != (128 & t[0]) && (this.s = -1,
                s > 0 && (this[this.t - 1] |= (1  0 && this[this.t - 1] == t)
                    --this.t
            }
            function x(t) {
                if (this.s  0) {
                    a > a) > 0 && (o = !0,
                    r = m(n));
                    while (s >= 0)
                        a > (a += this.DB - e)) : (n = this >> (a -= e) & i,
                        a  0 && (o = !0),
                        o && (r += m(n))
                }
                return o ? r : "0"
            }
            function w() {
                var t = r();
                return o.ZERO.subTo(this, t),
                t
            }
            function _() {
                return this.s = 0)
                    if (0 != (e = this[n] - t[n]))
                        return e;
                return 0
            }
            function k(t) {
                var e, n = 1;
                return 0 != (e = t >>> 16) && (t = e,
                n += 16),
                0 != (e = t >> 8) && (t = e,
                n += 8),
                0 != (e = t >> 4) && (t = e,
                n += 4),
                0 != (e = t >> 2) && (t = e,
                n += 2),
                0 != (e = t >> 1) && (t = e,
                n += 1),
                n
            }
            function T() {
                return this.t = 0; --n)
                    e[n + t] = this[n];
                for (n = t - 1; n >= 0; --n)
                    e[n] = 0;
                e.t = this.t + t,
                e.s = this.s
            }
            function E(t, e) {
                for (var n = t; n = 0; --n)
                    e[n + s + 1] = this[n] >> o | a,
                    a = (this[n] & r) = 0; --n)
                    e[n] = 0;
                e = a,
                e.t = this.t + s + 1,
                e.s = this.s,
                e.clamp()
            }
            function N(t, e) {
                e.s = this.s;
                var n = Math.floor(t / this.DB);
                if (n >= this.t)
                    e.t = 0;
                else {
                    var i = t % this.DB
                      , o = this.DB - i
                      , r = (1 > i;
                    for (var s = n + 1; s > i;
                    i > 0 && (e[this.t - n - 1] |= (this.s & r) >= this.DB;
                if (t.t >= this.DB;
                    i += this.s
                } else {
                    i += this.s;
                    while (n >= this.DB;
                    i -= t.s
                }
                e.s = i  0 && (e[n++] = i),
                e.t = n,
                e.clamp()
            }
            function B(t, e) {
                var n = this.abs()
                  , i = t.abs()
                  , r = n.t;
                e.t = r + i.t;
                while (--r >= 0)
                    e[r] = 0;
                for (r = 0; r = 0)
                    t[n] = 0;
                for (n = 0; n = e.DV && (t[n + e.t] -= e.DV,
                    t[n + e.t + 1] = 1)
                }
                t.t > 0 && (t[t.t - 1] += e.am(n, e[n], t, 2 * n, 0, 1)),
                t.s = 0,
                t.clamp()
            }
            function L(t, e, n) {
                var i = t.abs();
                if (!(i.t  0 ? (i.lShiftTo(u, a),
                    s.lShiftTo(u, n)) : (i.copyTo(a),
                    s.copyTo(n));
                    var d = a.t
                      , p = a[d - 1];
                    if (0 != p) {
                        var f = p * (1  1 ? a[d - 2] >> this.F2 : 0)
                          , h = this.FV / f
                          , m = (1 = 0 && (n[n.t++] = 1,
                        n.subTo(y, n)),
                        o.ONE.dlShiftTo(d, y),
                        y.subTo(a, a);
                        while (a.t = 0) {
                            var I = n[--v] == p ? this.DM : Math.floor(n[v] * h + (n[v - 1] + g) * m);
                            if ((n[v] += a.am(0, I, n, b, 0, d))  0 && n.rShiftTo(u, n),
                        c  0 && t.subTo(e, e),
                e
            }
            function j(t) {
                this.m = t
            }
            function P(t) {
                return t.s = 0 ? t.mod(this.m) : t
            }
            function U(t) {
                return t
            }
            function M(t) {
                t.divRemTo(this.m, null, t)
            }
            function q(t, e, n) {
                t.multiplyTo(e, n),
                this.reduce(n)
            }
            function z(t, e) {
                t.squareTo(e),
                this.reduce(e)
            }
            function H() {
                if (this.t  0 ? this.DV - e : -e
            }
            function V(t) {
                this.m = t,
                this.mp = t.invDigit(),
                this.mpl = 32767 & this.mp,
                this.mph = this.mp >> 15,
                this.um = (1  0 && this.m.subTo(e, e),
                e
            }
            function K(t) {
                var e = r();
                return t.copyTo(e),
                this.reduce(e),
                e
            }
            function G(t) {
                while (t.t > 15) * this.mpl & this.um) = t.DV)
                        t[n] -= t.DV,
                        t[++n]++
                }
                t.clamp(),
                t.drShiftTo(this.m.t, t),
                t.compareTo(this.m) >= 0 && t.subTo(this.m, t)
            }
            function W(t, e) {
                t.squareTo(e),
                this.reduce(e)
            }
            function X(t, e, n) {
                t.multiplyTo(e, n),
                this.reduce(n)
            }
            function Y() {
                return 0 == (this.t > 0 ? 1 & this[0] : this.s)
            }
            function Q(t, e) {
                if (t > 4294967295 || t = 0)
                    if (e.sqrTo(n, i),
                    (t & 1  0)
                        e.mulTo(i, s, n);
                    else {
                        var c = n;
                        n = i,
                        i = c
                    }
                return e.revert(n)
            }
            function Z(t, e) {
                var n;
                return n = t > 24
            }
            function nt() {
                return 0 == this.t ? this.s : this[0] > 16
            }
            function it(t) {
                return Math.floor(Math.LN2 * this.DB / Math.log(t))
            }
            function ot() {
                return this.s  36)
                    return "0";
                var e = this.chunkSize(t)
                  , n = Math.pow(t, e)
                  , i = y(n)
                  , o = r()
                  , s = r()
                  , a = "";
                this.divRemTo(i, o, s);
                while (o.signum() > 0)
                    a = (n + s.intValue()).toString(t).substr(1) + a,
                    o.divRemTo(i, o, s);
                return s.intValue().toString(t) + a
            }
            function st(t, e) {
                this.fromInt(0),
                null == e && (e = 10);
                for (var n = this.chunkSize(e), i = Math.pow(e, n), r = !1, s = 0, a = 0, c = 0; c = n && (this.dMultiply(i),
                    this.dAddOffset(a, 0),
                    s = 0,
                    a = 0))
                }
                s > 0 && (this.dMultiply(Math.pow(e, s)),
                this.dAddOffset(a, 0)),
                r && o.ZERO.subTo(this, this)
            }
            function at(t, e, n) {
                if ("number" == typeof e)
                    if (t  t && this.subTo(o.ONE.shiftLeft(t - 1), this)
                    }
                else {
                    var i = new Array
                      , r = 7 & t;
                    i.length = 1 + (t >> 3),
                    e.nextBytes(i),
                    r > 0 ? i[0] &= (1  0) {
                    i > i) != (this.s & this.DM) >> i && (e[o++] = n | this.s = 0)
                        i > (i += this.DB - 8)) : (n = this[t] >> (i -= 8) & 255,
                        i  0 || n != this.s) && (e[o++] = n)
                }
                return e
            }
            function lt(t) {
                return 0 == this.compareTo(t)
            }
            function ut(t) {
                return this.compareTo(t)  0 ? this : t
            }
            function pt(t, e, n) {
                var i, o, r = Math.min(t.t, this.t);
                for (i = 0; i >= 16,
                e += 16),
                0 == (255 & t) && (t >>= 8,
                e += 8),
                0 == (15 & t) && (t >>= 4,
                e += 4),
                0 == (3 & t) && (t >>= 2,
                e += 2),
                0 == (1 & t) && ++e,
                e
            }
            function St() {
                for (var t = 0; t = this.t ? 0 != this.s : 0 != (this[e] & 1 >= this.DB;
                if (t.t >= this.DB;
                    i += this.s
                } else {
                    i += this.s;
                    while (n >= this.DB;
                    i += t.s
                }
                e.s = i  0 ? e[n++] = i : i = this.DV)
                        this[e] -= this.DV,
                        ++e >= this.t && (this[this.t++] = 0),
                        ++this[e]
                }
            }
            function Ht() {}
            function Vt(t) {
                return t
            }
            function $t(t, e, n) {
                t.multiplyTo(e, n)
            }
            function Kt(t, e) {
                t.squareTo(e)
            }
            function Gt(t) {
                return this.exp(t, new Ht)
            }
            function Wt(t, e, n) {
                var i, o = Math.min(this.t + t.t, e);
                n.s = 0,
                n.t = o;
                while (o > 0)
                    n[--o] = 0;
                for (i = n.t - this.t; o = 0)
                    n = 0;
                for (i = Math.max(e - this.t, 0); i  2 * this.m.t)
                    return t.mod(this.m);
                if (t.compareTo(this.m)  this.m.t + 1 && (t.t = this.m.t + 1,
                t.clamp()),
                this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3),
                this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);
                while (t.compareTo(this.r2) = 0)
                    t.subTo(this.m, t)
            }
            function te(t, e) {
                t.squareTo(e),
                this.reduce(e)
            }
            function ee(t, e, n) {
                t.multiplyTo(e, n),
                this.reduce(n)
            }
            function ne(t, e) {
                var n, i, o = t.bitLength(), s = y(1);
                if (o  1) {
                    var d = r();
                    i.sqrTo(a[1], d);
                    while (c = 0) {
                    o >= l ? p = t[h] >> o - l & u : (p = (t[h] & (1  0 && (p |= t[h - 1] >> this.DB + o - l)),
                    c = n;
                    while (0 == (1 & p))
                        p >>= 1,
                        --c;
                    if ((o -= c)  1)
                            i.sqrTo(s, g),
                            i.sqrTo(g, s),
                            c -= 2;
                        c > 0 ? i.sqrTo(s, g) : (f = s,
                        s = g,
                        g = f),
                        i.mulTo(g, a

, s)
                    }
                    while (h >= 0 && 0 == (t[h] & 1  0 && (e.rShiftTo(r, e),
                n.rShiftTo(r, n));
                while (e.signum() > 0)
                    (o = e.getLowestSetBit()) > 0 && e.rShiftTo(o, e),
                    (o = n.getLowestSetBit()) > 0 && n.rShiftTo(o, n),
                    e.compareTo(n) >= 0 ? (e.subTo(n, e),
                    e.rShiftTo(1, e)) : (n.subTo(e, n),
                    n.rShiftTo(1, n));
                return r > 0 && n.lShiftTo(r, n),
                n
            }
            function oe(t) {
                if (t  0)
                    if (0 == e)
                        n = this[0] % t;
                    else
                        for (var i = this.t - 1; i >= 0; --i)
                            n = (e * n + this) % t;
                return n
            }
            function re(t) {
                var e = t.isEven();
                if (this.isEven() && e || 0 == t.signum())
                    return o.ZERO;
                var n = t.clone()
                  , i = this.clone()
                  , r = y(1)
                  , s = y(0)
                  , a = y(0)
                  , c = y(1);
                while (0 != n.signum()) {
                    while (n.isEven())
                        n.rShiftTo(1, n),
                        e ? (r.isEven() && s.isEven() || (r.addTo(this, r),
                        s.subTo(t, s)),
                        r.rShiftTo(1, r)) : s.isEven() || s.subTo(t, s),
                        s.rShiftTo(1, s);
                    while (i.isEven())
                        i.rShiftTo(1, i),
                        e ? (a.isEven() && c.isEven() || (a.addTo(this, a),
                        c.subTo(t, c)),
                        a.rShiftTo(1, a)) : c.isEven() || c.subTo(t, c),
                        c.rShiftTo(1, c);
                    n.compareTo(i) >= 0 ? (n.subTo(i, n),
                    e && r.subTo(a, r),
                    s.subTo(c, s)) : (i.subTo(n, i),
                    e && a.subTo(r, a),
                    c.subTo(s, c))
                }
                return 0 != i.compareTo(o.ONE) ? o.ZERO : c.compareTo(t) >= 0 ? c.subtract(t) : c.signum() > 1,
                t > le.length && (t = le.length);
                for (var s = r(), a = 0; a > 8 & 255,
                ae[ce++] ^= t >> 16 & 255,
                ae[ce++] ^= t >> 24 & 255,
                ce >= Se && (ce -= Se)
            }
            function he() {
                fe((new Date).getTime())
            }
            if (o.prototype.chunkSize = it,
            o.prototype.toRadix = rt,
            o.prototype.fromRadix = st,
            o.prototype.fromNumber = at,
            o.prototype.bitwiseTo = pt,
            o.prototype.changeBit = Et,
            o.prototype.addTo = Bt,
            o.prototype.dMultiply = qt,
            o.prototype.dAddOffset = zt,
            o.prototype.multiplyLowerTo = Wt,
            o.prototype.multiplyUpperTo = Xt,
            o.prototype.modInt = oe,
            o.prototype.millerRabin = pe,
            o.prototype.clone = J,
            o.prototype.intValue = tt,
            o.prototype.byteValue = et,
            o.prototype.shortValue = nt,
            o.prototype.signum = ot,
            o.prototype.toByteArray = ct,
            o.prototype.equals = lt,
            o.prototype.min = ut,
            o.prototype.max = dt,
            o.prototype.and = ht,
            o.prototype.or = gt,
            o.prototype.xor = bt,
            o.prototype.andNot = It,
            o.prototype.not = Ct,
            o.prototype.shiftLeft = xt,
            o.prototype.shiftRight = wt,
            o.prototype.getLowestSetBit = St,
            o.prototype.bitCount = Tt,
            o.prototype.testBit = Ot,
            o.prototype.setBit = At,
            o.prototype.clearBit = Nt,
            o.prototype.flipBit = Rt,
            o.prototype.add = Dt,
            o.prototype.subtract = Lt,
            o.prototype.multiply = Ft,
            o.prototype.divide = Pt,
            o.prototype.remainder = Ut,
            o.prototype.divideAndRemainder = Mt,
            o.prototype.modPow = ne,
            o.prototype.modInverse = re,
            o.prototype.pow = Gt,
            o.prototype.gcd = ie,
            o.prototype.isProbablePrime = de,
            o.prototype.square = jt,
            o.prototype.Barrett = Yt,
            null == ae) {
                var me;
                if (ae = new Array,
                ce = 0,
                "undefined" !== typeof window && window.crypto)
                    if (window.crypto.getRandomValues) {
                        var ge = new Uint8Array(32);
                        for (window.crypto.getRandomValues(ge),
                        me = 0; me >> 8,
                    ae[ce++] = 255 & me;
                ce = 0,
                he()
            }
            function be() {
                if (null == se) {
                    for (he(),
                    se = _e(),
                    se.init(ae),
                    ce = 0; ce  t.getEncodedHex()).join(""),
                this.v
            }
        }
        function c(t, e) {
            return +t[e + 2] >> 2] |= (255 & t.charCodeAt(o)) >> 2] >>> 24 - o % 4 * 8 & 255;
                i.push((t >>> 4).toString(16)),
                i.push((15 & t).toString(16))
            }
            return i.join("")
        }
        function m(t, e) {
            return t.length >= e ? t : new Array(e - t.length + 1).join("0") + t
        }
        function g(t) {
            return t.map(t => (t = t.toString(16),
            1 === t.length ? "0" + t : t)).join("")
        }
        function v(t) {
            const e = [];
            let n = 0;
            for (let o = 0; o >> 3] |= parseInt(t[n], 10) >> 2] >>> 24 - i % 4 * 8 & 255;
                    n.push(String.fromCharCode(t))
                }
                return decodeURIComponent(escape(n.join("")))
            } catch (i) {
                throw new Error("Malformed UTF-8 data")
            }
        }
        function b(t) {
            const e = [];
            let n = t.length;
            n % 2 !== 0 && (t = m(t, n + 1)),
            n = t.length;
            for (let i = 0; i  0; o--) {
                    i = i.twice();
                    const r = e.testBit(o)
                      , s = t.testBit(o);
                    r !== s && (i = i.add(r ? this : n))
                }
                return i
            }
        }
        class c {
            constructor(t, e, n) {
                this.q = t,
                this.a = this.fromBigInteger(e),
                this.b = this.fromBigInteger(n),
                this.infinity = new a(this,null,null)
            }
            equals(t) {
                return t === this || this.q.equals(t.q) && this.a.equals(t.a) && this.b.equals(t.b)
            }
            fromBigInteger(t) {
                return new s(this.q,t)
            }
            decodePointHex(t) {
                switch (parseInt(t.substr(0, 2), 16)) {
                case 0:
                    return this.infinity;
                case 2:
                case 3:
                    const e = this.fromBigInteger(new i(t.substr(2),16));
                    let n = this.fromBigInteger(e.multiply(e.square()).add(e.multiply(this.a)).add(this.b).toBigInteger().modPow(this.q.divide(new i("4")).add(i.ONE), this.q));
                    return n.toBigInteger().mod(o).equals(new i(t.substr(0, 2),16).subtract(o)) || (n = n.negate()),
                    new a(this,e,n);
                case 4:
                case 6:
                case 7:
                    const r = (t.length - 2) / 2
                      , s = t.substr(2, r)
                      , c = t.substr(r + 2, r);
                    return new a(this,this.fromBigInteger(new i(s,16)),this.fromBigInteger(new i(c,16)));
                default:
                    return null
                }
            }
        }
        t.exports = {
            ECPointFp: a,
            ECCurveFp: c
        }
    },
        "41d0": function(t, e) {
        const n = new Uint32Array(68)
          , i = new Uint32Array(64);
        function o(t, e) {
            const n = 31 & e;
            return t >> 32 - n
        }
        function r(t, e) {
            const n = [];
            for (let i = t.length - 1; i >= 0; i--)
                n = 255 & (t ^ e);
            return n
        }
        function s(t) {
            return t ^ o(t, 9) ^ o(t, 17)
        }
        function a(t) {
            return t ^ o(t, 15) ^ o(t, 23)
        }
        function c(t) {
            let e = 8 * t.length
              , r = e % 512;
            r = r >= 448 ? 512 - r % 448 - 1 : 448 - r - 1;
            const c = new Array((r - 7) / 8)
              , l = new Array(8);
            for (let n = 0, i = c.length; n = 0; n--)
                if (e.length > 8) {
                    const t = e.length - 8;
                    l[n] = parseInt(e.substr(t), 2),
                    e = e.substr(0, t)
                } else
                    e.length > 0 && (l[n] = parseInt(e, 2),
                    e = "");
            const u = new Uint8Array([...t, 128, ...c, ...l])
              , d = new DataView(u.buffer,0)
              , p = u.length / 64
              , f = new Uint32Array([1937774191, 1226093241, 388252375, 3666478592, 2842636476, 372324522, 3817729613, 2969243214]);
            for (let m = 0; m = 0 && a = 0 && a = 0 && a >> 24, (16711680 & t) >>> 16, (65280 & t) >>> 8, 255 & t)
            }
            return h
        }
        const l = 64
          , u = new Uint8Array(l)
          , d = new Uint8Array(l);
        for (let f = 0; f  l && (e = c(e));
            while (e.length = e ? t : new Array(e - t.length + 1).join("0") + t
        }
        function s(t) {
            return t.map(t => (t = t.toString(16),
            1 === t.length ? "0" + t : t)).join("")
        }
        function a(t) {
            const e = [];
            let n = t.length;
            n % 2 !== 0 && (t = r(t, n + 1)),
            n = t.length;
            for (let i = 0; i >> 6),
                    e.push(128 | 63 & i);
                else if (i = 57344 && i >> 12),
                    e.push(128 | i >>> 6 & 63),
                    e.push(128 | 63 & i);
                else {
                    if (!(i >= 65536 && i >> 18 & 28),
                    e.push(128 | i >>> 12 & 63),
                    e.push(128 | i >>> 6 & 63),
                    e.push(128 | 63 & i)
                }
            }
            return e
        }
        t.exports = function(t, e) {
            if (t = "string" === typeof t ? c(t) : Array.prototype.slice.call(t),
            e) {
                const n = e.mode || "hmac";
                if ("hmac" !== n)
                    throw new Error("invalid mode");
                let i = e.key;
                if (!i)
                    throw new Error("invalid key");
                return i = "string" === typeof i ? a(i) : Array.prototype.slice.call(i),
                s(o(t, i))
            }
            return s(i(t))
        }
    },
        "10d11": function(t, e) {
        const n = 0
          , i = 32
          , o = 16
          , r = [214, 144, 233, 254, 204, 225, 61, 183, 22, 182, 20, 194, 40, 251, 44, 5, 43, 103, 154, 118, 42, 190, 4, 195, 170, 68, 19, 38, 73, 134, 6, 153, 156, 66, 80, 244, 145, 239, 152, 122, 51, 84, 11, 67, 237, 207, 172, 98, 228, 179, 28, 169, 201, 8, 232, 149, 128, 223, 148, 250, 117, 143, 63, 166, 71, 7, 167, 252, 243, 115, 23, 186, 131, 89, 60, 25, 230, 133, 79, 168, 104, 107, 129, 178, 113, 100, 218, 139, 248, 235, 15, 75, 112, 86, 157, 53, 30, 36, 14, 94, 99, 88, 209, 162, 37, 34, 124, 59, 1, 33, 120, 135, 212, 0, 70, 87, 159, 211, 39, 82, 76, 54, 2, 231, 160, 196, 200, 158, 234, 191, 138, 210, 64, 199, 56, 181, 163, 247, 242, 206, 249, 97, 21, 161, 224, 174, 93, 164, 155, 52, 26, 85, 173, 147, 50, 48, 245, 140, 177, 227, 29, 246, 226, 46, 130, 102, 202, 96, 192, 41, 35, 171, 13, 83, 78, 111, 213, 219, 55, 69, 222, 253, 142, 47, 3, 255, 106, 114, 109, 108, 91, 81, 141, 27, 175, 146, 187, 221, 188, 127, 17, 217, 92, 65, 31, 16, 90, 216, 10, 193, 49, 136, 165, 205, 123, 189, 45, 116, 208, 18, 184, 229, 180, 176, 137, 105, 151, 74, 12, 150, 119, 126, 101, 185, 241, 9, 197, 110, 198, 132, 24, 240, 125, 236, 58, 220, 77, 32, 121, 238, 95, 62, 215, 203, 57, 72]
          , s = [462357, 472066609, 943670861, 1415275113, 1886879365, 2358483617, 2830087869, 3301692121, 3773296373, 4228057617, 404694573, 876298825, 1347903077, 1819507329, 2291111581, 2762715833, 3234320085, 3705924337, 4177462797, 337322537, 808926789, 1280531041, 1752135293, 2223739545, 2695343797, 3166948049, 3638552301, 4110090761, 269950501, 741554753, 1213159005, 1684763257];
        function a(t) {
            const e = [];
            for (let n = 0, i = t.length; n  (t = t.toString(16),
            1 === t.length ? "0" + t : t)).join("")
        }
        function l(t) {
            const e = [];
            for (let n = 0, i = t.length; n >> 6),
                    e.push(128 | 63 & i);
                else if (i = 57344 && i >> 12),
                    e.push(128 | i >>> 6 & 63),
                    e.push(128 | 63 & i);
                else {
                    if (!(i >= 65536 && i >> 18 & 28),
                    e.push(128 | i >>> 12 & 63),
                    e.push(128 | i >>> 6 & 63),
                    e.push(128 | 63 & i)
                }
            }
            return e
        }
        function u(t) {
            const e = [];
            for (let n = 0, i = t.length; n = 240 && t[n] = 224 && t[n] = 192 && t[n] >> 32 - n
        }
        function p(t) {
            return (255 & r[t >>> 24 & 255]) >> 16 & 255]) >> 8 & 255]) >> 24 & 255,
                e[r + 1] = i[3 - r / 4] >>> 16 & 255,
                e[r + 2] = i[3 - r / 4] >>> 8 & 255,
                e[r + 3] = 255 & i[3 - r / 4]
        }
        function g(t, e, i) {
            const o = new Array(4)
              , r = new Array(4);
            for (let n = 0; n = o) {
                const e = t.slice(I, I + 16)
                  , i = new Array(16);
                if ("cbc" === d)
                    for (let t = 0; t

下载次数, 下载附件

风子是我   

登录验证码?
2323行的代码不嫌麻烦么?
用ddddocr十几行代码搞定 不香吗?
[Python] 纯文本查看 复制代码def yanzhema(): #验证码读取
    #证码图片截图保存
    pic = wd.find_element(By.XPATH,'//*[@id="formLogin"]/div[2]/div[2]/div[4]/div/div/span/img')
    pic.screenshot('screenshot.png')
    time.sleep(2)
    #获取验证码
    ocr = ddddocr.DdddOcr()
    with open('screenshot.png', 'rb') as f:
        img_bytes = f.read()
    res = ocr.classification(img_bytes)
    if len(res)==6:
        res=res[-5:]
    return res
feijun   

作用呢?能解放双手?
头脑发热的少年
OP
  


风子是我 发表于 2024-11-10 19:16
登录验证码?
2323行的代码不嫌麻烦么?
用ddddocr十几行代码搞定 不香吗?

这是登录参数加密逻辑,没看懂别来装🤡,我也是服了
头脑发热的少年
OP
  


feijun 发表于 2024-11-10 19:03
作用呢?能解放双手?

不然呢,搞它干啥子
dych1688   

支持作者,中间加密分析是一个好的学习过程。
wumingyao2006   

大佬好强啊
acsecqb   

牛逼,学习了!
灵剑丹心   

看成了“学宪法讲宪法”(宪法小学生)
Fwind   

思路很好,学习了!
您需要登录后才可以回帖 登录 | 立即注册