python模拟-食行生鲜登陆

目标路径 : https://wechatx.34580.com/mart/#/sign/in
需要解决的问题: 当我们登陆的时候会发现密码进行了加密,这个时候怎么找到加密的函数尤为重要,这里为大家进行简单的分析。

第一步:
打开fiddler抓包工具; 打开浏览器,建议清除cookie和缓存; 输入账号和密码,进行登陆; 在fiddler中通过CTRL+F来找到抓取登陆的路径。
fiddler抓取截取的图片这里上传不上去,没办法,只有直接上抓取到的代码了如下:

{"SourceType":"9","Phone":"18521529318","PassWord":"d7a8fbbc282d3cdb",
"ZhuGeDeviceMd5":"1650e17c319a99-0e0ec79bbb30fd-47e1039-15f900-1650e17c31a2fe",
"DeviceId":""}  // 声明这里的手机号是随机填写的,这里的密码也是随机填写的,
				// 密码这里笔者明文是:123456

我们不难发现密码 PassWord 显然是经过了加密,而从经验来看显然不是MD5加密和RSA和SHA加密,这个时候我们就需要找其加密的js代码。

刚刚笔者已经说过找js文件的时候一定要清除缓存和cookies避免不必要的坑。这里笔者是通过CTRL+F搜索表单中的 “ZhuGeDeviceMd5” 直接找到js文件,然后通过js文件格式化得到js代码,过程因为上几篇已经分享过了,这里就不直接展示了,直接上找到的js代码 通过CRTL+F搜索ZhuGeDeviceMd5得到部分代码进行分析,代码如下:

        function m(t) {
            var e = t.username,
            n = t.password;
            return Object(o.a)({
                method: "POST",
                url: "/Sign/SignIn",
                data: {
                    Phone: e,
                    PassWord: Object(s.a)(n, "8D54E5D0")   //显然这是个加密的方法 (n, "8D54E5D0") 往s.a这个方法中传这两个参数即可,n显然是密码,8D54E5D0设置好的。那么需要继续寻找s.a这个方法
                }
            })
        }
        function d() {
            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
            e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
            return Object(o.a)({
                method: "POST",
                url: "/Sign/SignInV2",
                data: {
                    Phone: t.username,
                    PassWord: t.password,  // 显然这是个加密过后的密码进行提交的,所以往上找。
                    ZhuGeDeviceMd5: "string" == typeof window.zhuge.getDid() ? window.zhuge.getDid() : "",  //首先分析这个参数可知当"string" == typeof window.zhuge.getDid()时候 参数值为window.zhuge.getDid(),否则可为空,也就是可填可不填写。
                    DeviceId: window.localStorage.getItem("TOCOPENID") ? window.localStorage.getItem("TOCOPENID") : ""
                }
            },
            e)
        }

继续搜索 s.a 这个方法可以看到 s 如下代码:

        var i = n("QbLZ"),
        a = n.n(i),
        o = n("TuNZ"),
        r = n("gO/C"),
        s = n("XJcS"),  // s在这里声明的那么需要寻找 XJcS 这个参数,继续搜索即可
        c = n("aCH8"),
        l = n.n(c);

通过搜索 XJcS 可以找到如下代码:

    XJcS: function(t, e, n) {
        "use strict";
        function i(t, e, n, i, a, o) {
            var r, s, c, l, m, d, u, p, h, f, g, b, v, w, y = new Array(16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 1024, 16843776, 16843780, 1024, 16778244, 16842756, 16777216, 4, 1028, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 1028, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 1024, 16842756, 65536, 66560, 16777220, 1024, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 1028, 66564, 16843776, 1028, 16778240, 16778240, 0, 65540, 66560, 0, 16842756),
            x = new Array( - 2146402272, -2147450880, 32768, 1081376, 1048576, 32, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 1048576, 32, -2146435040, 1081344, 1048608, -2147450848, 0, -2147483648, 32768, 1081376, -2146435072, 1048608, -2147483616, 0, 1081344, 32800, -2146402304, -2146435072, 32800, 0, 1081376, -2146435040, 1048576, -2147450848, -2146435072, -2146402304, 32768, -2146435072, -2147450880, 32, -2146402272, 1081376, 32, 32768, -2147483648, 32800, -2146402304, 1048576, -2147483616, 1048608, -2147450848, -2147483616, 1048608, 1081344, 0, -2147450880, 32800, -2147483648, -2146435040, -2146402272, 1081344),
            k = new Array(520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 512, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 512, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 512, 131080, 134349320, 134218240, 134217736, 512, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584),
            S = new Array(8396801, 8321, 8321, 128, 8396928, 8388737, 8388609, 8193, 0, 8396800, 8396800, 8396929, 129, 0, 8388736, 8388609, 1, 8192, 8388608, 8396801, 128, 8388608, 8193, 8320, 8388737, 1, 8320, 8388736, 8192, 8396928, 8396929, 129, 8388736, 8388609, 8396800, 8396929, 129, 0, 0, 8396800, 8320, 8388736, 8388737, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 8192, 8388609, 8193, 8396928, 8388737, 8193, 8320, 8388608, 8396801, 128, 8388608, 8192, 8396928),
            C = new Array(256, 34078976, 34078720, 1107296512, 524288, 256, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 256, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 256, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080),
            T = new Array(536870928, 541065216, 16384, 541081616, 541065216, 16, 541081616, 4194304, 536887296, 4210704, 4194304, 536870928, 4194320, 536887296, 536870912, 16400, 0, 4194320, 536887312, 16384, 4210688, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 4210688, 541081600, 536870912, 536887296, 16, 541065232, 4210688, 541081616, 4194304, 16400, 536870928, 4194304, 536887296, 536870912, 16400, 536870928, 541081616, 4210688, 541065216, 4210704, 541081600, 0, 541065232, 16, 16384, 541065216, 4210704, 16384, 4194320, 536887312, 0, 541081600, 536870912, 4194320, 536887312),
            O = new Array(2097152, 69206018, 67110914, 0, 2048, 67110914, 2099202, 69208064, 69208066, 2097152, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 2097154, 67110912, 67108866, 69206016, 69208064, 2097154, 69206016, 2048, 2050, 69208066, 2099200, 2, 67108864, 2099200, 67108864, 2099200, 2097152, 67110914, 67110914, 69206018, 69206018, 2, 2097154, 67108864, 67110912, 2097152, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 2099200, 0, 2, 69208066, 0, 2099202, 69206016, 2048, 67108866, 67110912, 2048, 2097154),
            _ = new Array(268439616, 4096, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 4096, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 4096, 64, 268697664, 4096, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696),
            I = function(t) {
                for (var e, n, i, a = new Array(0, 4, 536870912, 536870916, 65536, 65540, 536936448, 536936452, 512, 516, 536871424, 536871428, 66048, 66052, 536936960, 536936964), o = new Array(0, 1, 1048576, 1048577, 67108864, 67108865, 68157440, 68157441, 256, 257, 1048832, 1048833, 67109120, 67109121, 68157696, 68157697), r = new Array(0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272, 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272), s = new Array(0, 2097152, 134217728, 136314880, 8192, 2105344, 134225920, 136323072, 131072, 2228224, 134348800, 136445952, 139264, 2236416, 134356992, 136454144), c = new Array(0, 262144, 16, 262160, 0, 262144, 16, 262160, 4096, 266240, 4112, 266256, 4096, 266240, 4112, 266256), l = new Array(0, 1024, 32, 1056, 0, 1024, 32, 1056, 33554432, 33555456, 33554464, 33555488, 33554432, 33555456, 33554464, 33555488), m = new Array(0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746, 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746), d = new Array(0, 65536, 2048, 67584, 536870912, 536936448, 536872960, 536938496, 131072, 196608, 133120, 198656, 537001984, 537067520, 537004032, 537069568), u = new Array(0, 262144, 0, 262144, 2, 262146, 2, 262146, 33554432, 33816576, 33554432, 33816576, 33554434, 33816578, 33554434, 33816578), p = new Array(0, 268435456, 8, 268435464, 0, 268435456, 8, 268435464, 1024, 268436480, 1032, 268436488, 1024, 268436480, 1032, 268436488), h = new Array(0, 32, 0, 32, 1048576, 1048608, 1048576, 1048608, 8192, 8224, 8192, 8224, 1056768, 1056800, 1056768, 1056800), f = new Array(0, 16777216, 512, 16777728, 2097152, 18874368, 2097664, 18874880, 67108864, 83886080, 67109376, 83886592, 69206016, 85983232, 69206528, 85983744), g = new Array(0, 4096, 134217728, 134221824, 524288, 528384, 134742016, 134746112, 16, 4112, 134217744, 134221840, 524304, 528400, 134742032, 134746128), b = new Array(0, 4, 256, 260, 0, 4, 256, 260, 1, 5, 257, 261, 1, 5, 257, 261), v = t.length > 8 ? 3 : 1, w = new Array(32 * v), y = new Array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0), x = 0, k = 0, S = 0; S < v; S++) {
                    var C = t.charCodeAt(x++) << 24 | t.charCodeAt(x++) << 16 | t.charCodeAt(x++) << 8 | t.charCodeAt(x++),
                    T = t.charCodeAt(x++) << 24 | t.charCodeAt(x++) << 16 | t.charCodeAt(x++) << 8 | t.charCodeAt(x++);
                    C ^= (i = 252645135 & (C >>> 4 ^ T)) << 4,
                    C ^= i = 65535 & ((T ^= i) >>> -16 ^ C),
                    C ^= (i = 858993459 & (C >>> 2 ^ (T ^= i << -16))) << 2,
                    C ^= i = 65535 & ((T ^= i) >>> -16 ^ C),
                    C ^= (i = 1431655765 & (C >>> 1 ^ (T ^= i << -16))) << 1,
                    C ^= i = 16711935 & ((T ^= i) >>> 8 ^ C),
                    i = (C ^= (i = 1431655765 & (C >>> 1 ^ (T ^= i << 8))) << 1) << 8 | (T ^= i) >>> 20 & 240,
                    C = T << 24 | T << 8 & 16711680 | T >>> 8 & 65280 | T >>> 24 & 240,
                    T = i;
                    for (var O = 0; O < y.length; O++) y[O] ? (C = C << 2 | C >>> 26, T = T << 2 | T >>> 26) : (C = C << 1 | C >>> 27, T = T << 1 | T >>> 27),
                    T &= -15,
                    e = a[(C &= -15) >>> 28] | o[C >>> 24 & 15] | r[C >>> 20 & 15] | s[C >>> 16 & 15] | c[C >>> 12 & 15] | l[C >>> 8 & 15] | m[C >>> 4 & 15],
                    n = d[T >>> 28] | u[T >>> 24 & 15] | p[T >>> 20 & 15] | h[T >>> 16 & 15] | f[T >>> 12 & 15] | g[T >>> 8 & 15] | b[T >>> 4 & 15],
                    i = 65535 & (n >>> 16 ^ e),
                    w[k++] = e ^ i,
                    w[k++] = n ^ i << 16
                }
                return w
            } (t),
            E = 0,
            A = e.length,
            P = 0,
            R = 32 == I.length ? 3 : 9;
            p = 3 == R ? n ? new Array(0, 32, 2) : new Array(30, -2, -2) : n ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2),
            2 == o ? e += "        ": 1 == o ? (c = 8 - A % 8, e += String.fromCharCode(c, c, c, c, c, c, c, c), 8 == c && (A += 8)) : o || (e += "\0\0\0\0\0\0\0\0");
            var q = "",
            D = "";
            for (1 == i && (h = a.charCodeAt(E++) << 24 | a.charCodeAt(E++) << 16 | a.charCodeAt(E++) << 8 | a.charCodeAt(E++), g = a.charCodeAt(E++) << 24 | a.charCodeAt(E++) << 16 | a.charCodeAt(E++) << 8 | a.charCodeAt(E++), E = 0); E < A;) {
                for (d = e.charCodeAt(E++) << 24 | e.charCodeAt(E++) << 16 | e.charCodeAt(E++) << 8 | e.charCodeAt(E++), u = e.charCodeAt(E++) << 24 | e.charCodeAt(E++) << 16 | e.charCodeAt(E++) << 8 | e.charCodeAt(E++), 1 == i && (n ? (d ^= h, u ^= g) : (f = h, b = g, h = d, g = u)), d ^= (c = 252645135 & (d >>> 4 ^ u)) << 4, d ^= (c = 65535 & (d >>> 16 ^ (u ^= c))) << 16, d ^= c = 858993459 & ((u ^= c) >>> 2 ^ d), d ^= c = 16711935 & ((u ^= c << 2) >>> 8 ^ d), d = (d ^= (c = 1431655765 & (d >>> 1 ^ (u ^= c << 8))) << 1) << 1 | d >>> 31, u = (u ^= c) << 1 | u >>> 31, s = 0; s < R; s += 3) {
                    for (v = p[s + 1], w = p[s + 2], r = p[s]; r != v; r += w) l = u ^ I[r],
                    m = (u >>> 4 | u << 28) ^ I[r + 1],
                    c = d,
                    d = u,
                    u = c ^ (x[l >>> 24 & 63] | S[l >>> 16 & 63] | T[l >>> 8 & 63] | _[63 & l] | y[m >>> 24 & 63] | k[m >>> 16 & 63] | C[m >>> 8 & 63] | O[63 & m]);
                    c = d,
                    d = u,
                    u = c
                }
                u = u >>> 1 | u << 31,
                u ^= c = 1431655765 & ((d = d >>> 1 | d << 31) >>> 1 ^ u),
                u ^= (c = 16711935 & (u >>> 8 ^ (d ^= c << 1))) << 8,
                u ^= (c = 858993459 & (u >>> 2 ^ (d ^= c))) << 2,
                u ^= c = 65535 & ((d ^= c) >>> 16 ^ u),
                u ^= c = 252645135 & ((d ^= c << 16) >>> 4 ^ u),
                d ^= c << 4,
                1 == i && (n ? (h = d, g = u) : (d ^= f, u ^= b)),
                D += String.fromCharCode(d >>> 24, d >>> 16 & 255, d >>> 8 & 255, 255 & d, u >>> 24, u >>> 16 & 255, u >>> 8 & 255, 255 & u),
                512 == (P += 8) && (q += D, D = "", P = 0)
            }
            return q + D
        }
        function a(t, e) {
            return function(t) {
                for (var e = "",
                n = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"), i = 0; i < t.length; i++) e += n[t.charCodeAt(i) >> 4] + n[15 & t.charCodeAt(i)];
                return e
            } (i(e, t, 1, 1, e, 1))
        }
        n.d(e, "a",
        function() {
            return a
        })
    },

我们知道是s下的a方法,所以最终写出加密的方法如下:

function i(t, e, n, i, a, o) {
	var r, s, c, l, m, d, u, p, h, f, g, b, v, w, y = new Array(16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 1024, 16843776, 16843780, 1024, 16778244, 16842756, 16777216, 4, 1028, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 1028, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 1024, 16842756, 65536, 66560, 16777220, 1024, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 1028, 66564, 16843776, 1028, 16778240, 16778240, 0, 65540, 66560, 0, 16842756),
	x = new Array( - 2146402272, -2147450880, 32768, 1081376, 1048576, 32, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 1048576, 32, -2146435040, 1081344, 1048608, -2147450848, 0, -2147483648, 32768, 1081376, -2146435072, 1048608, -2147483616, 0, 1081344, 32800, -2146402304, -2146435072, 32800, 0, 1081376, -2146435040, 1048576, -2147450848, -2146435072, -2146402304, 32768, -2146435072, -2147450880, 32, -2146402272, 1081376, 32, 32768, -2147483648, 32800, -2146402304, 1048576, -2147483616, 1048608, -2147450848, -2147483616, 1048608, 1081344, 0, -2147450880, 32800, -2147483648, -2146435040, -2146402272, 1081344),
	k = new Array(520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 512, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 512, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 512, 131080, 134349320, 134218240, 134217736, 512, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584),
	S = new Array(8396801, 8321, 8321, 128, 8396928, 8388737, 8388609, 8193, 0, 8396800, 8396800, 8396929, 129, 0, 8388736, 8388609, 1, 8192, 8388608, 8396801, 128, 8388608, 8193, 8320, 8388737, 1, 8320, 8388736, 8192, 8396928, 8396929, 129, 8388736, 8388609, 8396800, 8396929, 129, 0, 0, 8396800, 8320, 8388736, 8388737, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 8192, 8388609, 8193, 8396928, 8388737, 8193, 8320, 8388608, 8396801, 128, 8388608, 8192, 8396928),
	C = new Array(256, 34078976, 34078720, 1107296512, 524288, 256, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 256, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 256, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080),
	T = new Array(536870928, 541065216, 16384, 541081616, 541065216, 16, 541081616, 4194304, 536887296, 4210704, 4194304, 536870928, 4194320, 536887296, 536870912, 16400, 0, 4194320, 536887312, 16384, 4210688, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 4210688, 541081600, 536870912, 536887296, 16, 541065232, 4210688, 541081616, 4194304, 16400, 536870928, 4194304, 536887296, 536870912, 16400, 536870928, 541081616, 4210688, 541065216, 4210704, 541081600, 0, 541065232, 16, 16384, 541065216, 4210704, 16384, 4194320, 536887312, 0, 541081600, 536870912, 4194320, 536887312),
	O = new Array(2097152, 69206018, 67110914, 0, 2048, 67110914, 2099202, 69208064, 69208066, 2097152, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 2097154, 67110912, 67108866, 69206016, 69208064, 2097154, 69206016, 2048, 2050, 69208066, 2099200, 2, 67108864, 2099200, 67108864, 2099200, 2097152, 67110914, 67110914, 69206018, 69206018, 2, 2097154, 67108864, 67110912, 2097152, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 2099200, 0, 2, 69208066, 0, 2099202, 69206016, 2048, 67108866, 67110912, 2048, 2097154),
	_ = new Array(268439616, 4096, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 4096, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 4096, 64, 268697664, 4096, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696),
	I = function(t) {
		for (var e, n, i, a = new Array(0, 4, 536870912, 536870916, 65536, 65540, 536936448, 536936452, 512, 516, 536871424, 536871428, 66048, 66052, 536936960, 536936964), o = new Array(0, 1, 1048576, 1048577, 67108864, 67108865, 68157440, 68157441, 256, 257, 1048832, 1048833, 67109120, 67109121, 68157696, 68157697), r = new Array(0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272, 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272), s = new Array(0, 2097152, 134217728, 136314880, 8192, 2105344, 134225920, 136323072, 131072, 2228224, 134348800, 136445952, 139264, 2236416, 134356992, 136454144), c = new Array(0, 262144, 16, 262160, 0, 262144, 16, 262160, 4096, 266240, 4112, 266256, 4096, 266240, 4112, 266256), l = new Array(0, 1024, 32, 1056, 0, 1024, 32, 1056, 33554432, 33555456, 33554464, 33555488, 33554432, 33555456, 33554464, 33555488), m = new Array(0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746, 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746), d = new Array(0, 65536, 2048, 67584, 536870912, 536936448, 536872960, 536938496, 131072, 196608, 133120, 198656, 537001984, 537067520, 537004032, 537069568), u = new Array(0, 262144, 0, 262144, 2, 262146, 2, 262146, 33554432, 33816576, 33554432, 33816576, 33554434, 33816578, 33554434, 33816578), p = new Array(0, 268435456, 8, 268435464, 0, 268435456, 8, 268435464, 1024, 268436480, 1032, 268436488, 1024, 268436480, 1032, 268436488), h = new Array(0, 32, 0, 32, 1048576, 1048608, 1048576, 1048608, 8192, 8224, 8192, 8224, 1056768, 1056800, 1056768, 1056800), f = new Array(0, 16777216, 512, 16777728, 2097152, 18874368, 2097664, 18874880, 67108864, 83886080, 67109376, 83886592, 69206016, 85983232, 69206528, 85983744), g = new Array(0, 4096, 134217728, 134221824, 524288, 528384, 134742016, 134746112, 16, 4112, 134217744, 134221840, 524304, 528400, 134742032, 134746128), b = new Array(0, 4, 256, 260, 0, 4, 256, 260, 1, 5, 257, 261, 1, 5, 257, 261), v = t.length > 8 ? 3 : 1, w = new Array(32 * v), y = new Array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0), x = 0, k = 0, S = 0; S < v; S++) {
			var C = t.charCodeAt(x++) << 24 | t.charCodeAt(x++) << 16 | t.charCodeAt(x++) << 8 | t.charCodeAt(x++),
			T = t.charCodeAt(x++) << 24 | t.charCodeAt(x++) << 16 | t.charCodeAt(x++) << 8 | t.charCodeAt(x++);
			C ^= (i = 252645135 & (C >>> 4 ^ T)) << 4,
			C ^= i = 65535 & ((T ^= i) >>> -16 ^ C),
			C ^= (i = 858993459 & (C >>> 2 ^ (T ^= i << -16))) << 2,
			C ^= i = 65535 & ((T ^= i) >>> -16 ^ C),
			C ^= (i = 1431655765 & (C >>> 1 ^ (T ^= i << -16))) << 1,
			C ^= i = 16711935 & ((T ^= i) >>> 8 ^ C),
			i = (C ^= (i = 1431655765 & (C >>> 1 ^ (T ^= i << 8))) << 1) << 8 | (T ^= i) >>> 20 & 240,
			C = T << 24 | T << 8 & 16711680 | T >>> 8 & 65280 | T >>> 24 & 240,
			T = i;
			for (var O = 0; O < y.length; O++) y[O] ? (C = C << 2 | C >>> 26, T = T << 2 | T >>> 26) : (C = C << 1 | C >>> 27, T = T << 1 | T >>> 27),
			T &= -15,
			e = a[(C &= -15) >>> 28] | o[C >>> 24 & 15] | r[C >>> 20 & 15] | s[C >>> 16 & 15] | c[C >>> 12 & 15] | l[C >>> 8 & 15] | m[C >>> 4 & 15],
			n = d[T >>> 28] | u[T >>> 24 & 15] | p[T >>> 20 & 15] | h[T >>> 16 & 15] | f[T >>> 12 & 15] | g[T >>> 8 & 15] | b[T >>> 4 & 15],
			i = 65535 & (n >>> 16 ^ e),
			w[k++] = e ^ i,
			w[k++] = n ^ i << 16
		}
		return w
	} (t),
	E = 0,
	A = e.length,
	P = 0,
	R = 32 == I.length ? 3 : 9;
	p = 3 == R ? n ? new Array(0, 32, 2) : new Array(30, -2, -2) : n ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2),
	2 == o ? e += "        ": 1 == o ? (c = 8 - A % 8, e += String.fromCharCode(c, c, c, c, c, c, c, c), 8 == c && (A += 8)) : o || (e += "\0\0\0\0\0\0\0\0");
	var q = "",
	D = "";
	for (1 == i && (h = a.charCodeAt(E++) << 24 | a.charCodeAt(E++) << 16 | a.charCodeAt(E++) << 8 | a.charCodeAt(E++), g = a.charCodeAt(E++) << 24 | a.charCodeAt(E++) << 16 | a.charCodeAt(E++) << 8 | a.charCodeAt(E++), E = 0); E < A;) {
		for (d = e.charCodeAt(E++) << 24 | e.charCodeAt(E++) << 16 | e.charCodeAt(E++) << 8 | e.charCodeAt(E++), u = e.charCodeAt(E++) << 24 | e.charCodeAt(E++) << 16 | e.charCodeAt(E++) << 8 | e.charCodeAt(E++), 1 == i && (n ? (d ^= h, u ^= g) : (f = h, b = g, h = d, g = u)), d ^= (c = 252645135 & (d >>> 4 ^ u)) << 4, d ^= (c = 65535 & (d >>> 16 ^ (u ^= c))) << 16, d ^= c = 858993459 & ((u ^= c) >>> 2 ^ d), d ^= c = 16711935 & ((u ^= c << 2) >>> 8 ^ d), d = (d ^= (c = 1431655765 & (d >>> 1 ^ (u ^= c << 8))) << 1) << 1 | d >>> 31, u = (u ^= c) << 1 | u >>> 31, s = 0; s < R; s += 3) {
			for (v = p[s + 1], w = p[s + 2], r = p[s]; r != v; r += w) l = u ^ I[r],
			m = (u >>> 4 | u << 28) ^ I[r + 1],
			c = d,
			d = u,
			u = c ^ (x[l >>> 24 & 63] | S[l >>> 16 & 63] | T[l >>> 8 & 63] | _[63 & l] | y[m >>> 24 & 63] | k[m >>> 16 & 63] | C[m >>> 8 & 63] | O[63 & m]);
			c = d,
			d = u,
			u = c
		}
		u = u >>> 1 | u << 31,
		u ^= c = 1431655765 & ((d = d >>> 1 | d << 31) >>> 1 ^ u),
		u ^= (c = 16711935 & (u >>> 8 ^ (d ^= c << 1))) << 8,
		u ^= (c = 858993459 & (u >>> 2 ^ (d ^= c))) << 2,
		u ^= c = 65535 & ((d ^= c) >>> 16 ^ u),
		u ^= c = 252645135 & ((d ^= c << 16) >>> 4 ^ u),
		d ^= c << 4,
		1 == i && (n ? (h = d, g = u) : (d ^= f, u ^= b)),
		D += String.fromCharCode(d >>> 24, d >>> 16 & 255, d >>> 8 & 255, 255 & d, u >>> 24, u >>> 16 & 255, u >>> 8 & 255, 255 & u),
		512 == (P += 8) && (q += D, D = "", P = 0)
	}
	return q + D
}
function a(t, e) {
	return function(t) {
		for (var e = "",
		n = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"), i = 0; i < t.length; i++) e += n[t.charCodeAt(i) >> 4] + n[15 & t.charCodeAt(i)];
		return e
	} (i(e, t, 1, 1, e, 1))
}

在这里可以通过后台进行调试,这里对于新手有一个坑,这个F12必须在登陆的界面进行打开,也就是加载js的这个页面(自己理解,因为在浏览器中任意一个页面都可以,为了入坑所以写了)
这里因为无法上传截图,只有直接得到的结果。

当然仅仅在console调试成功只能证明我们的函数找对了,如何通过python实现呢?啊啊啊这个js文件这么难,头大头大,脱发脱发…
哈哈哈,这里笔者分享一个好方法,当然在之前也用过,看不懂的看笔者之前的分享,这里就不阐述直接上代码如下:

# coding=utf-8
import execjs


login_js = '''
function i(t, e, n, i, a, o) {
	var r, s, c, l, m, d, u, p, h, f, g, b, v, w, y = new Array(16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 1024, 16843776, 16843780, 1024, 16778244, 16842756, 16777216, 4, 1028, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 1028, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 1024, 16842756, 65536, 66560, 16777220, 1024, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 1028, 66564, 16843776, 1028, 16778240, 16778240, 0, 65540, 66560, 0, 16842756),
	x = new Array( - 2146402272, -2147450880, 32768, 1081376, 1048576, 32, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 1048576, 32, -2146435040, 1081344, 1048608, -2147450848, 0, -2147483648, 32768, 1081376, -2146435072, 1048608, -2147483616, 0, 1081344, 32800, -2146402304, -2146435072, 32800, 0, 1081376, -2146435040, 1048576, -2147450848, -2146435072, -2146402304, 32768, -2146435072, -2147450880, 32, -2146402272, 1081376, 32, 32768, -2147483648, 32800, -2146402304, 1048576, -2147483616, 1048608, -2147450848, -2147483616, 1048608, 1081344, 0, -2147450880, 32800, -2147483648, -2146435040, -2146402272, 1081344),
	k = new Array(520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 512, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 512, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 512, 131080, 134349320, 134218240, 134217736, 512, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584),
	S = new Array(8396801, 8321, 8321, 128, 8396928, 8388737, 8388609, 8193, 0, 8396800, 8396800, 8396929, 129, 0, 8388736, 8388609, 1, 8192, 8388608, 8396801, 128, 8388608, 8193, 8320, 8388737, 1, 8320, 8388736, 8192, 8396928, 8396929, 129, 8388736, 8388609, 8396800, 8396929, 129, 0, 0, 8396800, 8320, 8388736, 8388737, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 8192, 8388609, 8193, 8396928, 8388737, 8193, 8320, 8388608, 8396801, 128, 8388608, 8192, 8396928),
	C = new Array(256, 34078976, 34078720, 1107296512, 524288, 256, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 256, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 256, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080),
	T = new Array(536870928, 541065216, 16384, 541081616, 541065216, 16, 541081616, 4194304, 536887296, 4210704, 4194304, 536870928, 4194320, 536887296, 536870912, 16400, 0, 4194320, 536887312, 16384, 4210688, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 4210688, 541081600, 536870912, 536887296, 16, 541065232, 4210688, 541081616, 4194304, 16400, 536870928, 4194304, 536887296, 536870912, 16400, 536870928, 541081616, 4210688, 541065216, 4210704, 541081600, 0, 541065232, 16, 16384, 541065216, 4210704, 16384, 4194320, 536887312, 0, 541081600, 536870912, 4194320, 536887312),
	O = new Array(2097152, 69206018, 67110914, 0, 2048, 67110914, 2099202, 69208064, 69208066, 2097152, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 2097154, 67110912, 67108866, 69206016, 69208064, 2097154, 69206016, 2048, 2050, 69208066, 2099200, 2, 67108864, 2099200, 67108864, 2099200, 2097152, 67110914, 67110914, 69206018, 69206018, 2, 2097154, 67108864, 67110912, 2097152, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 2099200, 0, 2, 69208066, 0, 2099202, 69206016, 2048, 67108866, 67110912, 2048, 2097154),
	_ = new Array(268439616, 4096, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 4096, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 4096, 64, 268697664, 4096, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696),
	I = function(t) {
		for (var e, n, i, a = new Array(0, 4, 536870912, 536870916, 65536, 65540, 536936448, 536936452, 512, 516, 536871424, 536871428, 66048, 66052, 536936960, 536936964), o = new Array(0, 1, 1048576, 1048577, 67108864, 67108865, 68157440, 68157441, 256, 257, 1048832, 1048833, 67109120, 67109121, 68157696, 68157697), r = new Array(0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272, 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272), s = new Array(0, 2097152, 134217728, 136314880, 8192, 2105344, 134225920, 136323072, 131072, 2228224, 134348800, 136445952, 139264, 2236416, 134356992, 136454144), c = new Array(0, 262144, 16, 262160, 0, 262144, 16, 262160, 4096, 266240, 4112, 266256, 4096, 266240, 4112, 266256), l = new Array(0, 1024, 32, 1056, 0, 1024, 32, 1056, 33554432, 33555456, 33554464, 33555488, 33554432, 33555456, 33554464, 33555488), m = new Array(0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746, 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746), d = new Array(0, 65536, 2048, 67584, 536870912, 536936448, 536872960, 536938496, 131072, 196608, 133120, 198656, 537001984, 537067520, 537004032, 537069568), u = new Array(0, 262144, 0, 262144, 2, 262146, 2, 262146, 33554432, 33816576, 33554432, 33816576, 33554434, 33816578, 33554434, 33816578), p = new Array(0, 268435456, 8, 268435464, 0, 268435456, 8, 268435464, 1024, 268436480, 1032, 268436488, 1024, 268436480, 1032, 268436488), h = new Array(0, 32, 0, 32, 1048576, 1048608, 1048576, 1048608, 8192, 8224, 8192, 8224, 1056768, 1056800, 1056768, 1056800), f = new Array(0, 16777216, 512, 16777728, 2097152, 18874368, 2097664, 18874880, 67108864, 83886080, 67109376, 83886592, 69206016, 85983232, 69206528, 85983744), g = new Array(0, 4096, 134217728, 134221824, 524288, 528384, 134742016, 134746112, 16, 4112, 134217744, 134221840, 524304, 528400, 134742032, 134746128), b = new Array(0, 4, 256, 260, 0, 4, 256, 260, 1, 5, 257, 261, 1, 5, 257, 261), v = t.length > 8 ? 3 : 1, w = new Array(32 * v), y = new Array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0), x = 0, k = 0, S = 0; S < v; S++) {
			var C = t.charCodeAt(x++) << 24 | t.charCodeAt(x++) << 16 | t.charCodeAt(x++) << 8 | t.charCodeAt(x++),
			T = t.charCodeAt(x++) << 24 | t.charCodeAt(x++) << 16 | t.charCodeAt(x++) << 8 | t.charCodeAt(x++);
			C ^= (i = 252645135 & (C >>> 4 ^ T)) << 4,
			C ^= i = 65535 & ((T ^= i) >>> -16 ^ C),
			C ^= (i = 858993459 & (C >>> 2 ^ (T ^= i << -16))) << 2,
			C ^= i = 65535 & ((T ^= i) >>> -16 ^ C),
			C ^= (i = 1431655765 & (C >>> 1 ^ (T ^= i << -16))) << 1,
			C ^= i = 16711935 & ((T ^= i) >>> 8 ^ C),
			i = (C ^= (i = 1431655765 & (C >>> 1 ^ (T ^= i << 8))) << 1) << 8 | (T ^= i) >>> 20 & 240,
			C = T << 24 | T << 8 & 16711680 | T >>> 8 & 65280 | T >>> 24 & 240,
			T = i;
			for (var O = 0; O < y.length; O++) y[O] ? (C = C << 2 | C >>> 26, T = T << 2 | T >>> 26) : (C = C << 1 | C >>> 27, T = T << 1 | T >>> 27),
			T &= -15,
			e = a[(C &= -15) >>> 28] | o[C >>> 24 & 15] | r[C >>> 20 & 15] | s[C >>> 16 & 15] | c[C >>> 12 & 15] | l[C >>> 8 & 15] | m[C >>> 4 & 15],
			n = d[T >>> 28] | u[T >>> 24 & 15] | p[T >>> 20 & 15] | h[T >>> 16 & 15] | f[T >>> 12 & 15] | g[T >>> 8 & 15] | b[T >>> 4 & 15],
			i = 65535 & (n >>> 16 ^ e),
			w[k++] = e ^ i,
			w[k++] = n ^ i << 16
		}
		return w
	} (t),
	E = 0,
	A = e.length,
	P = 0,
	R = 32 == I.length ? 3 : 9;
	p = 3 == R ? n ? new Array(0, 32, 2) : new Array(30, -2, -2) : n ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2),
	2 == o ? e += "        ": 1 == o ? (c = 8 - A % 8, e += String.fromCharCode(c, c, c, c, c, c, c, c), 8 == c && (A += 8)) : o || (e += "\0\0\0\0\0\0\0\0");
	var q = "",
	D = "";
	for (1 == i && (h = a.charCodeAt(E++) << 24 | a.charCodeAt(E++) << 16 | a.charCodeAt(E++) << 8 | a.charCodeAt(E++), g = a.charCodeAt(E++) << 24 | a.charCodeAt(E++) << 16 | a.charCodeAt(E++) << 8 | a.charCodeAt(E++), E = 0); E < A;) {
		for (d = e.charCodeAt(E++) << 24 | e.charCodeAt(E++) << 16 | e.charCodeAt(E++) << 8 | e.charCodeAt(E++), u = e.charCodeAt(E++) << 24 | e.charCodeAt(E++) << 16 | e.charCodeAt(E++) << 8 | e.charCodeAt(E++), 1 == i && (n ? (d ^= h, u ^= g) : (f = h, b = g, h = d, g = u)), d ^= (c = 252645135 & (d >>> 4 ^ u)) << 4, d ^= (c = 65535 & (d >>> 16 ^ (u ^= c))) << 16, d ^= c = 858993459 & ((u ^= c) >>> 2 ^ d), d ^= c = 16711935 & ((u ^= c << 2) >>> 8 ^ d), d = (d ^= (c = 1431655765 & (d >>> 1 ^ (u ^= c << 8))) << 1) << 1 | d >>> 31, u = (u ^= c) << 1 | u >>> 31, s = 0; s < R; s += 3) {
			for (v = p[s + 1], w = p[s + 2], r = p[s]; r != v; r += w) l = u ^ I[r],
			m = (u >>> 4 | u << 28) ^ I[r + 1],
			c = d,
			d = u,
			u = c ^ (x[l >>> 24 & 63] | S[l >>> 16 & 63] | T[l >>> 8 & 63] | _[63 & l] | y[m >>> 24 & 63] | k[m >>> 16 & 63] | C[m >>> 8 & 63] | O[63 & m]);
			c = d,
			d = u,
			u = c
		}
		u = u >>> 1 | u << 31,
		u ^= c = 1431655765 & ((d = d >>> 1 | d << 31) >>> 1 ^ u),
		u ^= (c = 16711935 & (u >>> 8 ^ (d ^= c << 1))) << 8,
		u ^= (c = 858993459 & (u >>> 2 ^ (d ^= c))) << 2,
		u ^= c = 65535 & ((d ^= c) >>> 16 ^ u),
		u ^= c = 252645135 & ((d ^= c << 16) >>> 4 ^ u),
		d ^= c << 4,
		1 == i && (n ? (h = d, g = u) : (d ^= f, u ^= b)),
		D += String.fromCharCode(d >>> 24, d >>> 16 & 255, d >>> 8 & 255, 255 & d, u >>> 24, u >>> 16 & 255, u >>> 8 & 255, 255 & u),
		512 == (P += 8) && (q += D, D = "", P = 0)
	}
	return q + D
}
function a(t, e) {
	return function(t) {
		for (var e = "",
		n = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"), i = 0; i < t.length; i++) e += n[t.charCodeAt(i) >> 4] + n[15 & t.charCodeAt(i)];
		return e
	} (i(e, t, 1, 1, e, 1))
}
'''
if __name__ == "__main__":
   import execjs
   r = execjs.compile(login_js)
   result = r.call('a','123456', '8D54E5D0').lower()  // 第一个参数是加密函数‘a’,后边是需要传入的参数。
   print result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值