爬虫&逆向--Day18&Day19--扣JS逆向练习【案例3:爱给网】
一、案例【爱给】
案例地址链接:https://www.aigei.com/sound/class/
案例爬取链接:https://www.aigei.com/f/d/audio_mp3
1.1、入口定位--请求堆栈

经过分析我们确定,该案例有请求加密和响应解密,其中在请求加密中,加密是和请求头中的x-requested-etag: 还有请求参数v有关系,所以我们需要破解这两个参数
该案例我们按照正常的加密搜索:encrypt( 会搜索出来很多的匹配结果
通过key关键字都v 也会搜索出来很多的匹配结果
经过分析该网站适合使用请求堆栈

1.2、代码分析



1.3、扣JS

1.4、补充依赖【$、全局搜索、Class文件】

以上的错误是一个经典错误,和前端的一个组件JQuery有关系,

经过搜索确定是JQuery,这个时候我们就需要搜索答案如何处理,可以借助AI工具


方案一:使用jsdom和jQuery 首先,安装必要的包: npm install jquery jsdom 然后,在你的代码中,需要先设置jsdom环境,并将jQuery的`$`和`window`等变量注入到全局命名空间(或者传入你的代码中)。 示例设置代码: const { JSDOM } = require('jsdom'); const { window } = new JSDOM(); const $ = require('jquery')(window);
当我们在搜索一些找不到的内容时,如果当前的文件找不到,我们可以去全局进行搜索




以上的M值就是Y值,通过输入【M值/Y值】经过cbbj方法得到V值

D = cqbj(Y) 所以D来自于Y Y来自于J


秉着缺什么搜什么补什么,当搜索到的内容在class文件中


var F = $('#pIii111lllE')['val'](); // 这句话的意思:页面中有个标签id值等于pIii111lllE的值 如何处理: var F = "9fc66f750be7efcc678a0c419dd18302c2010565de9e74c33736d4839a8a23c4" // 找到id标签的值,假当固定值直接赋值给F


1.5、代码文件
1.5.1、Python文件:aigei_1.py
import requests from lxml import etree import execjs import re # 先打开我们扣的JS代码,然后逐行读取JS代码 with open("aigei.js", "r", encoding="utf-8") as f: js_str = f.read() # execjs.compile 编译这个js代码 创建编译器 # js_code_compile 可以调用JS代码中的任意一个函数 js_compile = execjs.compile(js_str) """ 发送class文档请求,获取我们需要爬取的目标接口加密请求需要的数据 var vvvvvvviisssss = "4d6507b8066a"; <input id="pIii111lllE" type="hidden" value="9fc66f750be7efcc678a0c419dd18302099ed6da4d1179c55463179daaf02e79"> """ # 发送class请求,并解析,获取我们目标请求需要数据 cookies = { 'audio_play_last_position': '2975.133', 'gei_d_u': '40db6161a6f64ad8825fd595c026d1d8', 'gei_d_1': 'd9e38d327d1093e88523ac4cab4e89a01bb083a23e5050260b8b26794a95fdb8aff62f4dcb704c8d425db8b17017a26bd47e6094640e2d199e7e51e07c7fa402', 'hhhssi1ill1i': '87c8c1ee2b05a30e834eb742063bb154', 'oOO0OO0oOO00oo0o': 'true', 'geiweb-v': 'zZ+S93HA1QcgSamNOxD3ezCRRC5FE98Mffr+mHjOxFxqeqTxyq2cIl6w57cWApcr', 'OooOO000oOOO00o': '5b78eab279584eb6b21e185faf0d8161', 'Hm_lvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9': '1756195226', 'HMACCOUNT': 'C3562EDA6D20764A', 'SESSION': '76e06155-aa2e-4ec4-8e54-1591ea48317e', 'SERVERID': '8e6d20fd2c760c1a50e8e9f62a2811e6|1756199077|1756195222', 'Hm_lpvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9': '1756199078', } headers = { 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9', 'cache-control': 'max-age=0', # 'cookie': 'audio_play_last_position=2975.133; gei_d_u=40db6161a6f64ad8825fd595c026d1d8; gei_d_1=d9e38d327d1093e88523ac4cab4e89a01bb083a23e5050260b8b26794a95fdb8aff62f4dcb704c8d425db8b17017a26bd47e6094640e2d199e7e51e07c7fa402; hhhssi1ill1i=87c8c1ee2b05a30e834eb742063bb154; oOO0OO0oOO00oo0o=true; geiweb-v=zZ+S93HA1QcgSamNOxD3ezCRRC5FE98Mffr+mHjOxFxqeqTxyq2cIl6w57cWApcr; OooOO000oOOO00o=5b78eab279584eb6b21e185faf0d8161; Hm_lvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9=1756195226; HMACCOUNT=C3562EDA6D20764A; SESSION=76e06155-aa2e-4ec4-8e54-1591ea48317e; SERVERID=8e6d20fd2c760c1a50e8e9f62a2811e6|1756199077|1756195222; Hm_lpvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9=1756199078', 'priority': 'u=0, i', 'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36', } url = "https://www.aigei.com/sound/class/" response = requests.get(url=url, cookies=cookies, headers=headers) page_text = response.text # print("page_text:::", page_text) # HTML()专门用来解析网络请求到的页面源码数据 接收的是字符串 parse存放的是html文档的文件 tree = etree.HTML(response.text) cccllpptttgt = re.search( r'cccllpptttgt: \'([^\']+)\'', # 匹配单引号内的值 tree.xpath('//script[contains(text(), "cccllpptttgt:")]')[0].text ).group(1) # print("cccllpptttgt:::", cccllpptttgt) # 解析出第一页每个音频文件的input元素 # <input type="hidden" id="itemInfoToken_audio_mp3_117884418" itemid="117884418" fuid="" class="" ftype="audio_mp3" fmodel="play" rurl="117884418" extime="1756350000389" token="fe4aa7f967ce021f68040c52391e3954" cbk="callBackAudioFilePlay" rcbk="downloadAudioCallback"> items = tree.xpath("//input[@type='hidden' and starts-with(@id, 'itemInfoToken_audio_mp3_')]") # print("items:::", items) # 取出计算ETag值的实参U F = tree.xpath('//*[@id="pIii111lllE"]/@value')[0] # print('U::::', F) # 根据input标签,取出需要的值,组装W for item in items: rurl = item.get('rurl') extime = item.get('extime') token = item.get('token') # 组合js文件需要的实参W # params_J = { # "type": "audio_mp3", # "fileUuid": "", # "model": "play", # # "model": "playLog", # "itemId": rurl, # "rescUrl": rurl, # "expireTime": extime, # "token": token, # "callBack": "callBackAudioFilePlay", # "resJsCallback": "downloadAudioCallback" # } params_J = { "type": "audio_mp3", "fileUuid": "", "model": "play", "itemId": rurl, "item": None, "rescUrl": rurl, "expireTime": extime, "token": token, "callBack": "callBackAudioFilePlay", "resJsCallback": "downloadAudioCallback", "custPlayCallBack": None, "downUuid": None, "customData": { "0": { "jQuery11020794731646544379": 4191 }, "context": { "jQuery11020794731646544379": 4191 }, "length": 1 } } v_ETag = js_compile.call('fget', params_J, F) print(v_ETag['etag']) # 发送目标爬虫数据 # headers中需要替换 cccllpptttgt、x-requested-etag # 请求参数中需要替换V cookies = { 'gei_d_u': '0255a4022dc14ea4a925fa1a5a9e6b8f', 'gei_d_1': 'd9e38d327d1093e839f5b2f9d1937fe75c61bb0d80e3a9dcdd30dee85031f1e424834bdb5b12c1e4036900e520d75a0fbe5e8f8d6a64808c8571a4cabac00a7c', 'SESSION': '22169d86-94d2-42de-86b3-4afeeb79549d', 'geiweb-v': 'zZ+S93HA1QdNfcOP/TnRkiaFdmXc6qirZyRTSFeYwBjcTbF5PCQRX0B55ahuU/v9', 'hhhssi1ill1i': '87c8c1ee2b05a30e834eb742063bb154', 'oOO0OO0oOO00oo0o': 'true', 'OooOO000oOOO00o': 'cbf475b74ebe48f6b6968b46c84ab978', 'Hm_lvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9': '1756540160', 'HMACCOUNT': 'C6D31267DE171E44', 'Hm_lpvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9': '1756540163', 'SERVERID': '31234a7bd8ff50a386f3e53c5f85a5fd|1756540182|1756540159', } headers = { 'accept': '*/*', 'accept-language': 'zh-CN,zh;q=0.9', 'cccllpptttgt': cccllpptttgt, 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', # 'cookie': 'gei_d_u=0255a4022dc14ea4a925fa1a5a9e6b8f; gei_d_1=d9e38d327d1093e839f5b2f9d1937fe75c61bb0d80e3a9dcdd30dee85031f1e424834bdb5b12c1e4036900e520d75a0fbe5e8f8d6a64808c8571a4cabac00a7c; SESSION=22169d86-94d2-42de-86b3-4afeeb79549d; geiweb-v=zZ+S93HA1QdNfcOP/TnRkiaFdmXc6qirZyRTSFeYwBjcTbF5PCQRX0B55ahuU/v9; hhhssi1ill1i=87c8c1ee2b05a30e834eb742063bb154; oOO0OO0oOO00oo0o=true; OooOO000oOOO00o=cbf475b74ebe48f6b6968b46c84ab978; Hm_lvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9=1756540160; HMACCOUNT=C6D31267DE171E44; Hm_lpvt_0e0ebfc9c3bdbfdcaa48ccbc43e864f9=1756540163; SERVERID=31234a7bd8ff50a386f3e53c5f85a5fd|1756540182|1756540159', 'origin': 'https://www.aigei.com', 'priority': 'u=1, i', 'referer': 'https://www.aigei.com/sound/class/', 'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36', 'x-requested-etag': v_ETag['etag'], 'x-requested-with': 'XMLHttpRequest', } data = { 'v': v_ETag['v'], } response = requests.post('https://www.aigei.com/f/d/audio_mp3', cookies=cookies, headers=headers, data=data) print(response.text) print(response) break
1.5.2、JS文件:aigei.js
// 就是创建一个JQuery对象 const {JSDOM} = require('jsdom'); const {window} = new JSDOM(); const $ = require('jquery')(window); //**************************************** 一、V值的依赖 ****************** var dZ = {}; dZ['il0oo0Oli1il1'] = 0x9 - 0x3; var lll1i111lOOO0o00ii1 = dZ; var llliiii1i0o0o0Oii1 = { ili1lo0o0O: 98515 - 98500 - 9 }; var lili1lli0o000oO = { iliOOO00ool1: 18 - 9 }; var lllio0o0OO1i111li1lii1 = { ilio0oOOi1il1: 34 - 33 }; var dfu = function (T, V, x, u, Q, O, o) { var G = fInction(T, V); G += '-' + x + '-' + u; var j = {}; return j['ud'] = getUUID(), j['v'] = G, j['type'] = T, j['rescUrl'] = V, j['pkg'] = O || ![], j['saveAs'] = o, j['vis'] = vvvvvvviisssss, Q && (j['vc'] = Q), j; } , cqbj = function (i) { var T = { 'v': ssssdddttssssStr(i) }; return T; } , prest = function (i) { var T = new llii1i1iill(); return T['ilil111lii'](i); }; function ssssdddttssssStr(i) { var T = jkks(i) , V = Math['floor'](Math['random']() * 0x5) + 0x1; for (var x = 0x0; x < V; x++) { T = jkkc(T); } return T = T['substring'](0x0, 0x20) + V + T['substring'](0x20, T['length']), T; } function nmnmue23(i) { var T = ''; return $['each'](i, function (V, x) { T += ',\x22' + V + '\x22:\x22' + x + '\x22'; }), T != '' && (T = T['substring'](0x1)), '{' + T + '}'; } function ueh3875(i) { var T = ''; return $['each'](i, function (V, x) { T += ';' + V + ':' + x; }), T != '' && (T = T['substring'](0x1)), '{' + T + '}'; } function jkks(i) { return 0x7d6c0 - 0x14e75 * 0x6 == 0x2 ? nmnmue23(i) : ueh3875(i); } function li1li1li(i) { var T = 0x0; if (!isNull(i)) for (var V = 0x0; V < i['length']; V++) { T = T * 0x1f + i['charCodeAt'](V), T = intValue(T); } return T; } var eh = {}; eh['ili10ooOO1'] = 0xf - 0x9; var llli111li1lil1 = eh; function intValue(i) { var T = 0x7fffffff , V = -0x80000000; if (i > T || i < V) return i &= 0xffffffff; return i; } function li1iiil1(i) { var T = ''; i = i + ''; for (var V = 0x1; V <= i['length']; V++) { T += getStrPos(i, i['length'] - V + 0x1); } return T; } function getStrPos(i, T) { i = i + ''; var V = i['substring'](T - 0x1, T); return V; } function isNull(i) { return i == null || i['value'] == ''; } var GeiJS = GeiJS || function (T, V) { var b = {} , x = b['lib'] = {} , u = function () { } , Q = x['Base'] = { 'extend': function (Y) { u['prototype'] = this; var I = new u(); return Y && I['mixIn'](Y), I['hasOwnProperty']('init') || (I['init'] = function () { I['$super']['init']['apply'](this, arguments); } ), I['init']['prototype'] = I, I['$super'] = this, I; }, 'create': function () { var Y = this['extend'](); return Y['init']['apply'](Y, arguments), Y; }, 'init': function () { }, 'mixIn': function (Y) { for (var I in Y) { Y['hasOwnProperty'](I) && (this[I] = Y[I]); } Y['hasOwnProperty']('toString') && (this['toString'] = Y['toString']); }, 'clone': function () { return this['init']['prototype']['extend'](this); } } , O = x['WordArray'] = Q['extend']({ 'init': function (Y, I) { Y = this['words'] = Y || [], this['sigBytes'] = I != V ? I : 0x4 * Y['length']; }, 'toString': function (Y) { return (Y || A)['stringify'](this); }, 'concat': function (Y) { var I = this['words'] , H = Y['words'] , E = this['sigBytes']; Y = Y['sigBytes'], this['clamp'](); if (E % 0x4) for (var R = 0x0; R < Y; R++) { I[E + R >>> 0x2] |= (H[R >>> 0x2] >>> 0x18 - 0x8 * (R % 0x4) & 0xff) << 0x18 - 0x8 * ((E + R) % 0x4); } else { if (0xffff < H['length']) for (R = 0x0; R < Y; R += 0x4) { I[E + R >>> 0x2] = H[R >>> 0x2]; } else I['push']['apply'](I, H); } return this['sigBytes'] += Y, this; }, 'clamp': function () { var Y = this['words'] , I = this['sigBytes']; Y[I >>> 0x2] &= 0xffffffff << 0x20 - 0x8 * (I % 0x4), Y['length'] = T['ceil'](I / 0x4); }, 'clone': function () { var Y = Q['clone']['call'](this); return Y['words'] = this['words']['slice'](0x0), Y; }, 'random': function (Y) { for (var I = [], H = 0x0; H < Y; H += 0x4) { I['push'](0x100000000 * T['random']() | 0x0); } return new O['init'](I, Y); } }) , G = b['enc'] = {} , A = G['Hex'] = { 'stringify': function (Y) { var I = Y['words']; Y = Y['sigBytes']; for (var H = [], E = 0x0; E < Y; E++) { var R = I[E >>> 0x2] >>> 0x18 - 0x8 * (E % 0x4) & 0xff; H['push']((R >>> 0x4)['toString'](0x10)), H['push']((R & 0xf)['toString'](0x10)); } return H['join'](''); }, 'parse': function (Y) { for (var I = Y['length'], H = [], E = 0x0; E < I; E += 0x2) { H[E >>> 0x3] |= parseInt(Y['substr'](E, 0x2), 0x10) << 0x18 - 0x4 * (E % 0x8); } return new O['init'](H, I / 0x2); } } , w = G['Latin1'] = { 'stringify': function (Y) { var I = Y['words']; Y = Y['sigBytes']; for (var H = [], E = 0x0; E < Y; E++) { H['push'](String['fromCharCode'](I[E >>> 0x2] >>> 0x18 - 0x8 * (E % 0x4) & 0xff)); } return H['join'](''); }, 'parse': function (Y) { for (var I = Y['length'], H = [], E = 0x0; E < I; E++) { H[E >>> 0x2] |= (Y['charCodeAt'](E) & 0xff) << 0x18 - 0x8 * (E % 0x4); } return new O['init'](H, I); } } , B = G['Utf8'] = { 'stringify': function (Y) { try { return decodeURIComponent(escape(w['stringify'](Y))); } catch (I) { throw Error('Malformed\x20UTF-8\x20data'); } }, 'parse': function (Y) { return w['parse'](unescape(encodeURIComponent(Y))); } } , q = x['BufferedBlockAlgorithm'] = Q['extend']({ 'reset': function () { this['_data'] = new O['init'](), this['_nDataBytes'] = 0x0; }, '_append': function (Y) { 'string' == typeof Y && (Y = B['parse'](Y)), this['_data']['concat'](Y), this['_nDataBytes'] += Y['sigBytes']; }, '_process': function (Y) { var I = this['_data'] , H = I['words'] , E = I['sigBytes'] , R = this['blockSize'] , W = E / (0x4 * R) , W = Y ? T['ceil'](W) : T['max']((W | 0x0) - this['_minBufferSize'], 0x0); Y = W * R, E = T['min'](0x4 * Y, E); if (Y) { for (var N = 0x0; N < Y; N += R) { this['_doProcessBlock'](H, N); } N = H['splice'](0x0, Y), I['sigBytes'] -= E; } return new O['init'](N, E); }, 'clone': function () { var Y = Q['clone']['call'](this); return Y['_data'] = this['_data']['clone'](), Y; }, '_minBufferSize': 0x0 }); x['Hasher'] = q['extend']({ 'cfg': Q['extend'](), 'init': function (Y) { this['cfg'] = this['cfg']['extend'](Y), this['reset'](); }, 'reset': function () { q['reset']['call'](this), this['_doReset'](); }, 'update': function (Y) { return this['_append'](Y), this['_process'](), this; }, 'finalize': function (Y) { return Y && this['_append'](Y), this['_doFinalize'](); }, 'blockSize': 0x10, '_createHelper': function (Y) { return function (I, H) { return new Y['init'](H)['finalize'](I); } ; }, '_createHmacHelper': function (Y) { return function (I, H) { return new P['HMAC']['init'](Y, H)['finalize'](I); } ; } }); var P = b['algo'] = {}; return b; }(Math); (function () { var i = GeiJS , T = i['lib']['WordArray']; i['enc']['Base64'] = { 'stringify': function (V) { var x = V['words'] , u = V['sigBytes'] , Q = this['_map']; V['clamp'](), V = []; for (var O = 0x0; O < u; O += 0x3) { for (var o = (x[O >>> 0x2] >>> 0x18 - 0x8 * (O % 0x4) & 0xff) << 0x10 | (x[O + 0x1 >>> 0x2] >>> 0x18 - 0x8 * ((O + 0x1) % 0x4) & 0xff) << 0x8 | x[O + 0x2 >>> 0x2] >>> 0x18 - 0x8 * ((O + 0x2) % 0x4) & 0xff, G = 0x0; 0x4 > G && O + 0.75 * G < u; G++) { V['push'](Q['charAt'](o >>> 0x6 * (0x3 - G) & 0x3f)); } } if (x = Q['charAt'](0x40)) for (; V['length'] % 0x4;) { V['push'](x); } return V['join'](''); }, 'parse': function (V) { var x = V['length'] , u = this['_map'] , Q = u['charAt'](0x40); Q && (Q = V['indexOf'](Q), -0x1 != Q && (x = Q)); for (var Q = [], O = 0x0, o = 0x0; o < x; o++) { if (o % 0x4) { var G = u['indexOf'](V['charAt'](o - 0x1)) << 0x2 * (o % 0x4) , A = u['indexOf'](V['charAt'](o)) >>> 0x6 - 0x2 * (o % 0x4); Q[O >>> 0x2] |= (G | A) << 0x18 - 0x8 * (O % 0x4), O++; } } return T['create'](Q, O); }, '_map': 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' }; }()), function (T) { function V(B, P, Y, I, H, E, R) { return B = B + (P & Y | ~P & I) + H + R, (B << E | B >>> 0x20 - E) + P; } function b(B, P, Y, I, H, E, R) { return B = B + (P & I | Y & ~I) + H + R, (B << E | B >>> 0x20 - E) + P; } function x(B, P, Y, I, H, E, R) { return B = B + (P ^ Y ^ I) + H + R, (B << E | B >>> 0x20 - E) + P; } function u(B, P, Y, I, H, E, R) { return B = B + (Y ^ (P | ~I)) + H + R, (B << E | B >>> 0x20 - E) + P; } for (var Q = GeiJS, O = Q['lib'], G = O['WordArray'], A = O['Hasher'], O = Q['algo'], w = [], t = 0x0; 0x40 > t; t++) { w[t] = 0x100000000 * T['abs'](T['sin'](t + 0x1)) | 0x0; } O = O['MMF'] = A['extend']({ '_doReset': function () { this['_hash'] = new G['init']([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]); }, '_doProcessBlock': function (B, q) { for (var Y = 0x0; 0x10 > Y; Y++) { var W = q + Y , Z = B[W]; B[W] = (Z << 0x8 | Z >>> 0x18) & 0xff00ff | (Z << 0x18 | Z >>> 0x8) & 0xff00ff00; } var Y = this['_hash']['words'] , W = B[q + 0x0] , Z = B[q + 0x1] , D = B[q + 0x2] , s = B[q + 0x3] , C = B[q + 0x4] , v = B[q + 0x5] , z = B[q + 0x6] , r = B[q + 0x7] , X = B[q + 0x8] , y = B[q + 0x9] , K0 = B[q + 0xa] , K1 = B[q + 0xb] , K2 = B[q + 0xc] , K3 = B[q + 0xd] , K4 = B[q + 0xe] , K5 = B[q + 0xf] , K6 = Y[0x0] , K7 = Y[0x1] , K8 = Y[0x2] , K9 = Y[0x3] , K6 = V(K6, K7, K8, K9, W, 0x7, w[0x0]) , K9 = V(K9, K6, K7, K8, Z, 0xc, w[0x1]) , K8 = V(K8, K9, K6, K7, D, 0x11, w[0x2]) , K7 = V(K7, K8, K9, K6, s, 0x16, w[0x3]) , K6 = V(K6, K7, K8, K9, C, 0x7, w[0x4]) , K9 = V(K9, K6, K7, K8, v, 0xc, w[0x5]) , K8 = V(K8, K9, K6, K7, z, 0x11, w[0x6]) , K7 = V(K7, K8, K9, K6, r, 0x16, w[0x7]) , K6 = V(K6, K7, K8, K9, X, 0x7, w[0x8]) , K9 = V(K9, K6, K7, K8, y, 0xc, w[0x9]) , K8 = V(K8, K9, K6, K7, K0, 0x11, w[0xa]) , K7 = V(K7, K8, K9, K6, K1, 0x16, w[0xb]) , K6 = V(K6, K7, K8, K9, K2, 0x7, w[0xc]) , K9 = V(K9, K6, K7, K8, K3, 0xc, w[0xd]) , K8 = V(K8, K9, K6, K7, K4, 0x11, w[0xe]) , K7 = V(K7, K8, K9, K6, K5, 0x16, w[0xf]) , K6 = b(K6, K7, K8, K9, Z, 0x5, w[0x10]) , K9 = b(K9, K6, K7, K8, z, 0x9, w[0x11]) , K8 = b(K8, K9, K6, K7, K1, 0xe, w[0x12]) , K7 = b(K7, K8, K9, K6, W, 0x14, w[0x13]) , K6 = b(K6, K7, K8, K9, v, 0x5, w[0x14]) , K9 = b(K9, K6, K7, K8, K0, 0x9, w[0x15]) , K8 = b(K8, K9, K6, K7, K5, 0xe, w[0x16]) , K7 = b(K7, K8, K9, K6, C, 0x14, w[0x17]) , K6 = b(K6, K7, K8, K9, y, 0x5, w[0x18]) , K9 = b(K9, K6, K7, K8, K4, 0x9, w[0x19]) , K8 = b(K8, K9, K6, K7, s, 0xe, w[0x1a]) , K7 = b(K7, K8, K9, K6, X, 0x14, w[0x1b]) , K6 = b(K6, K7, K8, K9, K3, 0x5, w[0x1c]) , K9 = b(K9, K6, K7, K8, D, 0x9, w[0x1d]) , K8 = b(K8, K9, K6, K7, r, 0xe, w[0x1e]) , K7 = b(K7, K8, K9, K6, K2, 0x14, w[0x1f]) , K6 = x(K6, K7, K8, K9, v, 0x4, w[0x20]) , K9 = x(K9, K6, K7, K8, X, 0xb, w[0x21]) , K8 = x(K8, K9, K6, K7, K1, 0x10, w[0x22]) , K7 = x(K7, K8, K9, K6, K4, 0x17, w[0x23]) , K6 = x(K6, K7, K8, K9, Z, 0x4, w[0x24]) , K9 = x(K9, K6, K7, K8, C, 0xb, w[0x25]) , K8 = x(K8, K9, K6, K7, r, 0x10, w[0x26]) , K7 = x(K7, K8, K9, K6, K0, 0x17, w[0x27]) , K6 = x(K6, K7, K8, K9, K3, 0x4, w[0x28]) , K9 = x(K9, K6, K7, K8, W, 0xb, w[0x29]) , K8 = x(K8, K9, K6, K7, s, 0x10, w[0x2a]) , K7 = x(K7, K8, K9, K6, z, 0x17, w[0x2b]) , K6 = x(K6, K7, K8, K9, y, 0x4, w[0x2c]) , K9 = x(K9, K6, K7, K8, K2, 0xb, w[0x2d]) , K8 = x(K8, K9, K6, K7, K5, 0x10, w[0x2e]) , K7 = x(K7, K8, K9, K6, D, 0x17, w[0x2f]) , K6 = u(K6, K7, K8, K9, W, 0x6, w[0x30]) , K9 = u(K9, K6, K7, K8, r, 0xa, w[0x31]) , K8 = u(K8, K9, K6, K7, K4, 0xf, w[0x32]) , K7 = u(K7, K8, K9, K6, v, 0x15, w[0x33]) , K6 = u(K6, K7, K8, K9, K2, 0x6, w[0x34]) , K9 = u(K9, K6, K7, K8, s, 0xa, w[0x35]) , K8 = u(K8, K9, K6, K7, K0, 0xf, w[0x36]) , K7 = u(K7, K8, K9, K6, Z, 0x15, w[0x37]) , K6 = u(K6, K7, K8, K9, X, 0x6, w[0x38]) , K9 = u(K9, K6, K7, K8, K5, 0xa, w[0x39]) , K8 = u(K8, K9, K6, K7, z, 0xf, w[0x3a]) , K7 = u(K7, K8, K9, K6, K3, 0x15, w[0x3b]) , K6 = u(K6, K7, K8, K9, C, 0x6, w[0x3c]) , K9 = u(K9, K6, K7, K8, K1, 0xa, w[0x3d]) , K8 = u(K8, K9, K6, K7, D, 0xf, w[0x3e]) , K7 = u(K7, K8, K9, K6, y, 0x15, w[0x3f]); Y[0x0] = Y[0x0] + K6 | 0x0, Y[0x1] = Y[0x1] + K7 | 0x0, Y[0x2] = Y[0x2] + K8 | 0x0, Y[0x3] = Y[0x3] + K9 | 0x0; }, '_doFinalize': function () { var B = this['_data'] , P = B['words'] , Y = 0x8 * this['_nDataBytes'] , I = 0x8 * B['sigBytes']; P[I >>> 0x5] |= 0x80 << 0x18 - I % 0x20; var H = T['floor'](Y / 0x100000000); P[(I + 0x40 >>> 0x9 << 0x4) + 0xf] = (H << 0x8 | H >>> 0x18) & 0xff00ff | (H << 0x18 | H >>> 0x8) & 0xff00ff00, P[(I + 0x40 >>> 0x9 << 0x4) + 0xe] = (Y << 0x8 | Y >>> 0x18) & 0xff00ff | (Y << 0x18 | Y >>> 0x8) & 0xff00ff00, B['sigBytes'] = 0x4 * (P['length'] + 0x1), this['_process'](), B = this['_hash'], P = B['words']; for (Y = 0x0; 0x4 > Y; Y++) { I = P[Y], P[Y] = (I << 0x8 | I >>> 0x18) & 0xff00ff | (I << 0x18 | I >>> 0x8) & 0xff00ff00; } return B; }, 'clone': function () { var B = A['clone']['call'](this); return B['_hash'] = this['_hash']['clone'](), B; } }), Q['MMF'] = A['_createHelper'](O), Q['GeiMMF'] = A['_createHmacHelper'](O); }(Math), (function () { var i = GeiJS , T = i['lib'] , V = T['Base'] , x = T['WordArray'] , T = i['algo'] , u = T['EvpKDF'] = V['extend']({ 'cfg': V['extend']({ 'keySize': 0x4, 'hasher': T['MMF'], 'iterations': 0x1 }), 'init': function (Q) { this['cfg'] = this['cfg']['extend'](Q); }, 'compute': function (Q, O) { for (var G = this['cfg'], A = G['hasher']['create'](), w = x['create'](), t = w['words'], B = G['keySize'], G = G['iterations']; t['length'] < B;) { P && A['update'](P); var P = A['update'](Q)['finalize'](O); A['reset'](); for (var Y = 0x1; Y < G; Y++) { P = A['finalize'](P), A['reset'](); } w['concat'](P); } return w['sigBytes'] = 0x4 * B, w; } }); i['EvpKDF'] = function (Q, O, o) { return u['create'](o)['compute'](Q, O); } ; }()), GeiJS['lib']['Cipher'] || function (V) { var b = GeiJS , x = b['lib'] , u = x['Base'] , Q = x['WordArray'] , O = x['BufferedBlockAlgorithm'] , G = b['enc']['Base64'] , w = b['algo']['EvpKDF'] , q = x['Cipher'] = O['extend']({ 'cfg': u['extend'](), 'createEncryptor': function (l, W) { return this['create'](this['_ENC_XFORM_MODE'], l, W); }, 'createDecryptor': function (l, W) { return this['create'](this['_DEC_XFORM_MODE'], l, W); }, 'init': function (l, W, N) { this['cfg'] = this['cfg']['extend'](N), this['_xformMode'] = l, this['_key'] = W, this['reset'](); }, 'reset': function () { O['reset']['call'](this), this['_doReset'](); }, 'process': function (l) { return this['_append'](l), this['_process'](); }, 'finalize': function (l) { return l && this['_append'](l), this['_doFinalize'](); }, 'keySize': 0x4, 'ivSize': 0x4, '_ENC_XFORM_MODE': 0x1, '_DEC_XFORM_MODE': 0x2, '_createHelper': function (l) { return { 'encrypt': function (W, N, J) { return ('string' == typeof N ? R : E)['encrypt'](l, W, N, J); }, 'decrypt': function (W, N, J) { return ('string' == typeof N ? R : E)['decrypt'](l, W, N, J); } }; } }); x['StreamCipher'] = q['extend']({ '_doFinalize': function () { return this['_process'](!0x0); }, 'blockSize': 0x1 }); var P = b['mode'] = {} , c = function (W, N, J) { var S = this['_iv']; S ? this['_iv'] = V : S = this['_prevBlock']; for (var Z = 0x0; Z < J; Z++) { W[N + Z] ^= S[Z]; } } , Y = (x['BlockCipherMode'] = u['extend']({ 'createEncryptor': function (l, W) { return this['Encryptor']['create'](l, W); }, 'createDecryptor': function (l, W) { return this['Decryptor']['create'](l, W); }, 'init': function (l, W) { this['_cipher'] = l, this['_iv'] = W; } }))['extend'](); Y['Encryptor'] = Y['extend']({ 'processBlock': function (W, N) { var J = this['_cipher'] , S = J['blockSize']; c['call'](this, W, N, S), J['encryptBlock'](W, N), this['_prevBlock'] = W['slice'](N, N + S); } }), Y['Decryptor'] = Y['extend']({ 'processBlock': function (W, N) { var J = this['_cipher'] , S = J['blockSize'] , Z = W['slice'](N, N + S); J['decryptBlock'](W, N), c['call'](this, W, N, S), this['_prevBlock'] = Z; } }), P = P['CBC'] = Y, Y = (b['pad'] = {})['GFACDE'] = { 'pad': function (l, W) { for (var N = 0x4 * W, N = N - l['sigBytes'] % N, J = N << 0x18 | N << 0x10 | N << 0x8 | N, S = [], Z = 0x0; Z < N; Z += 0x4) { S['push'](J); } N = Q['create'](S, N), l['concat'](N); }, 'unpad': function (l) { l['sigBytes'] -= l['words'][l['sigBytes'] - 0x1 >>> 0x2] & 0xff; } }; var I = {}; I['mode'] = P, I['padding'] = Y, x['BlockCipher'] = q['extend']({ 'cfg': q['cfg']['extend'](I), 'reset': function () { q['reset']['call'](this); var W = this['cfg'] , N = W['iv'] , W = W['mode']; if (this['_xformMode'] == this['_ENC_XFORM_MODE']) var J = W['createEncryptor']; else J = W['createDecryptor'], this['_minBufferSize'] = 0x1; this['_mode'] = J['call'](W, this, N && N['words']); }, '_doProcessBlock': function (l, W) { this['_mode']['processBlock'](l, W); }, '_doFinalize': function () { var l = this['cfg']['padding']; if (this['_xformMode'] == this['_ENC_XFORM_MODE']) { l['pad'](this['_data'], this['blockSize']); var W = this['_process'](!0x0); } else W = this['_process'](!0x0), l['unpad'](W); return W; }, 'blockSize': 0x4 }); var H = x['CipherParams'] = u['extend']({ 'init': function (l) { this['mixIn'](l); }, 'toString': function (l) { return (l || this['formatter'])['stringify'](this); } }) , P = (b['format'] = {})['OpenSSL'] = { 'stringify': function (l) { var W = l['ciphertext']; return l = l['salt'], (l ? Q['create']([0x53616c74, 0x65645f5f])['concat'](l)['concat'](W) : W)['toString'](G); }, 'parse': function (W) { W = G['parse'](W); var N = W['words']; if (0x53616c74 == N[0x0] && 0x65645f5f == N[0x1]) { var J = Q['create'](N['slice'](0x2, 0x4)); N['splice'](0x0, 0x4), W['sigBytes'] -= 0x10; } var S = {}; return S['ciphertext'] = W, S['salt'] = J, H['create'](S); } } , E = x['SerializableCipher'] = u['extend']({ 'cfg': u['extend']({ 'format': P }), 'encrypt': function (l, W, N, J) { J = this['cfg']['extend'](J); var S = l['createEncryptor'](N, J); W = S['finalize'](W), S = S['cfg']; var Z = {}; return Z['ciphertext'] = W, Z['key'] = N, Z['iv'] = S['iv'], Z['algorithm'] = l, Z['mode'] = S['mode'], Z['padding'] = S['padding'], Z['blockSize'] = l['blockSize'], Z['formatter'] = J['format'], H['create'](Z); }, 'decrypt': function (W, N, J, S) { return S = this['cfg']['extend'](S), N = this['_parse'](N, S['format']), W['createDecryptor'](J, S)['finalize'](N['ciphertext']); }, '_parse': function (l, W) { return 'string' == typeof l ? W['parse'](l, this) : l; } }) , b = (b['kdf'] = {})['OpenSSL'] = { 'execute': function (W, N, J, S) { S || (S = Q['random'](0x8)); var Z = {}; Z['keySize'] = N + J, W = w['create'](Z)['compute'](W, S), J = Q['create'](W['words']['slice'](N), 0x4 * J), W['sigBytes'] = 0x4 * N; var M = {}; return M['key'] = W, M['iv'] = J, M['salt'] = S, H['create'](M); } } , R = x['PasswordBasedCipher'] = E['extend']({ 'cfg': E['cfg']['extend']({ 'kdf': b }), 'encrypt': function (W, N, J, S) { return S = this['cfg']['extend'](S), J = S['kdf']['execute'](J, W['keySize'], W['ivSize']), S['iv'] = J['iv'], W = E['encrypt']['call'](this, W, N, J['key'], S), W['mixIn'](J), W; }, 'decrypt': function (W, N, J, S) { return S = this['cfg']['extend'](S), N = this['_parse'](N, S['format']), J = S['kdf']['execute'](J, W['keySize'], W['ivSize'], N['salt']), S['iv'] = J['iv'], E['decrypt']['call'](this, W, N, J['key'], S); } }); }(), (function () { function A(C, v) { var z = (this['_lBlock'] >>> C ^ this['_rBlock']) & v; this['_rBlock'] ^= z, this['_lBlock'] ^= z << C; } function w(C, v) { var z = (this['_rBlock'] >>> C ^ this['_lBlock']) & v; this['_lBlock'] ^= z, this['_rBlock'] ^= z << C; } var B = {}; B['0'] = 0x808200, B['268435456'] = 0x8000, B['536870912'] = 0x808002, B['805306368'] = 0x2, B['1073741824'] = 0x200, B['1342177280'] = 0x808202, B['1610612736'] = 0x800202, B['1879048192'] = 0x800000, B['2147483648'] = 0x202, B['2415919104'] = 0x800200, B['2684354560'] = 0x8200, B['2952790016'] = 0x808000, B['3221225472'] = 0x8002, B['3489660928'] = 0x800002, B['3758096384'] = 0x0, B['4026531840'] = 0x8202, B['134217728'] = 0x0, B['402653184'] = 0x808202, B['671088640'] = 0x8202, B['939524096'] = 0x8000, B['1207959552'] = 0x808200, B['1476395008'] = 0x200, B['1744830464'] = 0x808002, B['2013265920'] = 0x2, B['2281701376'] = 0x800200, B['2550136832'] = 0x8200, B['2818572288'] = 0x808000, B['3087007744'] = 0x800202, B['3355443200'] = 0x800002, B['3623878656'] = 0x8002, B['3892314112'] = 0x202, B['4160749568'] = 0x800000, B['1'] = 0x8000, B['268435457'] = 0x2, B['536870913'] = 0x808200, B['805306369'] = 0x800000, B['1073741825'] = 0x808002, B['1342177281'] = 0x8200, B['1610612737'] = 0x200, B['1879048193'] = 0x800202, B['2147483649'] = 0x808202, B['2415919105'] = 0x808000, B['2684354561'] = 0x800002, B['2952790017'] = 0x8202, B['3221225473'] = 0x202, B['3489660929'] = 0x800200, B['3758096385'] = 0x8002, B['4026531841'] = 0x0, B['134217729'] = 0x808202, B['402653185'] = 0x808000, B['671088641'] = 0x800000, B['939524097'] = 0x200, B['1207959553'] = 0x8000, B['1476395009'] = 0x800002, B['1744830465'] = 0x2, B['2013265921'] = 0x8202, B['2281701377'] = 0x8002, B['2550136833'] = 0x800202, B['2818572289'] = 0x202, B['3087007745'] = 0x808200, B['3355443201'] = 0x800200, B['3623878657'] = 0x0, B['3892314113'] = 0x8200, B['4160749569'] = 0x808002; var q = {}; q['0'] = 0x40084010, q['16777216'] = 0x4000, q['33554432'] = 0x80000, q['50331648'] = 0x40080010, q['67108864'] = 0x40000010, q['83886080'] = 0x40084000, q['100663296'] = 0x40004000, q['117440512'] = 0x10, q['134217728'] = 0x84000, q['150994944'] = 0x40004010, q['167772160'] = 0x40000000, q['184549376'] = 0x84010, q['201326592'] = 0x80010, q['218103808'] = 0x0, q['234881024'] = 0x4010, q['251658240'] = 0x40080000, q['8388608'] = 0x40004000, q['25165824'] = 0x84010, q['41943040'] = 0x10, q['58720256'] = 0x40004010, q['75497472'] = 0x40084010, q['92274688'] = 0x40000000, q['109051904'] = 0x80000, q['125829120'] = 0x40080010, q['142606336'] = 0x80010, q['159383552'] = 0x0, q['176160768'] = 0x4000, q['192937984'] = 0x40080000, q['209715200'] = 0x40000010, q['226492416'] = 0x84000, q['243269632'] = 0x40084000, q['260046848'] = 0x4010, q['268435456'] = 0x0, q['285212672'] = 0x40080010, q['301989888'] = 0x40004010, q['318767104'] = 0x40084000, q['335544320'] = 0x40080000, q['352321536'] = 0x10, q['369098752'] = 0x84010, q['385875968'] = 0x4000, q['402653184'] = 0x4010, q['419430400'] = 0x80000, q['436207616'] = 0x80010, q['452984832'] = 0x40000010, q['469762048'] = 0x84000, q['486539264'] = 0x40004000, q['503316480'] = 0x40000000, q['520093696'] = 0x40084010, q['276824064'] = 0x84010, q['293601280'] = 0x80000, q['310378496'] = 0x40080000, q['327155712'] = 0x4000, q['343932928'] = 0x40004000, q['360710144'] = 0x40084010, q['377487360'] = 0x10, q['394264576'] = 0x40000000, q['411041792'] = 0x40084000, q['427819008'] = 0x40000010, q['444596224'] = 0x40004010, q['461373440'] = 0x80010, q['478150656'] = 0x0, q['494927872'] = 0x4010, q['511705088'] = 0x40080010, q['528482304'] = 0x84000; var P = {}; P['0'] = 0x104, P['1048576'] = 0x0, P['2097152'] = 0x4000100, P['3145728'] = 0x10104, P['4194304'] = 0x10004, P['5242880'] = 0x4000004, P['6291456'] = 0x4010104, P['7340032'] = 0x4010000, P['8388608'] = 0x4000000, P['9437184'] = 0x4010100, P['10485760'] = 0x10100, P['11534336'] = 0x4010004, P['12582912'] = 0x4000104, P['13631488'] = 0x10000, P['14680064'] = 0x4, P['15728640'] = 0x100, P['524288'] = 0x4010100, P['1572864'] = 0x4010004, P['2621440'] = 0x0, P['3670016'] = 0x4000100, P['4718592'] = 0x4000004, P['5767168'] = 0x10000, P['6815744'] = 0x10004, P['7864320'] = 0x104, P['8912896'] = 0x4, P['9961472'] = 0x100, P['11010048'] = 0x4010000, P['12058624'] = 0x10104, P['13107200'] = 0x10100, P['14155776'] = 0x4000104, P['15204352'] = 0x4010104, P['16252928'] = 0x4000000, P['16777216'] = 0x4010100, P['17825792'] = 0x10004, P['18874368'] = 0x10000, P['19922944'] = 0x4000100, P['20971520'] = 0x100, P['22020096'] = 0x4010104, P['23068672'] = 0x4000004, P['24117248'] = 0x0, P['25165824'] = 0x4000104, P['26214400'] = 0x4000000, P['27262976'] = 0x4, P['28311552'] = 0x10100, P['29360128'] = 0x4010000, P['30408704'] = 0x104, P['31457280'] = 0x10104, P['32505856'] = 0x4010004, P['17301504'] = 0x4000000, P['18350080'] = 0x104, P['19398656'] = 0x4010100, P['20447232'] = 0x0, P['21495808'] = 0x10004, P['22544384'] = 0x4000100, P['23592960'] = 0x100, P['24641536'] = 0x4010004, P['25690112'] = 0x10000, P['26738688'] = 0x4010104, P['27787264'] = 0x10104, P['28835840'] = 0x4000004, P['29884416'] = 0x4000104, P['30932992'] = 0x4010000, P['31981568'] = 0x4, P['33030144'] = 0x10100; var Y = {}; Y['0'] = 0x80401000, Y['65536'] = 0x80001040, Y['131072'] = 0x401040, Y['196608'] = 0x80400000, Y['262144'] = 0x0, Y['327680'] = 0x401000, Y['393216'] = 0x80000040, Y['458752'] = 0x400040, Y['524288'] = 0x80000000, Y['589824'] = 0x400000, Y['655360'] = 0x40, Y['720896'] = 0x80001000, Y['786432'] = 0x80400040, Y['851968'] = 0x1040, Y['917504'] = 0x1000, Y['983040'] = 0x80401040, Y['32768'] = 0x80001040, Y['98304'] = 0x40, Y['163840'] = 0x80400040, Y['229376'] = 0x80001000, Y['294912'] = 0x401000, Y['360448'] = 0x80401040, Y['425984'] = 0x0, Y['491520'] = 0x80400000, Y['557056'] = 0x1000, Y['622592'] = 0x80401000, Y['688128'] = 0x400000, Y['753664'] = 0x1040, Y['819200'] = 0x80000000, Y['884736'] = 0x400040, Y['950272'] = 0x401040, Y['1015808'] = 0x80000040, Y['1048576'] = 0x400040, Y['1114112'] = 0x401000, Y['1179648'] = 0x80000040, Y['1245184'] = 0x0, Y['1310720'] = 0x1040, Y['1376256'] = 0x80400040, Y['1441792'] = 0x80401000, Y['1507328'] = 0x80001040, Y['1572864'] = 0x80401040, Y['1638400'] = 0x80000000, Y['1703936'] = 0x80400000, Y['1769472'] = 0x401040, Y['1835008'] = 0x80001000, Y['1900544'] = 0x400000, Y['1966080'] = 0x40, Y['2031616'] = 0x1000, Y['1081344'] = 0x80400000, Y['1146880'] = 0x80401040, Y['1212416'] = 0x0, Y['1277952'] = 0x401000, Y['1343488'] = 0x400040, Y['1409024'] = 0x80000000, Y['1474560'] = 0x80001040, Y['1540096'] = 0x40, Y['1605632'] = 0x80000040, Y['1671168'] = 0x1000, Y['1736704'] = 0x80001000, Y['1802240'] = 0x80400040, Y['1867776'] = 0x1040, Y['1933312'] = 0x80401000, Y['1998848'] = 0x400000, Y['2064384'] = 0x401040; var I = {}; I['0'] = 0x80, I['4096'] = 0x1040000, I['8192'] = 0x40000, I['12288'] = 0x20000000, I['16384'] = 0x20040080, I['20480'] = 0x1000080, I['24576'] = 0x21000080, I['28672'] = 0x40080, I['32768'] = 0x1000000, I['36864'] = 0x20040000, I['40960'] = 0x20000080, I['45056'] = 0x21040080, I['49152'] = 0x21040000, I['53248'] = 0x0, I['57344'] = 0x1040080, I['61440'] = 0x21000000, I['2048'] = 0x1040080, I['6144'] = 0x21000080, I['10240'] = 0x80, I['14336'] = 0x1040000, I['18432'] = 0x40000, I['22528'] = 0x20040080, I['26624'] = 0x21040000, I['30720'] = 0x20000000, I['34816'] = 0x20040000, I['38912'] = 0x0, I['43008'] = 0x21040080, I['47104'] = 0x1000080, I['51200'] = 0x20000080, I['55296'] = 0x21000000, I['59392'] = 0x1000000, I['63488'] = 0x40080, I['65536'] = 0x40000, I['69632'] = 0x80, I['73728'] = 0x20000000, I['77824'] = 0x21000080, I['81920'] = 0x1000080, I['86016'] = 0x21040000, I['90112'] = 0x20040080, I['94208'] = 0x1000000, I['98304'] = 0x21040080, I['102400'] = 0x21000000, I['106496'] = 0x1040000, I['110592'] = 0x20040000, I['114688'] = 0x40080, I['118784'] = 0x20000080, I['122880'] = 0x0, I['126976'] = 0x1040080, I['67584'] = 0x21000080, I['71680'] = 0x1000000, I['75776'] = 0x1040000, I['79872'] = 0x20040080, I['83968'] = 0x20000000, I['88064'] = 0x1040080, I['92160'] = 0x80, I['96256'] = 0x21040000, I['100352'] = 0x40080, I['104448'] = 0x21040080, I['108544'] = 0x0, I['112640'] = 0x21000000, I['116736'] = 0x1000080, I['120832'] = 0x40000, I['124928'] = 0x20040000, I['129024'] = 0x20000080; var H = {}; H['0'] = 0x10000008, H['256'] = 0x2000, H['512'] = 0x10200000, H['768'] = 0x10202008, H['1024'] = 0x10002000, H['1280'] = 0x200000, H['1536'] = 0x200008, H['1792'] = 0x10000000, H['2048'] = 0x0, H['2304'] = 0x10002008, H['2560'] = 0x202000, H['2816'] = 0x8, H['3072'] = 0x10200008, H['3328'] = 0x202008, H['3584'] = 0x2008, H['3840'] = 0x10202000, H['128'] = 0x10200000, H['384'] = 0x10202008, H['640'] = 0x8, H['896'] = 0x200000, H['1152'] = 0x202008, H['1408'] = 0x10000008, H['1664'] = 0x10002000, H['1920'] = 0x2008, H['2176'] = 0x200008, H['2432'] = 0x2000, H['2688'] = 0x10002008, H['2944'] = 0x10200008, H['3200'] = 0x0, H['3456'] = 0x10202000, H['3712'] = 0x202000, H['3968'] = 0x10000000, H['4096'] = 0x10002000, H['4352'] = 0x10200008, H['4608'] = 0x10202008, H['4864'] = 0x2008, H['5120'] = 0x200000, H['5376'] = 0x10000000, H['5632'] = 0x10000008, H['5888'] = 0x202000, H['6144'] = 0x202008, H['6400'] = 0x0, H['6656'] = 0x8, H['6912'] = 0x10200000, H['7168'] = 0x2000, H['7424'] = 0x10002008, H['7680'] = 0x10202000, H['7936'] = 0x200008, H['4224'] = 0x8, H['4480'] = 0x202000, H['4736'] = 0x200000, H['4992'] = 0x10000008, H['5248'] = 0x10002000, H['5504'] = 0x2008, H['5760'] = 0x10202008, H['6016'] = 0x10200000, H['6272'] = 0x10202000, H['6528'] = 0x10200008, H['6784'] = 0x2000, H['7040'] = 0x202008, H['7296'] = 0x200008, H['7552'] = 0x0, H['7808'] = 0x10000000, H['8064'] = 0x10002008; var E = {}; E['0'] = 0x100000, E['16'] = 0x2000401, E['32'] = 0x400, E['48'] = 0x100401, E['64'] = 0x2100401, E['80'] = 0x0, E['96'] = 0x1, E['112'] = 0x2100001, E['128'] = 0x2000400, E['144'] = 0x100001, E['160'] = 0x2000001, E['176'] = 0x2100400, E['192'] = 0x2100000, E['208'] = 0x401, E['224'] = 0x100400, E['240'] = 0x2000000, E['8'] = 0x2100001, E['24'] = 0x0, E['40'] = 0x2000401, E['56'] = 0x2100400, E['72'] = 0x100000, E['88'] = 0x2000001, E['104'] = 0x2000000, E['120'] = 0x401, E['136'] = 0x100401, E['152'] = 0x2000400, E['168'] = 0x2100000, E['184'] = 0x100001, E['200'] = 0x400, E['216'] = 0x2100401, E['232'] = 0x1, E['248'] = 0x100400, E['256'] = 0x2000000, E['272'] = 0x100000, E['288'] = 0x2000401, E['304'] = 0x2100001, E['320'] = 0x100001, E['336'] = 0x2000400, E['352'] = 0x2100400, E['368'] = 0x100401, E['384'] = 0x401, E['400'] = 0x2100401, E['416'] = 0x100400, E['432'] = 0x1, E['448'] = 0x0, E['464'] = 0x2100000, E['480'] = 0x2000001, E['496'] = 0x400, E['264'] = 0x100400, E['280'] = 0x2000401, E['296'] = 0x2100001, E['312'] = 0x1, E['328'] = 0x2000000, E['344'] = 0x100000, E['360'] = 0x401, E['376'] = 0x2100400, E['392'] = 0x2000001, E['408'] = 0x2100000, E['424'] = 0x0, E['440'] = 0x2100401, E['456'] = 0x100401, E['472'] = 0x400, E['488'] = 0x2000400, E['504'] = 0x100001; var R = {}; R['0'] = 0x8000820, R['1'] = 0x20000, R['2'] = 0x8000000, R['3'] = 0x20, R['4'] = 0x20020, R['5'] = 0x8020820, R['6'] = 0x8020800, R['7'] = 0x800, R['8'] = 0x8020000, R['9'] = 0x8000800, R['10'] = 0x20800, R['11'] = 0x8020020, R['12'] = 0x820, R['13'] = 0x0, R['14'] = 0x8000020, R['15'] = 0x20820, R['2147483648'] = 0x800, R['2147483649'] = 0x8020820, R['2147483650'] = 0x8000820, R['2147483651'] = 0x8000000, R['2147483652'] = 0x8020000, R['2147483653'] = 0x20800, R['2147483654'] = 0x20820, R['2147483655'] = 0x20, R['2147483656'] = 0x8000020, R['2147483657'] = 0x820, R['2147483658'] = 0x20020, R['2147483659'] = 0x8020800, R['2147483660'] = 0x0, R['2147483661'] = 0x8020020, R['2147483662'] = 0x8000800, R['2147483663'] = 0x20000, R['16'] = 0x20820, R['17'] = 0x8020800, R['18'] = 0x20, R['19'] = 0x800, R['20'] = 0x8000800, R['21'] = 0x8000020, R['22'] = 0x8020020, R['23'] = 0x20000, R['24'] = 0x0, R['25'] = 0x20020, R['26'] = 0x8020000, R['27'] = 0x8000820, R['28'] = 0x8020820, R['29'] = 0x20800, R['30'] = 0x820, R['31'] = 0x8000000, R['2147483664'] = 0x20000, R['2147483665'] = 0x800, R['2147483666'] = 0x8020020, R['2147483667'] = 0x20820, R['2147483668'] = 0x20, R['2147483669'] = 0x8020000, R['2147483670'] = 0x8000000, R['2147483671'] = 0x8000820, R['2147483672'] = 0x8020820, R['2147483673'] = 0x8000020, R['2147483674'] = 0x8000800, R['2147483675'] = 0x0, R['2147483676'] = 0x20800, R['2147483677'] = 0x820, R['2147483678'] = 0x20020, R['2147483679'] = 0x8020800; var l = GeiJS , W = l['lib'] , N = W['WordArray'] , W = W['BlockCipher'] , J = l['algo'] , S = [0x39, 0x31, 0x29, 0x21, 0x19, 0x11, 0x9, 0x1, 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x3b, 0x33, 0x2b, 0x23, 0x1b, 0x13, 0xb, 0x3, 0x3c, 0x34, 0x2c, 0x24, 0x3f, 0x37, 0x2f, 0x27, 0x1f, 0x17, 0xf, 0x7, 0x3e, 0x36, 0x2e, 0x26, 0x1e, 0x16, 0xe, 0x6, 0x3d, 0x35, 0x2d, 0x25, 0x1d, 0x15, 0xd, 0x5, 0x1c, 0x14, 0xc, 0x4] , Z = [0xe, 0x11, 0xb, 0x18, 0x1, 0x5, 0x3, 0x1c, 0xf, 0x6, 0x15, 0xa, 0x17, 0x13, 0xc, 0x4, 0x1a, 0x8, 0x10, 0x7, 0x1b, 0x14, 0xd, 0x2, 0x29, 0x34, 0x1f, 0x25, 0x2f, 0x37, 0x1e, 0x28, 0x33, 0x2d, 0x21, 0x30, 0x2c, 0x31, 0x27, 0x38, 0x22, 0x35, 0x2e, 0x2a, 0x32, 0x24, 0x1d, 0x20] , D = [0x1, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0xf, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1b, 0x1c] , M = [B, q, P, Y, I, H, E, R] , s = [0xf8000001, 0x1f800000, 0x1f80000, 0x1f8000, 0x1f800, 0x1f80, 0x1f8, 0x8000001f] , F = J['OBJFJKET'] = W['extend']({ '_doReset': function () { for (var C = this['_key']['words'], v = [], z = 0x0; 0x38 > z; z++) { var U = S[z] - 0x1; v[z] = C[U >>> 0x5] >>> 0x1f - U % 0x20 & 0x1; } C = this['_subKeys'] = []; for (U = 0x0; 0x10 > U; U++) { for (var L = C[U] = [], X = D[U], z = 0x0; 0x18 > z; z++) { L[z / 0x6 | 0x0] |= v[(Z[z] - 0x1 + X) % 0x1c] << 0x1f - z % 0x6, L[0x4 + (z / 0x6 | 0x0)] |= v[0x1c + (Z[z + 0x18] - 0x1 + X) % 0x1c] << 0x1f - z % 0x6; } L[0x0] = L[0x0] << 0x1 | L[0x0] >>> 0x1f; for (z = 0x1; 0x7 > z; z++) { L[z] >>>= 0x4 * (z - 0x1) + 0x3; } L[0x7] = L[0x7] << 0x5 | L[0x7] >>> 0x1b; } v = this['_invSubKeys'] = []; for (z = 0x0; 0x10 > z; z++) { v[z] = C[0xf - z]; } }, 'encryptBlock': function (C, v) { this['_doCryptBlock'](C, v, this['_subKeys']); }, 'decryptBlock': function (C, v) { this['_doCryptBlock'](C, v, this['_invSubKeys']); }, '_doCryptBlock': function (C, U, r) { this['_lBlock'] = C[U], this['_rBlock'] = C[U + 0x1], A['call'](this, 0x4, 0xf0f0f0f), A['call'](this, 0x10, 0xffff), w['call'](this, 0x2, 0x33333333), w['call'](this, 0x8, 0xff00ff), A['call'](this, 0x1, 0x55555555); for (var L = 0x0; 0x10 > L; L++) { for (var X = r[L], d = this['_lBlock'], n = this['_rBlock'], K0 = 0x0, K1 = 0x0; 0x8 > K1; K1++) { K0 |= M[K1][((n ^ X[K1]) & s[K1]) >>> 0x0]; } this['_lBlock'] = n, this['_rBlock'] = d ^ K0; } r = this['_lBlock'], this['_lBlock'] = this['_rBlock'], this['_rBlock'] = r, A['call'](this, 0x1, 0x55555555), w['call'](this, 0x8, 0xff00ff), w['call'](this, 0x2, 0x33333333), A['call'](this, 0x10, 0xffff), A['call'](this, 0x4, 0xf0f0f0f), C[U] = this['_lBlock'], C[U + 0x1] = this['_rBlock']; }, 'keySize': 0x2, 'ivSize': 0x2, 'blockSize': 0x2 }); l['OBJFJKET'] = W['_createHelper'](F), J = J['TripleOBJFJKET'] = W['extend']({ '_doReset': function () { var C = this['_key']['words']; this['_des1'] = F['createEncryptor'](N['create'](C['slice'](0x0, 0x2))), this['_des2'] = F['createEncryptor'](N['create'](C['slice'](0x2, 0x4))), this['_des3'] = F['createEncryptor'](N['create'](C['slice'](0x4, 0x6))); }, 'encryptBlock': function (C, v) { this['_des1']['encryptBlock'](C, v), this['_des2']['decryptBlock'](C, v), this['_des3']['encryptBlock'](C, v); }, 'decryptBlock': function (C, v) { this['_des3']['decryptBlock'](C, v), this['_des2']['encryptBlock'](C, v), this['_des1']['decryptBlock'](C, v); }, 'keySize': 0x6, 'ivSize': 0x2, 'blockSize': 0x2 }), l['TripleOBJFJKET'] = W['_createHelper'](J); }()), GeiJS['mode']['FENCTIOP'] = (function () { var i = GeiJS['lib']['BlockCipherMode']['extend'](); return i['Encryptor'] = i['extend']({ 'processBlock': function (T, V) { this['_cipher']['encryptBlock'](T, V); } }), i['Decryptor'] = i['extend']({ 'processBlock': function (T, V) { this['_cipher']['decryptBlock'](T, V); } }), i; }()); var eL = {}; eL['iOOOooi1il1'] = 0x3 - 0x2; var lll1i111lio0o01 = eL , GeiJS = GeiJS || function (T, V) { var u = {} , Q = u['lib'] = {} , O = function () { } , G = Q['Base'] = { 'extend': function (I) { O['prototype'] = this; var H = new O(); return I && H['mixIn'](I), H['hasOwnProperty']('init') || (H['init'] = function () { H['$super']['init']['apply'](this, arguments); } ), H['init']['prototype'] = H, H['$super'] = this, H; }, 'create': function () { var I = this['extend'](); return I['init']['apply'](I, arguments), I; }, 'init': function () { }, 'mixIn': function (I) { for (var H in I) { I['hasOwnProperty'](H) && (this[H] = I[H]); } I['hasOwnProperty']('toString') && (this['toString'] = I['toString']); }, 'clone': function () { return this['init']['prototype']['extend'](this); } } , A = Q['WordArray'] = G['extend']({ 'init': function (I, H) { I = this['words'] = I || [], this['sigBytes'] = H != V ? H : 0x4 * I['length']; }, 'toString': function (I) { return (I || k)['stringify'](this); }, 'concat': function (I) { var H = this['words'] , E = I['words'] , R = this['sigBytes']; I = I['sigBytes'], this['clamp'](); if (R % 0x4) for (var W = 0x0; W < I; W++) { H[R + W >>> 0x2] |= (E[W >>> 0x2] >>> 0x18 - 0x8 * (W % 0x4) & 0xff) << 0x18 - 0x8 * ((R + W) % 0x4); } else { if (0xffff < E['length']) for (W = 0x0; W < I; W += 0x4) { H[R + W >>> 0x2] = E[W >>> 0x2]; } else H['push']['apply'](H, E); } return this['sigBytes'] += I, this; }, 'clamp': function () { var I = this['words'] , H = this['sigBytes']; I[H >>> 0x2] &= 0xffffffff << 0x20 - 0x8 * (H % 0x4), I['length'] = T['ceil'](H / 0x4); }, 'clone': function () { var I = G['clone']['call'](this); return I['words'] = this['words']['slice'](0x0), I; }, 'random': function (I) { for (var H = [], E = 0x0; E < I; E += 0x4) { H['push'](0x100000000 * T['random']() | 0x0); } return new A['init'](H, I); } }) , t = u['enc'] = {} , k = t['Hex'] = { 'stringify': function (I) { var H = I['words']; I = I['sigBytes']; for (var E = [], R = 0x0; R < I; R++) { var W = H[R >>> 0x2] >>> 0x18 - 0x8 * (R % 0x4) & 0xff; E['push']((W >>> 0x4)['toString'](0x10)), E['push']((W & 0xf)['toString'](0x10)); } return E['join'](''); }, 'parse': function (I) { for (var H = I['length'], E = [], R = 0x0; R < H; R += 0x2) { E[R >>> 0x3] |= parseInt(I['substr'](R, 0x2), 0x10) << 0x18 - 0x4 * (R % 0x8); } return new A['init'](E, H / 0x2); } } , B = t['Latin1'] = { 'stringify': function (I) { var H = I['words']; I = I['sigBytes']; for (var E = [], R = 0x0; R < I; R++) { E['push'](String['fromCharCode'](H[R >>> 0x2] >>> 0x18 - 0x8 * (R % 0x4) & 0xff)); } return E['join'](''); }, 'parse': function (I) { for (var H = I['length'], E = [], R = 0x0; R < H; R++) { E[R >>> 0x2] |= (I['charCodeAt'](R) & 0xff) << 0x18 - 0x8 * (R % 0x4); } return new A['init'](E, H); } } , q = t['Utf8'] = { 'stringify': function (I) { try { return decodeURIComponent(escape(B['stringify'](I))); } catch (H) { throw Error('Malformed\x20UTF-8\x20data'); } }, 'parse': function (I) { return B['parse'](unescape(encodeURIComponent(I))); } } , P = Q['BufferedBlockAlgorithm'] = G['extend']({ 'reset': function () { this['_data'] = new A['init'](), this['_nDataBytes'] = 0x0; }, '_append': function (I) { 'string' == typeof I && (I = q['parse'](I)), this['_data']['concat'](I), this['_nDataBytes'] += I['sigBytes']; }, '_process': function (I) { var H = this['_data'] , E = H['words'] , R = H['sigBytes'] , l = this['blockSize'] , W = R / (0x4 * l) , W = I ? T['ceil'](W) : T['max']((W | 0x0) - this['_minBufferSize'], 0x0); I = W * l, R = T['min'](0x4 * I, R); if (I) { for (var N = 0x0; N < I; N += l) { this['_doProcessBlock'](E, N); } N = E['splice'](0x0, I), H['sigBytes'] -= R; } return new A['init'](N, R); }, 'clone': function () { var I = G['clone']['call'](this); return I['_data'] = this['_data']['clone'](), I; }, '_minBufferSize': 0x0 }); Q['Hasher'] = P['extend']({ 'cfg': G['extend'](), 'init': function (I) { this['cfg'] = this['cfg']['extend'](I), this['reset'](); }, 'reset': function () { P['reset']['call'](this), this['_doReset'](); }, 'update': function (I) { return this['_append'](I), this['_process'](), this; }, 'finalize': function (I) { return I && this['_append'](I), this['_doFinalize'](); }, 'blockSize': 0x10, '_createHelper': function (I) { return function (H, E) { return new I['init'](E)['finalize'](H); } ; }, '_createHmacHelper': function (I) { return function (H, E) { return new Y['HMAC']['init'](I, E)['finalize'](H); } ; } }); var Y = u['algo'] = {}; return u; }(Math); (function (T) { function V(P, Y, I, H, E, R, l) { return P = P + (Y & I | ~Y & H) + E + l, (P << R | P >>> 0x20 - R) + Y; } function x(P, Y, I, H, E, R, l) { return P = P + (Y & H | I & ~H) + E + l, (P << R | P >>> 0x20 - R) + Y; } function u(P, Y, I, H, E, R, l) { return P = P + (Y ^ I ^ H) + E + l, (P << R | P >>> 0x20 - R) + Y; } function Q(P, Y, I, H, E, R, l) { return P = P + (I ^ (Y | ~H)) + E + l, (P << R | P >>> 0x20 - R) + Y; } for (var O = GeiJS, G = O['lib'], A = G['WordArray'], w = G['Hasher'], G = O['algo'], t = [], B = 0x0; 0x40 > B; B++) { t[B] = 0x100000000 * T['abs'](T['sin'](B + 0x1)) | 0x0; } G = G['MMF'] = w['extend']({ '_doReset': function () { this['_hash'] = new A['init']([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]); }, '_doProcessBlock': function (q, Y) { for (var W = 0x0; 0x10 > W; W++) { var Z = Y + W , D = q[Z]; q[Z] = (D << 0x8 | D >>> 0x18) & 0xff00ff | (D << 0x18 | D >>> 0x8) & 0xff00ff00; } var W = this['_hash']['words'] , Z = q[Y + 0x0] , D = q[Y + 0x1] , s = q[Y + 0x2] , C = q[Y + 0x3] , v = q[Y + 0x4] , z = q[Y + 0x5] , r = q[Y + 0x6] , X = q[Y + 0x7] , y = q[Y + 0x8] , K0 = q[Y + 0x9] , K1 = q[Y + 0xa] , K2 = q[Y + 0xb] , K3 = q[Y + 0xc] , K4 = q[Y + 0xd] , K5 = q[Y + 0xe] , K6 = q[Y + 0xf] , K7 = W[0x0] , K8 = W[0x1] , K9 = W[0x2] , KK = W[0x3] , K7 = V(K7, K8, K9, KK, Z, 0x7, t[0x0]) , KK = V(KK, K7, K8, K9, D, 0xc, t[0x1]) , K9 = V(K9, KK, K7, K8, s, 0x11, t[0x2]) , K8 = V(K8, K9, KK, K7, C, 0x16, t[0x3]) , K7 = V(K7, K8, K9, KK, v, 0x7, t[0x4]) , KK = V(KK, K7, K8, K9, z, 0xc, t[0x5]) , K9 = V(K9, KK, K7, K8, r, 0x11, t[0x6]) , K8 = V(K8, K9, KK, K7, X, 0x16, t[0x7]) , K7 = V(K7, K8, K9, KK, y, 0x7, t[0x8]) , KK = V(KK, K7, K8, K9, K0, 0xc, t[0x9]) , K9 = V(K9, KK, K7, K8, K1, 0x11, t[0xa]) , K8 = V(K8, K9, KK, K7, K2, 0x16, t[0xb]) , K7 = V(K7, K8, K9, KK, K3, 0x7, t[0xc]) , KK = V(KK, K7, K8, K9, K4, 0xc, t[0xd]) , K9 = V(K9, KK, K7, K8, K5, 0x11, t[0xe]) , K8 = V(K8, K9, KK, K7, K6, 0x16, t[0xf]) , K7 = x(K7, K8, K9, KK, D, 0x5, t[0x10]) , KK = x(KK, K7, K8, K9, r, 0x9, t[0x11]) , K9 = x(K9, KK, K7, K8, K2, 0xe, t[0x12]) , K8 = x(K8, K9, KK, K7, Z, 0x14, t[0x13]) , K7 = x(K7, K8, K9, KK, z, 0x5, t[0x14]) , KK = x(KK, K7, K8, K9, K1, 0x9, t[0x15]) , K9 = x(K9, KK, K7, K8, K6, 0xe, t[0x16]) , K8 = x(K8, K9, KK, K7, v, 0x14, t[0x17]) , K7 = x(K7, K8, K9, KK, K0, 0x5, t[0x18]) , KK = x(KK, K7, K8, K9, K5, 0x9, t[0x19]) , K9 = x(K9, KK, K7, K8, C, 0xe, t[0x1a]) , K8 = x(K8, K9, KK, K7, y, 0x14, t[0x1b]) , K7 = x(K7, K8, K9, KK, K4, 0x5, t[0x1c]) , KK = x(KK, K7, K8, K9, s, 0x9, t[0x1d]) , K9 = x(K9, KK, K7, K8, X, 0xe, t[0x1e]) , K8 = x(K8, K9, KK, K7, K3, 0x14, t[0x1f]) , K7 = u(K7, K8, K9, KK, z, 0x4, t[0x20]) , KK = u(KK, K7, K8, K9, y, 0xb, t[0x21]) , K9 = u(K9, KK, K7, K8, K2, 0x10, t[0x22]) , K8 = u(K8, K9, KK, K7, K5, 0x17, t[0x23]) , K7 = u(K7, K8, K9, KK, D, 0x4, t[0x24]) , KK = u(KK, K7, K8, K9, v, 0xb, t[0x25]) , K9 = u(K9, KK, K7, K8, X, 0x10, t[0x26]) , K8 = u(K8, K9, KK, K7, K1, 0x17, t[0x27]) , K7 = u(K7, K8, K9, KK, K4, 0x4, t[0x28]) , KK = u(KK, K7, K8, K9, Z, 0xb, t[0x29]) , K9 = u(K9, KK, K7, K8, C, 0x10, t[0x2a]) , K8 = u(K8, K9, KK, K7, r, 0x17, t[0x2b]) , K7 = u(K7, K8, K9, KK, K0, 0x4, t[0x2c]) , KK = u(KK, K7, K8, K9, K3, 0xb, t[0x2d]) , K9 = u(K9, KK, K7, K8, K6, 0x10, t[0x2e]) , K8 = u(K8, K9, KK, K7, s, 0x17, t[0x2f]) , K7 = Q(K7, K8, K9, KK, Z, 0x6, t[0x30]) , KK = Q(KK, K7, K8, K9, X, 0xa, t[0x31]) , K9 = Q(K9, KK, K7, K8, K5, 0xf, t[0x32]) , K8 = Q(K8, K9, KK, K7, z, 0x15, t[0x33]) , K7 = Q(K7, K8, K9, KK, K3, 0x6, t[0x34]) , KK = Q(KK, K7, K8, K9, C, 0xa, t[0x35]) , K9 = Q(K9, KK, K7, K8, K1, 0xf, t[0x36]) , K8 = Q(K8, K9, KK, K7, D, 0x15, t[0x37]) , K7 = Q(K7, K8, K9, KK, y, 0x6, t[0x38]) , KK = Q(KK, K7, K8, K9, K6, 0xa, t[0x39]) , K9 = Q(K9, KK, K7, K8, r, 0xf, t[0x3a]) , K8 = Q(K8, K9, KK, K7, K4, 0x15, t[0x3b]) , K7 = Q(K7, K8, K9, KK, v, 0x6, t[0x3c]) , KK = Q(KK, K7, K8, K9, K2, 0xa, t[0x3d]) , K9 = Q(K9, KK, K7, K8, s, 0xf, t[0x3e]) , K8 = Q(K8, K9, KK, K7, K0, 0x15, t[0x3f]); W[0x0] = W[0x0] + K7 | 0x0, W[0x1] = W[0x1] + K8 | 0x0, W[0x2] = W[0x2] + K9 | 0x0, W[0x3] = W[0x3] + KK | 0x0; }, '_doFinalize': function () { var P = this['_data'] , Y = P['words'] , I = 0x8 * this['_nDataBytes'] , H = 0x8 * P['sigBytes']; Y[H >>> 0x5] |= 0x80 << 0x18 - H % 0x20; var E = T['floor'](I / 0x100000000); Y[(H + 0x40 >>> 0x9 << 0x4) + 0xf] = (E << 0x8 | E >>> 0x18) & 0xff00ff | (E << 0x18 | E >>> 0x8) & 0xff00ff00, Y[(H + 0x40 >>> 0x9 << 0x4) + 0xe] = (I << 0x8 | I >>> 0x18) & 0xff00ff | (I << 0x18 | I >>> 0x8) & 0xff00ff00, P['sigBytes'] = 0x4 * (Y['length'] + 0x1), this['_process'](), P = this['_hash'], Y = P['words']; for (I = 0x0; 0x4 > I; I++) { H = Y[I], Y[I] = (H << 0x8 | H >>> 0x18) & 0xff00ff | (H << 0x18 | H >>> 0x8) & 0xff00ff00; } return P; }, 'clone': function () { var q = w['clone']['call'](this); return q['_hash'] = this['_hash']['clone'](), q; } }), O['MMF'] = w['_createHelper'](G), O['GeiMMF'] = w['_createHmacHelper'](G); }(Math)); function lli1li1l(i, T) { var V = GeiJS['enc']['Utf8']['parse'](T) , x = GeiJS['OBJFJKET']['encrypt'](i, V, { 'mode': GeiJS['mode']['FENCTIOP'], 'padding': GeiJS['pad']['GFACDE'] }); return x['toString'](); } function ili11liii(i, T) { var V = GeiJS['enc']['Utf8']['parse'](T) , x = GeiJS['OBJFJKET']['decrypt']({ 'ciphertext': GeiJS['enc']['Base64']['parse'](i) }, V, { 'mode': GeiJS['mode']['FENCTIOP'], 'padding': GeiJS['pad']['GFACDE'] }); return x['toString'](GeiJS['enc']['Utf8']); } function il1il1il(i) { return Math['abs'](i); } function l1lilili(i) { return GeiJS['MMF'](i); } var em = {}; em['kk'] = 0x1; var kkjf = em; function jkkc(i) { kkjf['kk'] += 0x4; if (0x7d594 * kkjf['kk'] - 0x14dad * llliiii1i0o0o0Oii1['ili1lo0o0O'] == 0x13f * kkjf['kk'] - 0x7 * kkjf['kk']) return l1lilili(i, 'fdfkjwer'); kkjf['kk'] += 0x3; if (0x7d5f8 * kkjf['kk'] - 0x14d49 * lili1lli0o000oO['iliOOO00ool1'] * kkjf['kk'] == 0x1c1 * kkjf['kk'] - 0x7 * kkjf['kk']) return li1li1li(i, '3423dsdf'); kkjf['kk'] -= 0xc / 0x2; if (0x7d530 * kkjf['kk'] - 0x14c81 * lllio0o0OO1i111li1lii1['ilio0oOOi1il1'] * kkjf['kk'] == 0x27f * kkjf['kk'] - 0x7 * kkjf['kk']) return il1il1il(i, 'dfdfsd2'); kkjf['kk'] -= 0x1; if (0x7d724 * kkjf['kk'] - 0x14e75 * lll1i111lOOO0o00ii1['il0oo0Oli1il1'] * kkjf['kk'] == 0x6d * kkjf['kk'] - 0x7 * kkjf['kk']) return lli1li1l(i, 'cnkierjj'); kkjf['kk'] += 0x3; if (0x7d4cc * kkjf['kk'] - 0x14ce5 * llli111li1lil1['ili10ooOO1'] * kkjf['kk'] == 0x2d9 * kkjf['kk'] - 0x7 * kkjf['kk']) return l1lilili(i, '23dfsdf2'); if (0xc7b8 * kkjf['kk'] - 0x14d49 * lll1i111lio0o01['iOOOooi1il1'] * kkjf['kk'] == 0x1b7 * kkjf['kk'] - 0x7 * kkjf['kk']) return li1iiil1(i, 'sfcdfer8'); } function fInction(i, T) { var V = i + ':' + T; return V = lli1li1l(V, 'function'), V = li1li1li(V), V = V + '', V = il1il1il(V), V = V + '', V = l1lilili(V + ''), V = li1li1li(V + ''), V = il1il1il(V), V = li1iiil1(V), V; } function jkko(i) { kkjf['kk'] += 0x4; if (0x7d594 * kkjf['kk'] - 0x14dad * llliiii1i0o0o0Oii1['ili1lo0o0O'] == 0x13f * kkjf['kk'] - 0x7 * kkjf['kk']) return li1iiil1(i, 'fdfkjwer'); kkjf['kk'] += 0x3; if (0x7d5f8 * kkjf['kk'] - 0x14d49 * lili1lli0o000oO['iliOOO00ool1'] * kkjf['kk'] == 0x1c1 * kkjf['kk'] - 0x7 * kkjf['kk']) return l1lilili(i, '3423dsdf'); kkjf['kk'] -= 0xc / 0x2; if (0x7d530 * kkjf['kk'] - 0x14c81 * lllio0o0OO1i111li1lii1['ilio0oOOi1il1'] * kkjf['kk'] == 0x27f * kkjf['kk'] - 0x7 * kkjf['kk']) return lli1li1l(i, 'dfdfsd2'); kkjf['kk'] -= 0x1; if (0x7d724 * kkjf['kk'] - 0x14e75 * lll1i111lOOO0o00ii1['il0oo0Oli1il1'] * kkjf['kk'] == 0x6d * kkjf['kk'] - 0x7 * kkjf['kk']) return ili11liii(i, 'pouxmdjw'); kkjf['kk'] += 0x3; if (0x7d4cc * kkjf['kk'] - 0x14ce5 * llli111li1lil1['ili10ooOO1'] * kkjf['kk'] == 0x2d9 * kkjf['kk'] - 0x7 * kkjf['kk']) return l1lilili(i, '23dfsdf2'); if (0xc7b8 * kkjf['kk'] - 0x14d49 * lll1i111lio0o01['iOOOooi1il1'] * kkjf['kk'] == 0x1b7 * kkjf['kk'] - 0x7 * kkjf['kk']) return li1iiil1(i, 'sfcdfer8'); } function llii1i1iill() { _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', this['ili111llii'] = function (i) { var T = '', V, x, u, Q, O, o, G, A = 0x0; i = _utf8_encode(i); while (A < i['length']) { V = i['charCodeAt'](A++), x = i['charCodeAt'](A++), u = i['charCodeAt'](A++), Q = V >> 0x2, O = (V & 0x3) << 0x4 | x >> 0x4, o = (x & 0xf) << 0x2 | u >> 0x6, G = u & 0x3f, isNaN(x) ? o = G = 0x40 : isNaN(u) && (G = 0x40), T = T + _keyStr['charAt'](Q) + _keyStr['charAt'](O) + _keyStr['charAt'](o) + _keyStr['charAt'](G); } return T; } , this['ilil111lii'] = function (i) { var T = '', V, x, u, Q, O, o, G, A = 0x0; i = i['replace'](/[^A-Za-z0-9\+\/\=]/g, ''); while (A < i['length']) { Q = _keyStr['indexOf'](i['charAt'](A++)), O = _keyStr['indexOf'](i['charAt'](A++)), o = _keyStr['indexOf'](i['charAt'](A++)), G = _keyStr['indexOf'](i['charAt'](A++)), V = Q << 0x2 | O >> 0x4, x = (O & 0xf) << 0x4 | o >> 0x2, u = (o & 0x3) << 0x6 | G, T = T + String['fromCharCode'](V), o != 0x40 && (T = T + String['fromCharCode'](x)), G != 0x40 && (T = T + String['fromCharCode'](u)); } return T = _utf8_decode(T), T; } , _utf8_encode = function (i) { i = i['replace'](/\r\n/g, '\x0a'); var T = ''; for (var V = 0x0; V < i['length']; V++) { var x = i['charCodeAt'](V); x < 0x80 ? T += String['fromCharCode'](x) : x > 0x7f && x < 0x800 ? (T += String['fromCharCode'](x >> 0x6 | 0xc0), T += String['fromCharCode'](x & 0x3f | 0x80)) : (T += String['fromCharCode'](x >> 0xc | 0xe0), T += String['fromCharCode'](x >> 0x6 & 0x3f | 0x80), T += String['fromCharCode'](x & 0x3f | 0x80)); } return T; } , _utf8_decode = function (i) { var T = '' , V = 0x0 , x = c1 = c2 = 0x0; while (V < i['length']) { x = i['charCodeAt'](V), x < 0x80 ? (T += String['fromCharCode'](x), V++) : x > 0xbf && x < 0xe0 ? (c2 = i['charCodeAt'](V + 0x1), T += String['fromCharCode']((x & 0x1f) << 0x6 | c2 & 0x3f), V += 0x2) : (c2 = i['charCodeAt'](V + 0x1), c3 = i['charCodeAt'](V + 0x2), T += String['fromCharCode']((x & 0xf) << 0xc | (c2 & 0x3f) << 0x6 | c3 & 0x3f), V += 0x3); } return T; } ; } function li1li1li1(i) { var T = new llii1i1iill() , V = T['ilil111lii'](i); return ili11liii(V, 'il1looOo'); } var eX = {}; eX['pn'] = 0x61; var pnqr = eX; function cupie(i) { pnqr['pn'] -= 0x64; if (0x2068e * pnqr['pn'] - 0x536e * llliiii1i0o0o0Oii1['ili1lo0o0O'] == 0x98 * pnqr['pn'] - 0x1 * pnqr['pn']) return l1lilili(i, '34g53asd'); pnqr['pn'] += 0x4; if (0x206f2 * pnqr['pn'] - 0x53d2 * lili1lli0o000oO['iliOOO00ool1'] * pnqr['pn'] == 0x28b * pnqr['pn'] - 0x2 * pnqr['pn']) return li1li1li(i, 'hj123sd1'); pnqr['pn'] -= 0x62 / 0xe; if (0x20756 * pnqr['pn'] - 0x5436 * lllio0o0OO1i111li1lii1['ilio0oOOi1il1'] * pnqr['pn'] == 0x2f9 * pnqr['pn'] - 0x8 * pnqr['pn']) return il1il1il(i, 'dsahv123'); pnqr['pn'] += 0x55; if (0x1fc02 * pnqr['pn'] - 0x549a * lll1i111lOOO0o00ii1['il0oo0Oli1il1'] * pnqr['pn'] == 0x6d * pnqr['pn'] - 0x7 * pnqr['pn']) return lli1li1l(i, 'qo7n2jebl'); pnqr['pn'] += 0x391; if (0x1fc66 * pnqr['pn'] - 0x54fe * llli111li1lil1['ili10ooOO1'] * pnqr['pn'] == 0x47 * pnqr['pn'] - 0x3 * pnqr['pn']) return l1lilili(i, 'mgmghasd'); if (0x1fcca * pnqr['pn'] - 0x5562 * lll1i111lio0o01['iOOOooi1il1'] * pnqr['pn'] == 0xfd * pnqr['pn'] - 0x3 * pnqr['pn']) return li1iiil1(i, '5675jty1'); } // ****************************************** 二、补充fget依赖 *************** function getUUID() { var h = new UUID(); return h['id']; } function UUID() { this['id'] = this['createUUID'](); } UUID['prototype']['valueOf'] = function() { return this['id']; } , UUID['prototype']['toString'] = function() { return this['id']; } , UUID['prototype']['createUUID'] = function() { var m = new Date(0x62e,0xa,0xf,0x0,0x0,0x0,0x0) , J = new Date() , S = J['getTime']() - m['getTime']() , u = UUID['getIntegerBits'](S, 0x0, 0x1f) , O = UUID['getIntegerBits'](S, 0x20, 0x2f) , j = UUID['getIntegerBits'](S, 0x30, 0x3b) + '1' , x = UUID['getIntegerBits'](UUID['rand'](0xfff), 0x0, 0x7) , G = UUID['getIntegerBits'](UUID['rand'](0xfff), 0x0, 0x7) , v = UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x0, 0x7) + UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x8, 0xf) + UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x0, 0x7) + UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x8, 0xf) + UUID['getIntegerBits'](UUID['rand'](0x1fff), 0x0, 0xf); return u + O + j + x + G + v; } , UUID['getIntegerBits'] = function(h, m, J) { var S = UUID['returnBase'](h, 0x10) , u = [] , O = ''; for (var j = 0x0; j < S['length']; j++) { u['push'](S['substring'](j, j + 0x1)); } for (j = Math['floor'](m / 0x4); j <= Math['floor'](J / 0x4); j++) { !u[j] || u[j] == '' ? O += '0' : O += u[j]; } return O; } , UUID['returnBase'] = function(h, m) { return h['toString'](m)['toUpperCase'](); } , UUID['rand'] = function(h) { return Math['floor'](Math['random']() * (h + 0x1)); } var _curFileDownOpts, fIsCached = null; function fget(J,F) { var S = new Date()['getTime']() - 1756192048796 // 这里先把pageCreateTime写死 , O = Math['ceil'](S / (0x3e8 * 0x3c * 0x3c)); O >= 0x18 && (window['location']['href'] = window['location']['href']); var G = J['model'] , T = J['itemId'] , P = J['fileUuid'] , E = J['item'] , z = J['callBack'] , y = J['type'] , N = J['rescUrl'] , H = J['expireTime'] , W = J['confirm'] , I = J['token'] , A = J['pkg'] , M = J['pkgItems'] , C = J['saveAs'] , R = J['resJsCallback'] , Q = J['vcode']; _curFileDownOpts = J; var Z = '/f/d/' + y , Y = dfu(y, N, H, I, Q, A, C) , L = G == 'playLog' ? !![] : ![] , B = G == 'cache' ? !![] : ![]; if (fIsCached) { if (G == 'cache' && fIsCached(T, null, J)) return; if (G == 'play' && fIsCached(T, y, J)) { window[z](T, J); return; } } Y['isc'] = B, Y['ilg'] = L, Y['pkgItems'] = M, Y['confirm'] = W || ![]; // 由于报下面的 _underscore is not defined 并且下面的也不是我们想要的,所以就可以直接忽略注释掉 // !_underscore['isUndefined'](J['focusTipScene']) && (Y['focusTipScene'] = J['focusTipScene']); // !_underscore['isUndefined'](J['downUuid']) && (Y['downUuid'] = J['downUuid']); var D = cqbj(Y) , V = $['extend'](D, J['gt_captchaResult'] || {}); // var F = $('#pIii111lllE')['val'](); // 这句话的意思:页面中有个标签id值等于pIii111lllE的值 // var F = "9fc66f750be7efcc678a0c419dd18302c2010565de9e74c33736d4839a8a23c4" // 找到id标签的值,假当固定值直接赋值给F etag = cupie(Y['ud'] + '-' + F) // console.log("etag:::",etag) return { v:V, // 我们第一次测试获取的v值 etag:etag // 请求头里面需要的值 } /* * 以下的ajax请求发送就不要了,因为我们不需要,我们只需要等到 D值,所以我们只需要梳理:传入J值--fget()--Y值 // $['ajax']({ // 'type': 'post', // 'url': Z, // 'data': V, // 'beforeSend': function(U) { // var F = $('#pIii111lllE')['val'](); // U['setRequestHeader']('X-Requested-ETag', cupie(Y['ud'] + '-' + F)); // }, // 'success': function(U) { // try { // U = $['parseJSON'](U), // jsInterface_download_proessResultJson(U, J, Z); // } catch (F) { // jsInterface_download_proessResultHtml(z, R, E, J, U, Z, F); // } // } // }); */ } // 测试 获取V值的测试 // M = { // "ud": "CB54CFF589900001E9D06DF5DC10AD70", // "v": "8282595601-1756252800661-f774a3f01e08042c3564509a923fad57", // "type": "audio_mp3", // "rescUrl": "110065907", // "pkg": false, // "vis": "4d6507b8066a", // "isc": false, // "ilg": false, // "confirm": false, // "downUuid": null // } // // console.log(cqbj(M)) // 测试 var vvvvvvviisssss = "4d6507b8066a"; params_J = { "type": "audio_mp3", "fileUuid": "", "model": "play", "itemId": "114550593", "item": null, "rescUrl": "114550593", "expireTime": "1756278000750", "token": "d7ab6f2eca99d01e76fe1bdff954ff8c", "callBack": "callBackAudioFilePlay", "resJsCallback": "downloadAudioCallback", "custPlayCallBack": null, "downUuid": null, "customData": { "0": { "jQuery11020794731646544379": 4191 }, "context": { "jQuery11020794731646544379": 4191 }, "length": 1 } } var F = "9fc66f750be7efcc678a0c419dd18302c2010565de9e74c33736d4839a8a23c4" console.log(fget(params_J,F)) /* 我们传递params使用fget 可以得到v和etag貌似是没问题,但是实际上有两个关键点 关键点1:参数params中的token、itemId、rescUrl这些都是哪里来的,经过对比都不是固定的 这些值哪里来的呢?两种可能, 一种是从服务器发送来的(当发送爬取的目标API之前,浏览器上面有个API从服务器接收来的)---在代码中全局搜索是可以搜索到的(在响应中可以显示出来) 一种是本地产生的 ---在代码中全局是搜索不到的,本地函数生成完,就可以直接赋值给某个变量,不可能显示出来搜索到 总结:如果可以全局搜索到--就是从服务器接收来的;如果全局搜索不到--就是本地生成的 但是实际上有两个值是需要从页面获取的是变化的,我们只是都先写死了而已 var vvvvvvviisssss = "4d6507b8066a"; var F = "9fc66f750be7efcc678a0c419dd18302c2010565de9e74c33736d4839a8a23c4" 以上的这两个值,经过全局搜索都是在class文档中,都是变化的值 * */
浙公网安备 33010602011771号