有一个之前同事他们要一些政府网站的信息,做模型,结果有一个地区的网站要么加载慢,要么出问题就问了下。正好我最近研究webpack,其中一个就是webpack的。其实之前已经看了两周webpack相关的内容了。实在是不得要领,最基础的就是找到调用的地方,一行行补,一个方法一个方法的口,但是看到一个帖子好像webpack有通用的方式,于是研究了起来。可以别人的案例看着容易,自己不事件,始终用不起来。
webpack原理和逆向实战_webpack逆向-CSDN博客
基础理论可以看上面的帖子。
一.查找数据确认断点
进来有一个无限debug,小网站还这么复杂,不在停留就跳过去了。
网站打开后查找明文,没有又找到。
请求一个data,响应也是一个data。
在源代码中搜索 data,有好多,上面的打上断点就能断住。最后确定就是这个S。就是加密和解密的类。
二、判断webpack
看这个js 文件开头,有exports 这种导入方法,和大多数的webpack的导入基本相同。
再看下面n(数字)这种基本就是 webpack了。简单的话能确定算法就行了。这个网站有点没看明白,估计是二次封装了。
三、判断加密和代码确定
从S的方法和值来判断,可能是aes。但是prikey 是干嘛的不确定。
再看在控制太执行情况,看着很复杂的代码,执行结果拆分出来执行 就很清晰了。
S.encryptSessions(JSON.stringify(x))
还原完成后,就这么简单的一句话,可以是原始代码真的让人看不懂。后面还有好多这种。
通过这块知道,只要S 这个弄出来就行了。一点点抠,没搞过不得要领,n那个就 没搞明白。
四、webpack 还原
通过源代码发现,这个网站虽然看起来很麻烦,但是webpack的文件只有一个,入口和内容都在这一个js文件中。上面帖子找到了webpack_mixer.js 这个ast还原 webpack的库,看了下挺老了,但是还能用。于是用它试了下,
node webpack_mixer.js -l app.c8af4fa5.js -o webpack_out.js
找到数据的文件,输出到一个文件。
目录大概就这样。调用
const n = require('./webpack_out');
调用基本这样可以了。
五、扣js代码了。
核心代码就是这个S和a方法,再往里就是写key
可能是我抠出来的代码不对,所以基本上所有的代码我都还原了,要不运行不过去。还原之后的东西 就可以看懂了主要就是aes 方式的加密。
但是代码初始化之后发现无法直接调用。要不的话没有秘钥返回空,秘钥是死的,iv每次加载后都不同。
S.getKey();#设置key
S.genrandomString();#随机一个iv
这就是运行的结果,发现有一段乱码,那个是因为iv的问题,请求用什么iv还原就用什么,要不最初那几行是乱码。
最终代码如下
const n = require('./webpack_out');
var document ={}
, r = n(372)
, o = n(10)
, t = {}
,SS;
var i = o(n(425))
, a = o(n(426))
, s = o(n(9))
, c = r(n(373));
function l() {
var e = ["tmkPx0ZdRG", "W4BdSsi", "W6bGgSoliG", "uCoDW7/cRCkknbWH", "WRldHMnhBa", "bCowhmkxbq", "sslcMcvj", "WQmyW4pdNIe", "txW/W7m", "W5tdSsah", "ESkCW6Otqq", "WR4PW5H8W5K", "WQZdIMnh", "qupcImkgW7C", "nsuUWPxdHq", "FKRdRa", "sNy3", "WPZcL1pdKmk/", "zh/dG8obW4ynW5NcRSk+tM7dM10", "tSkhW4lcT8og", "bqpdMmodWOBcTr4HWQnjmIy", "W7JcH8kaWQ5i", "ceVdUr3dGa", "W5JcUtlcL8o5", "hCofbSktfW", "hmkNW63dNGe", "ymkPWOO1W6/cU8osq8oIzSoeWPO", "rNtdSXJdKq", "f8k5W4xdRqG", "s2ddVX7dUG", "oSkMgX3cJG", "WQauW4tdGG", "hSkzW6y2zG", "zLtdOCk4", "hHSPWPFdKa", "sxeZvq", "W47cOCk3WPdcQW", "q8k5WRBdIvm", "gXdcQGKj", "xMiyxtG", "WR3dJgjlCq", "BCkfgmk4", "y3/dICokW4ajWRtcVSkmAuZdMa", "waaQW6Ty", "z8kVrZep", "F8oBye5y", "sZZcVYDU", "qmo7WR/cJ0HEWPWkW5eAWQ7dOCog", "x2OvxY4", "F8kBW6qSyG", "WQ0sl8oGWRm", "EYe7W6Tz", "W6RdQrCPba", "u3KIW7FcNa", "WOxcJCkYW4ddTG", "ESolx0DJ", "mdpcLmkBWOi", "xCo3zNDA", "fJlcOryn", "ymkfqu7dNW", "dY7cQupdVG", "W4PlcCojiW", "W5hdLrOokG", "wSoXyhf0", "WOrsW6bHWQe", "W4tdSbmgla", "aSkcW5i6DG", "xbVcPSoKla", "WOeKiY/cKW", "rhGbW5iE", "h8k5W5NdStO", "W6JcPmkDW4Dl", "WP8khr4", "uCkbW6my", "W77dLSkAW6K", "W5tdLZz4qG", "vSk1aCkWBa", "W7NcP8kwW7P9", "Fce1W7fB", "fvldLtqZ", "ESkytW", "W7tcGmkWW6u", "WRxdGmoaoIq", "nmkJW5/dOmof", "WOhdH3roEq", "rMNdUaRdKq", "fSolWRVdO8kz", "iCoIW6ldPdG", "WRWwl8o2W6W", "qYJcKXbb", "W5NdLXW3iG", "W6RcLmkCWR8r", "u1xcMCk/W5m", "kSoxWQRdOG", "sM3dVXW", "z2WdztG", "gmkHW7ddKCox", "qMSJW63cNG", "lSkQerNcJa", "y8kfh8kZ", "WRRdL8oCja", "WQ4WWPRdRd0", "vMtcOSkNW5S", "WRNdHNLVBW", "dCkVW77cK8ki", "W5RcV8k4W6q", "W5ldMd7cJCoD", "x8oWBeHq", "F8k6wZHl", "DmktrLu", "W7/cImkqWRKh", "W4hdIsdcHCol", "W77dSd4Pla", "WOddNmodbcO", "WRyAkSoAWQS", "A0XRW4iU", "CvPAW5qP", "W5RcUCkKW7nf", "bmkqW5ZdJX8", "gWNcUJCb", "WQeKiY8", "DmouC8kRWQK", "W6NcG8khWPKB", "nSo/W6xdUsS", "gCkZW43dRrG", "sSkqW6FcTSov", "wuRdU210", "lCocWRpdPmkz", "WRFcNhNdISkS", "tmkKWQJdKeq", "WRaIW4HhW4e", "CMVdGcJdGG", "CSkfW5ddJSoeWP9B", "q8kQWQpdLq", "WOOylmoeWRm", "zCkTgmkhsG", "W53dVcm9pG", "WPddHCoYbXe", "th3cUSkyW6q", "uh0KW5BcNa", "AKJdSh5x", "W7ldMJi9cW", "W45dF8kfbq", "aCkGW6JdLWO", "cgFdRr4e", "CsG1W7bI", "WQCcW57dMqW", "W7hdUmksW4VdVW", "nmo/W4TzWQ4", "ASk4WPNdUgq", "sse8W7W", "W6zjWPRdLqa", "FConceldMq", "eCkeW6q+Cq", "W73cNSk4WPeZ", "a8oUW4tdJWu", "gSkWmZCeDCkQW7VdUH4yWRBcPG", "W7JdUCoLW7Sa", "WRSDW47dMdS", "tMaqwcC", "b8oscmkuhG", "CSkZW7epAq", "mCoaWP7dPSki", "WQlcGSkCicy", "WPG0iHZcOW", "WPaHnYtcUa", "mYFcT8kbWPS", "AmkAbSkXsG", "AmkTysW", "W4NdLmk7W5XO", "v8kDW6mrqq", "nmkZW7FdLSo2", "WP/dSxLZuG", "CSobD8kuWRu", "WQ3dHN5tCq", "WRddKSohmG", "uSkqW7Orrq", "tMijvaG", "ttyGW7XE", "WOJcGgXVwCksWPKzW4JdSLvO", "BKbFW44+", "s8oasCk/WQ0", "mspcJSkXWOi", "C8k+WRNcOhZcQ3FdQNXPW4ldSG", "wSkAW73cVSoU", "W7lcGmkDW7ddRG", "W513bCoqnG", "mSkVW7e", "WRRdL8oCpHa", "vmoocSkikW", "ssxcOHjd", "W6rHiSo2oG", "l8kJhb/cHW", "nttcG8kiWOi", "W5FcRSk5W7ff", "ywNdGunO", "WQFdJM9pDa", "W5VcG8kjWRiu", "zSkfsGLw", "pSoDrSoLcG", "xmk4W5xcISoP", "W6NdNaKRoa", "ASkBsK7dNq", "ySkiqbLq", "FCkfjCkPqq", "hSodhCkXha", "swpdQmkVza", "w0VdSeL2", "WPDDW7f1", "kSkNW6hdHSoQ", "v8kxxea", "bfL6psm", "WPFdJMPZEq", "iCkNW7ZdIq", "W45vxmkVla", "W7hdQmkHW5Hr", "W6b2oCoHcW", "ufVdTg0", "W47cV8kXWQ4", "W4xdIXxcH8or", "f8k8W7xcP8k8", "CCkhWQRdUeq", "W5ndqCk3lq", "y8k7rZ8", "W6JdGCkhW5zZ", "uSk4ttXX", "qZtcNWq", "WOquk8ocWPG", "zepdHSkO", "WQvOWOu", "qSo6tvDu", "WRWGba/cNG", "f8oTyJjH", "wSo3BgC", "m8kXW6/cKeO", "qCofWRrMn8kZDCkAzCo7W4BdNa", "lGu4WPVdGq", "FSkSqsDk", "WP48khpcTa", "asaiWRZcHG", "umkAW77cSmoc", "gmkUar0", "z1JdOCkTEW", "nSoIW7ZdSt4", "i8o7W41PWRm", "r8klW6FcRSoV", "DmktxgRdLa", "fwBdIcW", "r8kUWRVdRuG", "WPfsW6rEWQu", "bbyWWPpdKa", "FSk6wZTn", "WO87oCosWRK", "W7xdJdNcJq", "fgNdJJ4", "z8klamk0va", "h3P2kbW", "ASk6xbTb", "cCooaCk5hW", "aCooW7JdPce", "W7ZdGCkhW4P0", "W6NcICkDWOKh", "W4ZdJt0Rha", "ySkgW4/cISoc", "WRCdW47dHHy", "kCk7e0q", "W7lcTmkRWPtcIa", "cmkHW7pcJ8oLWRPd", "rh0KW5hcIG", "W4NcGCkPW4BdSW", "W7lcT8k3WO7cVG", "W4lcHmkMWRhcQW", "mspcJSk7WPK", "WRybW7VdObm", "bXlcMGiF", "vSogebpcHq", "esfPWR3dItVcGqJdKSoaCCkNpW", "CuzxW4KU", "Af7dOq", "f8o4W6xdSW", "d8oJWOpdT8ky", "ChhdVb/dOW", "lGCW", "q8kKWQhdILm", "W7tcGmkPW6tdRG", "W5xdKdq", "DSoAF25A", "tZeSW7XE", "F1xcLa", "WR4RW4LA", "wCkWwb9n", "W4ZdVJ7cS8ol", "WOSqvSkKemkRnSo2", "xIWUW6fF", "x8oWANnq", "WPuAAHFcGG", "WRWXlZ7cRa", "ja3cGryD", "g8k5W5JdJa", "tdeQW7Tf", "C8kYW4T+WQG", "nIJcIvCJ", "WRXLWOXtW4S", "ELNdPbZdLG", "W47dK8kzW7Lb", "W6lcSCk5WQNcTG", "WQFdH8osjYy", "qg44zX8", "nG0uWQ7dLa", "W55jqmkUnG", "FtxcQafK", "W6/dLSkAW7fG", "vxtdVZldGa", "W7ZdGCkDW61M", "W6NdHCkDW7TO", "W4NdQXlcPSkh", "zepdU8k1", "nSkviq7cJW", "s2ldSZRdKW", "CubwW6uK", "etdcRHJdScTHW6hcKW", "amoNvvBcVG", "cwFdLZCI", "W7ZdRmkIW6vk", "WQm+sSofyq", "ALCOFL8", "WRxdG8odpYO", "cCkNW7JdGmoi", "qCo/WRhdMIWAW5G5W7q", "cSkcW7/cJCk9", "W6FcOmkyWQhcNa", "eSkSW6FdIrG", "D8ohWPuL", "imkJW6hdSCoR", "WRhdGCo2psa", "edlcRb8Q", "xKpcGSkA", "W4xdIYtcKmoH", "BSkQWQldNg0", "wmkqA2ZdSG", "sc0NW4DE", "sYCAW512", "W5VdJty7ha", "W4lcVSk9WPFcQW", "W5pdLJ4", "dSkfW7JcPSkV", "bmokWO/dT8k0", "WOroW6b5", "t8kBW4BcKa", "hmk6W43dNHS", "W6NcISkAWQGB", "omkOW77dLHO", "ESkNmCkmwW", "n8kuW5JdLSoL", "gmoqbY3dIa", "qgWDwd4", "kraPWONdKa", "CNZdImkDFW", "W5XfqCkPlq", "W7hcHSoVWQldLW", "vmoFW5RdVCoQ", "x3Ciwdm", "W5ldKd7cJG", "fKnZaJ4", "mmo5W7xdNJ8", "uc0SW41F", "nmkVW7RdI8oX", "W4VcUCk+W51u", "mHS4WPxdGG", "lSksW5NcOSk7", "cddcJrGd", "W7RdOqmvkW", "W5ZcRSkJW5Lg", "iSobgrJcGLBdO2qopSoIW7nG", "uf9WW6qY", "ymkFrwZdNG", "jSkJW6BcImkZ", "W5Wlt8kbBW", "xcKQW5DU", "aCojWR/dS8kR", "BSk+rcq", "W43dKdpcRmoC", "v8knW7ajtW", "h8knW6VdOsK", "ESoFy8kDWRq", "r8kVi8kQqG", "p1PmW4fW", "BuVdI8kADG", "W47cSSkIWOW", "W4xdUJNcMCoA", "bCk9W5RdNGO", "gSoRecRdRq", "fxlcUCooW4u", "qMpdOIZdLG", "fCovhcNdTa", "chBdLtiT", "p8k9daZcLG", "kYi1WPtdKq", "fCkEgtFdIa", "WRCzoW", "emoaWQDkevFdQfmmcrNdQW", "o8kbaaRcHa", "W7L1bCoIba", "yCk9W6CLtW", "ih12", "W5/cQSkJW7C", "WOlcR3DhEWtdHCo+WPJcQmocW5dcNG", "WRG3hXJcRW", "v8kpeetdSa", "cmkfW4NcVmkX", "uNNdGejv", "vM/dUrFdLG", "WPRdKSoEnGK", "jSoQW5TTWQK", "WQqdW57dVqC", "pNVdVsSz", "pbaOWRNdMG", "tSkhW7ZcOCoK", "WPdcTvFdImkF", "fMVdHb8M", "sCkOWPZdNfq", "oColWQ7dKSkp", "cwpdIt8S", "W6D8imoqpG", "abBcPJG2hCo4A8kSeqHl", "W6ZdVYmkhW", "W7jTfrtdOG", "a8o0cCkbba", "ECo+xCkXWQy", "d8kJW7tdGCoN", "W63cHSk8W6pdSW", "pNT7cGq", "WRmyW5hdJW", "W7ldISkxW7bW", "W7z9emownq"];
return (l = function() {
return e
}
)()
}
function d(e, t, n, r, o) {
return f(r - -502, t)
}
function f(e, t) {
var n = l();
return (f = function(t, r) {
var o = n[t -= 166];
if (void 0 === f.xoAZDu) {
var i = function(e) {
for (var t, n, r = "", o = "", i = 0, a = 0; n = e.charAt(a++); ~n && (t = i % 4 ? 64 * t + n : n,
i++ % 4) ? r += String.fromCharCode(255 & t >> (-2 * i & 6)) : 0)
n = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(n);
for (var s = 0, c = r.length; s < c; s++)
o += "%" + ("00" + r.charCodeAt(s).toString(16)).slice(-2);
return decodeURIComponent(o)
}
, a = function(e, t) {
var n, r, o = [], a = 0, s = "";
for (e = i(e),
r = 0; r < 256; r++)
o[r] = r;
for (r = 0; r < 256; r++)
a = (a + o[r] + t.charCodeAt(r % t.length)) % 256,
n = o[r],
o[r] = o[a],
o[a] = n;
r = 0,
a = 0;
for (var c = 0; c < e.length; c++)
a = (a + o[r = (r + 1) % 256]) % 256,
n = o[r],
o[r] = o[a],
o[a] = n,
s += String.fromCharCode(e.charCodeAt(c) ^ o[(o[r] + o[a]) % 256]);
return s
};
f.KxoyON = a,
e = arguments,
f.xoAZDu = !0
}
var s = n[0]
, c = t + s
, u = e[c];
return u ? o = u : (void 0 === f.OjTfPW && (f.OjTfPW = !0),
o = f.KxoyON(o, r),
e[c] = o),
o
}
)(e, t)
}
function v(e, t, n, r, o) {
return f(o - -58, r)
}
function m(e, t, n, r, o) {
return f(e - -238, o)
}
function u(e, t, n, r, o) {
return f(r - -879, e)
}
var g = this && this[d(0, "DA@x", 0, 61) + "t"] || function(e, t) {
var n = {};
function r(e, t, n, r, o) {
return d(0, r, 0, t - -234)
}
function o(e, t, n, r, o) {
return d(0, n, 0, o - -322)
}
function i(e, t, n, r, o) {
return d(0, e, 0, n - 484)
}
function a(e, t, n, r, o) {
return d(0, e, 0, t - 640)
}
n[r(-398, -540, -423, "w7Wx", -556)] = function(e, t) {
return e < t
}
,
n[l(-324, -449, "j1oW", -251, -355)] = function(e, t) {
return e != t
}
,
n[a("$(eM", 684, 741, 730, 672)] = function(e, t) {
return e === t
}
,
n[l(-777, -690, "!1vy", -574, -375)] = o(0, 0, "8LFL", 0, -657) + a("gzIc", 676, 494, 841, 510),
n[a("vOBr", 619, 758, 555, 534)] = function(e, t) {
return e < t
}
,
n[l(-309, -142, "BJqZ", -353, -285)] = function(e, t) {
return e < t
}
;
var c = n
, u = {};
function l(e, t, n, r, o) {
return d(0, n, 0, r - -280)
}
for (var f in e)
Object[l(0, 0, "3kCH", -344) + i("Q!3$", 0, 315)][r(0, -471, 0, "D5Fe") + a("ZIPW", 477) + r(0, -160, 0, "gzIc")][r(0, -343, 0, "vOBr")](e, f) && c[o(0, 0, "h3z0", 0, -630)](t[i("O*mG", 0, 191) + "Of"](f), 0) && (u[f] = e[f]);
if (c[r(0, -273, 0, "!eRz")](e, null) && c[o(0, 0, "zY6h", 0, -503)]((0,
s.default)(Object[a("c6si", 335) + l(0, 0, "5uOI", -508) + i("()Od", 0, 577) + l(0, 0, "iunk", -326) + "s"]), c[a("h3z0", 502)])) {
var h = 0;
for (f = Object[i("iunk", 0, 345) + o(0, 0, "()Od", 0, -526) + a("bZ5J", 735) + l(0, 0, "KB#j", -320) + "s"](e); c[o(0, 0, "RU*R", 0, -312)](h, f[i("c6si", 0, 436) + "h"]); h++)
c[l(0, 0, "jR8M", -583)](t[i("!1vy", 0, 267) + "Of"](f[h]), 0) && Object[r(0, -385, 0, "Kr0L") + i("LEms", 0, 335)][o(0, 0, "$(eM", 0, -270) + i("55so", 0, 171) + o(0, 0, "5uOI", 0, -530) + i("Isa9", 0, 281)][a("j1oW", 351)](e, f[h]) && (u[f[h]] = e[f[h]])
}
return u
}
, y = d(0, "jR8M", 0, -173) + w(1253, 1390, 1386, 1333, "6RW[") + d(0, "c6si", 0, -85) + d(0, "KB#j", 0, 97) + d(0, "zY6h", 0, -275) + u("FJuq", 0, 0, -701) + "t"
, b = w(1356, 1265, 1350, 1367, "!eRz") + w(1104, 1210, 965, 1093, "nc[V") + d(0, "5uOI", 0, -3) + m(260, 0, 0, 0, "6RW[") + m(66, 0, 0, 0, "!eRz") + v(0, 0, 0, "!1vy", 436) + m(281, 0, 0, 0, "55so") + w(1493, 1433, 1207, 1401, "$(eM") + v(0, 0, 0, "KB#j", 175) + w(1566, 1402, 1504, 1470, "()Od") + w(1452, 1471, 1702, 1484, "bZ5J") + d(0, "D5Fe", 0, -53) + w(1094, 1197, 1064, 1119, "@[4z") + m(223, 0, 0, 0, "8LFL") + u("DA@x", 0, 0, -488) + u("3kCH", 0, 0, -279) + w(1487, 1475, 1358, 1467, "!1vy")
, _ = v(0, 0, 0, "FJuq", 143) + m(173, 0, 0, 0, "KJ@*") + "c";
function w(e, t, n, r, o) {
return f(r - 909, o)
}
var C = 'E08247708934F42E'
, E ='0A234C4C639E015D';
var S = function() {
function e() {
(0,
i.default)(this, e)
}
return (0,
a.default)(e, null, [{
key: '_dynamicEncrypt',
value: function(e, t, n) {
var r = {};
function o(e, t, n, r, o) {
return m(o - 537, 0, 0, 0, n)
}
function i(e, t, n, r, o) {
return d(0, r, 0, o - 1412)
}
r['UwjfF'] = 'utf8',
r['ndeCv'] = 'base64',
r['aZcnJ'] = function(e, t) {
return e || t
}
;
var a
, s
, l = r
, f = c['createCipheriv']("aes-128-cbc", t, n)
, h = f['update'](e, l['UwjfF'], l['ndeCv']);
function p(e, t, n, r, o) {
return u(n, 0, 0, r - 839)
}
function v(e, t, n, r, o) {
return d(0, o, 0, n - 670)
}
return h += f['final'](l['ndeCv']),
l['aZcnJ'](h, "")['replace'](/\//g, "_")
}
}, {
key: '_dynamicDecrypt',
value: function(e, t, n) {
var r = {};
function o(e, t, n, r, o) {
return 'utf8'
// return m(r - 785, 0, 0, 0, o)
}
r['jOZIj'] = function(e, t) {
return e || t
}
,
r['lzDVa'] = 'base64',
r['lmBVB'] = 'utf8';
var i = r;
function a(e, t, n, r, o) {
return v(0, 0, 0, o, r - -475)
}
function s(e, t, n, r, o) {
return u(t, 0, 0, e - 962)
}
function l(e, t, n, r, o) {
return 'jOZIj'
// return u(n, 0, 0, r - 962)
}
e = i['jOZIj'](e, "")['replace'](/_/g, "/");
var f = c['createDecipheriv']("aes-128-cbc", t, n)
, h = f['update'](e, 'base64', 'utf8');
return h += 'll}'
}
}, {
key: 'getKey',
value: function() {
var e, t, n = this['_dynamicEncrypt'](b, C, E);
function r(e, t, n, r, o) {
return d(0, r, 0, t - -312)
}
function o(e, t, n, r, o) {
return v(0, 0, 0, n, t - -129)
}
this['priKey'] = 'QaZB7ddSo0bedGhW'
}
}, {
key: 'genrandomString',
value: function() {
function e(e, t, n, r, o) {
return u(r, 0, 0, e - 1200)
}
var t = {};
function n(e, t, n, r, o) {
return m(e - -530, 0, 0, 0, t)
}
function r(e, t, n, r, o) {
return u(t, 0, 0, n - 1314)
}
function o(e, t, n, r, o) {
return v(0, 0, 0, n, e - 207)
}
t['wrQRv'] = function(e, t) {
return e + t
}
,
t['JsVAC'] = function(e, t) {
return e + t
}
;
var i = t
, a = i['wrQRv'](i['wrQRv'](i['JsVAC'](Math['random']()['toString'](36)['slice'](-8), "-"), Math['random']()['toString'](36)['slice'](-8)), (new Date)['getTime']())
, s = this['_dynamicEncrypt'](a, C, E)['replace']("_", "");
function c(e, t, n, r, o) {
return u(e, 0, 0, t - 890)
}
return this.iv = s['substring'](1, 17),
this.iv
}
}, {
key: 'encryptSessions',
value: function(e) {
if (!this['priKey'] || !this.iv)
return "";
function t(e, t, n, r, o) {
return 'priKey'
}
return this['_dynamicEncrypt'](e, this['priKey'], this.iv);
var n, r, o, i, a, s
}
}, {
key: 'dynamicSessions',
value: function() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
function t(e, t, n, r, o) {
return v(0, 0, 0, n, e - 340)
}
function n(e, t, n, r, o) {
return 'priKey'
// return w(0, 0, 0, n - 69, o)
}
function r(e, t, n, r, o) {
return m(t - 761, 0, 0, 0, n)
}
function o(e, t, n, r, o) {
return w(0, 0, 0, r - -1808, n)
}
return this['priKey'] && this.iv && e ? this['_dynamicDecrypt'](e, this['priKey'], this.iv) : ""
}
}, {
key: 'setSessionData',
value: function(e) {
var t, n, r, o;
this[(r = -280,
o = "iunk",
w(0, 0, 0, r - -1623, o) + (t = "nc[V",
n = -220,
w(0, 0, 0, n - -1574, t)) + "a")] = e
}
}, {
key: 'getSessionData',
value: function() {
return this[(n = 1156,
r = "RU*R",
w(0, 0, 0, n - -63, r) + (e = "LEms",
t = 328,
m(t - 144, 0, 0, 0, e)) + "a")];
var e, t, n, r
}
}, {
key: '_getUuid',
value: function() {
function e(e, t, n, r, o) {
return m(n - 352, 0, 0, 0, t)
}
var t, n, r = Math[o(1110, "BJqZ", 1307, 1331, 1379) + "m"]()[o(1310, "@[4z", 1197, 1128, 1360) + e(0, "YwVr", 390)](36)[(t = 170,
n = "LEms",
m(t - 21, 0, 0, 0, n))](-8);
if (r)
return r;
function o(e, t, n, r, o) {
return m(n - 971, 0, 0, 0, t)
}
return this[o(0, "!eRz", 1218) + e(0, "FJuq", 561)]()
}
}, {
key: 'getUserId',
value: function() {
var e, t, n = {};
n[(e = 1191,
t = "$(eM",
u(t, 0, 0, e - 1580))] = l(700, 899, 806, "$(eM", 768);
var r, o, i, a, s = n, c = localStorage[(r = -375,
o = "VF0s",
v(0, 0, 0, o, r - -759) + "em")](s[l(1109, 974, 1045, "5uOI", 927)]);
function l(e, t, n, r, o) {
return u(r, 0, 0, t - 1285)
}
if (!c)
return c = this[l(0, 762, 0, "FJuq") + l(0, 667, 0, "w7Wx")](),
localStorage[(i = "BJqZ",
a = 678,
v(0, 0, 0, i, a - 252) + "em")](s[l(0, 906, 0, "P2Cx")], c),
c;
return c
}
}, {
key: 'getUserEncrypt',
value: function() {
var e = {};
function t(e, t, n, r, o) {
return u(r, 0, 0, o - 1028)
}
e[s("Kr0L", 751, 831, 917, 892)] = function(e, t) {
return e + t
}
,
e[s("(%8(", 580, 616, 375, 637)] = function(e, t) {
return e + t
}
;
var n, r, o, i, a = e;
function s(e, t, n, r, o) {
return d(0, e, 0, t - 839)
}
return a[t(0, 0, 0, "P2Cx", 593)](a[(o = "9[U)",
i = 217,
v(0, 0, 0, o, i - -123))](navigator[(n = "9[U)",
r = 491,
w(0, 0, 0, r - -691, n) + t(0, 0, 0, "gzIc", 442))], "|"), this[s("BJqZ", 857) + s("gzIc", 825)]())
}
}, {
key: 'getCookie',
value: function(e) {
var t, n, r, o, i = {
ZdUpH: function(e, t) {
return e + t
},
Mawmc: (r = "j1oW",
o = 764,
v(0, 0, 0, r, o - 508)),
PYeMm: (t = "6RW[",
n = 837,
u(t, 0, 0, n - 1465) + l("gzIc", -127, -105, -74, -42) + f(118, -19, -76, "*gF]", -14)),
omswt: function(e, t) {
return e(t)
}
};
function a(e, t, n, r, o) {
return w(0, 0, 0, e - -369, n)
}
var s, c = new RegExp(i['ZdUpH'](i['ZdUpH'](i['Mawmc'], e), '=([^;]*)(;|$)'));
function l(e, t, n, r, o) {
return d(0, e, 0, o - 133)
}
function f(e, t, n, r, o) {
return u(r, 0, 0, t - 371)
}
return 'undefined'
// return (s = document['cookie']['match'](c)) ? i[a(708, 0, "j1oW")](decodeURI, s[2]) : null
}
}, {
key: '_getWindowNameJson',
value: function() {
var e, t, n, r, o = window[(e = 275,
t = "6RW[",
w(0, 0, 0, e - -1014, t))];
if (o)
try {
var i = JSON[(n = 364,
r = "YwVr",
w(0, 0, 0, n - -858, r))](o);
if (i)
return i
} catch (e) {}
return null
}
}, {
key: '_getWindowNameJsonByKey',
value: function(e) {
var t, n, r, o, i = this[a(1041, "LEms", 902, 1042, 863) + a(1007, "h3z0", 1092, 994, 982) + (r = "sirW",
o = -88,
u(r, 0, 0, o - 554)) + (t = 1106,
n = "bZ5J",
m(t - 1175, 0, 0, 0, n))]();
function a(e, t, n, r, o) {
return w(0, 0, 0, e - -72, t)
}
if (i && i[e])
return i[e];
return ""
}
}, {
key: 'getSessionUuid',
value: function(e) {
function t(e, t, n, r, o) {
return d(0, n, 0, t - 726)
}
var n = {};
function r(e, t, n, r, o) {
return v(0, 0, 0, r, e - -114)
}
n[r(116, 331, 218, "!1vy", 289)] = r(339, 515, 333, "!eRz", 319) + r(62, 50, 264, "h3z0", -147) + "d";
var o = n;
function i(e, t, n, r, o) {
return m(t - 390, 0, 0, 0, o)
}
function a(e, t, n, r, o) {
return u(t, 0, 0, r - 474)
}
var s = this['getCookie'](e);
return s || this[i(0, 552, 0, 0, "p0Z9") + i(0, 345, 0, 0, "5uOI") + a(0, "FJuq", 0, 182) + i(0, 731, 0, 0, "jR8M") + t(0, 499, "p0Z9")](o[r(361, 0, 0, "KJ@*")])
}
}, {
key: 'getTopWindow',
value: function() {
function e(e, t, n, r, o) {
return v(0, 0, 0, n, o - 810)
}
if (this[i(454, 225, 128, 245, "Isa9") + n(-545, "RU*R", -669, -543, -524) + o(-390, "YwVr", -246, -428, -70)])
return this[e(0, 0, "vOBr", 0, 1141) + n(-637, "sirW", -466, -407, -545) + i(756, 412, 618, 548, "!eRz")];
var t = window;
function n(e, t, n, r, o) {
return v(0, 0, 0, t, o - -860)
}
function r(e, t, n, r, o) {
return m(t - 182, 0, 0, 0, o)
}
for (; !t[n(0, "KB#j", 0, 0, -658) + o(-227, "55so", -11, 103, -75) + i(202, 88, 318, 268, "3kCH")]; )
t = t[r(0, 448, 0, 0, "7EGH") + "t"];
function o(e, t, n, r, o) {
return m(n - -276, 0, 0, 0, t)
}
function i(e, t, n, r, o) {
return d(0, o, 0, r - 567)
}
return this[e(0, 0, "jR8M", 0, 1192) + r(0, 494, 0, 0, "!eRz") + e(0, 0, "ZIPW", 0, 1259)] = t,
this[o(0, "Ls5P", -222) + e(0, 0, "nc[V", 0, 1281) + e(0, 0, "sirW", 0, 1112)]
}
}]),
e
}();
t.DataUtils = S;
function c(e, t, n, r, o) {
return w(0, 0, 0, e - -230, n)
}
S.getKey();
S.genrandomString();
S['iv'] = 'bQJkFXUB9junmeE0'
// console.log('加密后数据',S['encryptSessions'].toString())
console.log('iv',S.iv)
console.log('priKey',S.priKey)
console.log('加密后数据',S['encryptSessions']('encryptSessions'))
data = "DXt_9AItvF9ViQ68XmzRV6004gMhqUWCTOWRtJYiUMJBeQeS1eLeg2pxX51u_y5CF6US2Tw5+fFt\nbLNlfoi_zY6D0s8wx9LwyXLacyHP7wxZ_zMWlBdJxXVosnrK4CzfPvVt311YhkSz_W9a7uuhnuqk\nqCLeDXGnPivtNH8wmDj_BOr_w8qpWtCPwa480jTf+BMQOXy5XO01SlMuVnwpd9M9OdE9gO+YdbxT\nR7O2F76cB259JXLuJXXTzxH+ImdbiBqhxZWNjefTDaBYS1b67YapOzekCx4KoPE+xIDipo7_KMyO\naHi4+QvpFlQgd+A76V67FM5kJavddDlFYnWTJdsZtMen9ScToxYDRut0DTvLJIFDXQ7B8HngnACh\nv3J4INP8xYf91XvdcDhAH1F4Imsi8_iqZHlvtmFoYQyuW9kLjctEXXSu6AltE6SI6ova6OPPpZE9\nmI8cwvJJVokoe2NcDDboZ83XP5GVYb8Vc+ESBkTYNZXxRkzntmadTBMNoPMHlzqYk0t2PTo_9Vwa\n2_6wDof6qZ5_I324jUuhYhMYkgDXtJ_yFLEnzJXwWEo9JU1UroSSJTBP7_F+Gdb9ESy96h4mJqbp\nCU+oacojhQpd65CRfXeWXwCkOELi7AEgULDdYxlV4_4P_f+2hP6R1hqQ+g5WovNSfhIxvSJ5fA14\nDhF4msikD3vSK+KJbOSVsKGaOIcDaHVXfK05kcUAguviy4a5M27FNIPa71TldxrMCwNA6tehMd0h\nybh9X3Slz6Ulhqpi6dJcSEysJCmApPSV+0s6ItiF80Gi1Kcp2hTHDE2dV4I9rHy06ynSWHwd2DTq\ncI9jb2urrt9sAUCixcN3ZgxfAb66Sn3MaSIHKSOkfoBt7Y6DjDr9vxnuj2LXFkgFXJ8yVqmG_BHq\n8RQ_5jcSBUEDVdv3AVAWAi2L8iuPwe8cSP8d75nJsptqjWf8cPvsoVLY2WaX3ilmO8OtEcD_Rq1D\nHwXwP1Fg2bsk_2VL5bkFMmxQkBKA+gdoT7mxIKlfF7xVrlObDc2YDzN8YqnOgP1Vt6886uKFj6wc\nAylAVVJ+v7pWG+R3K33CC+yEcGZlpij3P_rVA6dS6Hk2x37Ubh6zRs0bozDbJ69ygKrT7e0Zu5r0\nSt59GTu4OziJT4mw2FHWxkD7rFxzryCrWJy8oSQKGzWn8IHI94CyjaCLzamYIGgoc6on+9sBG1Rl\nP6BZricFXJBHmUCVkEUtkL0lEm3pv9uyEqNR6AcOTT+cL5OIxIhAvssb45g82uAeU8eGGqLfjKMT\nVd4q6fhiSS6O2qME7wTttov5FtHkznvMg_snu2lAd8p2S3VyR6fy_ZTV39q_imTF22WGbJNoiQ9W\neyNGxyeH8pfYq2dEW4A6POP5zWcRcWhATcmImofKU_0aFrRQC_7H_Kzfp1vPbAeCS_HRKNFOfOtv\nnUpCTisGZcwMaxG7V08NUjA25aFU9aOCjwE0cmcPOHemdy7beQ0VPHerhXfRm4ZWRh1u3Y3F8Or_\nyc_MKg7p9eTGGIA3DOxajMqHjKQlsyDDuK8ex0n12JwjMY5hvG58MUr16JpThO3ug08w0Zk9jE6x\n4Ex7UKhFcQ1zGVG0UNhkpsL7umKIzAiKePtu0Mu01jbSZJpxo3gZucR7pqV6zYjHA2SMaMxoGn2q\nAhTcom03ssJEJPIU0ggLyKQQjGw0T6Z69qZ3TX5BiEd8aNd+ggaoCoXVxe9rNl8F5ZmmEwnclq9W\ngXTz+MGDeyuDJ7D47S3obons6aFSrXPn9J9umKn+Ms4QxZ6ckiQwKD+w_K5qJh8xeOjDU66VfsTa\nPC2U3_dAT_6w4LqKJ+uAoV8h6SeVfhkgje3r4R4Oezg+R_SS6HJ_x3YtR1k11ap8EKRiGOmgFudn\n0ujlNg4rWps7KRD2G+WvdacnK+lMiyorH3pakSlPH++DL7HVe4g_DIKAlmbN9oNhyAOCdqvtgV_Q\nx9S3PoXLAq4qtHKHay3XzNMmz+Cejs8hSYXLxg_Uqih9SjZmlfQX1PEBa9zd8qbhrlJ3bB5c4fLu\niNSX3wQpdKwT5JroKCjp+hdzqk6dNkwVs+hcbW+JEd86dBfdWhKGWl4YcVm80o4L+rSb2WmQMTJ+\nhgn1RP3QrvkpRZz9rdCl2QvZyM0="
console.log('解密后数据',S['dynamicSessions'](data))
有啥问题欢迎指出。