某矿webpack逆向

免责声明:

本篇博文的初衷是分享自己学习逆向分析时的个人感悟,所涉及的内容仅供学习、交流,请勿将其用于非法用途!!!任何由此引发的法律纠纷均与作者本人无关,请自行负责!!!

推荐文章:

https://app.yinxiang.com/fx/970ae39c-9964-4aae-aa96-7e81fee4ef8f

WebPack

webpack是JavaScript应用程序的模块备份器,可以把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和plugins(插件)对资源进行处理,备份成符合生产环境部署的前端资源。所有的资源都是通过JavaScript渲染出来的。​

常见的形式
// 数组形式
!function(形参){
   
   加载器}([模块])
// 字典形式
!function(形参){
   
   加载器}({
   
   模块})

扣取代码

抓包发现每次请求都需要先请求一个public包,可以发现这个请求的内容是一个公钥。第二次的加密参数需要这个值。
在这里插入图片描述
需要的加密参数:param,cookie未加密,可以多抓几个包看一下
进行参数的搜索
在这里插入图片描述
我们进去之后发现这个参数比较多,但是我们需要的事请求公钥之后的那个加密的内容,所以我们可以直接搜索这个公钥的请求地址,这样可以快速帮助我们定位到需要的内容
在这里插入图片描述
打上断点进行调试
在这里插入图片描述
我们断点调试输出这个内容,为什么说我直接就输出r和这个s呢?这边我们直接看 s 是返回的,那么这个值肯定是需要传递的价值比较大,这个r 是在 t.setPublicKey®, 这个位置见名知意,setPublicKey 那么我们可以看一下。最终结束调试看一下请求参数。
在这里插入图片描述
可以知道就是这个位置进行了调用公钥,但是这个参数s是不是最终的结果呢?这个需要我们继续调试进行验证
在这里插入图片描述
这个加密是一个变化的值,我们进行值验证也无法进行,所以我们直接进行xhr断点调试然后向上找就行。
在这里插入图片描述
断到最后发送的位置,这个时候向上找看一下这个s是否是最终需要的参数,我们发现最终发的加密在p中,那么找到p的赋值位置。
在这里插入图片描述
执行了一个异步,我们发现p是通过e进行赋值的。e是一个参数。
在这里插入图片描述
一直找可以找到这个参数传递的位置是在这个地方
在这里插入图片描述
大个断点,然后重新调试,发现传递参数后面经过 这个位置
在这里插入图片描述
并且这个位置并不是执行的加密逻辑。
在这里插入图片描述
但是当释放上面断点的时候,发现第二次来到这个位置,输出的值就是加密后的内容。
在这里插入图片描述
向上跟栈,追到这个位置
在这里插入图片描述
单步调试进入这个参数中,这个内容是t生成的,那么这个时候我们直接断到t进行跟栈在这里插入图片描述
调试发现,t生成的事通过这个位置进行生成的,可以知道最终需要的事在这边地方。
在这里插入图片描述
需要的事这个s的值
s = t.encryptLong(JSON.stringify(a)),
我们依次进行代码扣取,
在这里插入图片描述
t = d【“a”】
我们需要先找到d[“a”]的生成
在这里插入图片描述
可以看到d是一个模块,那么这个时候开始扣取代码,然后补一下就行。
扣去加载器,然后进行模块的填充。
扣取
那么现在就只需要扣取代码就行,中间有一个A[e].call 我们可以在上面进行输出,看一下缺少什么,这样的话会更加容易,直接在nodejs中输出这个异常就行。剩下的就是不断调试了

var scream;

var window = global;
(function (A) {
   
   
    function e(e) {
   
   
        for (var n, r, i = e[0], o = e[1], c = e[2], g = 0, C = []; g < i.length; g++)
            r = i[g],
                Object.prototype.hasOwnProperty.call(a, r) && a[r] && C.push(a[r][0]),
                a[r] = 0;
        for (n in o)
            Object.prototype.hasOwnProperty.call(o, n) && (A[n] = o[n]);
        l && l(e);
        while (C.length)
            C.shift()();
        return s.push.apply(s, c || []),
            t()
    }
    function t() {
   
   
        for (var A, e = 0; e < s.length; e++) {
   
   
            for (var t = s[e], n = !0, r = 1; r < t.length; r++) {
   
   
                var i = t[r];
                0 !== a[i] && (n = !1)
            }
            n && (s.splice(e--, 1),
                A = o(o.s = t[0]))
        }
        return A
    }
    var n = {
   
   }
        , r = {
   
   
            index: 0
        }
        , a = {
   
   
            index: 0
        }
        , s = [];
    function i(A) {
   
   
        return o.p + "js/" + ({
   
   }[A] || A) + ".js"
    }
    function o(e) {
   
   
        if (n[e])
            return n[e].exports;
        var t = n[e] = {
   
   
            i: e,
            l: !1,
            exports: {
   
   }
        };
        return A[e].call(t.exports, t, t.exports, o),
            t.l = !0,
            t.exports
    }
    o.e = function (A) {
   
   
        var e = []
            , t = {
   
   
                "chunk-014f8c76": 1,
                "chunk-022d1a1e": 1,
                "chunk-08dfb5f4": 1,
                "chunk-0e71e1ec": 1,
                "chunk-1ea9c550": 1,
                "chunk-27c6c980": 1,
                "chunk-292fc281": 1,
                "chunk-36ad665a": 1,
                "chunk-37d3c79c": 1,
                "chunk-3a8e87b2": 1,
                "chunk-3ae95355": 1,
                "chunk-564fa90c": 1,
                "chunk-6038e544": 1,
                "chunk-65aa7b64": 1,
                "chunk-69a5ffe2": 1,
                "chunk-6a6e0a4d": 1,
                "chunk-6b845cb2": 1,
                "chunk-6ced383c": 1,
                "chunk-6dc29283": 1,
                "chunk-6f9084b2": 1,
                "chunk-72c3d136": 1,
                "chunk-73322c15": 1,
                "chunk-79490809": 1,
                "chunk-79fda34d": 1,
                "chunk-7ddeb4f7": 1,
                "chunk-84f3bc8a": 1,
                "chunk-87c5890c": 1,
                "chunk-90be71c6": 1,
                "chunk-b702925a": 1,
                "chunk-b8947556": 1,
                "chunk-be76fe62": 1,
                "chunk-c6a7f81c": 1,
                "chunk-d055d7ec": 1,
                "chunk-fda268a2": 1
            };
        r[A] ? e.push(r[A]) : 0 !== r[A] && t[A] && e.push(r[A] = new Promise((function (e, t) {
   
   
            for (var n = "css/" + ({
   
   }[A] || A) + ".css", a = o.p + n, s = document.getElementsByTagName("link"), i = 0; i < s.length; i++) {
   
   
                var c = s[i]
                    , g = c.getAttribute("data-href") || c.getAttribute("href");
                if ("stylesheet" === c.rel && (g === n || g === a))
                    return e()
            }
            var C = document.getElementsByTagName("style");
            for (i = 0; i < C.length; i++) {
   
   
                c = C[i],
                    g = c.getAttribute("data-href");
                if (g === n || g === a)
                    return e()
            }
            var l = document.createElement("link");
            l.rel = "stylesheet",
                l.type = "text/css",
                l.onload = e,
                l.onerror = function (e) {
   
   
                    var n = e && e.target && e.target.src || a
                        , s = new Error("Loading CSS chunk " + A + " failed.\n(" + n + ")");
                    s.code = "CSS_CHUNK_LOAD_FAILED",
                        s.request = n,
                        delete r[A],
                        l.parentNode.removeChild(l),
                        t(s)
                }
                ,
                l.href = a;
            var I = document.getElementsByTagName("head")[0];
            I.appendChild(l)
        }
        )).then((function () {
   
   
            r[A] = 0
        }
        )));
        var n = a[A];
        if (0 !== n)
            if (n)
                e.push(n[2]);
            else {
   
   
                var s = new Promise((function (e, t) {
   
   
                    n = a[A] = [e, t]
                }
                ));
                e.push(n[2] = s);
                var c, g = document.createElement("script");
                g.charset = "utf-8",
                    g.timeout = 120,
                    o.nc && g.setAttribute("nonce", o.nc),
                    g.src = i(A);
                var C = new Error;
                c = function (e) {
   
   
                    g.onerror = g.onload = null,
                        clearTimeout(l);
                    var t = a[A];
                    if (0 !== t) {
   
   
                        if (t) {
   
   
                            var n = e && ("load" === e.type ? "missing" : e.type)
                                , r = e && e.target && e.target.src;
                            C.message = "Loading chunk " + A + " failed.\n(" + n + ": " + r + ")",
                                C.name = "ChunkLoadError",
                                C.type = n,
                                C.request = r,
                                t[1](C)
                        }
                        a[A] = void 0
                    }
                }
                    ;
                var l = setTimeout((function () {
   
   
                    c({
   
   
                        type: "timeout",
                        target: g
                    })
                }
                ), 12e4);
                g.onerror = g.onload = c,
                    document.head.appendChild(g)
            }
        return Promise.all(e)
    }
        ,
        o.m = A,
        o.c = n,
        o.d = function (A, e, t) {
   
   
            o.o(A, e) || Object.defineProperty(A, e, {
   
   
                enumerable: !0,
                get: t
            })
        }
        ,
        o.r = function (A) {
   
   
            "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(A, Symbol.toStringTag, {
   
   
                value: "Module"
            }),
                Object.defineProperty(A, "__esModule", {
   
   
                    value: !0
                })
        }
        ,
        o.t = function (A, e) {
   
   
            if (1 & e && (A = o(A)),
                8 & e)
                return A;
            if (4 & e && "object" === typeof A && A && A.__esModule)
                return A;
            var t = Object.create(null);
            if (o.r(t),
                Object.defineProperty(t, "default", {
   
   
                    enumerable: !0,
                    value: A
                }),
                2 & e && "string" != typeof A)
                for (var n in A)
                    o.d(t, n, function (e) {
   
   
                        return A[e]
                    }
                        .bind(null, n));
            return t
        }
        ,
        o.n = function (A) {
   
   
            var e = A && A.__esModule ? function () {
   
   
                return A["default"]
            }
                : function () {
   
   
                    return A
                }
                ;
            return o.d(e, "a", e),
                e
        }
        ,
        o.o = function (A, e) {
   
   
            return Object.prototype.hasOwnProperty.call(A, e)
        }
        ,
        o.p = "/common/gikam/",
        o.oe = function (A) {
   
   
            throw console.error(A),
            A
        }
        ;
    var c = window["webpackJsonp"] = window["webpackJsonp"] || []
        , g = c.push.bind(c);
    c.push = e,
        c = c.slice();
    for (var C = 0; C < c.length; C++)
        e(c[C]);
    var l = g;
    s.push([4, "chunk-vendors"]),
        t()
        scream = o
}
)({
   
   
    9816: function(e, t, n) {
   
   
        "use strict";
        var r = "0123456789abcdefghijklmnopqrstuvwxyz";
        function o(e) {
   
   
            return r.charAt(e)
        }
        function i(e, t) {
   
   
            return e & t
        }
        function a(e, t) {
   
   
            return e | t
        }
        function s(e, t) {
   
   
            return e ^ t
        }
        function l(e, t) {
   
   
            return e & ~t
        }
        function c(e) {
   
   
            if (0 == e)
                return -1;
            var t = 0;
            return 0 == (65535 & e) && (e >>= 16,
            t += 16),
            0 == (255 & e) && (e >>= 8,
            t += 8),
            0 == (15 & e) && (e >>= 4,
            t += 4),
            0 == (3 & e) && (e >>= 2,
            t += 2),
            0 == (1 & e) && ++t,
            t
        }
        function u(e) {
   
   
            var t = 0;
            while (0 != e)
                e &= e - 1,
                ++t;
            return t
        }
        var d, h = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", f = "=";
        function p(e) {
   
   
            var t, n, r = "";
            for (t = 0; t + 3 <= e.length; t += 3)
                n = parseInt(e.substring(t, t + 3), 16),
                r += h.charAt(n >> 6) + h.charAt(63 & n);
            t + 1 == e.length ? (n = parseInt(e.substring(t, t + 1), 16),
            r += h.charAt(n << 2)) : t + 2 == e.length && (n = parseInt(e.substring(t, t + 2), 16),
            r += h.charAt(n >> 2) + h.charAt((3 & n) << 4));
            while ((3 & r.length) > 0)
                r += f;
            return r
        }
        function m(e) {
   
   
            var t, n = "", r = 0, i = 0;
            for (t = 0; t < e.length; ++t) {
   
   
                if (e.charAt(t) == f)
                    break;
                var a = h.indexOf(e.charAt(t));
                a < 0 || (0 == r ? (n += o(a >> 2),
                i = 3 & a,
                r = 1) : 1 == r ? (n += o(i << 2 | a >> 4),
                i = 15 & a,
                r = 2) : 2 == r ? (n += o(i),
                n += o(a >> 2),
                i = 3 & a,
                r = 3) : (n += o(i << 2 | a >> 4),
                n += o(15 & a),
                r = 0))
            }
            return 1 == r && (n += o(i << 2)),
            n
        }
        var v, g = {
   
   
            decode: function(e) {
   
   
                var t;
                if (void 0 === d) {
   
   
                    var n = "0123456789ABCDEF"
                      , r = " \f\n\r\t \u2028\u2029";
                    for (d = {
   
   },
                    t = 0; t < 16; ++t)
                        d[n.charAt(t)] = t;
                    for (n = n.toLowerCase(),
                    t = 10; t < 16; ++t)
                        d[n.charAt(t)] = t;
                    for (t = 0; t < r.length; ++t)
                        d[r.charAt(t)] = -1
                }
                var o = []
                  , i = 0
                  , a = 0;
                for (t = 0; t < e.length; ++t) {
   
   
                    var s = e.charAt(t);
                    if ("=" == s)
                        break;
                    if (s = d[s],
                    -1 != s) {
   
   
                        if (void 0 === s)
                            throw new Error("Illegal character at offset " + t);
                        i |= s,
                        ++a >= 2 ? (o[o.length] = i,
                        i = 0,
                        a = 0) : i <<= 4
                    }
                }
                if (a)
                    throw new Error("Hex encoding incomplete: 4 bits missing");
                return o
            }
        }, b = {
   
   
            decode: function(e) {
   
   
                var t;
                if (void 0 === v) {
   
   
                    var n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                      , r = "= \f\n\r\t \u2028\u2029";
                    for (v = Object.create(null),
                    t = 0; t < 64; ++t)
                        v[n.charAt(t)] = t;
                    for (v["-"] = 62,
                    v["_"] = 63,
                    t = 0; t < r.length; ++t)
                        v[r.charAt(t)] = -1
                }
                var o = []
                  , i = 0
                  , a = 0;
                for (t = 0; t < e.length; ++t) {
   
   
                    var s = e.charAt(t);
                    if ("=" == s)
                        break;
                    if (s = v[s],
                    -1 != s) {
   
   
                        if (void 0 === s)
                            throw new Error("Illegal character at offset " + t);
                        i |= s,
                        ++a >= 4 ? (o[o.length] = i >> 16,
                        o[o.length] = i >> 8 & 255,
                        o[o.length] = 255 & i,
                        i = 0,
                        a = 0) : i <<= 6
                    }
                }
                switch (a) {
   
   
                case 1:
                    throw new Error("Base64 encoding incomplete: at least 2 bits missing");
                case 2:
                    o[o.length] = i >> 10;
                    break;
                case 3:
                    o[o.length] = i >> 16,
                    o[o.length] = i >> 8 & 255;
                    break
                }
                return o
            },
            re: /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,
            unarmor: function(e) {
   
   
                var t = b.re.exec(e);
                if (t)
                    if (t[1])
                        e = t[1];
                    else {
   
   
                        if (!t[2])
                            throw new Error("RegExp out of sync");
                        e = t[2]
                    }
                return b.decode(e)
            }
        }, y = 1e13, _ = function() {
   
   
            function e(e) {
   
   
                this.buf = [+e || 0]
            }
            return e.prototype.mulAdd = function(e, t) {
   
   
                var n, r, o = this.buf, i = o.length;
                for (n = 0; n < i; ++n)
                    r = o[n] * e + t,
                    r < y ? t = 0 : (t = 0 | r / y,
                    r -= t * y),
                    o[n] = r;
                t > 0 && (o[n] = t)
            }
            ,
            e.prototype.sub = function(e) {
   
   
                var t, n, r = this.buf, o = r.length;
                for (t = 0; t < o; ++t)
                    n = r[t] - e,
                    n < 0 ? (n += y,
                    e = 1) : e = 0,
                    r[t] = n;
                while (0 === r[r.length - 1])
                    r.pop()
            }
            ,
            e.prototype.toString = function(e) {
   
   
                if (10 != (e || 10))
                    throw new Error("only base 10 is supported");
                for (var t = this.buf, n = t[t.length - 1].toString(), r = t.length - 2; r >= 0; --r)
                    n += (y + t[r]).toString().substring(1);
                return n
            }
            ,
            e.prototype.valueOf = function() {
   
   
                for (var e = this.buf, t = 0, n = e.length - 1; n >= 0; --n)
                    t = t * y + e[n];
                return t
            }
            ,
            e.prototype.simplify = function() {
   
   
                var e = this.buf;
                return 1 == e.length ? e[0] : this
            }
            ,
            e
        }(), x = "…", w = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/, C = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
        function S(e, t) {
   
   
            return e.length > t && (e = e.substring(0, t) + x),
            e
        }
        var j, k = function() {
   
   
            function e(t, n) {
   
   
                this.hexDigits = "0123456789ABCDEF",
                t instanceof e ? (this.enc = t.enc,
                this.pos = t.pos) : (this.enc = t,
                this.pos = n)
            }
            return e.prototype.get = function(e) {
   
   
                if (void 0 === e && (e = this.pos++),
                e >= this.enc.length)
                    throw new Error("Requesting byte offset " + e + " on a stream of length " + this.enc.length);
                return "string" === typeof this.enc ? this.enc.charCodeAt(e) : this.enc[e]
            }
            ,
            e.prototype.hexByte = function(e) {
   
   
                return this.hexDigits.charAt(e >> 4 & 15) + this.hexDigits.charAt(15 & e)
            }
            ,
            e.prototype.hexDump = function(e, t, n) {
   
   
                for (var r = "", o = e; o < t; ++o)
                    if (r += this.hexByte(this.get(o)),
                    !0 !== n)
                        switch (15 & o) {
   
   
                        case 7:
                            r += "  ";
                            break;
                        case 15:
                            r += "\n";
                            break;
                        default:
                            r += " "
                        }
                return r
            }
            ,
            e.prototype.isASCII = function(e, t) {
   
   
                for (var n = e; n < t; ++n) {
   
   
                    var r = this.get(n);
                    if (r < 32 || r > 176)
                        return !1
                }
                return !0
            }
            ,
            e.prototype.parseStringISO = function(e, t) {
   
   
                for (var n = "", r = e; r < t; ++r)
                    n += String.fromCharCode(this.get(r));
                return n
            }
            ,
            e.prototype.parseStringUTF = function(e, t) {
   
   
                for (var n = "", r = e; r < t; ) {
   
   
                    var o = this.get(r++);
                    n += o < 128 ? String.fromCharCode(o) : o > 191 && o < 224 ? String.fromCharCode((31 & o) << 6 | 63 & this.get(r++)) : String.fromCharCode((15 & o) << 12 | (63 & this.get(r++)) << 6 | 63 & this.get(r++))
                }
                return n
            }
            ,
            e.prototype.parseStringBMP = function(e, t) {
   
   
                for (var n, r, o = "", i = e; i < t; )
                    n = this.get(i++),
                    r = this.get(i++),
                    o += String.fromCharCode(n << 8 | r);
                return o
            }
            ,
            e.prototype.parseTime = function(e, t, n) {
   
   
                var r = this.parseStringISO(e, t)
                  , o = (n ? w : C).exec(r);
                return o ? (n && (o[1] = +o[1],
                o[1] += +o[1] < 70 ? 2e3 : 1900),
                r = o[1] + "-" + o[2] + "-" + o[3] + " " + o[4],
                o[5] && (r += ":" + o[5],
                o[6] && (r += ":" + o[6],
                o[7] && (r += "." + o[7]))),
                o[8] && (r += " UTC",
                "Z" != o[8] && (r += o[8],
                o[9] && (r += ":" + o[9]))),
                r) : "Unrecognized time: " + r
            }
            ,
            e.prototype.parseInteger = function(e, t) {
   
   
                var n, r = this.get(e), o = r > 127, i = o ? 255 : 0, a = "";
                while (r == i && ++e < t)
                    r = this.get(e);
                if (n = t - e,
                0 === n)
                    return o ? -1 : 0;
                if (n > 4) {
   
   
                    a = r,
                    n <<= 3;
                    while (0 == (128 & (+a ^ i)))
                        a = +a << 1,
                        --n;
                    a = "(" + n + " bit)\n"
                }
                o && (r -= 256);
                for (var s = new _(r), l = e + 1; l < t; ++l)
                    s.mulAdd(256, this.get(l));
                return a + s.toString()
            }
            ,
            e.prototype.parseBitString = function(e, t, n) {
   
   
                for (var r = this.get(e), o = (t - e - 1 << 3) - r, i = "(" + o + " bit)\n", a = "", s = e + 1; s < t; ++s) {
   
   
                    for (var l = this.get(s), c = s == t - 1 ? r : 0, u = 7; u >= c; --u)
                        a += l >> u & 1 ? "1" : "0";
                    if (a.length > n)
                        return i + S(a, n)
                }
                return i + a
            }
            ,
            e.prototype.parseOctetString = function(e, t, n) {
   
   
                if (this.isASCII(e, t))
                    return S(this.parseStringISO(e, t), n);
                var r = t - e
                  , o = "(" + r + " byte)\n";
                n /= 2,
                r > n && (t = e + n);
                for (var i = e; i < t; ++i)
                    o += this.hexByte(this.get(i));
                return r > n && (o += x),
                o
            }
            ,
            e.prototype.parseOID = function(e, t, n) {
   
   
                for (var r = "", o = new _, i = 0, a = e; a < t; ++a) {
   
   
                    var s = this.get(a);
                    if (o.mulAdd(128, 127 & s),
                    i += 7,
                    !(128 & s)) {
   
   
                        if ("" === r)
                            if (o = o.simplify(),
                            o instanceof _)
                                o.sub(80),
                                r = "2." + o.toString();
                            else {
   
   
                                var l = o < 80 ? o < 40 ? 0 : 1 : 2;
                                r = l + "." + (o - 40 * l)
                            }
                        else
                            r += "." + o.toString();
                        if (r.length > n)
                            return S(r, n);
                        o = new _,
                        i = 0
                    }
                }
                return i > 0 && (r += ".incomplete"),
                r
            }
            ,
            e
        }(), O = function() {
   
   
            function e(e, t, n, r, o) {
   
   
                if (!(r instanceof M))
                    throw new Error("Invalid tag value.");
                this.stream = e,
                this.header = t,
                this.length = n,
                this.tag = r,
                this.sub = o
            }
            return e.prototype.typeName = function() {
   
   
                switch (this.tag.tagClass) {
   
   
                case 0:
                    switch (this.tag.tagNumber) {
   
   
                    case 0:
                        return "EOC";
                    case 1:
                        return "BOOLEAN";
                    case 2:
                        return "INTEGER";
                    case 3:
                        return "BIT_STRING";
                    case 4:
                        return "OCTET_STRING";
                    case 5:
                        return "NULL";
                    case 6:
                        return "OBJECT_IDENTIFIER";
                    case 7:
                        return "ObjectDescriptor";
                    case 8:
                        return "EXTERNAL";
                    case 9:
                        return "REAL";
                    case 10:
                        return "ENUMERATED";
                    case 11:
                        return "EMBEDDED_PDV";
                    case 12:
                        return "UTF8String";
                    case 16:
                        return "SEQUENCE";
                    case 17:
                        return "SET";
                    case 18:
                        return "NumericString";
                    case 19:
                        return "PrintableString";
                    case 20:
                        return "TeletexString";
                    case 21:
                        return "VideotexString";
                    case 22:
                        return "IA5String";
                    case 23:
                        return "UTCTime";
                    case 24:
                        return "GeneralizedTime";
                    case 25:
                        return "GraphicString";
                    case 26:
                        return "VisibleString";
                    case 27:
                        return "GeneralString";
                    case 28:
                        return "UniversalString";
                    case 30:
                        return "BMPString"
                    }
                    return "Universal_" + this.tag.tagNumber.toString();
                case 1:
                    return "Application_" + this.tag.tagNumber.toString();
                case 2:
                    return "[" + this.tag.tagNumber.toString() + "]";
                case 3:
                    return "Private_" + this.tag.tagNumber.toString()
                }
            }
            ,
            e.prototype.content = function(e) {
   
   
                if (void 0 === this.tag)
                    return null;
                void 0 === e && (e = 1 / 0);
                var t = this.posContent()
                  , n = Math.abs(this.length);
                if (!this.tag.isUniversal())
                    return null !== this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseOctetString(t, t + n, e);
                switch (this.tag.tagNumber) {
   
   
                case 1:
                    return 0 === this.stream.get(t) ? "false" : "true";
                case 2:
                    return this.stream.parseInteger(t, t + n);
                case 3:
                    return this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseBitString(t, t + n, e);
                case 4:
                    return this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseOctetString(t, t + n, e);
                case 6:
                    return this.stream.parseOID(t, t + n, e);
                case 16:
                case 17:
                    return null !== this.sub ? "(" + this.sub.length + " elem)" : "(no elem)";
                case 12:
                    return S(this.stream.parseStringUTF(t, t + n), e);
                case 18:
                case 19:
                case 20:
                case 21:
                case 22:
                case 26:
                    return S(this.stream.parseStringISO(t, t + n), e);
                case 30:
                    return S(this.stream.parseStringBMP(t, t + n), e);
                case 23:
                case 24:
                    return this.stream.parseTime(t, t + n, 23 == this.tag.tagNumber)
                }
                return null
            }
            ,
            e.prototype.toString = function() {
   
   
                return this.typeName() + "@" + this.stream.pos + "[header:" + this.header + ",length:" + this.length + 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值