• python爬虫 js逆向之猿人学第十六题webpack,忽略obfuscator


    前言

    好久没有写猿人学的分析了,今天来分析一波

     

    打开网址:

     

    同样的,也很轻易的拿到接口,

     

     

    然后这个接口里的请求参数又是迷人的m,m就是我们的目标了

     

    分析

     

    老规矩,搜索:

     

     

     

    搜一堆出来,感觉都不太靠谱

     

    那咋办?先看特征,看这个长度是多少的,卧槽,这个长度有点少见了

     

     

     

    点调用栈看看:

     

     看到这个就很可疑了

     

     

    为啥这么说,dispatch分发请求,匿名函数操作,实际的request,所以,关键的逻辑一定在这个request或者匿名函数anonymous前后,再看js名字就叫webpack,那就是webpack打包的,那前面才分析过webpack的东西,不用怕,点进去看:

     

     

    进来都到这里,打上断点,翻页看看,这不就找到了吗,看着webpack唬人,感觉没两样啊

     

     

    然后看逻辑,m的值就是n[e(528)](btoa, p_s)生成的了,然后传入的参数btoa,这个可以直接调用,不用多说,再看后面的p_s,定义就在上面,那就只剩n[e(528)]这个不知道啥东西了,鼠标放上去,发现,这个就是前面说的匿名函数anonymous了

     

     

    点过去,发现就在上面,然后看逻辑,第一个参数是个函数,然后把第二个参数传入函数直接返回,这个不就是python里的装饰器嘛,

     

     

    那么,也就是说,实际的加密逻辑就是btoa(p_s)

     

    控制台操作下:

     

     

    这不就出来了吗

     

     

    然后,前面js逆向安全专题里说了,btoa就是个base64的函数,直接忽略了,python里直接就有,主要是后面的这个参数:

     

    p_s = Date[e(496)](new Date)[e(517)]()

     

    时间相关的都好说,就差这个e(517)和e(496)了,控制台看是啥东西:

     

     

     

     最后的结果:

     

     然后这个时间戳的话,是毫秒级别的,13位

     

     

    调试

    那行,直接在python里搞一个看行不行

     

     突然感觉跟预期的有点不一样,这个长度不对啊

     

     首先,整个结果就不对的,

     

     

    然后再用node操作也报错:

     

     

    从node版本16开始,原生支持atob,btoa,但是之前不支持

     

    拿得从长记忆了,控制台打印下:

     

     

    双击返回的,进入,如下,这他妈一看,典型的obfuscator混淆啊(别问我怎么看出来的)

     

     

     

    既然是ob,先把这个btoa的上级整个抠出来的,此时有两套方案

     

    • 第一个可以用ast对ob混淆反混淆,然后整体逻辑就会很清晰,后续就能很快解决问题,前提得回ast,且熟悉ob混淆逻辑
    • 第二个不用反混淆,直接补环境也是可以的,但是这个补环境时,如果环境没补好,容易出现错误的结果

     

    ob混淆的话,得花好几期的博客文章才能说清楚,为了照顾对这方面不太理解的朋友,所以我选用第二个方案,补环境,抠代码:

     

    如下,抠出来后,执行,

     

     

     

    把u补上,找到u:

     

     补上并执行:

     

     

    继续补_0x34e7并执行:

     

     

     补f,同同时,把标注出来的删了

     

     

    补完,这里的f用了u,所以要放在u下面

     

     继续补d

     

     

     

    继续补window

     

     

    补md5

     

     

    补n,其实这里看到,这个n就是webpack的加载器,或者叫分发器

     

     

    出现如下,r,但是刚才的n并没有带入参数啊,

     

     

    再看源站里的,此时才发下,n并不是刚才定位到的,而是上面的n

     

     所以还是不能信鼠标放上去的跳转啊,尤其这种就一个字母,很容易链接错,因为作用域的问题,你很有可能链接到同名的其他地方去了,像上面就是

    看到用了个_0x4c28,干脆把这里都复制下来:

     

     

    执行,终于有结果了

     

     调试

     

    然后再在浏览器里执行看看,注意,我直接把window = global删了,window.md5直接改成了md5,因为浏览器环境里自带有window对象,所以不用补了

     

     

    结果也是有的,那么怎么确定这个结果就跟官方的一样呢,用同一个时间地址就可以了:

    先看,这是官方的结果:

     

     把这个值直接放到扣出来的代码执行,node里:

     

     浏览器的source - snippet里

     

     

     

    三个值都不一样,那多半也没法用啊,哪里有问题呢?

     

    再从头看下:

     

     

     

     

     

    应该就是检测了环境,刚才补的环境还是有问题,想到刚才的delete那里:

     

     

     这里只能一行一行看了,可以对这里打上断点一点点看了:

     

     

     然后这里看到这个n:

     

     刚才我们也补了一个n,对比下区别,下面是自己补的,这个值明显就不对了啊,怎么办

     

     看到源网站的n:

     

     

    那就把相关的都补上吧,放在for循环上边点:

     

     

    好的,现在看,然后发现,即使我把时间写死了,每次执行还是会有不同的结果,那就不多说了,直接拿来请求看看能不能有正常结果吧,先稍微改下js文件:

     

     

     

     

     

    python调用:

     

     

    那就可以,整理下求和吧

     

     

    填入答案:

     

    js代码:

    window = global;
    var e, t;
    _0x4c28 = ["18|38|15|2", "ucisR", "wWwRM", "LzcOo", "yWGcu", "PlAEw", "ihcci", "hBKtU", "rvloG", "xcQTI", "uhJgH", "vRqUp", "EQEzR", "abc", "QgSUn", "0|45|44|19", "WMqBp", "koePJ", "jGSEC", "IKbhW", "wEOgn", "|49|71|11|", "xgzfr", "ABCDEF", "DdHPB", "aFxRD", "sFtiw", "concat", "YhaCC", "YVBwM", "abYok", "2|28|6|36|", "NLOsy", "bRLIN", "xGAWc", "length", "zYRlD", "14|67|61|3", "bolvy", "pagBT", "mdsJQ", "4|69|41|26", "kaXPV", "IWxBE", "pviAr", "5|0|2", "lvwPz", "YcDFe", "yGmJD", "FcYqi", "AAZoR", "|46|5|3|50", "PnITs", "ABCDEFGHIJ", "charCodeAt", "KLMNOPQRST", "prrXX", "FDiNG", "split", "oBesn", "9|24|10|56", "VaXsK", "fromCharCo", "FDfcp", "rrdPR", "HHkBN", "89+/", "mfuQZ", "PbrnX", "FcXlo", "rNapo", "fEXNi", "qtIDJ", "60|53|21|5", "Rtsed", "SUrST", "nsaps", "vyNVU", "2|29|23|64", "0|43|57|4|", "NNXUu", "nCrbn", "wQPIq", "XBcOb", "39|40|47|6", "ljkOt", "yMPhx", "TXzzv", "0123456789", "fmdcS", "iXQwu", "grCxb", "3|6|1|4|7|", "wKeAM", "Iekey", "opqrstuvwx", "|7|17", "BQgZQ", "BtzmV", "jZUAt", "HYhpy", "Yvoqt", "VyzBI", "NNVLf", "dbmfK", "0|58|16|32", "UAFHv", "WNIsZ", "2|1|4|3|5|", "JFqRJ", "zObVA", "d24fb0d696", "XfWkD", "MFmWH", "lZISZ", "WzbFA", "kaQlD", "3f7d28e17f", "eSwEi", "YpeFX", "kZhzK", "KxKIe", "LAIPf", "LjyKQ", "YLwOK", "iqfMz", "51|8|0|65|", "JRihE", "nqEyg", "|37|22|27|", "ZXsFi", "goEwl", "|31|63|48|", "wvVCN", "wnDlW", "Myvqp", "UlhBp", "fwCDC", "charAt", "Lmhlz", "WQCAS", "UXeVn", "KIXRL", "HiEZt", "WNzfT", "lNWda", "tsNzQ"],
        e = _0x4c28,
        t = 368,
        function (t) {
            for (; --t;)
                e.push(e.shift())
        }(++t);
    var n = function (e, t) {
        return _0x4c28[e -= 0]
    };
    window.md5 = function (e) {
        var t = n
            , r = {
            fEXNi: function (e, t) {
                return e(t)
            },
            LzcOo: function (e, t, n) {
                return e(t, n)
            }
        };
        r[t(3)] = function (e, t) {
            return e(t)
        }
            ,
            r.wEOgn = function (e, t, n) {
                return e(t, n)
            }
            ,
            r[t(120)] = function (e, t, n) {
                return e(t, n)
            }
            ,
            r[t(69)] = function (e, t) {
                return e == t
            }
            ,
            r[t(109)] = function (e, t) {
                return e(t)
            }
            ,
            r[t(112)] = t(86),
            r.oBesn = "900150983c" + t(37) + t(43) + "72",
            r[t(70)] = t(18) + t(118),
            r[t(16)] = function (e, t) {
                return e < t
            }
            ,
            r[t(2)] = t(110) + t(5) + t(133) + "|55|13|12|" + t(146) + t(114) + t(94) + "35|68|33|4" + t(104) + t(52) + t(73) + t(88) + t(55) + "25|34|1|2|" + t(10) + t(4) + t(124) + t(58) + "52|59|66|7" + t(31) + t(22),
            r[t(53)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(35)] = function (e, t) {
                return e + t
            }
            ,
            r[t(141)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(91)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(65)] = function (e, t) {
                return e + t
            }
            ,
            r[t(38)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(19)] = function (e, t) {
                return e + t
            }
            ,
            r[t(117)] = function (e, t, n) {
                return e(t, n)
            }
            ,
            r[t(92)] = function (e, t) {
                return e + t
            }
            ,
            r[t(82)] = function (e, t) {
                return e + t
            }
            ,
            r[t(111)] = function (e, t, n) {
                return e(t, n)
            }
            ,
            r[t(78)] = function (e, t) {
                return e + t
            }
            ,
            r.lZISZ = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r.Iekey = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r.AAZoR = function (e, t) {
                return e + t
            }
            ,
            r[t(67)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r.UlhBp = function (e, t) {
                return e + t
            }
            ,
            r.yMPhx = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(138)] = function (e, t) {
                return e + t
            }
            ,
            r[t(121)] = function (e, t) {
                return e + t
            }
            ,
            r[t(98)] = function (e, t, n) {
                return e(t, n)
            }
            ,
            r.kHuTw = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(50)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(142)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(87)] = function (e, t) {
                return e + t
            }
            ,
            r[t(90)] = function (e, t) {
                return e + t
            }
            ,
            r[t(59)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(28)] = function (e, t) {
                return e + t
            }
            ,
            r[t(119)] = function (e, t) {
                return e + t
            }
            ,
            r.YpeFX = function (e, t) {
                return e + t
            }
            ,
            r[t(7)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r.prrXX = function (e, t) {
                return e + t
            }
            ,
            r.kaQlD = function (e, t) {
                return e + t
            }
            ,
            r.qtIDJ = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r.xGAWc = function (e, t) {
                return e + t
            }
            ,
            r[t(134)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(89)] = function (e, t) {
                return e + t
            }
            ,
            r[t(15)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(9)] = function (e, t) {
                return e + t
            }
            ,
            r[t(56)] = function (e, t) {
                return e + t
            }
            ,
            r[t(6)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(32)] = function (e, t) {
                return e + t
            }
            ,
            r[t(99)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(39)] = function (e, t) {
                return e + t
            }
            ,
            r[t(113)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(106)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(66)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r.TXzzv = function (e, t) {
                return e + t
            }
            ,
            r.NNVLf = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(79)] = function (e, t) {
                return e + t
            }
            ,
            r[t(1)] = function (e, t, n, r, i, o, a, s) {
                return e(t, n, r, i, o, a, s)
            }
            ,
            r[t(81)] = function (e, t) {
                return e + t
            }
            ,
            r.MXnIN = function (e, t) {
                return e >> t
            }
            ,
            r[t(23)] = function (e, t) {
                return e << t
            }
            ,
            r.nqEyg = function (e, t) {
                return e % t
            }
            ,
            r.kaXPV = function (e, t) {
                return e >>> t
            }
            ,
            r[t(24)] = function (e, t, n) {
                return e(t, n)
            }
            ,
            r[t(44)] = function (e, t, n) {
                return e(t, n)
            }
            ,
            r[t(30)] = function (e, t, n) {
                return e(t, n)
            }
            ,
            r[t(143)] = function (e, t) {
                return e | t
            }
            ,
            r[t(101)] = function (e, t) {
                return e & t
            }
            ,
            r[t(122)] = function (e, t, n, r, i, o, a) {
                return e(t, n, r, i, o, a)
            }
            ,
            r.ZpUiH = function (e, t) {
                return e & t
            }
            ,
            r[t(72)] = function (e, t) {
                return e ^ t
            }
            ,
            r[t(130)] = function (e, t) {
                return e ^ t
            }
            ,
            r[t(41)] = function (e, t) {
                return e | t
            }
            ,
            r[t(116)] = function (e, t) {
                return e > t
            }
            ,
            r[t(80)] = function (e, t) {
                return e(t)
            }
            ,
            r[t(33)] = function (e, t, n) {
                return e(t, n)
            }
            ,
            r[t(83)] = function (e, t) {
                return e(t)
            }
            ,
            r[t(60)] = function (e, t) {
                return e + t
            }
            ,
            r.FDfcp = function (e, t) {
                return e * t
            }
            ,
            r[t(95)] = function (e, t) {
                return e + t
            }
            ,
            r[t(51)] = function (e, t) {
                return e & t
            }
            ,
            r.DdHPB = function (e, t) {
                return e >> t
            }
            ,
            r.abYok = function (e, t) {
                return e | t
            }
            ,
            r[t(84)] = function (e, t) {
                return e << t
            }
            ,
            r[t(105)] = function (e, t) {
                return e & t
            }
            ,
            r[t(8)] = function (e, t) {
                return e - t
            }
            ,
            r[t(137)] = function (e) {
                return e()
            }
            ,
            r.YVBwM = function (e, t) {
                return e << t
            }
            ,
            r[t(27)] = function (e, t) {
                return e & t
            }
            ,
            r[t(26)] = function (e, t) {
                return e / t
            }
            ,
            r[t(74)] = function (e, t) {
                return e * t
            }
            ,
            r[t(49)] = t(14) + "abcdef",
            r[t(36)] = function (e, t) {
                return e >> t
            }
            ,
            r[t(46)] = function (e, t) {
                return e + t
            }
            ,
            r[t(75)] = function (e, t) {
                return e >> t
            }
            ,
            r[t(47)] = function (e, t) {
                return e * t
            }
            ,
            r[t(11)] = t(126) + t(128) + "UVWXYZabcdefghijklmn" + t(21) + "yz01234567" + t(139),
            r[t(63)] = function (e, t) {
                return e * t
            }
        ,
        r.KIXRL = function (e, t) {
            return e << t
        }
        ,
        r[t(57)] = function (e, t) {
            return e % t
        }
        ,
        r[t(77)] = function (e, t) {
            return e << t
        }
        ,
        r[t(71)] = function (e, t) {
            return e >> t
        }
        ,
        r.jZUAt = function (e, t) {
            return e >> t
        }
        ,
        r[t(48)] = function (e, t) {
            return e + t
        }
        ,
        r[t(17)] = function (e, t) {
            return e % t
        }
        ,
        r[t(85)] = function (e, t) {
            return e * t
        }
        ,
        r[t(61)] = function (e, t) {
            return e < t
        }
        ,
        r.mfuQZ = function (e, t) {
            return e + t
        }
        ,
        r[t(125)] = function (e, t) {
            return e * t
        }
        ,
        r[t(0)] = function (e, t) {
            return e(t)
        }
        ;
        var i = r;
    
        function o(e, n) {
            for (var r = t, o = i.WNzfT[r(131)]("|"), a = 0; ;) {
                switch (o[a++]) {
                    case "0":
                        for (var d = 0; i.iXQwu(d, e.length); d += 16)
                            for (var p = i[r(2)][r(131)]("|"), h = 0; ;) {
                                switch (p[h++]) {
                                    case "0":
                                        w = i[r(53)](l, w, b, x, T, e[d + 2], 9, -51403784);
                                        continue;
                                    case "1":
                                        x = u(x, T, w, b, e[d + 6], 23, 76029189);
                                        continue;
                                    case "2":
                                        b = i[r(53)](u, b, x, T, w, e[i.JFqRJ(d, 9)], 4, -640364487);
                                        continue;
                                    case "3":
                                        T = i[r(141)](c, T, w, b, x, e[d + 10], 15, -1051523);
                                        continue;
                                    case "4":
                                        T = s(T, w, b, x, e[i.JFqRJ(d, 2)], 17, 606105819);
                                        continue;
                                    case "5":
                                        w = i[r(91)](c, w, b, x, T, e[i[r(65)](d, 3)], 10, -1894446606);
                                        continue;
                                    case "6":
                                        w = i.XfWkD(l, w, b, x, T, e[i.wKeAM(d, 14)], 9, -1019803690);
                                        continue;
                                    case "7":
                                        T = i.pviAr(f, T, v);
                                        continue;
                                    case "8":
                                        b = i.XfWkD(l, b, x, T, w, e[i[r(92)](d, 13)], 5, -1444681467);
                                        continue;
                                    case "9":
                                        x = i[r(38)](s, x, T, w, b, e[i[r(82)](d, 3)], 22, -1044525330);
                                        continue;
                                    case "10":
                                        w = s(w, b, x, T, e[i[r(82)](d, 5)], 12, 1200080426);
                                        continue;
                                    case "11":
                                        x = i[r(38)](l, x, T, w, b, e[i[r(82)](d, 0)], 20, -373897302);
                                        continue;
                                    case "12":
                                        w = i[r(38)](s, w, b, x, T, e[i[r(82)](d, 9)], 12, -1958435417);
                                        continue;
                                    case "13":
                                        b = i.XfWkD(s, b, x, T, w, e[i.xcQTI(d, 8)], 7, 1770035416);
                                        continue;
                                    case "14":
                                        var m = b;
                                        continue;
                                    case "15":
                                        w = i[r(38)](u, w, b, x, T, e[i.xcQTI(d, 8)], 11, -2022574463);
                                        continue;
                                    case "16":
                                        b = f(b, m);
                                        continue;
                                    case "17":
                                        w = i[r(111)](f, w, g);
                                        continue;
                                    case "18":
                                        x = l(x, T, w, b, e[i[r(78)](d, 12)], 20, -1921207734);
                                        continue;
                                    case "19":
                                        w = i[r(40)](u, w, b, x, T, e[d + 4], 11, 1272893353);
                                        continue;
                                    case "20":
                                        T = i[r(20)](u, T, w, b, x, e[i.PlAEw(d, 11)], 16, 1839030562);
                                        continue;
                                    case "21":
                                        b = s(b, x, T, w, e[i[r(123)](d, 12)], 7, 1804550682);
                                        continue;
                                    case "22":
                                        x = u(x, T, w, b, e[i[r(123)](d, 10)], 23, -1094730640);
                                        continue;
                                    case "23":
                                        T = i[r(67)](c, T, w, b, x, e[d + 14], 15, -1416354905);
                                        continue;
                                    case "24":
                                        b = s(b, x, T, w, e[i[r(123)](d, 4)], 7, -176418897);
                                        continue;
                                    case "25":
                                        w = i.UXeVn(u, w, b, x, T, e[d + 0], 11, -358537222);
                                        continue;
                                    case "26":
                                        b = i.UXeVn(l, b, x, T, w, e[i[r(62)](d, 1)], 5, -165796510);
                                        continue;
                                    case "27":
                                        b = i.UXeVn(u, b, x, T, w, e[i[r(62)](d, 13)], 4, 681279174);
                                        continue;
                                    case "28":
                                        b = i[r(12)](l, b, x, T, w, e[i[r(138)](d, 9)], 5, 568446438);
                                        continue;
                                    case "29":
                                        w = i.yMPhx(c, w, b, x, T, e[d + 7], 10, 11261161415);
                                        continue;
                                    case "30":
                                        var g = w;
                                        continue;
                                    case "31":
                                        b = c(b, x, T, w, e[i.yGmJD(d, 8)], 6, 1873313359);
                                        continue;
                                    case "32":
                                        x = i.aFxRD(f, x, y);
                                        continue;
                                    case "33":
                                        T = i[r(12)](l, T, w, b, x, e[i[r(121)](d, 15)], 14, -660478335);
                                        continue;
                                    case "34":
                                        T = i.kHuTw(u, T, w, b, x, e[d + 3], 16, -722881979);
                                        continue;
                                    case "35":
                                        b = i[r(50)](l, b, x, T, w, e[i[r(121)](d, 5)], 5, -701520691);
                                        continue;
                                    case "36":
                                        T = l(T, w, b, x, e[i[r(121)](d, 3)], 14, -187363961);
                                        continue;
                                    case "37":
                                        T = i[r(142)](u, T, w, b, x, e[i.QgSUn(d, 7)], 16, -155497632);
                                        continue;
                                    case "38":
                                        b = i.FcXlo(u, b, x, T, w, e[i.koePJ(d, 5)], 4, -378558);
                                        continue;
                                    case "39":
                                        w = i[r(142)](u, w, b, x, T, e[i[r(90)](d, 12)], 11, -421815835);
                                        continue;
                                    case "40":
                                        T = i[r(59)](u, T, w, b, x, e[i[r(28)](d, 15)], 16, 530742520);
                                        continue;
                                    case "41":
                                        x = i.wvVCN(s, x, T, w, b, e[d + 15], 22, 1236531029);
                                        continue;
                                    case "42":
                                        x = i[r(59)](l, x, T, w, b, e[i[r(119)](d, 4)], 20, -405537848);
                                        continue;
                                    case "43":
                                        b = i[r(59)](s, b, x, T, w, e[i.lvwPz(d, 0)], 7, -680976936);
                                        continue;
                                    case "44":
                                        b = i[r(59)](u, b, x, T, w, e[i[r(45)](d, 1)], 4, -1530992060);
                                        continue;
                                    case "45":
                                        x = i.nCrbn(u, x, T, w, b, e[i[r(129)](d, 14)], 23, -35311556);
                                        continue;
                                    case "46":
                                        b = c(b, x, T, w, e[i[r(42)](d, 12)], 6, 1700485571);
                                        continue;
                                    case "47":
                                        x = i[r(7)](u, x, T, w, b, e[i.kaQlD(d, 2)], 23, -995338651);
                                        continue;
                                    case "48":
                                        T = c(T, w, b, x, e[d + 6], 15, -1560198380);
                                        continue;
                                    case "49":
                                        w = i[r(145)](l, w, b, x, T, e[i[r(107)](d, 6)], 9, -1069501632);
                                        continue;
                                    case "50":
                                        x = i[r(134)](c, x, T, w, b, e[i[r(89)](d, 1)], 21, -2054922799);
                                        continue;
                                    case "51":
                                        x = i.fmdcS(l, x, T, w, b, e[d + 8], 20, 1163531501);
                                        continue;
                                    case "52":
                                        x = i[r(15)](c, x, T, w, b, e[i[r(9)](d, 13)], 21, 1309151649);
                                        continue;
                                    case "53":
                                        x = i[r(15)](s, x, T, w, b, e[i[r(56)](d, 11)], 22, -1990404162);
                                        continue;
                                    case "54":
                                        w = i[r(6)](s, w, b, x, T, e[i[r(32)](d, 13)], 12, -40341101);
                                        continue;
                                    case "55":
                                        x = i.sFtiw(s, x, T, w, b, e[i.UAFHv(d, 7)], 22, -45705983);
                                        continue;
                                    case "56":
                                        T = i.sFtiw(s, T, w, b, x, e[i.MFmWH(d, 6)], 17, -1473231341);
                                        continue;
                                    case "57":
                                        w = i[r(99)](s, w, b, x, T, e[i.MFmWH(d, 1)], 12, -389564586);
                                        continue;
                                    case "58":
                                        x = c(x, T, w, b, e[i[r(39)](d, 9)], 21, -343485551);
                                        continue;
                                    case "59":
                                        b = i[r(113)](c, b, x, T, w, e[i[r(39)](d, 4)], 6, -145523070);
                                        continue;
                                    case "60":
                                        T = i.bRLIN(s, T, w, b, x, e[i[r(39)](d, 10)], 17, -42063);
                                        continue;
                                    case "61":
                                        var v = T;
                                        continue;
                                    case "62":
                                        b = i[r(66)](c, b, x, T, w, e[d + 0], 6, -198630844);
                                        continue;
                                    case "63":
                                        w = i[r(66)](c, w, b, x, T, e[i[r(13)](d, 15)], 10, -30611744);
                                        continue;
                                    case "64":
                                        x = c(x, T, w, b, e[d + 5], 21, -57434055);
                                        continue;
                                    case "65":
                                        T = i[r(29)](l, T, w, b, x, e[i[r(13)](d, 7)], 14, 1735328473);
                                        continue;
                                    case "66":
                                        w = i[r(29)](c, w, b, x, T, e[i[r(79)](d, 11)], 10, -1120210379);
                                        continue;
                                    case "67":
                                        var y = x;
                                        continue;
                                    case "68":
                                        w = i[r(1)](l, w, b, x, T, e[d + 10], 9, 38016083);
                                        continue;
                                    case "69":
                                        T = i[r(1)](s, T, w, b, x, e[i[r(79)](d, 14)], 17, -1502002290);
                                        continue;
                                    case "70":
                                        T = i.SUrST(c, T, w, b, x, e[i[r(79)](d, 2)], 15, 718787259);
                                        continue;
                                    case "71":
                                        T = l(T, w, b, x, e[i[r(81)](d, 11)], 14, 643717713);
                                        continue
                                }
                                break
                            }
                        continue;
                    case "1":
                        var b = 1732584193;
                        continue;
                    case "2":
                        return Array(b, x, T, w);
                    case "3":
                        e[i.MXnIN(n, 5)] |= i[r(23)](128, i[r(54)](n, 32));
                        continue;
                    case "4":
                        var x = -271733879;
                        continue;
                    case "5":
                        var w = 271733878;
                        continue;
                    case "6":
                        e[i.BQgZQ(i[r(115)](n + 64, 9), 4) + 14] = n;
                        continue;
                    case "7":
                        var T = -1732584194;
                        continue
                }
                break
            }
        }
    
        function a(e, n, r, o, a, s) {
            var l = t;
            return f(i.BtzmV(d, i[l(44)](f, i.dbmfK(f, n, e), i[l(30)](f, o, s)), a), r)
        }
    
        function s(e, n, r, o, s, l, u) {
            var c = t;
            return a(i[c(143)](i[c(101)](n, r), i[c(101)](~n, o)), e, n, s, l, u)
        }
    
        function l(e, n, r, o, s, l, u) {
            var c = t;
            return i[c(122)](a, i[c(143)](i.ZpUiH(n, o), i.ZpUiH(r, ~o)), e, n, s, l, u)
        }
    
        function u(e, n, r, o, s, l, u) {
            return i[t(122)](a, i.tsNzQ(n ^ r, o), e, n, s, l, u)
        }
    
        function c(e, n, r, o, s, l, u) {
            var c = t;
            return i[c(122)](a, i[c(130)](r, i[c(41)](n, ~o)), e, n, s, l, u)
        }
    
        function f(e, n) {
            var r = t
                , o = i[r(95)](65535 & e, i.iqfMz(n, 65535))
                , a = i[r(95)](e >> 16, i[r(97)](n, 16)) + i[r(97)](o, 16);
            return i[r(103)](i[r(84)](a, 16), i[r(105)](o, 65535))
        }
    
        function d(e, n) {
            var r = t;
            return i.abYok(e << n, e >>> i[r(8)](32, n))
        }
    
        function p(e) {
            for (var n = t, r = i[n(137)](Array), o = i[n(8)](i.vRqUp(1, 16), 1), a = 0; a < i.FDfcp(e[n(108)], 16); a += 16)
                r[i[n(97)](a, 5)] |= i[n(102)](i[n(27)](e[n(127)](i[n(26)](a, 16)), o), i[n(54)](a, 32));
            return r
        }
    
        function h(e) {
            for (var n = t, r = i[n(49)], o = "", a = 0; i.iXQwu(a, i[n(74)](e[n(108)], 4)); a++)
                o += i.xgzfr(r[n(64)](15 & i[n(36)](e[i[n(36)](a, 2)], i[n(46)](i[n(74)](a % 4, 8), 4))), r[n(64)](15 & i.wWwRM(e[a >> 2], i[n(47)](a % 4, 8))));
            return o
        }
    
        return i[t(0)]((function (e) {
                var n = t;
                return i[n(144)](h, i[n(76)](o, i.vyNVU(p, e), 16 * e[n(108)]))
            }
        ), e)
    }
    var _0x34e7 = [
        "split",
        "ABHICESQWK",
        "FKByN",
        "U987654321",
        "lmHcG",
        "dICfr",
        "Szksx",
        "Bgrij",
        "iwnNJ",
        "jihgfdecba",
        "GfTek",
        "gfdecbaZXY",
        "constructo",
        "QIoXW",
        "jLRMs",
        "AqLWq",
        "0zyxwvutsr",
        "TKgNw",
        "eMnqD",
        "thjIz",
        "btoa",
        "MNPQRSTWXY",
        "oPsqh",
        "niIlq",
        "evetF",
        "LVZVH",
        "fYWEX",
        "kmnprstwxy",
        "aYkvo",
        "tsrqpomnlk",
        "HfLqY",
        "aQCDK",
        "lGBLj",
        "test",
        "3210zyxwvu",
        "QWK2Fi",
        "return /\" ",
        "hsJtK",
        "jdwcO",
        "SlFsj",
        "OWUOc",
        "LCaAn",
        "[^ ]+)+)+[",
        "FAVYf",
        "2Fi+987654",
        "floor",
        "join",
        "EuwBW",
        "OXYrZ",
        "charCodeAt",
        "SkkHG",
        "iYuJr",
        "GwoYF",
        "kPdGe",
        "cVCcp",
        "INQRH",
        "INVALID_CH",
        "charAt",
        "push",
        "apply",
        "lalCJ",
        "kTcRS",
        "+ this + \"",
        "ykpOn",
        "gLnjm",
        "gmBaq",
        "kukBH",
        "dvEWE",
        "SFKLi",
        "^([^ ]+( +",
        "qpomnlkjih",
        "^ ]}",
        "pHtmC",
        "length"
    ]
    var l = function (e, t) {
        return _0x34e7[e -= 188]
    }
        , u = l
    
    function d(e) {
        var t = u
            , n = {};
        n[t(214)] = function (e, t) {
            return e || t
        }
            ,
            n.bWcgB = function (e, t) {
                return e * t
            }
            ,
            n[t(227)] = "ABCDEFGHJK" + t(209) + "Zabcdefhij" + t(215) + "z2345678";
        for (var r = n, o = "1|3|0|4|2|5"[t(188)]("|"), a = 0; ;) {
            switch (o[a++]) {
                case "0":
                    var s = l[t(261)];
                    continue;
                case "1":
                    e = r[t(214)](e, 32);
                    continue;
                case "2":
                    for (i = 0; i < e; i++)
                        c += l[t(245)](Math[t(233)](r.bWcgB(Math.random(), s)));
                    continue;
                case "3":
                    var l = r[t(227)];
                    continue;
                case "4":
                    var c = "";
                    continue;
                case "5":
                    return c
            }
            break
        }
    }
    
    function btoa(e) {
        var t = u,
            r = {};
        var f = u(191) + u(204) + u(258) + u(199) + "WVUTSRQPON" + u(189) + u(232) + u(222) + u(217) + u(197) + "ZXYWVUTSRQPONABHICES" + u(223);
    
        r.TGmSp = t(244) + "ARACTER_ERR", r[t(238)] = t(224) + t(250) + "/", r[t(205)] = "^([^ ]+( +" + t(230) + t(259), r.aYkvo = function (e) {
            return e();
        }, r[t(254)] = function (e, t) {
            return e % t;
        }, r.evetF = function (e, t) {
            return e >> t;
        }, r.GfTek = t(196), r[t(260)] = function (e, t) {
            return e << t;
        }, r[t(229)] = function (e, t) {
            return e | t;
        }, r[t(242)] = function (e, t) {
            return e << t;
        }, r[t(228)] = function (e, t) {
            return e & t;
        }, r[t(207)] = function (e, t) {
            return e << t;
        }, r[t(202)] = function (e, t) {
            return e & t;
        }, r.jdwcO = function (e, t) {
            return e === t;
        }, r.kPdGe = t(231), r[t(195)] = t(213), r[t(201)] = function (e, t) {
            return e & t;
        }, r[t(206)] = function (e, t) {
            return e == t;
        }, r[t(219)] = function (e, t) {
            return e + t;
        }, r[t(220)] = function (e, t) {
            return e(t);
        };
        var i = r;
    
        if (/([^\u0000-\u00ff])/.test(e)) {
            throw new Error(i.TGmSp);
        }
    
        function n(r) {
            if (t[r])
                return t[r].exports;
            var i = t[r] = {
                exports: {}
            };
            return e[r].call(i.exports, i, i.exports, n),
                i.exports
        }
    
        n.g = function () {
            if ("object" == typeof globalThis)
                return globalThis;
            try {
                return this || new Function("return this")()
            } catch (e) {
                if ("object" == typeof window)
                    return window
            }
        }()
        for (var o, a, s, l = 0, c = []; l < e[t(261)];) {
            switch (a = e[t(237)](l), s = i.kukBH(l, 6)) {
                case 0:
                    c[t(246)](f[t(245)](i[t(212)](a, 2)));
                    break;
                case 1:
                    try {
                        "WhHMm" === i[t(198)] || n.g && c[t(246)](f[t(245)](i.pHtmC(2 & o, 3) | i.evetF(a, 4)));
                    } catch (e) {
                        c[t(246)](f[t(245)](i[t(229)](i.cVCcp(3 & o, 4), a >> 4)));
                    }
    
                    break;
    
                case 2:
                    c[t(246)](f[t(245)](i[t(229)](i[t(242)](15 & o, 2), i.evetF(a, 6)))), c[t(246)](f[t(245)](i[t(228)](a, 63)));
                    break;
    
                case 3:
                    c[t(246)](f[t(245)](i[t(212)](a, 3)));
                    break;
    
                case 4:
                    c.push(f[t(245)](i[t(229)](i[t(207)](i.OWUOc(o, 4), 6), i[t(212)](a, 6))));
                    break;
    
                case 5:
                    c[t(246)](f[t(245)](i[t(229)](i[t(207)](i[t(202)](o, 15), 4), a >> 8))), c.push(f.charAt(i[t(202)](a, 63)));
            }
    
            o = a, l++;
        }
    
        return 0 == s ? i[t(226)](i[t(241)], i[t(195)]) || (c[t(246)](f[t(245)](i[t(201)](o, 3) << 4)), c.push("FM")) : i.eMnqD(s, 1) && (c[t(246)](f[t(245)]((15 & o) << 2)), c[t(246)]("K")), i[t(219)](i.aQCDK(d(15), window.md5(c[t(234)](""))), i[t(220)](d, 10));
    }
    
    function get_m() {
        kk = Date.parse(new Date).toString()
        console.log(kk)
        return [btoa(kk), kk]
    }
    
    console.log(get_m())
    

      

    python代码:

    import requests
    
    headers = {
        "authority": "match.yuanrenxue.com",
        "x-requested-with": "XMLHttpRequest",
        "sec-ch-ua-mobile": "?0",
        'cookie': 'sessionid=换成你的sessionid',
        "user-agent": "yuanrenxue.project",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-site": "same-origin",
        "sec-fetch-mode": "cors",
        "sec-fetch-dest": "empty",
        "referer": "https://match.yuanrenxue.com/match/16",
        "accept-language": "zh-CN,zh;q=0.9"
    }
    
    url = "https://match.yuanrenxue.com/api/match/16"
    
    
    def get_m():
        import execjs
        with open('get_m.js') as f:
            cont = f.read()
            js = execjs.compile(cont)
            result = js.call('get_m')
            m, ts = result
            return m, ts
    
    
    def get_page(page):
        m, ts = get_m()
        params = {
            "page": page,
            "m": m,
            "t": ts
        }
        with requests.get(url, headers=headers, params=params) as response:
            print(1232123123,response)
            result = response.json()
            data = result.get('data')
            return [d.get('value') for d in data]
    
    
    def get_data():
        end = 0
        for i in range(1, 6):
            temp_list = get_page(i)
            some = sum(temp_list)
            end += some
        print('end', end)
    
    
    get_data()
    

      

     

    结语

     

    本次直接忽略ob混淆,硬抠webpack代码,一样有结果,难倒是不难,主要有点骚,他改了btoa函数和md5函数的逻辑,不是原生的

  • 相关阅读:
    YII框架实现排序
    YII2 实现登录时候修改最新登录时间
    YII框架下实现密码修改
    json在PHP中应用技巧
    更换Python pip库镜像地址
    Python3创建RIDE桌面快捷方式的另一种方法
    谈谈测试人员的基本素养
    《微软的软件测试之道》阅读笔记
    PPT如何一页多张打印且铺满整个页面
    Linux 在线模拟器
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/15657354.html
Copyright © 2020-2023  润新知