学生黑客联盟-官网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 518|回复: 10

反编译某听书网站直接获取音频地址

[复制链接]

该用户从未签到

49

主题

49

帖子

151

积分

网站信息宣传员

Rank: 7Rank: 7Rank: 7

积分
151
发表于 2021-7-22 19:34:53 | 显示全部楼层 |阅读模式
从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。
最近在听这本小说, 不过资源部好找, 找到一个在线听书的,想把资源下载下来,就尝试反编译一下,然后把过程分享一下。
网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(1)
F12获取他播放的音频文件 是m4a的。 网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(2)

在查看对应的目录结构,里面是没有m4a的文件,只有data-path一个 加密字符串,看起来是base64的。
网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(3)

通过地址、文件名等关键词搜索,也没有搜索到相关信息,怎么办呢,继续找找其他的吧。
网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(4)

通过断点找到一个这个加密解密相关的文件,,把他格式化一下。
网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(5)
[JavaScript]  
  1. var CryptoJS = CryptoJS ||
  2. function(u, p) {
  3.         var d = {},
  4.                 l = d.lib = {},
  5.                 s = function() {},
  6.                 t = l.Base = {
  7.                         extend: function(a) {
  8.                                 s.prototype = this;
  9.                                 var c = new s;
  10.                                 a && c.mixIn(a);
  11.                                 c.hasOwnProperty("init") || (c.init = function() {
  12.                                         c.$super.init.apply(this, arguments)
  13.                                 });
  14.                                 c.init.prototype = c;
  15.                                 c.$super = this;
  16.                                 return c
  17.                         },
  18.                         create: function() {
  19.                                 var a = this.extend();
  20.                                 a.init.apply(a, arguments);
  21.                                 return a
  22.                         },
  23.                         init: function() {},
  24.                         mixIn: function(a) {
  25.                                 for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]);
  26.                                 a.hasOwnProperty("toString") && (this.toString = a.toString)
  27.                         },
  28.                         clone: function() {
  29.                                 return this.init.prototype.extend(this)
  30.                         }
  31.                 },
  32.                 r = l.WordArray = t.extend({
  33.                         init: function(a, c) {
  34.                                 a = this.words = a || [];
  35.                                 this.sigBytes = c != p ? c : 4 * a.length
  36.                         },
  37.                         toString: function(a) {
  38.                                 return (a || v).stringify(this)
  39.                         },
  40.                         concat: function(a) {
  41.                                 var c = this.words,
  42.                                         e = a.words,
  43.                                         j = this.sigBytes;
  44.                                 a = a.sigBytes;
  45.                                 this.clamp();
  46.                                 if (j % 4) for (var k = 0; k < a; k++) c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4);
  47.                                 else if (65535 < e.length) for (k = 0; k < a; k += 4) c[j + k >>> 2] = e[k >>> 2];
  48.                                 else c.push.apply(c, e);
  49.                                 this.sigBytes += a;
  50.                                 return this
  51.                         },
  52.                         clamp: function() {
  53.                                 var a = this.words,
  54.                                         c = this.sigBytes;
  55.                                 a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4);
  56.                                 a.length = u.ceil(c / 4)
  57.                         },
  58.                         clone: function() {
  59.                                 var a = t.clone.call(this);
  60.                                 a.words = this.words.slice(0);
  61.                                 return a
  62.                         },
  63.                         random: function(a) {
  64.                                 for (var c = [], e = 0; e < a; e += 4) c.push(4294967296 * u.random() | 0);
  65.                                 return new r.init(c, a)
  66.                         }
  67.                 }),
  68.                 w = d.enc = {},
  69.                 v = w.Hex = {
  70.                         stringify: function(a) {
  71.                                 var c = a.words;
  72.                                 a = a.sigBytes;
  73.                                 for (var e = [], j = 0; j < a; j++) {
  74.                                         var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255;
  75.                                         e.push((k >>> 4).toString(16));
  76.                                         e.push((k & 15).toString(16))
  77.                                 }
  78.                                 return e.join("")
  79.                         },
  80.                         parse: function(a) {
  81.                                 for (var c = a.length, e = [], j = 0; j < c; j += 2) e[j >>> 3] |= parseInt(a.substr(j, 2), 16) << 24 - 4 * (j % 8);
  82.                                 return new r.init(e, c / 2)
  83.                         }
  84.                 },
  85.                 b = w.Latin1 = {
  86.                         stringify: function(a) {
  87.                                 var c = a.words;
  88.                                 a = a.sigBytes;
  89.                                 for (var e = [], j = 0; j < a; j++) e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255));
  90.                                 return e.join("")
  91.                         },
  92.                         parse: function(a) {
  93.                                 for (var c = a.length, e = [], j = 0; j < c; j++) e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4);
  94.                                 return new r.init(e, c)
  95.                         }
  96.                 },
  97.                 x = w.Utf8 = {
  98.                         stringify: function(a) {
  99.                                 try {
  100.                                         return decodeURIComponent(escape(b.stringify(a)))
  101.                                 } catch (c) {
  102.                                         throw Error("Malformed UTF-8 data");
  103.                                 }
  104.                         },
  105.                         parse: function(a) {
  106.                                 return b.parse(unescape(encodeURIComponent(a)))
  107.                         }
  108.                 },
  109.                 q = l.BufferedBlockAlgorithm = t.extend({
  110.                         reset: function() {
  111.                                 this._data = new r.init;
  112.                                 this._nDataBytes = 0
  113.                         },
  114.                         _append: function(a) {
  115.                                 "string" == typeof a && (a = x.parse(a));
  116.                                 this._data.concat(a);
  117.                                 this._nDataBytes += a.sigBytes
  118.                         },
  119.                         _process: function(a) {
  120.                                 var c = this._data,
  121.                                         e = c.words,
  122.                                         j = c.sigBytes,
  123.                                         k = this.blockSize,
  124.                                         b = j / (4 * k),
  125.                                         b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0);
  126.                                 a = b * k;
  127.                                 j = u.min(4 * a, j);
  128.                                 if (a) {
  129.                                         for (var q = 0; q < a; q += k) this._doProcessBlock(e, q);
  130.                                         q = e.splice(0, a);
  131.                                         c.sigBytes -= j
  132.                                 }
  133.                                 return new r.init(q, j)
  134.                         },
  135.                         clone: function() {
  136.                                 var a = t.clone.call(this);
  137.                                 a._data = this._data.clone();
  138.                                 return a
  139.                         },
  140.                         _minBufferSize: 0
  141.                 });
  142.         l.Hasher = q.extend({
  143.                 cfg: t.extend(),
  144.                 init: function(a) {
  145.                         this.cfg = this.cfg.extend(a);
  146.                         this.reset()
  147.                 },
  148.                 reset: function() {
  149.                         q.reset.call(this);
  150.                         this._doReset()
  151.                 },
  152.                 update: function(a) {
  153.                         this._append(a);
  154.                         this._process();
  155.                         return this
  156.                 },
  157.                 finalize: function(a) {
  158.                         a && this._append(a);
  159.                         return this._doFinalize()
  160.                 },
  161.                 blockSize: 16,
  162.                 _createHelper: function(a) {
  163.                         return function(b, e) {
  164.                                 return (new a.init(e)).finalize(b)
  165.                         }
  166.                 },
  167.                 _createHmacHelper: function(a) {
  168.                         return function(b, e) {
  169.                                 return (new n.HMAC.init(a, e)).finalize(b)
  170.                         }
  171.                 }
  172.         });
  173.         var n = d.algo = {};
  174.         return d
  175. }(Math);
  176. (function() {
  177.         var h = CryptoJS,
  178.                 j = h.lib.WordArray;
  179.         h.enc.Base64 = {
  180.                 stringify: function(b) {
  181.                         var e = b.words,
  182.                                 f = b.sigBytes,
  183.                                 c = this._map;
  184.                         b.clamp();
  185.                         b = [];
  186.                         for (var a = 0; a < f; a += 3) for (var d = (e[a >>> 2] >>> 24 - 8 * (a % 4) & 255) << 16 | (e[a + 1 >>> 2] >>> 24 - 8 * ((a + 1) % 4) & 255) << 8 | e[a + 2 >>> 2] >>> 24 - 8 * ((a + 2) % 4) & 255, g = 0; 4 > g && a + 0.75 * g < f; g++) b.push(c.charAt(d >>> 6 * (3 - g) & 63));
  187.                         if (e = c.charAt(64)) for (; b.length % 4;) b.push(e);
  188.                         return b.join("")
  189.                 },
  190.                 parse: function(b) {
  191.                         var e = b.length,
  192.                                 f = this._map,
  193.                                 c = f.charAt(64);
  194.                         c && (c = b.indexOf(c), -1 != c && (e = c));
  195.                         for (var c = [], a = 0, d = 0; d < e; d++) if (d % 4) {
  196.                                 var g = f.indexOf(b.charAt(d - 1)) << 2 * (d % 4),
  197.                                         h = f.indexOf(b.charAt(d)) >>> 6 - 2 * (d % 4);
  198.                                 c[a >>> 2] |= (g | h) << 24 - 8 * (a % 4);
  199.                                 a++
  200.                         }
  201.                         return j.create(c, a)
  202.                 },
  203.                 _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  204.         }
  205. })();
  206. CryptoJS.lib.Cipher ||
  207. function(u) {
  208.         var p = CryptoJS,
  209.                 d = p.lib,
  210.                 l = d.Base,
  211.                 s = d.WordArray,
  212.                 t = d.BufferedBlockAlgorithm,
  213.                 r = p.enc.Base64,
  214.                 w = p.algo.EvpKDF,
  215.                 v = d.Cipher = t.extend({
  216.                         cfg: l.extend(),
  217.                         createEncryptor: function(e, a) {
  218.                                 return this.create(this._ENC_XFORM_MODE, e, a)
  219.                         },
  220.                         createDecryptor: function(e, a) {
  221.                                 return this.create(this._DEC_XFORM_MODE, e, a)
  222.                         },
  223.                         init: function(e, a, b) {
  224.                                 this.cfg = this.cfg.extend(b);
  225.                                 this._xformMode = e;
  226.                                 this._key = a;
  227.                                 this.reset()
  228.                         },
  229.                         reset: function() {
  230.                                 t.reset.call(this);
  231.                                 this._doReset()
  232.                         },
  233.                         process: function(e) {
  234.                                 this._append(e);
  235.                                 return this._process()
  236.                         },
  237.                         finalize: function(e) {
  238.                                 e && this._append(e);
  239.                                 return this._doFinalize()
  240.                         },
  241.                         keySize: 4,
  242.                         ivSize: 4,
  243.                         _ENC_XFORM_MODE: 1,
  244.                         _DEC_XFORM_MODE: 2,
  245.                         _createHelper: function(e) {
  246.                                 return {
  247.                                         encrypt: function(b, k, d) {
  248.                                                 return ("string" == typeof k ? c : a).encrypt(e, b, k, d)
  249.                                         },
  250.                                         decrypt: function(b, k, d) {
  251.                                                 return ("string" == typeof k ? c : a).decrypt(e, b, k, d)
  252.                                         }
  253.                                 }
  254.                         }
  255.                 });
  256.         d.StreamCipher = v.extend({
  257.                 _doFinalize: function() {
  258.                         return this._process(!0)
  259.                 },
  260.                 blockSize: 1
  261.         });
  262.         var b = p.mode = {},
  263.                 x = function(e, a, b) {
  264.                         var c = this._iv;
  265.                         c ? this._iv = u : c = this._prevBlock;
  266.                         for (var d = 0; d < b; d++) e[a + d] ^= c[d]
  267.                 },
  268.                 q = (d.BlockCipherMode = l.extend({
  269.                         createEncryptor: function(e, a) {
  270.                                 return this.Encryptor.create(e, a)
  271.                         },
  272.                         createDecryptor: function(e, a) {
  273.                                 return this.Decryptor.create(e, a)
  274.                         },
  275.                         init: function(e, a) {
  276.                                 this._cipher = e;
  277.                                 this._iv = a
  278.                         }
  279.                 })).extend();
  280.         q.Encryptor = q.extend({
  281.                 processBlock: function(e, a) {
  282.                         var b = this._cipher,
  283.                                 c = b.blockSize;
  284.                         x.call(this, e, a, c);
  285.                         b.encryptBlock(e, a);
  286.                         this._prevBlock = e.slice(a, a + c)
  287.                 }
  288.         });
  289.         q.Decryptor = q.extend({
  290.                 processBlock: function(e, a) {
  291.                         var b = this._cipher,
  292.                                 c = b.blockSize,
  293.                                 d = e.slice(a, a + c);
  294.                         b.decryptBlock(e, a);
  295.                         x.call(this, e, a, c);
  296.                         this._prevBlock = d
  297.                 }
  298.         });
  299.         b = b.CBC = q;
  300.         q = (p.pad = {}).Pkcs7 = {
  301.                 pad: function(a, b) {
  302.                         for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4) l.push(d);
  303.                         c = s.create(l, c);
  304.                         a.concat(c)
  305.                 },
  306.                 unpad: function(a) {
  307.                         a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255
  308.                 }
  309.         };
  310.         d.BlockCipher = v.extend({
  311.                 cfg: v.cfg.extend({
  312.                         mode: b,
  313.                         padding: q
  314.                 }),
  315.                 reset: function() {
  316.                         v.reset.call(this);
  317.                         var a = this.cfg,
  318.                                 b = a.iv,
  319.                                 a = a.mode;
  320.                         if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor;
  321.                         else c = a.createDecryptor, this._minBufferSize = 1;
  322.                         this._mode = c.call(a, this, b && b.words)
  323.                 },
  324.                 _doProcessBlock: function(a, b) {
  325.                         this._mode.processBlock(a, b)
  326.                 },
  327.                 _doFinalize: function() {
  328.                         var a = this.cfg.padding;
  329.                         if (this._xformMode == this._ENC_XFORM_MODE) {
  330.                                 a.pad(this._data, this.blockSize);
  331.                                 var b = this._process(!0)
  332.                         } else b = this._process(!0), a.unpad(b);
  333.                         return b
  334.                 },
  335.                 blockSize: 4
  336.         });
  337.         var n = d.CipherParams = l.extend({
  338.                 init: function(a) {
  339.                         this.mixIn(a)
  340.                 },
  341.                 toString: function(a) {
  342.                         return (a || this.formatter).stringify(this)
  343.                 }
  344.         }),
  345.                 b = (p.format = {}).OpenSSL = {
  346.                         stringify: function(a) {
  347.                                 var b = a.ciphertext;
  348.                                 a = a.salt;
  349.                                 return (a ? s.create([1398893684, 1701076831]).concat(a).concat(b) : b).toString(r)
  350.                         },
  351.                         parse: function(a) {
  352.                                 a = r.parse(a);
  353.                                 var b = a.words;
  354.                                 if (1398893684 == b[0] && 1701076831 == b[1]) {
  355.                                         var c = s.create(b.slice(2, 4));
  356.                                         b.splice(0, 4);
  357.                                         a.sigBytes -= 16
  358.                                 }
  359.                                 return n.create({
  360.                                         ciphertext: a,
  361.                                         salt: c
  362.                                 })
  363.                         }
  364.                 },
  365.                 a = d.SerializableCipher = l.extend({
  366.                         cfg: l.extend({
  367.                                 format: b
  368.                         }),
  369.                         encrypt: function(a, b, c, d) {
  370.                                 d = this.cfg.extend(d);
  371.                                 var l = a.createEncryptor(c, d);
  372.                                 b = l.finalize(b);
  373.                                 l = l.cfg;
  374.                                 return n.create({
  375.                                         ciphertext: b,
  376.                                         key: c,
  377.                                         iv: l.iv,
  378.                                         algorithm: a,
  379.                                         mode: l.mode,
  380.                                         padding: l.padding,
  381.                                         blockSize: a.blockSize,
  382.                                         formatter: d.format
  383.                                 })
  384.                         },
  385.                         decrypt: function(a, b, c, d) {
  386.                                 d = this.cfg.extend(d);
  387.                                 b = this._parse(b, d.format);
  388.                                 return a.createDecryptor(c, d).finalize(b.ciphertext)
  389.                         },
  390.                         _parse: function(a, b) {
  391.                                 return "string" == typeof a ? b.parse(a, this) : a
  392.                         }
  393.                 }),
  394.                 p = (p.kdf = {}).OpenSSL = {
  395.                         execute: function(a, b, c, d) {
  396.                                 d || (d = s.random(8));
  397.                                 a = w.create({
  398.                                         keySize: b + c
  399.                                 }).compute(a, d);
  400.                                 c = s.create(a.words.slice(b), 4 * c);
  401.                                 a.sigBytes = 4 * b;
  402.                                 return n.create({
  403.                                         key: a,
  404.                                         iv: c,
  405.                                         salt: d
  406.                                 })
  407.                         }
  408.                 },
  409.                 c = d.PasswordBasedCipher = a.extend({
  410.                         cfg: a.cfg.extend({
  411.                                 kdf: p
  412.                         }),
  413.                         encrypt: function(b, c, d, l) {
  414.                                 l = this.cfg.extend(l);
  415.                                 d = l.kdf.execute(d, b.keySize, b.ivSize);
  416.                                 l.iv = d.iv;
  417.                                 b = a.encrypt.call(this, b, c, d.key, l);
  418.                                 b.mixIn(d);
  419.                                 return b
  420.                         },
  421.                         decrypt: function(b, c, d, l) {
  422.                                 l = this.cfg.extend(l);
  423.                                 c = this._parse(c, l.format);
  424.                                 d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt);
  425.                                 l.iv = d.iv;
  426.                                 return a.decrypt.call(this, b, c, d.key, l)
  427.                         }
  428.                 })
  429. }();
  430. (function() {
  431.         for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++) a[c] = 128 > c ? c << 1 : c << 1 ^ 283;
  432.         for (var e = 0, j = 0, c = 0; 256 > c; c++) {
  433.                 var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4,
  434.                         k = k >>> 8 ^ k & 255 ^ 99;
  435.                 l[e] = k;
  436.                 s[k] = e;
  437.                 var z = a[e],
  438.                         F = a[z],
  439.                         G = a[F],
  440.                         y = 257 * a[k] ^ 16843008 * k;
  441.                 t[e] = y << 24 | y >>> 8;
  442.                 r[e] = y << 16 | y >>> 16;
  443.                 w[e] = y << 8 | y >>> 24;
  444.                 v[e] = y;
  445.                 y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e;
  446.                 b[k] = y << 24 | y >>> 8;
  447.                 x[k] = y << 16 | y >>> 16;
  448.                 q[k] = y << 8 | y >>> 24;
  449.                 n[k] = y;
  450.                 e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1
  451.         }
  452.         var H = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
  453.                 d = d.AES = p.extend({
  454.                         _doReset: function() {
  455.                                 for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++) if (j < d) e[j] = c[j];
  456.                                 else {
  457.                                         var k = e[j - 1];
  458.                                         j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24);
  459.                                         e[j] = e[j - d] ^ k
  460.                                 }
  461.                                 c = this._invKeySchedule = [];
  462.                                 for (d = 0; d < a; d++) j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>> 8 & 255]] ^ n[l[k & 255]]
  463.                         },
  464.                         encryptBlock: function(a, b) {
  465.                                 this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l)
  466.                         },
  467.                         decryptBlock: function(a, c) {
  468.                                 var d = a[c + 1];
  469.                                 a[c + 1] = a[c + 3];
  470.                                 a[c + 3] = d;
  471.                                 this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s);
  472.                                 d = a[c + 1];
  473.                                 a[c + 1] = a[c + 3];
  474.                                 a[c + 3] = d
  475.                         },
  476.                         _doCryptBlock: function(a, b, c, d, e, j, l, f) {
  477.                                 for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++) var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++],
  478.                                         s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++],
  479.                                         t = d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++],
  480.                                         n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++],
  481.                                         g = q,
  482.                                         h = s,
  483.                                         k = t;
  484.                                 q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++];
  485.                                 s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++];
  486.                                 t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++];
  487.                                 n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++];
  488.                                 a[b] = q;
  489.                                 a[b + 1] = s;
  490.                                 a[b + 2] = t;
  491.                                 a[b + 3] = n
  492.                         },
  493.                         keySize: 8
  494.                 });
  495.         u.AES = p._createHelper(d)
  496. })();
  497. function Base64() {
  498.         _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  499.         this.encode = function(input) {
  500.                 var output = "";
  501.                 var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
  502.                 var i = 0;
  503.                 input = _utf8_encode(input);
  504.                 while (i < input.length) {
  505.                         chr1 = input.charCodeAt(i++);
  506.                         chr2 = input.charCodeAt(i++);
  507.                         chr3 = input.charCodeAt(i++);
  508.                         enc1 = chr1 >> 2;
  509.                         enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  510.                         enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  511.                         enc4 = chr3 & 63;
  512.                         if (isNaN(chr2)) {
  513.                                 enc3 = enc4 = 64
  514.                         } else if (isNaN(chr3)) {
  515.                                 enc4 = 64
  516.                         }
  517.                         output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
  518.                 }
  519.                 return output;
  520.         }, this.decode = function(input) {
  521.                 var output = "";
  522.                 var chr1, chr2, chr3;
  523.                 var enc1, enc2, enc3, enc4;
  524.                 var i = 0;
  525.                 input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
  526.                 while (i < input.length) {
  527.                         enc1 = _keyStr.indexOf(input.charAt(i++));
  528.                         enc2 = _keyStr.indexOf(input.charAt(i++));
  529.                         enc3 = _keyStr.indexOf(input.charAt(i++));
  530.                         enc4 = _keyStr.indexOf(input.charAt(i++));
  531.                         chr1 = (enc1 << 2) | (enc2 >> 4);
  532.                         chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
  533.                         chr3 = ((enc3 & 3) << 6) | enc4;
  534.                         output = output + String.fromCharCode(chr1);
  535.                         if (enc3 != 64) {
  536.                                 output = output + String.fromCharCode(chr2);
  537.                         }
  538.                         if (enc4 != 64) {
  539.                                 output = output + String.fromCharCode(chr3);
  540.                         }
  541.                 }
  542.                 output = _utf8_decode(output);
  543.                 return output;
  544.         }, _utf8_encode = function(string) {
  545.                 string = string.replace(/\r\n/g, "\n");
  546.                 var utftext = "";
  547.                 for (var n = 0; n < string.length; n++) {
  548.                         var c = string.charCodeAt(n);
  549.                         if (c < 128) {
  550.                                 utftext += String.fromCharCode(c);
  551.                         } else if ((c > 127) && (c < 2048)) {
  552.                                 utftext += String.fromCharCode((c >> 6) | 192);
  553.                                 utftext += String.fromCharCode((c & 63) | 128)
  554.                         } else {
  555.                                 utftext += String.fromCharCode((c >> 12) | 224);
  556.                                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  557.                                 utftext += String.fromCharCode((c & 63) | 128);
  558.                         }
  559.                 }
  560.                 return utftext;
  561.         }, _utf8_decode = function(utftext) {
  562.                 var string = "";
  563.                 var i = 0;
  564.                 var c = c1 = c2 = 0;
  565.                 while (i < utftext.length) {
  566.                         c = utftext.charCodeAt(i);
  567.                         if (c < 128) {
  568.                                 string += String.fromCharCode(c);
  569.                                 i++
  570.                         } else if ((c > 191) && (c < 224)) {
  571.                                 c2 = utftext.charCodeAt(i + 1);
  572.                                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
  573.                                 i += 2
  574.                         } else {
  575.                                 c2 = utftext.charCodeAt(i + 1);
  576.                                 c3 = utftext.charCodeAt(i + 2);
  577.                                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
  578.                                 i += 3
  579.                         }
  580.                 }
  581.                 return string;
  582.         }
  583. }
  584. var _0xodl = 'jsjiami.com.v6',
  585.         _0x37e8 = [_0xodl, 'YsKlG8Ohw4xLw5QawqHCr0fDnjoU', 'UlfCnA==', 'w53CizQ4', 'VcOwNMO1Ww==', 'Dnx2A8Oz', 'cMOlIMK+', 'EjM+wpE0', 'w4t9Fg==', 'QcO0JcO0R8KkKw==', 'NUpq', 'InAfC8OXSMKWIw==', 'wq0Twqc=', 'fD7DlnnCpg==', 'wpEpw7TDnQ8=', 'w6nCjyJswpw=', 'AghJwpxH', 'XVHDgcKXbg==', 'eMOzwprDksKZ', 'w4bCt8KFwpvCpcKqccO7wrM=', 'AjbDvcOOw4BQWMKi', 'SQ4Ww558wobDvsOhXEjDtlo0JsKVT0HDq8K1w7LCmBBPwplefMKYNMKTcTHCozjDrcOdMEPCjsKlw5HCksKvXgUzwpQ2wrUdWA==', 'w4Ecw6BYFA==', 'wofCk0pwwqk=', 'RWDDkyPDqA==', 'wr0+PMK2cg==', 'w5nDsmVWDw==', 'QcO8w7LCjio=', 'YcOQw6vDk8OT', 'NsKAPgs/', 'LBlhwrN/', 'w4HDqcOhNQs=', 'AgVZcV7CsHs=', 'BjMDwrIo', 'RcKcOcOPwoo=', 'w6PDkMKXa8Kew7fDqCxew7A=', 'NRzDt2g+', 'PC1nw5Ea', 'XcKKMsOUwps=', 'An/Cu8KSwp4=', 'IMKLAAAV', 'aMOhw43Dr8On', 'FsKvJAggMA==', 'a8OywpHDl8KI', 'w7YLw7rCtn8=', 'WF/Cmh8w', 'wps0w7/DiDPDtQ==', 'w4PCrx14wok=', 'RU7DnxHDqQ==', 'w5fDp8OEISY=', 'HzrDu0Avw4c=', 'woHCjEfDilfDoQ==', 'dz7DkjrDqg==', 'AcOrw6cBKA==', 'wo1CHXEQ', 'w7PDqHVUDg==', 'DzXDhcO9w5s=', 'w40Hw7tiPQ==', 'RWLDuAPCjww=', 'EcOjw45APcKM', 'QGnDsgHCgysm', 'b8OhD2zCi8KY', 'HhRmw6Ep', 'H1N0IsOaw5jDtQ==', 'EMOgw45yEw==', 'wrXDkMKST8Oj', 'wqhhw6nCnHTCqQo0wok=', 'JzYZgrjskjinamiY.nclomEAk.v6Td=='];
  586. (function(_0x352039, _0x49452d, _0x39af96) {
  587.         var _0x36a017 = function(_0x4ab7ef, _0x56e13b, _0x4fb331, _0x1de395, _0xaa5fe2) {
  588.                         _0x56e13b = _0x56e13b >> 0x8, _0xaa5fe2 = 'po';
  589.                         var _0x2691c6 = 'shift',
  590.                                 _0x4b4a30 = 'push';
  591.                         if (_0x56e13b < _0x4ab7ef) {
  592.                                 while (--_0x4ab7ef) {
  593.                                         _0x1de395 = _0x352039[_0x2691c6]();
  594.                                         if (_0x56e13b === _0x4ab7ef) {
  595.                                                 _0x56e13b = _0x1de395;
  596.                                                 _0x4fb331 = _0x352039[_0xaa5fe2 + 'p']();
  597.                                         } else if (_0x56e13b && _0x4fb331['replace'](/[JzYZgrknYnlEAkTd=]/g, '') === _0x56e13b) {
  598.                                                 _0x352039[_0x4b4a30](_0x1de395);
  599.                                         }
  600.                                 }
  601.                                 _0x352039[_0x4b4a30](_0x352039[_0x2691c6]());
  602.                         }
  603.                         return 0x52e23;
  604.                 };
  605.         return _0x36a017(++_0x49452d, _0x39af96) >> _0x49452d ^ _0x39af96;
  606. }(_0x37e8, 0x90, 0x9000));
  607. var _0x2555 = function(_0x3f9a28, _0x47dd6f) {
  608.                 _0x3f9a28 = ~~'0x' ['concat'](_0x3f9a28);
  609.                 var _0x1e1327 = _0x37e8[_0x3f9a28];
  610.                 if (_0x2555['XVHLTR'] === undefined) {
  611.                         (function() {
  612.                                 var _0x1885d1 = typeof window !== 'undefined' ? window : typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global : this;
  613.                                 var _0x2fc5e2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  614.                                 _0x1885d1['atob'] || (_0x1885d1['atob'] = function(_0x5918bb) {
  615.                                         var _0x51db74 = String(_0x5918bb)['replace'](/=+$/, '');
  616.                                         for (var _0x544078 = 0x0, _0x574720, _0x44586c, _0x2ec80e = 0x0, _0x511cb7 = ''; _0x44586c = _0x51db74['charAt'](_0x2ec80e++);~_0x44586c && (_0x574720 = _0x544078 % 0x4 ? _0x574720 * 0x40 + _0x44586c : _0x44586c, _0x544078++ % 0x4) ? _0x511cb7 += String['fromCharCode'](0xff & _0x574720 >> (-0x2 * _0x544078 & 0x6)) : 0x0) {
  617.                                                 _0x44586c = _0x2fc5e2['indexOf'](_0x44586c);
  618.                                         }
  619.                                         return _0x511cb7;
  620.                                 });
  621.                         }());
  622.                         var _0x2d7e9f = function(_0x188f49, _0x47dd6f) {
  623.                                         var _0x49cbdc = [],
  624.                                                 _0x2a5905 = 0x0,
  625.                                                 _0x5b9e45, _0x253e96 = '',
  626.                                                 _0xb75a96 = '';
  627.                                         _0x188f49 = atob(_0x188f49);
  628.                                         for (var _0x5bfa5d = 0x0, _0x42e242 = _0x188f49['length']; _0x5bfa5d < _0x42e242; _0x5bfa5d++) {
  629.                                                 _0xb75a96 += '%' + ('00' + _0x188f49['charCodeAt'](_0x5bfa5d)['toString'](0x10))['slice'](-0x2);
  630.                                         }
  631.                                         _0x188f49 = decodeURIComponent(_0xb75a96);
  632.                                         for (var _0x2be2b7 = 0x0; _0x2be2b7 < 0x100; _0x2be2b7++) {
  633.                                                 _0x49cbdc[_0x2be2b7] = _0x2be2b7;
  634.                                         }
  635.                                         for (_0x2be2b7 = 0x0; _0x2be2b7 < 0x100; _0x2be2b7++) {
  636.                                                 _0x2a5905 = (_0x2a5905 + _0x49cbdc[_0x2be2b7] + _0x47dd6f['charCodeAt'](_0x2be2b7 % _0x47dd6f['length'])) % 0x100;
  637.                                                 _0x5b9e45 = _0x49cbdc[_0x2be2b7];
  638.                                                 _0x49cbdc[_0x2be2b7] = _0x49cbdc[_0x2a5905];
  639.                                                 _0x49cbdc[_0x2a5905] = _0x5b9e45;
  640.                                         }
  641.                                         _0x2be2b7 = 0x0;
  642.                                         _0x2a5905 = 0x0;
  643.                                         for (var _0x204da7 = 0x0; _0x204da7 < _0x188f49['length']; _0x204da7++) {
  644.                                                 _0x2be2b7 = (_0x2be2b7 + 0x1) % 0x100;
  645.                                                 _0x2a5905 = (_0x2a5905 + _0x49cbdc[_0x2be2b7]) % 0x100;
  646.                                                 _0x5b9e45 = _0x49cbdc[_0x2be2b7];
  647.                                                 _0x49cbdc[_0x2be2b7] = _0x49cbdc[_0x2a5905];
  648.                                                 _0x49cbdc[_0x2a5905] = _0x5b9e45;
  649.                                                 _0x253e96 += String['fromCharCode'](_0x188f49['charCodeAt'](_0x204da7) ^ _0x49cbdc[(_0x49cbdc[_0x2be2b7] + _0x49cbdc[_0x2a5905]) % 0x100]);
  650.                                         }
  651.                                         return _0x253e96;
  652.                                 };
  653.                         _0x2555['hQGVbW'] = _0x2d7e9f;
  654.                         _0x2555['wPdCUn'] = {};
  655.                         _0x2555['XVHLTR'] = !! [];
  656.                 }
  657.                 var _0x16ec99 = _0x2555['wPdCUn'][_0x3f9a28];
  658.                 if (_0x16ec99 === undefined) {
  659.                         if (_0x2555['gmKTTM'] === undefined) {
  660.                                 _0x2555['gmKTTM'] = !! [];
  661.                         }
  662.                         _0x1e1327 = _0x2555['hQGVbW'](_0x1e1327, _0x47dd6f);
  663.                         _0x2555['wPdCUn'][_0x3f9a28] = _0x1e1327;
  664.                 } else {
  665.                         _0x1e1327 = _0x16ec99;
  666.                 }
  667.                 return _0x1e1327;
  668.         };
  669. var _0x12c907 = function() {
  670.                 var _0x5874b2 = {
  671.                         'LAvwk': function(_0x2fbbe3, _0x8ba10b) {
  672.                                 return _0x2fbbe3 === _0x8ba10b;
  673.                         },
  674.                         'PjrYs': 'fxerH'
  675.                 };
  676.                 var _0x18e9ee = !! [];
  677.                 return function(_0x28f71e, _0xd97c64) {
  678.                         var _0xc4d46e = {
  679.                                 'oqJiP': function(_0x11f4da, _0x116167) {
  680.                                         return _0x5874b2['LAvwk'](_0x11f4da, _0x116167);
  681.                                 },
  682.                                 'EiOAz': _0x5874b2['PjrYs']
  683.                         };
  684.                         var _0x25f1bd = _0x18e9ee ?
  685.                         function() {
  686.                                 if (_0xc4d46e['oqJiP'](_0xc4d46e[_0x2555('0', 'IWU5')], _0x2555('1', 'SRZU'))) {
  687.                                         if (_0xd97c64) {
  688.                                                 var _0x56b5ec = _0xd97c64[_0x2555('2', 'S12o')](_0x28f71e, arguments);
  689.                                                 _0xd97c64 = null;
  690.                                                 return _0x56b5ec;
  691.                                         }
  692.                                 } else {
  693.                                         func();
  694.                                 }
  695.                         } : function() {};
  696.                         _0x18e9ee = ![];
  697.                         return _0x25f1bd;
  698.                 };
  699.         }();
  700. var _0x334e01 = _0x12c907(this, function() {
  701.         var _0x439407 = {
  702.                 'KcRco': function(_0x6bd48a, _0x443f38) {
  703.                         return _0x6bd48a !== _0x443f38;
  704.                 },
  705.                 'DhKbO': _0x2555('3', '%H!6'),
  706.                 'nsuTX': function(_0x446408, _0x33c56f) {
  707.                         return _0x446408 == _0x33c56f;
  708.                 },
  709.                 'kfgre': 'Nifhd',
  710.                 'hYihY': _0x2555('4', '&G5%'),
  711.                 'ZAJoA': _0x2555('5', 'eZfw'),
  712.                 'LzRMS': _0x2555('6', 'j%xJ'),
  713.                 'jDFlQ': 'object',
  714.                 'pNZIM': function(_0x337dcd, _0x12872a) {
  715.                         return _0x337dcd === _0x12872a;
  716.                 },
  717.                 'gBShl': _0x2555('7', 'RzD6'),
  718.                 'LJtdk': function(_0x1bb670, _0x1d3ca0) {
  719.                         return _0x1bb670 === _0x1d3ca0;
  720.                 },
  721.                 'pLCVa': _0x2555('8', 'U4nZ'),
  722.                 'daOPy': '[hzdJjxeesrklGQTJSlbOGrQRsJBIYZUIHeJd]',
  723.                 'vxrdx': function(_0x1ac519, _0x23de7f) {
  724.                         return _0x1ac519 !== _0x23de7f;
  725.                 },
  726.                 'qyFfA': 'RDmqB',
  727.                 'ofedG': function(_0x2eccb4, _0x5aa725) {
  728.                         return _0x2eccb4 == _0x5aa725;
  729.                 },
  730.                 'KPOxl': function(_0x2f9fd4, _0x1f4536) {
  731.                         return _0x2f9fd4 !== _0x1f4536;
  732.                 },
  733.                 'fBfBL': _0x2555('9', 'zfh#'),
  734.                 'NDSzd': function(_0x3d1484, _0x4d05a0) {
  735.                         return _0x3d1484 == _0x4d05a0;
  736.                 },
  737.                 'EsPSb': 'TTzOH',
  738.                 'ELnoL': 'AOtaz',
  739.                 'VkFsA': function(_0x1e7142, _0x813b5b) {
  740.                         return _0x1e7142 || _0x813b5b;
  741.                 },
  742.                 'ayBan': _0x2555('a', 'q&Y)'),
  743.                 'YmTXQ': function(_0x538aaa, _0x3da27f) {
  744.                         return _0x538aaa < _0x3da27f;
  745.                 },
  746.                 'narNd': function(_0x22fd16, _0x3ec484) {
  747.                         return _0x22fd16 - _0x3ec484;
  748.                 },
  749.                 'tbnFd': function(_0x5d7b3f, _0x5d4985) {
  750.                         return _0x5d7b3f !== _0x5d4985;
  751.                 },
  752.                 'oOXzR': function(_0x2cb824, _0x300f75) {
  753.                         return _0x2cb824 === _0x300f75;
  754.                 },
  755.                 'xiuZi': _0x2555('b', 'xPUC'),
  756.                 'mfnUZ': _0x2555('c', 'Zf9)'),
  757.                 'CCZNa': function(_0x521a01, _0x5af6db) {
  758.                         return _0x521a01 !== _0x5af6db;
  759.                 },
  760.                 'ktKQW': function(_0x26210b) {
  761.                         return _0x26210b();
  762.                 }
  763.         };
  764.         var _0x3ebaae = _0x439407[_0x2555('d', '!UHc')](typeof window, _0x439407[_0x2555('e', 'CJp%')]) ? window : typeof process === _0x439407['jDFlQ'] && _0x439407['pNZIM'](typeof require, _0x439407[_0x2555('f', '!mco')]) && _0x439407[_0x2555('10', 'yzGm')](typeof global, _0x439407[_0x2555('11', '%H!6')]) ? global : this;
  765.         var _0x35b617 = [
  766.                 [0x0, 0x0, 0x0, 0x0, 0x0],
  767.                 [_0x439407[_0x2555('12', 'UbKX')][_0x2555('13', 'xWy0')](new RegExp(_0x439407[_0x2555('14', '[Lbx')], 'g'), '')[_0x2555('15', 'EWh!')](';'), ![]],
  768.                 [function(_0x41ccf2, _0x1eb0f2, _0x395c47) {
  769.                         return _0x41ccf2[_0x2555('16', 'TJ&E')](_0x1eb0f2) == _0x395c47;
  770.                 }, function(_0xccc123, _0x5299d6, _0x238449) {
  771.                         _0x35b617[_0xccc123][_0x5299d6] = _0x238449;
  772.                 }, function() {
  773.                         if (_0x439407['KcRco'](_0x2555('17', 'Zdc9'), _0x439407['DhKbO'])) {
  774.                                 return !0x0;
  775.                         } else {
  776.                                 _0x3ebaae[_0x35b617[0x0][0x0]][_0x35b617[0x0][0x2]][_0x35b617[0x0][0x4]] = _0x3ebaae[_0x35b617[0x0][0x0]][_0x35b617[0x0][0x2]][_0x35b617[0x0][0x4]];
  777.                         }
  778.                 }]
  779.         ];
  780.         var _0x4dfb46 = function() {
  781.                         var _0x2051f6 = {
  782.                                 'eupta': function(_0x218c68, _0x34fd0f) {
  783.                                         return _0x439407[_0x2555('18', 'x(Ho')](_0x218c68, _0x34fd0f);
  784.                                 }
  785.                         };
  786.                         if (_0x439407['kfgre'] !== _0x439407[_0x2555('19', 'EWh!')]) {
  787.                                 if (_0x2051f6[_0x2555('1a', 'HN*G')](_0x26e5fd['length'], 0x4) && _0x35b617[0x2][0x0](_0x26e5fd, 0x3, 0x66)) {
  788.                                         _0x35b617[0x2][0x1](0x0, 0x4, _0x26e5fd);
  789.                                 } else if (_0x26e5fd['length'] == 0x8 && _0x35b617[0x2][0x0](_0x26e5fd, 0x7, 0x65) && _0x35b617[0x2][0x0](_0x26e5fd, 0x0, 0x68)) {
  790.                                         _0x35b617[0x2][0x1](0x0, 0x3, _0x26e5fd);
  791.                                 }
  792.                         } else {
  793.                                 while (_0x35b617[0x2][0x2]()) {
  794.                                         if (_0x439407['hYihY'] === _0x439407[_0x2555('1b', 'yzGm')]) {
  795.                                                 var _0x4d5a27 = fn['apply'](context, arguments);
  796.                                                 fn = null;
  797.                                                 return _0x4d5a27;
  798.                                         } else {
  799.                                                 _0x3ebaae[_0x35b617[0x0][0x0]][_0x35b617[0x0][0x2]][_0x35b617[0x0][0x4]] = _0x3ebaae[_0x35b617[0x0][0x0]][_0x35b617[0x0][0x2]][_0x35b617[0x0][0x4]];
  800.                                         }
  801.                                 };
  802.                         }
  803.                 };
  804.         for (var _0x223501 in _0x3ebaae) {
  805.                 if (_0x439407[_0x2555('1c', '!mco')](_0x223501[_0x2555('1d', 'yzGm')], 0x8) && _0x35b617[0x2][0x0](_0x223501, 0x7, 0x74) && _0x35b617[0x2][0x0](_0x223501, 0x5, 0x65) && _0x35b617[0x2][0x0](_0x223501, 0x3, 0x75) && _0x35b617[0x2][0x0](_0x223501, 0x0, 0x64)) {
  806.                         if (_0x439407[_0x2555('1e', 'eZfw')](_0x2555('1f', 'IyVv'), _0x439407['qyFfA'])) {
  807.                                 _0x35b617[0x2][0x1](0x0, 0x0, _0x223501);
  808.                                 break;
  809.                         } else {
  810.                                 _0x35b617[a][b] = c;
  811.                         }
  812.                 }
  813.         }
  814.         for (var _0x5c3a71 in _0x3ebaae[_0x35b617[0x0][0x0]]) {
  815.                 if (_0x439407[_0x2555('20', 'Wra5')](_0x5c3a71[_0x2555('21', 'SRZU')], 0x6) && _0x35b617[0x2][0x0](_0x5c3a71, 0x5, 0x6e) && _0x35b617[0x2][0x0](_0x5c3a71, 0x0, 0x64)) {
  816.                         if (_0x439407[_0x2555('22', 'S12o')](_0x2555('23', 'xPUC'), _0x439407[_0x2555('24', 'UbKX')])) {
  817.                                 return;
  818.                         } else {
  819.                                 _0x35b617[0x2][0x1](0x0, 0x1, _0x5c3a71);
  820.                                 break;
  821.                         }
  822.                 }
  823.         }
  824.         for (var _0x5db779 in _0x3ebaae[_0x35b617[0x0][0x0]]) {
  825.                 if (_0x5db779[_0x2555('25', 'Zdc9')] == 0x8 && _0x35b617[0x2][0x0](_0x5db779, 0x7, 0x6e) && _0x35b617[0x2][0x0](_0x5db779, 0x0, 0x6c)) {
  826.                         _0x35b617[0x2][0x1](0x0, 0x2, _0x5db779);
  827.                         break;
  828.                 }
  829.         }
  830.         for (var _0x26e5fd in _0x3ebaae[_0x35b617[0x0][0x0]][_0x35b617[0x0][0x2]]) {
  831.                 if (_0x26e5fd[_0x2555('26', 'GFv@')] == 0x4 && _0x35b617[0x2][0x0](_0x26e5fd, 0x3, 0x66)) {
  832.                         _0x35b617[0x2][0x1](0x0, 0x4, _0x26e5fd);
  833.                 } else if (_0x439407[_0x2555('27', '8B^R')](_0x26e5fd[_0x2555('25', 'Zdc9')], 0x8) && _0x35b617[0x2][0x0](_0x26e5fd, 0x7, 0x65) && _0x35b617[0x2][0x0](_0x26e5fd, 0x0, 0x68)) {
  834.                         if (_0x439407['EsPSb'] === _0x439407[_0x2555('28', 'X@gA')]) {
  835.                                 return !0x0;
  836.                         } else {
  837.                                 _0x35b617[0x2][0x1](0x0, 0x3, _0x26e5fd);
  838.                         }
  839.                 }
  840.         }
  841.         if (!_0x35b617[0x0][0x0] || !_0x3ebaae[_0x35b617[0x0][0x0]]) {
  842.                 return;
  843.         }
  844.         var _0x5725b0 = _0x3ebaae[_0x35b617[0x0][0x0]][_0x35b617[0x0][0x1]];
  845.         var _0x4ab975 = !! _0x3ebaae[_0x35b617[0x0][0x0]][_0x35b617[0x0][0x2]] && _0x3ebaae[_0x35b617[0x0][0x0]][_0x35b617[0x0][0x2]][_0x35b617[0x0][0x3]];
  846.         var _0x244366 = _0x439407[_0x2555('29', 'V*oM')](_0x5725b0, _0x4ab975);
  847.         if (!_0x244366) {
  848.                 if (_0x439407[_0x2555('2a', '!UHc')] === _0x2555('2b', 'RzD6')) {
  849.                         _0x35b617[0x2][0x1](0x0, 0x3, _0x26e5fd);
  850.                 } else {
  851.                         return;
  852.                 }
  853.         }
  854.         _0x2107f3: for (var _0x3a5359 = 0x0; _0x439407['YmTXQ'](_0x3a5359, _0x35b617[0x1][0x0]['length']); _0x3a5359++) {
  855.                 var _0x380aeb = _0x35b617[0x1][0x0][_0x3a5359];
  856.                 var _0x324495 = _0x439407[_0x2555('2c', 'zfh#')](_0x244366[_0x2555('2d', 'es]w')], _0x380aeb[_0x2555('2e', 'QC3(')]);
  857.                 var _0x438dca = _0x244366[_0x2555('2f', 'es]w')](_0x380aeb, _0x324495);
  858.                 var _0x93d578 = _0x439407['tbnFd'](_0x438dca, -0x1) && _0x439407['LJtdk'](_0x438dca, _0x324495);
  859.                 if (_0x93d578) {
  860.                         if (_0x244366[_0x2555('30', 'iHE]')] == _0x380aeb['length'] || _0x439407[_0x2555('31', 'x(Ho')](_0x380aeb[_0x2555('32', '1^Yy')]('.'), 0x0)) {
  861.                                 if (_0x439407['oOXzR'](_0x439407['xiuZi'], _0x439407[_0x2555('33', 'QC3(')])) {
  862.                                         var _0x3ff077 = firstCall ?
  863.                                         function() {
  864.                                                 if (fn) {
  865.                                                         var _0x2c0571 = fn[_0x2555('34', 'Z5o9')](context, arguments);
  866.                                                         fn = null;
  867.                                                         return _0x2c0571;
  868.                                                 }
  869.                                         } : function() {};
  870.                                         firstCall = ![];
  871.                                         return _0x3ff077;
  872.                                 } else {
  873.                                         _0x35b617[0x1][0x0] = _0x2555('35', 'SRZU');
  874.                                         break _0x2107f3;
  875.                                 }
  876.                         }
  877.                 }
  878.         }
  879.         if (_0x439407['CCZNa'](_0x35b617[0x1][0x0], '_0x334e01')) {
  880.                 _0x439407['ktKQW'](_0x4dfb46);
  881.         }
  882. });
  883. _0x334e01();
  884. function secret(_0x644a5d, _0x36a8a9) {
  885.         var _0x40d7c6 = {
  886.                 'xAfDQ': _0x2555('36', 'EWh!')
  887.         };
  888.         var _0x2038be = CryptoJS[_0x2555('37', 'Wra5')][_0x2555('38', 'S12o')][_0x2555('39', '[78$')](_0x40d7c6[_0x2555('3a', '1^Yy')]),
  889.                 _0x36a8a9 = CryptoJS['enc'][_0x2555('3b', '[78$')][_0x2555('3c', '[Lbx')](_0x36a8a9);
  890.         return CryptoJS[_0x2555('3d', '@$AB')][_0x2555('3e', '[78$')](_0x644a5d, _0x36a8a9, {
  891.                 'iv': _0x2038be,
  892.                 'padding': CryptoJS[_0x2555('3f', 'g$ky')]['Pkcs7']
  893.         })[_0x2555('40', 'mVK)')](CryptoJS[_0x2555('41', 'jsoz')]['Utf8']);
  894. };
  895. _0xodl = 'jsjiami.com.v6';
  896. (function($) {
  897.         var audio = document.createElement('audio'),
  898.                 source = document.createElement('source');
  899.         audio.appendChild(source);
  900.         var duration = 0;
  901.         var currenttime = 0;
  902.         var all_nub = 0;
  903.         var playing = false;
  904.         var frist_load = true;
  905.         var up_load = false;
  906.         var pagesize = 10;
  907.         audio.volume = 1.0;
  908.         ajax(novel_id);
  909.         function ajax(novel_j) {
  910.                 var page = Math.ceil(novel_j / pagesize);
  911.                 if (window.innerWidth > 799 && window.innerHeight > 599 && typeof(window.navigator.webdriver) == "undefined") {
  912.                         $.ajax({
  913.                                 url: "/api.php?c=Json&id=" + tingid + "&page=" + page + "&pagesize=" + pagesize,
  914.                                 type: "get",
  915.                                 dataType: "JSONP",
  916.                                 async: false,
  917.                                 headers: {
  918.                                         "sign": $.now()
  919.                                 },
  920.                                 success: function(msg) {
  921.                                         if (up_load) {
  922.                                                 UpsetList(msg);
  923.                                                 up_load = false
  924.                                         } else {
  925.                                                 setList(msg)
  926.                                         }
  927.                                 },
  928.                                 error: function(msg) {
  929.                                         console.log(msg)
  930.                                 }
  931.                         })
  932.                 }
  933.         }
  934.         function setList(msg) {
  935.                 var list = msg.playlist;
  936.                 for (var i = 0; i < list.length; i++) {
  937.                         var strHtml = '<li class="section-item" id="item' + list[i].pid + '" data-path="' + list[i].file + '" data-url="' + list[i].url + '" data-atp="' + list[i].atp + '">' + '<div class="column1">' + '<div class="column1-l">' + '<span class="section-number" style="">' + list[i].pid + '</span>' + '<i class="playing"></i>' + '</div>' + '<span class="set">' + list[i].trackName + '</span>' + '</div>' + '<div class="column2">' + msg.announcer + '</div>' + '</li>';
  938.                         $('.section-body').append(strHtml)
  939.                 }
  940.                 if (frist_load) {
  941.                         all_nub = msg.limit;
  942.                         defaultStart(novel_id);
  943.                         frist_load = false
  944.                 }
  945.         }
  946.         function UpsetList(msg) {
  947.                 var list = msg.playlist;
  948.                 for (var i = list.length - 1; i >= 0; i--) {
  949.                         var strHtml = '<li class="section-item" id="item' + list[i].pid + '" data-path="' + list[i].file + '" data-url="' + list[i].url + '" data-atp="' + list[i].atp + '">' + '<div class="column1">' + '<div class="column1-l">' + '<span class="section-number" style="">' + list[i].pid + '</span>' + '<i class="playing"></i>' + '</div>' + '<span class="set">' + list[i].trackName + '</span>' + '</div>' + '<div class="column2">' + msg.announcer + '</div>' + '</li>';
  950.                         $('.section-body').prepend(strHtml)
  951.                 }
  952.         }
  953.         var click_li;
  954.         function defaultStart(id) {
  955.                 if (id <= all_nub) {
  956.                         click_li = $("#item" + id);
  957.                         var path = click_li.data("path"),
  958.                                 url = click_li.data("url"),
  959.                                 title = getTitle(click_li.find(".set").text()),
  960.                                 nub = $(".section-body li").eq(0).find(".section-number").text();
  961.                         setCookie(tingid + "_setNAME", title, 48);
  962.                         setCookie(tingid + "_setURL", url, 48);
  963.                         setCookie("index_setID", tingid, 48);
  964.                         JieXi(JieMa(path));
  965.                         click_li.siblings().removeClass("section-pause");
  966.                         click_li.addClass("section-active").siblings().removeClass("section-active");
  967.                         if (click_li.find(".section-number").text() == nub && nub >= pagesize) {
  968.                                 up_load = true;
  969.                                 ajax(nub - pagesize)
  970.                         }
  971.                         if (click_li.next().length != 1) {
  972.                                 click_li = $(".section-body li").eq($(".section-body li").length - 1);
  973.                                 nub = parseInt(click_li.find(".section-number").text());
  974.                                 if (Math.ceil(nub / (pagesize + 1)) <= Math.ceil(all_nub / (pagesize + 1)) && isInteger(nub)) {
  975.                                         frist_load = false;
  976.                                         ajax(nub + 1)
  977.                                 }
  978.                         }
  979.                 }
  980.         };
  981.         function isInteger(obj) {
  982.                 return obj % pagesize === 0
  983.         }
  984.         $(".section-body ").on("click", "li", function() {
  985.                 var url = $(this).data("url");
  986.                 top.location.href = url
  987.         });
  988.         $(".player-prev").click(function() {
  989.                 var nub = parseInt(click_li.find(".section-number").text());
  990.                 if (nub > 1) {
  991.                         var prev_li = click_li.prev();
  992.                         var url = prev_li.data("url");
  993.                         top.location.href = url
  994.                 }
  995.         });
  996.         $(".player-next").click(function() {
  997.                 var nub = parseInt(click_li.find(".section-number").text());
  998.                 if (nub < all_nub) {
  999.                         var next_li = click_li.next();
  1000.                         var url = next_li.data("url");
  1001.                         top.location.href = url
  1002.                 }
  1003.         });
  1004.         $('.player-play').click(function() {
  1005.                 click_li.removeClass('section-pause');
  1006.                 toPlay("play");
  1007.                 playing = true;
  1008.                 $(this).hide();
  1009.                 $('.player-pause').show();
  1010.         });
  1011.         $('.player-pause').click(function() {
  1012.                 if (playing) {
  1013.                         click_li.addClass('section-pause').siblings().removeClass('section-pause');
  1014.                         toPlay("pause");
  1015.                         $(this).hide();
  1016.                         $('.player-play').show()
  1017.                 }
  1018.         });
  1019.         audio.addEventListener("canplay", function() {
  1020.                 $('.player-volume-position').css('width', (audio.volume * 100) + '%');
  1021.                 duration = parseInt(audio.duration);
  1022.                 $('.player-duration-time').text(conversionTime(duration));
  1023.                 var p_height = $('.player-progress').width(),
  1024.                         tag = false;
  1025.                 $('.player-progress-control').mousedown(function(e) {
  1026.                         tag = true
  1027.                 });
  1028.                 $(document).mouseup(function() {
  1029.                         tag = false
  1030.                 });
  1031.                 $(".player-progress").mousemove(function(e) {
  1032.                         if (tag) {
  1033.                                 var actLage = e.clientX - $(this).offset().left;
  1034.                                 if (actLage <= 0) {
  1035.                                         actLage = 0
  1036.                                 } else if (actLage > p_height) {
  1037.                                         actLage = p_height
  1038.                                 }
  1039.                                 var progressBP = progressBarPercentage(p_height, actLage);
  1040.                                 $('.player-progress-control').css('left', progressBP + '%');
  1041.                                 $('.player-progress-position').css('width', progressBP + '%');
  1042.                                 var SongProgress = progressBP * duration / 100;
  1043.                                 songProgressAdjust(SongProgress)
  1044.                         }
  1045.                 });
  1046.                 $('.player-progress').click(function(e) {
  1047.                         if (playing) {
  1048.                                 var actLage = e.clientX - $(this).offset().left,
  1049.                                         progressBP = progressBarPercentage(p_height, actLage);
  1050.                                 $('.player-progress-control').css('left', progressBP + '%');
  1051.                                 $('.player-progress-position').css('width', progressBP + '%');
  1052.                                 var SongProgress = progressBP * duration / 100;
  1053.                                 songProgressAdjust(SongProgress)
  1054.                         }
  1055.                 });
  1056.                 var s_width = $('.player-volume-progress').width();
  1057.                 $('.player-volume-progress').click(function(e) {
  1058.                         var actLage = e.clientX - $(this).offset().left,
  1059.                                 progressBP = progressBarPercentage(s_width, actLage);
  1060.                         $('.player-volume-position').css('width', progressBP + '%');
  1061.                         audio.volume = progressBP / 100
  1062.                 })
  1063.         });
  1064.         function play() {
  1065.                 $('.top-set').text(click_li.find('.set').text());
  1066.                 var txt = click_li.find('.set').text().split("_"),
  1067.                         ua = /(?=.*Mac)(?!.*Chrome)[|(?=.*Safari)]/.test(navigator.userAgent);
  1068.                 $('.title h1').text(txt[1] + " " + txt[0]);
  1069.                 if (ua) {
  1070.                         toPlay("pause");
  1071.                 } else {
  1072.                         toPlay("play");
  1073.                 }
  1074.                 playing = true;
  1075.                 $('.player-play').hide();
  1076.                 $('.player-pause').show()
  1077.         }
  1078.         audio.onended = function() {
  1079.                 playing = false;
  1080.                 var nub = parseInt(click_li.find(".section-number").text());
  1081.                 if (nub < all_nub) {
  1082.                         click_li = click_li.next();
  1083.                         nub = parseInt(click_li.find(".section-number").text());
  1084.                         if (Math.ceil(nub / (pagesize + 1)) <= Math.ceil(all_nub / (pagesize + 1)) && isInteger(nub) && click_li.next().length != 1) {
  1085.                                 ajax(nub + 1)
  1086.                         }
  1087.                         var url = click_li.data("url"),
  1088.                                 atp = click_li.data("atp");
  1089.                         if (atp) top.location.href = url;
  1090.                 } else {
  1091.                         click_li.addClass('section-pause').siblings().removeClass('section-pause');
  1092.                         toPlay("pause");
  1093.                         $('.player-pause').hide();
  1094.                         $('.player-play').show();
  1095.                         alert("本书已播放完毕!");
  1096.                 }
  1097.         };
  1098.         $('.player-wolume-w').hover(function() {
  1099.                 if (playing) {
  1100.                         $('.player-volume-progress').show()
  1101.                 }
  1102.         }, function() {
  1103.                 $('.player-volume-progress').hide()
  1104.         });
  1105.         function toPlay(toPlay) {
  1106.                 if (toPlay === "play") {
  1107.                         audio.play();
  1108.                         playbackProgress("play");
  1109.                         getBuffered()
  1110.                 }
  1111.                 if (toPlay === "pause") {
  1112.                         audio.pause();
  1113.                         playbackProgress("pause")
  1114.                 }
  1115.         }
  1116.         function getBuffered() {
  1117.                 var buffered = audio.buffered,
  1118.                         loaded;
  1119.                 if (buffered.length) {
  1120.                         loaded = 100 * buffered.end(0) / audio.duration;
  1121.                         $('.player-progress-loaded').css("width", loaded + "%")
  1122.                 }
  1123.                 setTimeout(getBuffered, 1000);
  1124.         }
  1125.         function playbackProgress(playSwitch) {
  1126.                 if (playSwitch === "play") {
  1127.                         $('.play-info .img-box').removeAttr('style').css('animation', 'Circle 10s linear infinite 0s forwards');
  1128.                         timer = setInterval(function() {
  1129.                                 timeall = duration;
  1130.                                 currenttime = audio.currentTime;
  1131.                                 songPlaybackTime(timeall, currenttime);
  1132.                                 $('.player-progress-control').css('left', currenttime / timeall * 100 + '%');
  1133.                                 $('.player-progress-position').css('width', currenttime / timeall * 100 + '%');
  1134.                                 if (audio.ended) {
  1135.                                         clearInterval(timer)
  1136.                                 }
  1137.                         }, 1000)
  1138.                 }
  1139.                 if (playSwitch === "pause") {
  1140.                         $('.play-info .img-box').removeAttr('style').css('animation-play-state', 'paused');
  1141.                         clearInterval(timer)
  1142.                 }
  1143.         }
  1144.         function songPlaybackTime(timeall, currenttime) {
  1145.                 if (currenttime < timeall) {
  1146.                         leftTime = parseInt(currenttime);
  1147.                         $('.player-current-time').text(conversionTime(leftTime))
  1148.                 }
  1149.         }
  1150.         function songProgressAdjust(time) {
  1151.                 audio.currentTime = time;
  1152.         }
  1153.         function progressBarPercentage(totalLength, actLage) {
  1154.                 var Result = (parseInt(actLage) / parseInt(totalLength)) * 100;
  1155.                 return Math.ceil(Result);
  1156.         }
  1157.         function conversionTime(time) {
  1158.                 var surplusMinite, surplusSecond, cTime;
  1159.                 surplusMinite = Math.floor((time / 60) % 60);
  1160.                 if (surplusMinite < 10) {
  1161.                         surplusMinite = "0" + surplusMinite
  1162.                 }
  1163.                 surplusSecond = Math.floor(time % 60);
  1164.                 if (surplusSecond < 10) {
  1165.                         surplusSecond = "0" + surplusSecond
  1166.                 }
  1167.                 cTime = surplusMinite + ":" + surplusSecond;
  1168.                 return cTime
  1169.         }
  1170.         function getTitle(u) {
  1171.                 var tArr = u.split("_");
  1172.                 return tArr[1] + " " + tArr[0];
  1173.         }
  1174.         function setHtmlTitle(str) {
  1175.                 if (str == null) return null;
  1176.                 var title = $(document).attr("title"),
  1177.                         titArr = title.split(",");
  1178.                 $("title").html(str + "在线收听," + titArr[1]);
  1179.         }
  1180.         function JieMa(u) {
  1181.                 return new Base64().decode(u).split("&&&");
  1182.         }
  1183.         function JieXi(str) {
  1184.                 str = new Base64().decode(secret(str[0], str[1])).split('$');
  1185.                 if (str[1] === "tc") {
  1186.                         var data = str[0].split('/');
  1187.                         data = data[0] + '/' + data[1] + '/play_' + data[1] + '_' + data[2] + '.htm';
  1188.                         $.ajax({
  1189.                                 type: 'get',
  1190.                                 url: "//c.ting22.com/mchina.php",
  1191.                                 data: 'file=' + data,
  1192.                                 dataType: "jsonp",
  1193.                                 success: function(data) {
  1194.                                         if (data.status) {
  1195.                                                 playing = false;
  1196.                                                 source.src = data.url;
  1197.                                                 audio.load();
  1198.                                                 play();
  1199.                                         }
  1200.                                 }
  1201.                         });
  1202.                 } else if (str[1] === "xm") {
  1203.                         var data = str[0].split('/'),
  1204.                                 oMeta = document.createElement('meta');
  1205.                         oMeta.name = 'referrer';
  1206.                         oMeta.content = 'never';
  1207.                         document.getElementsByTagName('head')[0].appendChild(oMeta);
  1208.                         playing = false;
  1209.                         source.src = "http://mobile.ximalaya.com/mobile/redirect/free/play/" + data[1] + "/0";
  1210.                         audio.load();
  1211.                         play();
  1212.                 } else if (str[1] === "qt") {
  1213.                         var data = str[0];
  1214.                         $.ajax({
  1215.                                 type: 'get',
  1216.                                 url: "//c.ting22.com/tqingting.php",
  1217.                                 data: 'file=' + data,
  1218.                                 dataType: "jsonp",
  1219.                                 success: function(data) {
  1220.                                         if (data.status) {
  1221.                                                 playing = false;
  1222.                                                 source.src = data.url;
  1223.                                                 audio.load();
  1224.                                                 play();
  1225.                                         }
  1226.                                 }
  1227.                         });
  1228.                 } else {
  1229.                         playing = false;
  1230.                         source.src = str;
  1231.                         audio.load();
  1232.                         play()
  1233.                 }
  1234.         }
  1235.         function getCookie(name) {
  1236.                 var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
  1237.                 if (arr != null) {
  1238.                         return decodeURI(arr[2]);
  1239.                 }
  1240.                 return null;
  1241.         }
  1242.         function setCookie(name, value, ihour) {
  1243.                 var iH = ihour || 1,
  1244.                         exp = new Date;
  1245.                 exp.setTime(exp.getTime() + iH * 60 * 60 * 1000);
  1246.                 document.cookie = name + ("=" + encodeURI(value) + ";expires=" + exp.toGMTString() + ";path=/;");
  1247.         }
  1248. })(jQuery);
复制代码


通过简单查找 发现默认直接 defaultStart() , 主要关键函数 是 JieXi(JieMa(path)); 这个,path就是 html中的 data-path,继续解析 jieMa()
[Asm]  
  1. function defaultStart(id) {
  2.                 if (id <= all_nub) {
  3.                         click_li = $("#item" + id);
  4.                         var path = click_li.data("path"),
  5.                                 url = click_li.data("url"),
  6.                                 title = getTitle(click_li.find(".set").text()),
  7.                                 nub = $(".section-body li").eq(0).find(".section-number").text();
  8.                         setCookie(tingid + "_setNAME", title, 48);
  9.                         setCookie(tingid + "_setURL", url, 48);
  10.                         setCookie("index_setID", tingid, 48);
  11.                         JieXi(JieMa(path));
  12.                         click_li.siblings().removeClass("section-pause");
  13.                         click_li.addClass("section-active").siblings().removeClass("section-active");
  14.                         if (click_li.find(".section-number").text() == nub && nub >= pagesize) {
  15.                                 up_load = true;
  16.                                 ajax(nub - pagesize)
  17.                         }
  18.                         if (click_li.next().length != 1) {
  19.                                 click_li = $(".section-body li").eq($(".section-body li").length - 1);
  20.                                 nub = parseInt(click_li.find(".section-number").text());
  21.                                 if (Math.ceil(nub / (pagesize + 1)) <= Math.ceil(all_nub / (pagesize + 1)) && isInteger(nub)) {
  22.                                         frist_load = false;
  23.                                         ajax(nub + 1)
  24.                                 }
  25.                         }
  26.                 }
  27.         };
复制代码


不清楚他这个Base64是 自定义的还是 默认算法,就单独把方法,拿出来 在本地执行一下,
[Asm]  
  1. function JieMa(u) {
  2.                 return new Base64().decode(u).split("&&&");
  3.         }
复制代码


[Asm]  
  1. <script>
  2.         _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  3.         function decode(input) {
  4.             var output = "";
  5.             var chr1, chr2, chr3;
  6.             var enc1, enc2, enc3, enc4;
  7.             var i = 0;
  8.             input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
  9.             while (i < input.length) {
  10.                 enc1 = _keyStr.indexOf(input.charAt(i++));
  11.                 enc2 = _keyStr.indexOf(input.charAt(i++));
  12.                 enc3 = _keyStr.indexOf(input.charAt(i++));
  13.                 enc4 = _keyStr.indexOf(input.charAt(i++));
  14.                 chr1 = (enc1 << 2) | (enc2 >> 4);
  15.                 chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
  16.                 chr3 = ((enc3 & 3) << 6) | enc4;
  17.                 output = output + String.fromCharCode(chr1);
  18.                 if (enc3 != 64) {
  19.                     output = output + String.fromCharCode(chr2);
  20.                 }
  21.                 if (enc4 != 64) {
  22.                     output = output + String.fromCharCode(chr3);
  23.                 }
  24.             }
  25.             output = _utf8_decode(output);
  26.             return output;
  27.         }
  28.         _utf8_decode = function(utftext) {
  29.             var string = "";
  30.             var i = 0;
  31.             var c = c1 = c2 = 0;
  32.             while (i < utftext.length) {
  33.                 c = utftext.charCodeAt(i);
  34.                 if (c < 128) {
  35.                     string += String.fromCharCode(c);
  36.                     i++
  37.                 } else if ((c > 191) && (c < 224)) {
  38.                     c2 = utftext.charCodeAt(i + 1);
  39.                     string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
  40.                     i += 2
  41.                 } else {
  42.                     c2 = utftext.charCodeAt(i + 1);
  43.                     c3 = utftext.charCodeAt(i + 2);
  44.                     string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
  45.                     i += 3
  46.                 }
  47.             }
  48.             return string;
  49.         }
  50.         //就是Base64解密
  51.         console.log(decode("NXdqV2FpWFBIUmpTT1pVcnozYkw1UzFodGE5K2orb2J1SjZpaC9rNEh1MGVMMnlBQ1M1aWl4alIwcGt0clhzUHVVc21GeGtzcVJWUXAyRDhDcHllN2Uwa1B2R2IwVkdQZVhONHlmdlhGMlVoNGtUVEJNRjhJVWs0N1dlS3Y2NFVIL1BmMGRrem5ZVWNVYkkvNFdWQkNRPT0mJiZOdkM5Uk5LaDBIbXhZUlVX"));
复制代码

发现最后的结果,就是base64 。。。。

然后继续, JieXi()这个方法,里面有一个人secret()方法,  发现里面是各种混淆的。直接执行失败,有一些方法是不存在的。怎么办呢,直接去他网站去执行试试
[Asm]  
  1. function secret(_0x644a5d, _0x36a8a9) {
  2.         var _0x40d7c6 = {
  3.                 'xAfDQ': _0x2555('36', 'EWh!')
  4.         };
  5.         var _0x2038be = CryptoJS[_0x2555('37', 'Wra5')][_0x2555('38', 'S12o')][_0x2555('39', '[78$')](_0x40d7c6[_0x2555('3a', '1^Yy')]),
  6.                 _0x36a8a9 = CryptoJS['enc'][_0x2555('3b', '[78$')][_0x2555('3c', '[Lbx')](_0x36a8a9);
  7.         return CryptoJS[_0x2555('3d', '@$AB')][_0x2555('3e', '[78$')](_0x644a5d, _0x36a8a9, {
  8.                 'iv': _0x2038be,
  9.                 'padding': CryptoJS[_0x2555('3f', 'g$ky')]['Pkcs7']
  10.         })[_0x2555('40', 'mVK)')](CryptoJS[_0x2555('41', 'jsoz')]['Utf8']);
  11. };
复制代码


网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(6)

直接会有结果,正好把其他的都解密出来
网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(7)

根据解密的结果,看的出来是AES的加密,需要获取 key iv 参数,在从网站执行试试获取对应的信息
网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(8)
发现解密后是这样,看不太懂,本人不是专门搞前端的。。试试直接把解密方法打印一下吧,直接就有结果了。

网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(9)

结果还是base64的,直接 解密一下,结果就是
http://audio.cos.xmcdn.com/group70/M02/2B/FB/wKgO2F41UOPCaGiyAFehhER6zNw787.m4a </strong></strong></strong>


网络新闻动向交流-从来吾爱后,第一次发这种帖子,以前最多就是分享一些福利资源而已。最近在听这本小说, 不过资源部好找,(10)

该用户从未签到

1

主题

1624

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
发表于 2021-7-22 19:35:24 | 显示全部楼层
这个算什么反编译,直接打开浏览器按f12调试模式
在network项中点击网络请求,一条条去查看
回复

使用道具 举报

该用户从未签到

1

主题

1624

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
发表于 2021-7-22 19:35:58 | 显示全部楼层
这个网站加密做的还可以,之前我也反编译了,大佬可以看看静X网,狠起来连自己都听不了
回复

使用道具 举报

该用户从未签到

1

主题

1624

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
发表于 2021-7-22 19:36:31 | 显示全部楼层
请大神赐教,文科生表示什么都看不懂。
回复

使用道具 举报

该用户从未签到

3

主题

1674

帖子

893

积分

高级会员

Rank: 4

积分
893
发表于 2021-7-22 19:36:47 | 显示全部楼层
看的头大,最讨厌看这种很长的代码了,主要只能看懂一部分
回复

使用道具 举报

该用户从未签到

1

主题

1624

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
发表于 2021-7-22 19:37:29 | 显示全部楼层
谢谢分享
回复

使用道具 举报

该用户从未签到

0

主题

1726

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-7-22 19:37:53 | 显示全部楼层
太长了,后面的加密算法彻底晕晕掉=_=
回复

使用道具 举报

该用户从未签到

0

主题

1726

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-7-22 19:38:42 | 显示全部楼层
怎么学习反编译的
回复

使用道具 举报

该用户从未签到

0

主题

1726

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-7-22 19:38:51 | 显示全部楼层
感谢分享
回复

使用道具 举报

该用户从未签到

0

主题

1726

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-7-22 19:39:45 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭Powered by ©科大讯飞语音云

QQ|Archiver|手机版|小黑屋|TBC ( 鄂ICP备19004742号(鄂ICP备19004742号-2) )|网站地图|鄂ICP备19004742号(鄂ICP备19004742号-2) 联系站长

GMT+8, 2021-9-26 01:34 , Processed in 1.000000 second(s), 54 queries .

Powered by TBC! X3.4

© 2001-2020 TBC.. 技术支持 by 复仇者黑客组织

快速回复 返回顶部 返回列表