30回答

2收藏

头条加密参数 _signature破解过程中 出现的各种问题

问答交流 问答交流 17207 人阅读 | 30 人回复 | 2020-02-13


头条加密参数_signature好像和网络上的代码不一样了,现在到处都没找的怎么弄。

然后自己找了一下发现应该是在这个地方




其中 this.url 和 this.params 两个参数比较好弄,关键是 p.calcSignature

追进去是这个函数



最后返回的s 是  window.byted_acrawler.sign(a)

取一个a的值

var a = {

url: 'https://www.toutiao.com/toutiao/api/pc/feed/?min_behot_time=0&category=__all__&utm_source=toutiao&widen=1&tadrequire=true&as=A1050E04030DAE4&cp=5E430D0A0E040E1'

}

然后继续追进去后就看不懂了



跑到了这个地方



js代码长这个样子:
TAC = function() {
    function e(e, a, b, d, c, r) {
        null == r && (r = this);        var n, i, o = {}, l = o.d = c ? c.d + 1 : 0;        for (o["$" + l] = o,                 i = 0; i < l; i++)
            o[n = "$" + i] = c[n];        for (i = 0,                 l = o.length = d.length; i < l; i++)
            o = d;        return f(e, a, b, o, r)[1]
    }
    function f(r, o, l, t, v, y) {
        function h(e) {
            S[++A] = e
        }
        function k() {
            return S[A--]
        }
        function m(e, f) {
            for (var a = b, d = "", c = 0; c < e.length; c++) {
                var r = e.charCodeAt(c);                d += String.fromCharCode(a ^ r),                    a = (a << 1) + c + f + 1 + (a >> 1) & 255            }
            return d
        }
        null == v && (v = this);        var g, C, x, I, S = [], A = 0;        y && (g = y);        for (var w = o + 2 * l; o < w; ) {
            var z = 13 * i(r, o) % 241;            if (o += 2,            0 == (3 & z))
                if (0 == (3 & (z >>= 2))) {
                    if (0 == (z >>= 2))
                        return [1, S[A--]];                    if (2 == z)
                        oprand = n(r, o),                            o += 2 * oprand[0],                            I = oprand[1],                            S[++A] = +I;                    else if (4 == z)
                        g = S[A--],                            S[A] = S[A] * g;                    else if (6 == z)
                        g = S[A--],                            S[A] = S[A] != g;                    else if (13 == z)
                        C = S[A--],                            x = S[A--],                            (I = S[A--]).x === f ? S[++A] = e(r, I.pc, I.len, C, I.z, x) : S[++A] = I.apply(x, C);                    else {
                        if (15 != z)
                            break;                        oprand = n(r, o),                            I = oprand[1],                            S[A] = function(a, b) {
                                var d = function f() {
                                    var a = arguments;                                    return e(r, f.pc, f.len, a, f.z, this)
                                };                                return d.pc = a,                                    d.len = b,                                    d.x = f,                                    d.z = t,                                    d                            }(o + 6, I - 4),                            o += 2 * I - 2                    }
                } else if (1 == (3 & z))
                    if (3 == (z >>= 2))
                        g = S[--A],                            S[A] = g(S[A + 1]);                    else if (5 == z)
                        S[A -= 1] = S[A][S[A + 1]];                    else if (7 == z)
                        S[A] = --S[A];                    else {
                        if (9 != z)
                            break;                        g = S[A--],                            S[A] = typeof g
                    }
                else if (2 == (3 & z))
                    if (6 == (z >>= 2))
                        S[A] = u(S[A]);                    else if (8 == z)
                        g = S[A--],                            oprand = n(r, o),                            o += 2 * oprand[0],                            S[A--][m(a[oprand[1]], oprand[1])] = g;                    else {
                        if (10 != z) {
                            if (12 == z)
                                throw S[A--];                            break                        }
                        S[A] = ~S[A]
                    }
                else if (0 == (z >>= 2))
                    S[++A] = null;                else if (2 == z)
                    g = S[A--],                        S[A] = S[A] >= g;                else if (9 == z)
                    g = k(),                        C = k(),                        t[0] = 65599 * t[0] + t[g].charCodeAt(C) >>> 0;                else if (11 == z)
                    S[++A] = void 0;                else {
                    if (13 != z)
                        break;                    g = S[A--],                        S[A] = S[A] && g
                }
            else if (1 == (3 & z))
                if (0 == (3 & (z >>= 2))) {
                    if (4 == (z >>= 2)) {
                        oprand = n(r, o),                            I = oprand[1];                        try {
                            if (d[c][2] = 1,                            1 == (g = f(r, o + 6, I - 4, t, v))[0])
                                return g
                        } catch (y) {
                            if (d[c] && d[c][1] && 1 == (g = f(r, d[c][1][0], d[c][1][1], t, v, y))[0])
                                return g
                        } finally {
                            if (d[c] && d[c][0] && 1 == (g = f(r, d[c][0][0], d[c][0][1], t, v))[0])
                                return g;                            d[c] = 0,                                c--
                        }
                        o += 2 * I - 2                    } else if (6 == z)
                        oprand = n(r, o),                            o += 2 * oprand[0],                            I = oprand[1],                            S[A -= I] = p("x,y", "return new x[y](" + Array(I + 1).join(",x[++y]").substr(1) + ")")(S, A);                    else if (8 == z)
                        g = S[A--],                            S[A] = S[A] & g;                    else if (10 != z)
                        break                } else if (1 == (3 & z))
                    if (0 == (z >>= 2))
                        S[A] = !S[A];                    else if (7 == z)
                        C = S[A--],                            g = delete S[A--][C];                    else if (9 == z)
                        oprand = n(r, o),                            o += 2 * oprand[0],                            S[A] = S[A][m(a[oprand[1]], oprand[1])];                    else {
                        if (11 != z)
                            break;                        g = S[A--],                            S[A] = S[A] << g
                    }
                else if (2 == (3 & z))
                    if (1 == (z >>= 2))
                        S[++A] = g;                    else if (3 == z)
                        g = S[A--],                            S[A] = S[A] <= g;                    else if (10 == z)
                        g = S[A -= 2][S[A + 1]] = S[A + 2],                            A--;                    else if (12 == z)
                        g = S[A],                            S[++A] = g;                    else {
                        if (14 != z)
                            break;                        g = S[A--],                            S[A] = S[A] || g
                    }
                else if (0 == (z >>= 2))
                    S[A] = !S[A];                else if (2 == z)
                    oprand = n(r, o),                        o += 2 * (I = oprand[1]) - 2;                else if (4 == z)
                    g = S[A--],                        S[A] = S[A] / g;                else if (6 == z)
                    g = S[A--],                        S[A] = S[A] !== g;                else {
                    if (13 != z)
                        break;                    S[++A] = v
                }
            else if (2 == (3 & z))
                if (0 == (3 & (z >>= 2)))
                    if (1 == (z >>= 2))
                        g = S[A--],                            S[A] = S[A] > g;                    else if (8 == z)
                        oprand = n(r, o),                            o += 2 * oprand[0],                            I = oprand[1],                            C = A + 1,                            S[A -= I - 1] = I ? S.slice(A, C) : [];                    else if (10 == z)
                        oprand = n(r, o),                            o += 2 * oprand[0],                            I = oprand[1],                            g = S[A--],                            t[I] = g;                    else {
                        if (12 != z)
                            break;                        g = S[A--],                            S[A] = S[A] >> g
                    }
                else if (1 == (3 & z))
                    if (0 == (z >>= 2))
                        S[++A] = s;                    else if (2 == z)
                        g = S[A--],                            S[A] = S[A] + g;                    else if (4 == z)
                        g = S[A--],                            S[A] = S[A] == g;                    else if (11 == z)
                        oprand = n(r, o),                            o += 2 * oprand[0],                            I = oprand[1],                            S[--A] = p("x,y", "return x " + m(a[I], I) + " y")(S[A], S[A + 1]);                    else {
                        if (13 != z)
                            break;                        g = S[A - 1],                            C = S[A],                            S[++A] = g,                            S[++A] = C
                    }
                else if (2 == (3 & z))
                    if (1 == (z >>= 2))
                        oprand = n(r, o),                            o += 2 * oprand[0],                            S[++A] = m(a[oprand[1]], oprand[1]);                    else if (3 == z)
                        S[A--] ? o += 6 : (oprand = n(r, o),                            o += 2 * (I = oprand[1]) - 2);                    else if (5 == z)
                        g = S[A--],                            S[A] = S[A] % g;                    else if (7 == z)
                        g = S[A--],                            S[A] = S[A]instanceof g;                    else {
                        if (14 != z)
                            break;                        S[++A] = !1                    }
                else if (4 == (z >>= 2))
                    oprand = n(r, o),                        I = oprand[1],                        d[c][0] && !d[c][2] ? d[c][1] = [o + 6, I - 4] : d[c++] = [0, [o + 6, I - 4], 0],                        o += 2 * I - 2;                else if (6 == z)
                    oprand = n(r, o),                        o += 2 * oprand[0],                        I = oprand[1],                        S[++A] = t["$" + I];                else {
                    if (8 != z)
                        break;                    g = S[A--],                        S[A] = S[A] | g
                }
            else if (0 == (3 & (z >>= 2)))
                if (1 == (z >>= 2))
                    oprand = n(r, o),                        o += 2 * oprand[0],                        I = oprand[1],                        S[++A] = +m(a[I], I);                else if (3 == z)
                    g = S[A--],                        S[A] = S[A] - g;                else if (5 == z)
                    g = S[A--],                        S[A] = S[A] === g;                else if (12 == z)
                    C = S[A--],                        x = S[A--],                        (I = S[A--]).x === f ? S[++A] = e(r, I.pc, I.len, C, I.z, x) : S[++A] = I.apply(x, C);                else {
                    if (14 != z)
                        break;                    g = S[A],                        S[A] = S[A - 1],                        S[A - 1] = g
                }
            else if (1 == (3 & z))
                if (2 == (z >>= 2))
                    h(function(e) {
                        var f = 0                            , a = e.length;                        return function() {
                            var b = f < a;                            b && h(e[f++]),                                h(b)
                        }
                    }(S[A]));                else if (4 == z)
                    oprand = n(r, o),                        o += 2 * oprand[0],                        I = oprand[1],                        g = t[I],                        S[++A] = g;                else if (6 == z)
                    S[A] = ++S[A];                else {
                    if (8 != z)
                        break;                    g = S[A--],                        S[A] = S[A]in g
                }
            else if (2 == (3 & z))
                if (5 == (z >>= 2))
                    ;                else if (7 == z)
                    g = S[A--];                else if (9 == z)
                    g = S[A--],                        S[A] = S[A] ^ g;                else {
                    if (11 != z)
                        break;                    oprand = n(r, o),                        I = oprand[1],                        d[++c] = [[o + 6, I - 4], 0, 0],                        o += 2 * I - 2                }
            else if (1 == (z >>= 2))
                g = S[A--],                    S[A] = S[A] < g;            else if (8 == z)
                oprand = n(r, o),                    o += 2 * oprand[0],                    I = oprand[1],                    S[A] = S[A][I];            else if (10 == z)
                S[++A] = !0;            else {
                if (12 != z)
                    break;                g = S[A--],                    S[A] = S[A] >>> g
            }
        }
        return [0, null]
    }
    var a = []
        , b = 0        , d = []
        , c = 0        , r = function(e, f) {
            var a = "" + e[f++] + e[f];            return parseInt(a, 16)
        }
        , n = function(e, f) {
            var a = e[f++]
                , b = e[f]
                , d = parseInt("" + a + b, 16);            if (d >> 7 == 0)
                return d >> 6 != 0 && (d = -64 | 63 & d),                    [1, d];            if (d >> 6 == 2) {
                var c = parseInt("" + e[++f] + e[++f], 16);                return 0 != (32 & d) ? d = -32 | 31 & d : d &= 31,                    d <<= 8,                    c = d + c,                    [2, c]
            }
            if (d >> 6 == 3) {
                var r = parseInt("" + e[++f] + e[++f], 16)
                    , n = parseInt("" + e[++f] + e[++f], 16);                return 0 != (32 & d) ? d = -32 | 31 & d : d &= 31,                    d <<= 16,                    r <<= 8,                    n = d + r + n,                    [3, n]
            }
        }
        , i = function(e, f) {
            var a = e[f++]
                , b = e[f];            return parseInt("" + a + b, 16)
        }
        , o = function(e, f) {
            var a = "" + e[f++] + e[f];            return a = parseInt(a, 16),                String.fromCharCode(a)
        }
        , l = function(e, f, a) {
            for (var b = "", d = 0; d < a; d++)
                b += o(e, f),                    f += 2;            return b
        }
        , t = function(e, f, b) {
            for (var d = 0; d < b; d++) {
                var c = n(e, f);                f += 2 * c[0];                var r = l(e, f, c[1]);                a.push(r),                    f += 2 * c[1]
            }
        }
        , s = this        , p = s.Function        , u = Object.keys || function(e) {
            var f = {}
                , a = 0;            for (var b in e)
                f[a++] = b;            return f.length = a,                f
        }
    ;    return function(f) {
        f.length;        for (var d = 0, c = "", i = d; i < d + 16; )
            c += o(f, i),                i += 2;        if ("HNOJ@?RC" != c)
            throw new Error("error magic number " + c);        n(f, d += 16);        d += 8,            b = 0;        for (var l = 0; l < 4; l++) {
            var s = r(f, d + 2 * l);            b += (3 & s) << 2 * l
        }
        d += 16;        var p = n(f, d += 16)
            , u = p[1]
            , v = d += 2 * p[0];        d += p[1];        var y = n(f, d);        y[1];        d += 2 * y[0],            a = [],            t(f, d, y[1]),            e(f, v, u, [])
    }
}();TAC("484e4f4a403f5243000f2d1e46367b114af320b50000000000000000c05f0e020025806d4421131e014302023e22170d44441c21131e0343020440170f44441801131e01041c1680474421131e054302063e22170a44441c131e051e0717164444131e052602010a0118010a02101c161e444418002201170644441c131f0018011800131e081a001d0927041c002611020025c02f0f020a250c4444131e0b1e0c0101001f06020d250d444421131e0e43020440001f07020f25805144131e10021102121a02221e1324131e140a010f2201173744441c0200251144441800221e15240a000f02163e00131e17012201171844441c21131e174302044022170a44441c131e171e1804001f08021925114444131e1a1a00221e1b240a000f001f09021c253a44442118004302043e2201170944441c1800263e1707444402000021180043021d3e171344441800170a4444021e16064444021f001800001f0a022025804b441801011708444402211f0102001f0618001f071807150039172c444418061801131e22221e2324131e22221e24240a000f18011e252a0a010f19281f0618072e1f0716511806001f0b02262580ce4402041f0621134318063e2201171044441c13221e15240a000f0227402201171744441c131e081e281e15221e2924130a010f0227402201170d44441c21131e0b4318063e2201171b44441c131e0b221e15240a000f221e2a24022b0a010f15003a2201170d44441c21131e2c4318063e2201171244441c131e2c221e15240a000f022d402201170d44441c21131e2e4318063e1706444420001b010b06260a0010011726444421131e2f4318063e2201171244441c131e2f221e15240a000f02304017064444200012001f0c023125809744131e321a001f06131e08221e332418060234131e081a00220200250c44441b020b00201d35001d360a030f1c131e37221e3824023918060a020f1c1322170844441c131e3722170a44441c131e371e3a170944441800201d351b010b07260a0010173144441322172244441c131e3b131e3c29158064392201171044441c131e3d131e3e2915806439170944441800201d35001f0d023f252d444421131e80404302044022171e44441c131e081e281e15221e2924131e80401e80410a010f0280423e001f0e028043258065441b010b06260a00100117805644028044131e2c42012201171144441c131e2c1e8044131e804541012201170a44441c02804613422201170a44441c02804713422201170a44441c02804813422201171044441c028049134202804a13423a0012001f0f02804b25810444131e2c1e804c1706444420004604444406094444271f062000052f44440233131e084217244444131e08221e3324131e2c02804c131e081a0022211d804d22121d804e0a030f1c0702804f0280500280510280520280530280540280550280560280570280580280590a0b1f0602805a02805b02805c0a031f07180708031f0818082104171944441f0918071809191f0a13180a191706444420001665180608031f0818082104171b44441f0918061809191f0a131e0b180a191706444420001663131e0b08031f0818082104173144441f091809221e805d24131e1002805e02001a020a010f22170e44441c131e0b1809191e805f170644442000164d12001f100280602580c9441b010b07260a001017284444131e8061221e80622402130a010f1f0618060200250d44441b020b00201d8063001d80641b010b08260a001017805c4446044444062d4444271f0618061e8065131e80661e80673e22170e44441c131e80681e2515003e170a44441800201d806305274444131e8068221e80692402806a02000a020f1c131e8068221e806b2402806a0a010f1c071b010b06260a001017284444131e80610122171444441c131e806c2201170944441c131e806d170a44441800201d8063001f1102806e25809f441b010b06260a00100117809044131e0b221e806f240280700a010f1f0618061e8071221e15240a000f221e807224131e100280730280741a0202000a020f221e2a240280750a010f15003a2201173344441c131e2c1e15221e15240a000f221e807224131e100280730280741a0202000a020f221e2a240280750a010f15003a2201171644441c131e2c1e8044221e15240a000f028076400012001f1202807725809b44131e081a0022121d807822121d3522121d807922121d807a22121d804c22121d806322121d807b2202807c2506444420001f0718071d131f0618061b010b0c260a00101d807818061e807801178048441b010b0d1806041c1b010b111806041c18061b010b0e260a00101d807918061b010b0f260a00101d807a18061b010b10260a00101d804c18061b010b12260a00101d807b1806001f1302807d25805b44131e08221e807e2418000a010f1f0615001f0718061e251501291f081808150039173344441800180618081919170a444415011606444415001f09180918061e25180829150129331807301f0718082e1f08164a1807001f1402807f2536444415001f06180618011e253a17244444180015c1003f2a1801221e80802418060a010f281500351f0018062d1f0616571800001f150280812536444415001f06180618011e253a1724444418001801221e80802418060a010f3115c1003f2a1500351f0018062d1f0616571800001f160280822580704418002201170744441c02001f061806221e807224131e1002808302001a0202000a020f1f061806221e2a240280840a010f157f40172044441806221e80852415001806221e2a240280840a010f0a020f1606444418061f061806170a44441806160744440280861f061806001f170280872580aa4418002201170744441c02001f061806221e805d24131e1002808802001a020a010f1f0718071716444418070b00221e80852415010a010f1606444402001f061806171544441806221e80892402808a0a010f16054444261f08131e081a001f0918081780414415001f0a180a18081e253a1732444418091808180a19221e80892402808b0a010f0b001808180a19221e80892402808b0a010f0b010d180a2d1f0a16491809001f1802808c25808e441800012201171744441c131e808d221e808e2418000a010f02808f3e170a4444131e081a0000131e08221e807e2418000a010f221e8090240a000f1f06131e081a001f0715001f08180818061e253a173844441801171b44441807180618081918001806180819190200280d161444441807180618081918001806180819190d18082d1f0816431807001f19028091258078441800012201171744441c131e808d221e808e2418000a010f02808f3e17074444020000131e08221e807e2418000a010f221e8090240a000f1f0602001f0715001f08180818061e253a17284444180718061808190a0102808b2818001806180819192802808a28281f0718082d1f0816531807001f1a028092258181440280931f0618011708444418011f0602001f0715001f0918001e2518091503283b1780aa441800221e8080241809222d1f090a010f1580ff2f1510331800221e8080241809222d1f090a010f1580ff2f150833301800221e8080241809222d1f090a010f1580ff2f301f0818071806221e80942418081480952f1512340a010f281f0718071806221e809424180815c3f0002f150c340a010f281f0718071806221e8094241808158fc02f1506340a010f281f0718071806221e8094241808153f2f0a010f281f0716bf4f18001e251809291500391780a5441800221e8080241809222d1f090a010f1580ff2f15103318001e25180939171b44441800221e80802418090a010f1580ff2f150833160644441500301f0818071806221e80942418081480952f1512340a010f281f0718071806221e809424180815c3f0002f150c340a010f281f07180718001e25180939171b44441806221e8094241808158fc02f1506340a010f1607444402808b281f07180702808b281f071807001f1b02809625804c441800153f2f1f00131e8097221e80982418001800151a3a170b444415804116254444180015343a170b4444158047161544441800153e3a170a4444157c16064444156f280a010f001f1c028099253444441b010b1c1f06180618001518340418061800151234042818061800150c340428180618001506340428180618000428001f1d02809a2580c244131e0b221e806f240280700a010f1f07180715301d809b180715101d809c1807221e809d2402809e0a010f1f08180802809f1d80a01808221e80a1240280a21502150c0a030f1c180815021d80a3180815011d80a418080280a51d80a61808221e80a724150815081508150015020a050f1c1808221e80a8240a000f1c1807221e8071240a000f1f0615001f09180915203a17294444180015c1003f2a1806221e808024180018061e252c0a010f281500351f0018092d1f0916541800001f1e0280a92521444446044444060a4444271f06157f00050e44441b010b1e1480aa040007001f1f0280ab25124444110280ab1d80ac1118001d80ad001f200280ae251e44444604444406094444271f062000050c4444131e806801010007001f210280af251e44444604444406094444271f062000050c4444131e80b001010007001f220280b1251e44444604444406094444271f062000050c4444131e806101010007001f230280b2252e44441b010b0a1b010b23260a0010041b010b0a1b010b22260a001004281b010b0a1b010b21260a00100428001f240280b325244444131e80b41f0618061e809b0280b52818061e809c280280b52818061e80b628001f250280b7251a4444131e80b41f0618061e80b80280b52818061e80b928001f260280ba25806b44131e80bb020025805e440280bc131e2c4217804c44131e2c221e80bc240a000f221e80bd240200252e44441b030b0018001e80be0280b52818001e80bf280280b52818001e80c0280280b52818001e80c128041c000a010f1c160a444418000200041c001a01001f270280c225807c440280c31f0615001f0721131e2c1806194302044017104444131e2c1806191f07161b444421131e2c18061943020440170c4444131e2c1806191f0746044444060a4444271f09121f0805174444131e0b221e80c4240280c50a010f1c201f08070280c613421f0918070280b5281808280280b528180928001f280280c725806044131e1a1a001f061806221e80c82415010a010f1c1806221e80c92415050a010f1c15001806221e80ca240a000f291f071806221e80c924150b0a010f1c15001806221e80ca240a000f291f08131e22221e80cb24180718080a020f001f290280cc2580724446044444060a4444271f0602000005805f44131e0b221e806f240280700a010f1f061806221e809d240280cd0a010f1f071807221e80ce240280cf0a010f1f081807221e80d02418081e80d10a010f1f091807221e80d02418081e80d20a010f1f0a180902808628180a280007001f2a0280d32582a4440280d40280d50280d60a031f06131e081a001f07131e081a001f081806031f091809210417806c441f0a131e0b221e806f240280d70a010f1f0b180b0280d81d80d9180b1e80da0280db1d80dc180b1e80da180a1d80dd131e0b1e80de221e80df24180b0a010f1c1807180a180b1e80e00d1808180a180b1e80e10d131e0b1e80de221e80e224180b0a010f1c16bf930280e30280e40280e50280e60280e70280e80280e90280ea0280eb0280ec0280ed0280ee0280ef0280f00280f10280f20280f30280f40280f50280f60280f70280f80280f90280fa0280fb0280fc0280fd0280fe0280ff02810002810102810202810302810402810502810602810702810802810902810a02810b02810c02810d02810e02810f02811002811102811202811302811402811502811602811702811802811902811a02811b02811c02811d02811e02811f0281200281210281220281230281240281250281260281270281280281290a80471f0915001f0b271f0a271f0c15001f0d180d18091e253a1780f2441806031f0e180e21041780dd441f0f131e0b221e806f240280d70a010f1f1018100280d81d80d918101e80da0280db1d80dc18101e80da1809180d1902812a28180f281d80dd131e0b1e80de221e80df2418100a010f1c18101e80e01807180f19402201171044441c18101e80e11808180f19401f11131e0b1e80de221e80e22418100a010f1c181117805a44180d151e3a171244441501180d33180a301f0a163f4444180d151e3b22170a44441c180d153c3a171544441501180d151e2933180b301f0b161a4444180d153c3b171144441501180d153c2933180c301f0c1607444416bf22180d2d1f0d16bf0a180a221e152415100a010f180b221e152415100a010f180c221e152415100a010f0a03221e812b2402812a0a010f001f2b02812c2580f44415051f060a001f07131e2c1e80441f0818082201170744441c0a001f0915001f0a180a18063a1780af44460444440604444405809b441809180a191f0b0a001f0c15001f0d180d180b1e253a17354444180b221e812d24180d0a010f171e4444180c221e812e24180b221e812d24180d0a010f1e812f0a010f1c180d2d1f0d1646180b1e80ac0200281f0d180b1e813017114444180d180b1e8130020028281f0d180d180b1e8131020028281f0d180d180c221e812b2402000a010f281f0d1807221e812e24180d0a010f1c07180a2d1f0a16bf4f1807221e812b240281320a010f221e81332415001584000a020f001f2c02813425809b4421180143028135401705444400180002808b281f061801221e808924131e1002813602001a020a010f1f0715001f09180918071e253a1780604418071809191f081808221e80942415000a010f0281373e171844441808221e813824150118081e250a020f1f08165a1808221e2a2418060a010f15003e171744441808221e81382418061e2518081e250a020f0018092d1f0916bf9c001f2d0281392580734446044444060a4444271f060200000580604402001f06131e8068171d4444131e8068221e813a2418000a010f1f06180617074444180600131e80b0171d4444131e80b0221e813a2418000a010f1f061806170744441806001b010b2d261800131e0b1e813b0a02101f0618060007001f2e02813c25808944460444440604444405807c44131e806817154444131e8068221e806924180018010a020f1c131e80b017154444131e80b0221e806924180018010a020f1c14813d1f06131e0b180002813e281d813b131e0b180002808b2818012802813f28131e1a131e1a1a00221e1b240a000f1806281a01221e8140240a000f28028141281d813b07001f2f0281422525444446044444060d4444271f0618061e80ad00050f4444131e81430281441a011c07001f3002814525124444131e8146221e15240a000f1e25001f310281472581bb441b010b06260a00102201170d44441c1b010b08260a001017074444020000131e81482201170944441c131e81492201170944441c131e814a1f06131e80bb02002581744446044444060d4444271f0618000200041c05815e441b020b0617814f441b020b06131e081a0022131e081a002202814b1d814c0a011d814d1a011f06020025054444001f07131e1002814e02001a021f08131e1002814f0280741a021f091806221e81502402000a010f1c131e8151260200250d44441b030b000200041c001581f40a02101c1806221e8152240a000f1f0a180a131e80bb4117374444180a221e80bd240200251344441b030b06221e81532418000a010f000a010f221e80bd24020025054444000a010f1c162f44441806221e8152240200251c44441b030b06221e81532418001b030b071b030b070a030f1c0018070a020f1c1806020025806244180022170a44441c18001e815422170d44441c18001e81541e8154178042441b030b08221e81552418001e81541e81540a010f1f0618061726444418060b00221e805d241b030b090a010f1f071807170e44441b030b0018060b00041c001d8156160a444418000200041c07001a01001f3202815725805944028158221e807224131e100281590280741a020200253c4444131e22221e24240a000f15102a1500301f06180002815a3d170a44441806160c4444180615032f1508301f071807221e152415100a010f000a020f001f3302815b2580504418001e2515223e178043441b010b152615001800221e813824150015200a020f0a02101f061806221e15240a000f221e813824150015020a020f1800221e813824152015220a020f3e0012001f3402815c25805c441b010b2e02815d041f06180622170c44441c1b010b34180604170744441806001b010b33260a00101f0618061b010b1526150018060a021028221e813824150015220a020f1f061b010b2f2602815d18060a02101c1806001f3502815e2580bf4418001e251f0618061502331f0718011733444418001806150129191f0818071504291f07180818071503293a2201170a44441c180818073917064444260018081f0715001f08180818063a17804a4418001808131e8097221e80982418001808191580ff2f18001808191508351580ff2f18001808191510351580ff2f18001808191518351580ff2f0a040f0d18082d1f0816bfb41800221e812b2402000a010f1f081801171344441808221e813824150018070a020f001808001f3602815f2580814418001e251f0618061502341f07180615032f1500401709444418072d1f071801171c4444131e816018071501281a011f081808180718060d160e4444131e816018071a011f0815001f09180918063a172b44441808180915023423191800221e80802418090a010f180915032f15033333300d18092d1f0916521808001f37028161250b444418001481622f001f3802816325314444180215053518011502333118011503351802150433312818001801311805180315032f180431191802312831001f390281642518444418001e2515043a170a4444180015041d251800001f3a0281652580d24418001e251f0618061501291f0718001807191f0915001f0a131e22221e23241506153418062b280a010f1500301f0d180d150039178097441b010b38180a1b010b804f28041f0a180a15023515032f1f0b15001f0c180c18073a173c44441800180c150128191f081800180c1b010b381800180c191b010b3926180a18081809180c180b18010a061028040d271f09180c2d1f0c164118000b001f08180018071b010b3818001807191b010b3926180a180818091807180b18010a061028040d271f09180d2e1f0d16bf671800001f3b0281662581a744131e1002816702001a02221e132418000a010f170744441800000a001f0618001e251f0715001f0815001f09180818073a178165441800221e80802418080a010f1f0a180a1580803a17194444180618091800221e80942418080a010f0d16812b44180a1588003a172b444418061809131e8097221e8098241580c0180a15063430158080180a153f2f300a020f0d1680fa44180a15c0d8003a2201170c44441c180a15c0dfff391737444418061809131e8097221e8098241580e0180a150c3430158080180a150634153f2f30158080180a153f2f300a030f0d1680ae44180815012818073a178098441800221e80802418081501280a010f1f0b180a15c0dc003a22170c44441c15c0dc00180b3c22170c44441c180b15c0dfff3c17806244180a1583ff2f150a33180b1583ff2f3015c10000281f0c18061809131e8097221e8098241580f0180c151234153f2f30158080180c150c34153f2f30158080180c150634153f2f30158080180c153f2f300a040f0d18082d1f08160e4444131e81680281691a014718082d1f0818092d1f0916be991806221e812b2402000a010f001f3c02816a258067441800213e2201170944441c1800263e2201170c44441c18001e2515003e170744441800001b010b3c1800041f001b010b3c1801041f011b010b36261b010b3b261b010b37261800200a02101b010b3a1b010b37261801120a0210040a0210120a0210001f3d02816b2580a344131e0b1e80de1f06131e0b221e806f2402816c0a010f1f070280b5131e816d2615c02710131e22221e24240a000f2a150a0a0210280280b528131e1a1a00221e1b240a000f281f08180002816e180828281f00180718001d816f1318080200253144441b020b011800041c4604444406044444051c4444131e8170221e80e2241b020b070a010f1c131b020b080907000d1806221e80df2418070a010f1c001f3e02817125324444180001170744440200001b010b0b1504041f0618061b010b1b261b010b3d26180018060a02100281720a021028001f3f028173258145441801173b444415001f0615001f07180718001e253a1728444418001807191e817417154444180018071918011806222d1f06191d817518072d1f07165302001f061800221e8176240200251c44441b02220b061b010b0a18001e81750402817728281d8178000a010f1c18061b010b09260a0010281f061b010b33260a00101f07131e22221e23241807221e80802415030a010f15082b0a010f1807221e80802415030a010f15082c281f081807221e813824150415041808280a020f1f091b010b1b1b010b3d26180618090a0210180728041f061b010b8049221e817902817a131e817b1806042802808a28281d8179271f0a1b010b3e26180a0200253f444418001e817c15003d22170a44441c18001e817d172744441b010b80491b010b3f18001e817d041d817e1b010b2f2602817f18001e817d0a02101c000a02101c001f804002818025848144131e2c22170644441c1322170844441c131e0b011705444400131e081a00220281811d81822215041d8183221b010b80491e81811d8175131e081a00220281841d81822215031d8183221b010b091d8185131e081a00220281861d81822215031d8183221b010b241d8185131e081a00220280701d81822215031d8183221b010b1f1d8185131e081a00220281871d81822215031d8183221b010b091d8185131e081a00220281881d81822215001d8183131e081a00220281891d81822215001d8183131e081a002202818a1d81822215001d8183131e081a002202818b1d81822215001d8183131e081a002202818c1d81822215001d8183131e081a002202818d1d81822215031d8183221b010b251d8185131e081a002202818e1d81822215031d8183221b010b261d8185131e081a002202818f1d81822215011d8183131e081a00220281901d81822215011d8183131e081a00220281911d81822215011d8183131e081a00220281921d81822215001d8183131e081a00220281931d81822215031d8183221b010b271d81852215011d8174131e081a00220281941d81822215031d8183221b010b281d8185131e081a00220281951d81822215031d8183221b010b291d8185131e081a00220281961d81822215031d8183221b010b091d8185131e081a00220281971d81822215031d8183221b010b2a1d8185131e081a00220281981d81822215031d8183221b010b2b1d8185131e081a00220281991d81822215031d8183221b010b2c1d8185131e081a002202819a1d81822215031d8183221b010b091d8185131e081a002202819b1d81822215001d8183131e081a002202819c1d81822215031d8183221b010b2e1d81852202817f1d819d131e081a002202819e1d81822215031d8183221b010b301d8185131e081a002202819f1d81822215031d8183221b010b311d8185131e081a00220281a01d81822215031d8183221b010b321d81852215011d8174131e081a0022022e1d81822215011d8183131e081a00220281a11d81822215041d8183221b010b80481e81a21d8175131e081a00220281a31d81822215031d8183221b010b351d8185131e081a00220281a41d81822215031d8183221b010b091d8185131e081a00220281a51d81822215041d81830a221f060a001f07180608031f08180821041780e0441f0918061809191e81831f0a180a15004017234444180a15014017374444180a15024017804444180a150340178053441680a94418061809191b010b0a131e2c18061809191e818219041d817516808c4418061809191318061809191e8182191d8175168076441806180919131e0b18061809191e8182191d817516805e4418061809191e817417324444131e80bb172644441807221e812e2418061809191e8185221e292418061809191e819d0a010f0a010f1c16244444180618091918061809191e8185221e29242618061809191e819d0a020f1d817516bf1f131e80bb17364444131e80bb221e81a62418070a010f221e80bd240200251544441b010b8040261b020b0618000a02101c000a010f1c160d44441b010b80401806041c001f80410281a725832d442118004302024022170a44441c18001e81a8170e44441b010b200281a91a014715001f0615001f0715c0fff11f08131e1a1a00221e1b240a000f1583e82b1500351f091b010b80481e81aa0122173844441c1b010b16261b010b1626150018090200280a0210131e2e1e81ab221e813824131e2e1e81ac1e251502280a010f0a021018082c1f071809180718082a31150035221e152415020a010f1f0a180a1f0b180a1e25152039171b4444180a221e813824180a1e251520290a010f1f0b163a4444180a1e2515203a172f444402001f0c15001f0d180d1520180a1e25293a17124444180c021f281f0c180d2d1f0d1666180c180b281f0b0281ad1f0c0281ae1f0d0281ae1f0e0281af1f0f180f180e28180d28180c28180b281f06131e816d26180615020a02101f061b010b1626150018060200280a02101f101b010b13260a00101f111b010b8050221e81b0240281b118000a020f1c02001f1218001e80de22171a44441c131e808d221e808e2418001e80de0a010f02808f40173644440281b21b010b15261500131e808d221e808e241b010b192618001e80de18001e81b30a02100a010f0a02102802808a281f121b010b1818001e81a8041f1318001e81b4171a4444131e08221e81b524181318001e81b40a020f1606444418131f1318121b010b1a181304281f1218120281b6281b010b1718001e81a8042802808a281f1218120281b7280281b8281f121b010b8050221e81b0240281b918120a020f1c1b010b141811041f141b010b80481e81aa0122170d44441c1b010b1f260a00101f151b010b80491e818022170e44441c1b010b80481e81aa0122172144441c1b010b80491e817e2201171244441c1b010b3f1b010b2e02817f04041f161b010b804b1806041b010b804b18061481ba2b15003504281b010b804b181518063104281b010b804b1b010b162618101b010b80481e81aa0122170b44441c131e2c1e819b221e15240a000f0a021018082c1510331b010b1626181018120200280a021018082c3004281b010b804b18141508331b010b80481e81bb1504333018063104281b010b1d180704281f171b010b804b1500041c1816170b444418171816281f171817001f80420281bc253c444415001f0618061b010b80491e81bd1e253a172544441b010b80491e81bd180619221e132418000a010f17064444200018062d1f06165012001f80430281be25843744131e81bf1e281f0618061e80621f0718061e81c01f0818061e81c11f0918061e81c21f0a1806020025804944111e81c3221e812e24131e081a00220281c01d81c4221b031d81c50a010f1c131e100281c602121a02221e132418000a010f170a44441118011d81c71b020b08111b0310001d81c01806020025134444111b031d81c81b020b0a111b0310001d81c218060200253e4444110a001d81c3111e81c3221e812e24131e081a00220280621d81c4221b031d81c50a010f1c1118001d81c91118011d81ca1b020b07111b0310001d80620281cb0280640281cc0281cd0281ce0281cf0281d00a071f0b1806020025833f441b010b8043111e81ca0417832844111e81ca221e2a240281d10a010f157f39170d44441b020b09111b0310001118001d81d2111e81d31f06111e81cb1f07111e80641f08111e81cc1f09111e81cd1f0a111e81ce1f0b111e81cf1f0c111e81d01f0d111e81d41f0e111e81d51f0f131e081a001f1015001f1118111b020b0b1e253a1721444418101b020b0b181119111e81d61b020b0b181119190d18112d1f111658131e081a001f11111e81c90281d73d1780d644131e100281d802121a02221e1324111e81c70a010f178082441811201d81b3111e81d217174444111e81d2221e80892402808a0a010f16054444261f12131e081a001f1318121780464415001f14181418121e253a1737444418131812181419221e80892402808b0a010f0b00131e81d91812181419221e80892402808b0a010f0b01040d18142d1f141644181118131d80de163f4444131e100281da02121a02221e1324111e81c70a010f171d44441811131e808d221e81db24111e81d20a010f1d80de160d44441b020b09111b031000111e81ca1f121b010b80491e81dc1e251500391780754415001f1318131b010b80491e81dc1e253a17804d441b010b80491e81dc1813190b001f141814221e1324111e81ca0a010f17254444111e81ca221e80722418141b010b80491e81dc1813190b010a020f1f12160c444418132d1f1316bfa91b010b8050221e81b0240281dd18120a020f1c181118121d81a81b010b80421811041f13111e81ca111e81ca221e2a240280840a010f157f40170e44440281de181328160a44440281df181328281f14111e81c322171244441c111e81c30b001e81c40280623f170644442600111e81c31f1515001f16181618151e253a17354444181615003e1710444418151816191e81c518141d1e1118151816191e81c4191118151816191e81c5101c18162d1f161646111e81c8170f4444111e81c211111e81c8101c110281c3091118061d81d31118071d81cb1118081d80641118091d81cc11180a1d81cd11180b1d81ce11180c1d81cf11180d1d81d011180e1d81d411180f1d81d515001f1618161b020b0b1e253a17214444111e81d61b020b0b18161918101b020b0b181619190d18162d1f1616581b020b09111b0310001d81c1001f80440281e02580424415001f0618061b010b80491e81e11e253a172c44441b010b80491e81bd221e812e24131e101b010b80491e81e11806191a010a010f1c18062d1f061649001f80450281e22580404415001f0618061b010b80491e81dc1e253a172a44441b010b80491e81dc180619131e101b010b80491e81dc1806190b001a011d1f18062d1f06164b001f80460281e32580d5441b010b80481e81aa170644442600131e08221e81b5241b010b804918000a020f1c1b010b80491e818115003e2201172044441c131e22221e23241b010b80491e81810a010f1b010b80491e81813f170e44441b010b200281e41a01471b010b80491e81be178050441b010b80491e81e11e2515003e2201171144441c1b010b80491e81e11e812e01170e44441b010b200281e51a01471b010b8045260a00101c1b010b8046260a00101c1b010b8044260a00101c1b010b80491e818017144444131e8151261b010b804115000a02101c001f804721131e081e81b5430206401780c044131e08221e3324131e080281b5131e081a00220281b525808f441800263e2201170944441c1800213e170e4444131e81e60281e71a0147131e081800041f0615011f0718071b021e253a178058441b021807191f081808264022170944441c1808214017374444180808031f0918092104172944441f0a131e081e281e81e8221e29241808180a0a020f170e44441806180a1808180a190d165518072d1f0716bfa41806001f80481880481d804d22201d804e22201d81e90a030f1c131e081e807e0117810644131e0802002580f644131e081e281e81e81f06131e081a0022261d15221e81ea2402150a010f011f0702150281eb0281ec0281e80281ed0281ea02110a071f0818081e251f0902002580b2442118004302064022171744441c211800430202402201170944441c1800263e170e4444131e81e60281ee1a01470a001f06180008031f0918092104172844441f071b020b06221e2924180018070a020f171144441806221e812e2418070a010f1c16561b020b071780444415001f0818081b020b093a173544441b020b06221e292418001b020b081808190a020f171644441806221e812e241b020b081808190a010f1c18082d1f08164618060000260a00101d807e131e081a00220281ef1d81a22215011d81bb22121d81aa1f8048131e081a0022121d81f02215001d818122121d818022121d81be220a001d81e1220a001d81bd220a001d81dc220281f11d81791f804915001f804a0200252044441b011b010b804d1d81f21b0118001d81f31b010b1d180015023404001f804c271f804b0200252d44441b011b010b804e1d81f21b010b804a151c331800150435301f061b0118001d81f31b010b1d180604001f804d0200252a44441b011b010b804c1d81f21b010b1d1b010b804a151a33180015063530041b010b1c18000428001f804e1481f41f804f131e081a00220200252d44441b010b80491e81f022171e44441c131e37221e38240281f51800280281f6280281f718010a030f1c001d81b01f80501880481222170b44441c180c260a00101d81aa1880421f805118001880471d81e318001880511d81f8131e08221e332418000281f9131e081a0022201d804d0a030f1c000a02101c0081fa00071f4bf226c9ad56061556ec31bb5706175aed29813d090f58e9026f76398122061e52f6194f39081c4dfa1849caccca031b54f3063558f1eb0c560e1842eaf2e202961a4dcebf644c0e04134febe7081e52c6dfd5b959ef0c1e51cac0b946076d1f8d2fb709134cead79e056574200e332ec3bd694b196dd6d8b5411c3b081332e0b07b3d89e0062827d09942d60b192cd496259232aa7b50ca0113040e20b28c0b3212884f5a0a7c349fe0f5080e289b7845cadcbe212127ae7d368911390f644aeef51d14b155dc930f7dc5a128b65eda9edb81170f75060928a97e1a49100a3fa042cb065010288d3f684edf82190c1d2ea267f5c9dc9d0025a054043e2dae5b071d28a912a74e1d081d2b95078b065eeb0718208b366746ea014b014a0c0833811c3f80253a991d228e3e4a62c0b25312be4b672e0544efe8e8f6fed88215193f6b2985f3f3f30c0f072b5ed09effd0f2bc81708809473b21117d86035cd3cd8e2ec4946aa6ee7de204373582e4051c3996fbeb06083793fbda800616326e4ff9e2091e376977cca553d7840f21366551db644ae972e5e1f3c39537090a286432b4248fe6c204193a6223071332763f771b64083e32761749efe4ff09143f6f0427b048a6581221307e1c3d6d222b1e9fc49cfaa354e3e99c08160f43e0003c672707120850fde6f8f710210d45fec3b73ccbcbe909182584dc860e1e0648e8da693f6b330646dc682d0533094fcfbf0e1e0057d981e8c9ca683d98c47236021302081e025ab144f6c0aa031d0d4807190651a43b620503160524025f08071c053893c7ae040a1518399bc846022977230a13003f6c244f171a0bea0b151a20771c1d72141a16f60b131e3678f8d4af578611020a141e3f40dbb43b6e0149061d1e3052dd77070a010d5ab6266810211b042e95fca17d42ba2f8efba902360d0a1d0822713b76c9ce83d376f7070a1a183048f5be0b2a1b050750b6263f7f0f1b0825081c0a3b6bf6a60b19181b1f3a3d40ceab12e40b25251517e0f6ad00013391053b0e1aeef118391dece4da51f788cc8cfda309296e2c001e001ae396a7910f0d18e7fea2315ba74aa4e0d689c58c090d1bebc19ef6a9e5e6050c1ee0db61080df2f9cd41c187c51425dee4a457bc031919081b3f2e61f7b9061eea881325dde4a93e47c56b282ca3b4103d287c17fcd31b25dcedb00b384f99c771ffe340bef5d86bd1a087e2b1f7aee3ac3c1725dbe985e4c285ab499dba0e5ba0357bffbc07277d15f81525dad68df9bf0ef9b52676371034489ab23d44cf631325d9c38bd350c666e1d5a0b9f0d176d19f94f31225d8cc8ea6292d62dadf6603f1c8790af3b91525d7db620902292988bff3fc8cbf190af3a40aff8f1125d6cb7de9ea86e78c0a00e8d54783ef8f1425d5c07ff180f489e5a4074a6f1015091c07f6be1425d4d05bd052c663f0a425e0b7f3c343ce3572c10925ffdf42b4070f153f0c19ecd15ab5fa82d049ac245d1625dda42d6708082055ae89035cf859e3d82f7cf6b8eb0517eeb029720a26b493341b90f071f9b70619f0a8352e400f13fcac070f070501e3833e3a4a81d70913fdb61407c69aa7e20415e4b3120913fbbaebd64cd731780715f8b8fdbf06020419f884fd0c3ed7a9e6790e19d37112cc66122bcca8ff57fc4120d8b6953ee14ac7b786d80e09ff98c55a83d21668d84967e4d90709fe9af63e42bd1009f39faf2c15f18d3b2c3a2012f6d8350a08f898bd0ac359ee91bb0c2af190b3ec88b01d265860ee0e37ccac89d944a8ff8498e960ebb20a12cf6f1ac8b40ad54d9e0d19d36618d563c1ac323c264fb90619c369f2df23090ecc4eeca1eb85d2f50708c17ef493b7ef0326d63b011d0a14c66cdd4d68f8909e8a1421c77ed532373a604ea60cc85e62e368b519cd160f1ecc6ba20ffe97fb9cb2cf596ef08a031ec54e0414c442be070ac44b88c938340412c242850b0ecb428da8b1f5819dbb190e1bdc4767ebb3e181ed060db61cd60411d5417e0b09d55978e83e315366fe930a19da5e5297f89b61d3820409d72044071dd1326469ef632252dd3d486deacddbb1f3cf253b2115fdcca727f66f4479d95e8e062c95fd64014bf101450609c2322325260155081ddc2332f7b4e57e0e21850646c36de4a92cbc2f96130c0509cb321ec2015c01470715dc03c66be9610430ec23d00909b402c0567888a1fe0201bc0409ad05c80715a110f7d2acc10e18a50db5a816be9d81a5f377a7d780403eaee5a8d43f46ed2fe545929f716c043ff49ddcca46bd3d9b90777829bebd445284328cd05c3bfd40ae61614c34e94a8bbc424630063d9c8bb34c22258379060619aee4918eea084bf1bdddd2eb89450918a9ff9235966e74bf0629bdfd9676bf0c1cb8fc67f609f175f234e18a0618fda24cffac1219adf468889683a1fa7cb6ca29fa73c23b0b050da4f952960612abc85672960a1daad0795d718499639d0248b40a4be5db3543e84d78a9ee041cbdc12c081cbade0dc37a8c7e04e2c596d10a09bdd810a6e976406c980b09bed208aa8380999065800416beaded0909b0abe45a869e65b5031baba40609aeb9c9200d091dbebaec03cd303eed0a49ebe18f46dec619153a0f39b2bba4fd4543b9f64d698070994e0414bfb4a80717baafa5a9c13711128193b2819e77d6fc48448678867f6fb70f128090a596416ba3effa7372dae8470c168d84957abf70aee85b2c130c128299b4434273976bb9a7b10c1d819a49a8d91cb8b0cc3dea0d1d808542ba969a7273bfd1e576060985877e9e4201250a198790405d74514f2fca121d8c8b763207d5f8635f21e0445d5d455a220a1b9c62abcd18ea62bbae0b1b9d67a2d4c27d9550230a0e1d897e94b4a7bba3c304b5553fca072a9f62b3837ab20a1d8b65ab67a4bed9e83f040e87719c081998798f5d3df85b0c19997a77a8a0d5fe111d86700f1e9b6c738472874c5a261952b29d43051696547c6f0c1d9152704f6262a38cd9f32e0e179451785a39e4735e804b4d525c0b1984485625f67c2fcf18810a2e9845230195a5be9e520c15964024f0746daa987c6a790b1d9c4307f320e8542d1b9007099f4f1ad6e22008099e4a2aa1bfad86111d993626827774812a1174b035c00467ab0317942b061d9b3dc26c62050d9a2ee9580c1d65a49c885f5a1c805f30a8192d4491a649bf61876e8327257e9f20c5148837ddc709bb9c370c1d67a3bc43585e199f3ef638152f4d97b46a2f94a651ab16e5cc7d0e9987af6e15fe172f4a934185a56e00db777d27a05c4c6902f4d80fdd3346081d60954e844d44210917698b7c749a42513c0a0966866f32545900932905096d9e4e5d0409798e410d17679e570080433fc0fc20cd1f0913659826f66017ca7e0509788322c4044d3f8d2e081c616f9541677f8a0a1c606a9e6c2af306962e04187f6c8c0b1b617b9835a3959536b9990b1574697b9d25e7f61179620c157574626a7f4a88501f7f510b08717b735a30ffd7aeb0760c2e677c4634e92aea2494e2f0062e77754030b00d3778445d07602e417d35125f31133877402cff3ce0fadc62c6088f2acfef35b99d123d7c4818caea2a82b30ab11724683ac16b0a1437734824aca76f8931bd294520cbe28f7b36cdf30d39744336b92f474328d2a50dc6092d755c0d9331a288340d374e15216d6067041ed1c5d6b213366b5a144c34e6b14835aa357909920d60463607296650e021f70e0f374923e333aa7d443f92ecdc9a6d7908294424f6142e4d7b0f374d29c3e134bb656cde377e20c7d40a394c24ded1f30a863fb00c294129d7a7fc4d27d6fc00610937767187b8654b38a60b294f38988636fb575117b712374e36b3477c7a2e5f7cdb17803c680c532508377c7c9a5f289053053d5c338e51053e451787340a364e0397116157e337aa142a400b68797e2aa48a58e8ab22911342ed3bb17a052e5803694306374b186b47f3083d5a184b3b9a4933062c421143164109395e0951ee348c74220b3b5c1833c5f1f256611b32093b43e33bdab34c1062073346ef278d731c09375ae630af379727d40a3653fb0267763ac40be8083456e21b482f980b082a59f81a49cacdcb0b3858e4e837ab5d1051c4d0113855f4e502430d26503299ab3c5e06388f153b49f7f6ea7da5164ac1ac6d4d5c008c15dcc9d794103c4ec7c7d0d2d6aa64351baa7e5ceceb123648c6c3dcbd17d8f7e71c47ed0352e9f1e30a3951c5daba4d08391fb60c3950c3ce8912235934931751082a2cd1b06a4e19550f3134dda269309efb4d7b1e2081107908302ddcb948cbd4b50e332ddc8a238d26a52f6dd785007e092a25cc930647e43589103837a09cef3a7f09c93f6656bcef94410a3715e54c6a12753695e5123922a67842d1cbf968d2b151d394ede61432092e3fec5436844554080c3d20a37348730c40e1adcc3006351a8763c828063c3ea246eec50e3229b648dc99195ad1fb09b348da183922ad36ab5108228717794c72c3a32bbb5a9b4d58cdb227132a2b93218f1e5eefa72224930546f1dfd8d4f8063b19a1144b751038318602720f17fdb82bb35ad0237ee2112938850552cfdddcced18f3b703b2475f514323b9d1937841821cb39258711228850189701080c3b219be00b07c0193d6501510a293580e3fd14628268cf0939348ae0fccaa47f040e383a9cfcde8c1e3877282f1d5675132e20206be8e4a43b00206ccaa356d582f0180b1239377443cca346d891f3e4531692d88b04240a37005572ff431e9977c3123b1e44049e70b1d7f593729f728f11e1a0d9123d2e642e80eafee0a7d01b0b56d182add4f601560410327c0c0a1d3b6d3d2ca45ba044ed04132b791b040a1553e9040e1853ec070c0755e7cfbb26081c0a46f8d36f377c02594705090958d38a0a1d0341fd793b610a6e0c0609134aad4df60421531a92015a09091f219105257e160b091d0e32a8e7fdc787f1071d093ebfd1be0e0619022295d37409090b254a397715171a0b495e61215865274d4d4eb231474b7878f2eca34c840a4b3d0d2ec0bbe3690e975999bae45d566917d3a2f3631df5556d6a49fe4db29d3068f4c32a89360a41513e5defb83d6e11000b0e1d187de848fdefb93f730941531258a73d26a49f0e1d11121789f1a13c4a8d329ff1a8092d100b1f6a3770e8df10391e1f384cfeed1c623c6ab21b16efd80f1d12042e58ac0e3b6822072b9abe24041f0e1507081d1c03211e3668d011282e382ee2fbab2e0f2f9ad07be5a9588f14171404d5ca9a3d052486f677ffae5282ffdc70c7170d19e0f9d256f7b9e1b8fdb4120466010115170bf28dfb1c0909f0f4ea2b59b756cee98c8bc997a12670bfab3c42ec48a8fd5858040f0ce5d60a131ce9fd612e4f87f8dc3e52dba09419fe9091caa5b2761929365d434b20e2d1bfe009a1c008819cc08eef350e26b58d00963a995af1ada8bbb063baf5a55ae8c3cd8332653d0f6beb3524a9a2f807845f415955354e3726a0ec2f51acd8877f9240ccd0c5c6d310887976f7a7e6d7e4af82174dc185fd86dd8ab9e7c5d7d71119f0f2ad2647ef632920bfb907322a6c1a0a09e6ee810031589fc4600b19f6fb81f2c3b8a4599dba1309e0d5a4f4b81dfc8726770b113e4a87ab26750919e7cb97de46ce64e1041fffcd9f0e15e6c5640e053a2e9ab3e5c28db4040ffcc66b2002f2cb62e59de298e8b12047351f1f10150feba2f5b516facd4d8ea2ed91c4350421f3cf7e01020d19e5d8558ddc82dc42ab2579bb0b1debb5026e0f043b4cb8a4050efba7237e0e0eff8a3c588bdf6cc99cde7ecd650d0efe9e34256b8111ff3162f3a1053be0bd09110513fda6424d0a4ea6ef48a5db8f07d78b0217ed041cffa5e4121ff983ea9cd67ed0d052714f9552d07beaa80a0fec829b44031fcc611e0e24c2bbd326932924e3c4b6278e2a053fe899d9411037fa82d92555bd1df9da97da5ab3f6930502e486af060510ee9abc0c0609fd8bb4e899080afe8e95d563b2ee0919c16c1deeb01ddb130309d36001380d1fcd69ffacfaa4d3dc2b6b98b380403be64ddcb792cd9ace8631e27cb7a184c5a7bb9d29eb3721e10d04eb87ade386a510a91fd104f17188acb3f090a2c21cdc361edc756245e18341f8875e974e860e1bd662c56aeba31ae829439986b8010a0108071cc76efa3637260224f7014c0c1cdb76a9cf68cb79d013406d0345dd17121fc34e81b6e8b4e60c73929372e287b5fd8f0808cb45a68dbbf090021cdf0e25d24179c77c9f16e7afd9bccf4e070ec56466d42421031ed44f031bda260114011c0909c22c354d43aa1fcc010e091bda3d3704ef66d7380a0ed03a06f1a5f66ad011080ad63a1af975bdf91312da2c13c13411e2a1a8eabdb504cc16d605e30c1ed914ebb0fb56b1c94276e60816dc0bed9db5c44c0916df07f271fa72a2f60a08da1ff170addb20243f0f1bb611c0544d84b4e884a9cb1eabe80909a201d4283a33f8600a09a105d90ff06d8cb8b0101ea60cace2bde33e0ad208c475a4ce2e0a0ab611b4eb4199ba95a90718a4f5acd6250b090ea9f080a7d74b916a080eaee5899db4d0120a0ea1e19270d6507aa78a071db9fab676bed60b10b9d565db15e34bd828f10b0aa7e374a5f256b07ea8b20a0ea5f77b9a91bdaae321090fbef854bf7c81b2bd0a1fb8c443598db8d713b301170b09a9c6312f1ee64e4e52320c14b0df2415fe646faeef894a0508a6cc11d0091ca3e404e56c9d65ac0b258bc009c61ac733fe4c840819b9d011a7ea7d480a0ebfd01a9691878785250b1fafb4ed934646c53efd7d031bb4a80c1dbcb3c84778947e885362bf030fa8a72c14b4a0cc07832b2aed496b0daf8f0da88831c431c52df625baabdc00e9ddbd25e3586dfc59562dddef2ecdb70b1eb3bff41098a84d4c6adf0412afb0a4080aacb6b9df0ad713044aefece6084ad0d0d1d4dd348e024bd1051e8785817105148c849e480a188b8a7195d811a2ac980b188a95698984992c75bfca050b93906982061b948b4d7487090a8988474151595a66090e9da0402104d5f00c065c9f76abc57208148468a8ddd96c8e0a4ede33e2ece5f8f4884b091c885bbb987abeb4880d139d548767b2a6d9fe16149f7b14258a7a937c6186ab5926fc7633d802a1495b00b409139e6c984837f34c280e22bc574dbbbdcbcb20059e708c3d1009976b428962804e403c3663ba94435c0409964c7d1015824356527e65ae88def824249e619e15259750585028d872609b4751454a36f54a64806f69041c834354091b85573504b5bdaf830e249b5b25f1726badc169617d97140e259b4e27ff29d24d2d1b815334c11125954d3bc5e42c1f6695874b5600d10b6e0d25994713abb5868341582919980a259e3b068e7e4e8e371307159324186fa2ad06159025ea7d7309159120e15530c01e890b156ebcb6914f4c0692442b0a156fa3936a8777877f8509156ca3854f4f50018e0b2570b3925705a5977c986e0b2566a774b38a7426eb414112156b936d8a474921dce169435d13757a727d0c08639663688450570dc2c1fc070e6e8579705248060f7880485a0a042a46bc7b211b7a8356048e4f26c4fe22fd5974298635f960cdf8148012f823d0ac845dfe058f121e6e952ce04d16d57b1cbf81430a8d7a5805111b7c8a22c8129b26c6f70e89d532b7bc97050a6c8f25d30f0f7c6db3777977864d1657862bff180b086a7383582eea0aaf25ac0c5c4f7b9c21fc30dbee18947e0c454e78943ca9b7892aa7985f101d7761589925d8d31c7e7e569333a5b70e1f7d7373636e528c4d105b4c3ad0121d7178495e39eedab0ae7b6e4a368f5de64204137b70501e1566694632bfd42cc5ff594068749737d9b9d871abad0539b0744c06934b27156754511a602e6a7c7a500164a434bc8170e42ba1265f35dcd0c0e724655276b24910481257ab092e615426d427b2a29c2a39784925c9ff68c1eb54f4520e5e7e94473a8152145a1a5fb202630c1f6b3ca22a5534cd348d086675330e127b5819b4ba509d2aed1f563ac10c19744039b368615027c3e925140a6e5d1a922ab8960ed7cb36a769678c147d25d60e0e72791d6f6f78411ec0c5d6ba6d070c7f55084d1aa00d136c6cf42fe60f90561b67b2172035422af43fad3c492ecbc69db1697c493f8410165e5b59e10720470f7029a97205480f73b74103184d222912573eddd6a84bdd2ea9676f3f5b0d84196f7561a990e97da1443f870b48497907b6f61b24972cdb9e024d11024d110a481060ffc76be3251f5a035f44780257160d194633884ea849652119509a4c040943049c0a257403883d7952f23eaa", []);
应该是个啥加密啥混淆啥的,没遇到过,

然后我把上面的代码放到webstorm里去运行

打印出了这个东西
[: ] {
    pc: len: x: [: ]z: {
        : { init: []sign: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] { pc: len: x: [: ]z: [Circular] }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [Circular]: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: { __version__: feVersion: domNotValid: }: {
            boe: aid: dfp: intercept: enablePathList: []_enablePathListRegex: []urlRewriteRules: []fpProfileUrl: }: : [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: [: ] {
            pc: len: x: [: ]z: [Circular]
        }: : { debug: [] }: [Circular]d: : [Circular]: { d: : [Circular]: }length: }
}
但是这个并不能运行  我直接

console.log(byted_acrawler.sign(“那个url参数”))

会报错如下
S[A] = S[A][m(a[oprand[1]], oprand[1])];
                                       ^
TypeError: Cannot read property 'href' of undefined
说无法读取未定义属性"href" 但是我代码里根本没有这个href属性,完全不知道哪来的,该怎么办
希望有小伙伴一起探索一下帮帮萌新,或者做过的大佬能指点我一下,谢谢



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
回复

使用道具 举报

回答|共 30 个

pythonORjs

发表于 2020-2-14 13:55:02 | 显示全部楼层

这个代码是被eval执行出来的,你要去上一个调用栈看一下,,,你就会发现其中的端倪了。。调试的时候,看一下,这个代码是在js文件中,还是vm调试中。。
回复

使用道具 举报

sayasora

发表于 2020-2-14 15:45:09 | 显示全部楼层

就是看的你的公众号去试的 是在vm调试中 还是没弄懂那个函数是怎么回事
回复

使用道具 举报

pythonORjs

发表于 2020-2-14 20:07:33 | 显示全部楼层

和抖音的signature生成几乎一模一样。。。可以搜搜资料,研究研究!
回复

使用道具 举报

pythonORjs

发表于 2020-2-14 20:15:42 | 显示全部楼层

...今日头条的,,,我刚看了一下。。。。算法变了。
回复

使用道具 举报

Foxgeek

发表于 2020-2-14 22:11:29 | 显示全部楼层

_signature这个参数在抖音里也是一样的存在,我也是在卡在这里了,希望能跟高手、伙伴们一起交流
回复

使用道具 举报

sayasora

发表于 2020-2-15 18:42:34 | 显示全部楼层

我在搜索资v料的时候看到抖音也是有一个TAC啥的,函数名好像都一样
回复

使用道具 举报

sayasora

发表于 2020-2-15 18:43:41 | 显示全部楼层

好的,打算看看网上抖音的资料,看看能不能解决
回复

使用道具 举报

何老弟

发表于 2020-2-17 10:22:10 | 显示全部楼层

是的,又更新了
回复

使用道具 举报

colorful_pang

发表于 2020-2-19 09:43:47 | 显示全部楼层

这个能解决问题吗 https://mp.weixin.qq.com/s/WFnl9tZo1MFUa6H_r-Zblw
回复

使用道具 举报