爬虫逆向-Day18Day19-扣JS逆向练习案例3爱给网
目录
爬虫&逆向–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或headers也会搜索出来很多的匹配结果
经过分析该网站适合使用请求堆栈
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文档中,都是变化的值
* */