快手登录滑块验证(二)
很久之前发在知乎的文章,博客好久没更新,转过来水个文
登录部分的滑动验证码,抓包发现有两个请求: kSecretApiVerify 与 verify
verify接口见之前的文章。
kSecretApiVerify接口:
追栈找到这儿:
找到$e:
继续往下追:
记住这里,继续往下:
记住这里,继续往下:
经对比和上面的new promise是一样的。继续往下得到加密参数:
还原:
首先还原 l(c.a[i("0x38")](r))
可以看到 c.a[i("0x38")](r) 就是把字典转为url加码字符串,就不用js还原了,直接python传字符串就行,l如下:
接下来还原new Promise((function(t, e) { Jose[i("0x28")](i("0x29"), [n, s, {suc: t,err: e}]):
Jose对象直接进入了另一个js:
不管了,直接把js全部复制下来,把检测node的代码部分改一下:
最后还原 n[i("0x3b")](t[i("0x39")])[i("0x3c")](x[i("0x33")]) :
t.sent就是之前得到的数组,就是说找出n.from和toString("base64")就ok了。
肉眼观察可知n.from是把数组中的字符串转化为数字后变为Uint8Array对象,重写如下:
追栈定位toString:
把v(n)抠出来就ok了:
分别把函数v中的函数h、函数h中的函数l抠出来,流程就完全通了,重写如下:
完整代码如下:
var window = global;
!function webpackUniversalModuleDefinition(t, n) {
t.Jose = n()
}(window, function() {
return r = {},
o.m = e = [function(t, i) {
!function() {
var n = function n(t) {
return t.constructor.prototype
}
, t = Object.create
, e = function e(t, n) {
return Object.prototype.hasOwnProperty.call(t, n)
}
, r = Array.isArray
, o = function o(t, n, e) {
return Object.defineProperty(t, n, e)
};
i.prototypeOf = n,
i.create = t,
i.hasProp = e,
i.isArray = r,
i.defProp = o
}
.call(this)
}
, function(t, n) {
!function() {
function t(t) {
this.elements = t,
this.index = 0
}
t.prototype.next = function() {
if (this.index >= this.elements.length)
throw new Error("array over");
return this.elements[this.index++]
}
,
n.ArrayIterator = t
}
.call(this)
}
, function(t, h, l) {
function y(t) {
return (y = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function y(t) {
return typeof t
}
: function y(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
}
)(t)
}
!function() {
var r = {}.hasOwnProperty
, c = l(0).isArray
, t = (n.prototype.run = function() {
for (var t = this.callStack[this.depth], n = t.error; 0 <= this.depth && t && !this.paused; )
if ((t = n ? this.unwind(n) : t).run(),
(n = t.error)instanceof Error && this.injectStackTrace(n),
t.done()) {
if (t.guards.length) {
var e = t.guards.pop();
if (e.finalizer) {
t.ip = e.finalizer,
t.exitIp = e.end,
t.paused = !1;
continue
}
}
!t.construct || "object" !== (e = y(this.rv)) && "function" !== e && (this.rv = t.scope.get(0)),
(t = this.popFrame()) && !n && (t.evalStack.push(this.rv),
this.rv = void 0)
} else
n = (t = this.callStack[this.depth]).error;
if (this.timedOut() && (n = new Error(this),
this.injectStackTrace(n)),
n)
throw n
}
,
n.prototype.unwind = function(t) {
for (var n = this.callStack[this.depth]; n; ) {
n.error = t;
var e = n.ip - 1
, r = n.guards.length;
if (r) {
r = n.guards[r - 1];
if (r.start <= e && e <= r.end) {
if (null !== r.handler)
if (e <= r.handler)
n.evalStack.push(t),
n.error = null,
n.ip = r.handler;
else {
if (!(r.finalizer && n.ip <= r.finalizer)) {
n = this.popFrame();
continue
}
n.ip = r.finalizer
}
else
n.ip = r.finalizer;
return n.paused = !1,
n
}
}
n = this.popFrame()
}
throw t
}
,
n.prototype.injectStackTrace = function(t) {
var n, e, r, o, i, u, p, s = [], a = 0;
for (this.depth > this.maxTraceDepth && (a = this.depth - this.maxTraceDepth),
e = r = i = this.depth,
u = a; i <= u ? r <= u : u <= r; e = i <= u ? ++r : --r)
"<anonymous>" === (o = (n = this.callStack[e]).script.name) && n.fname && (o = n.fname),
s.push({
at: {
name: o,
filename: n.script.filename
},
line: n.line,
column: n.column
});
if (t.trace) {
for (p = t.trace; c(p[p.length - 1]); )
p = p[p.length - 1];
p.push(s)
} else
t.trace = s;
return t.stack = t.toString()
}
,
n.prototype.pushFrame = function(t, n, e, r, o, i, u) {
if (null == i && (i = "<anonymous>"),
null == u && (u = !1),
this.checkCallStack()) {
e = new s(e,t.localNames,t.localLength);
e.set(0, n);
u = new p(this,t,e,this.realm,i,u);
return o && u.evalStack.push(o),
r && u.evalStack.push(r),
this.callStack[++this.depth] = u
}
}
,
n.prototype.checkCallStack = function() {
return this.depth !== this.maxDepth || (this.callStack[this.depth].error = new Error("maximum call stack size exceeded"),
this.pause(),
!1)
}
,
n.prototype.popFrame = function() {
var t = this.callStack[--this.depth];
return t && (t.paused = !1),
t
}
,
n.prototype.pause = function() {
return this.paused = this.callStack[this.depth].paused = !0
}
,
n.prototype.resume = function(t) {
if (this.timeout = null != t ? t : -1,
this.paused = !1,
this.callStack[this.depth].paused = !1,
this.run(),
!this.paused)
return this.rexp
}
,
n.prototype.timedOut = function() {
return 0 === this.timeout
}
,
n.prototype.send = function(t) {
return this.callStack[this.depth].evalStack.push(t)
}
,
n.prototype.done = function() {
return -1 === this.depth
}
,
n);
function n(t, n) {
this.realm = t,
this.timeout = null != n ? n : -1,
this.maxDepth = 1e3,
this.maxTraceDepth = 50,
this.callStack = [],
this.evalStack = null,
this.depth = -1,
this.yielded = this.rv = void 0,
this.paused = !1,
this.r1 = this.r2 = this.r3 = null,
this.rexp = null
}
var p = (e.prototype.run = function() {
for (var t = this.script.instructions; this.ip !== this.exitIp && !this.paused && 0 !== this.fiber.timeout; )
this.fiber.timeout--,
t[this.ip++].exec(this, this.evalStack, this.scope, this.realm);
0 === this.fiber.timeout && (this.paused = this.fiber.paused = !0);
var n = this.evalStack.len();
if (!this.paused && !this.error && 0 !== n)
throw new Error("Evaluation stack has " + n + " items after execution")
}
,
e.prototype.done = function() {
return this.ip === this.exitIp
}
,
e.prototype.setLine = function(t) {
this.line = t
}
,
e.prototype.setColumn = function(t) {
this.column = t
}
,
e);
function e(t, n, e, r, o, i) {
this.fiber = t,
this.script = n,
this.scope = e,
this.realm = r,
this.fname = o,
this.construct = null != i && i,
this.evalStack = new u(this.script.stackSize,this.fiber),
this.ip = 0,
this.exitIp = this.script.instructions.length,
this.paused = !1,
this.finalizer = null,
this.guards = [],
this.rv = void 0,
this.line = this.column = -1
}
var u = (o.prototype.push = function(t) {
if (this.idx === this.array.length)
throw new Error("maximum evaluation stack size exceeded");
return this.array[this.idx++] = t
}
,
o.prototype.pop = function() {
return this.array[--this.idx]
}
,
o.prototype.top = function() {
return this.array[this.idx - 1]
}
,
o.prototype.len = function() {
return this.idx
}
,
o.prototype.clear = function() {
return this.idx = 0
}
,
o);
function o(t, n) {
this.fiber = n,
this.array = new Array(t),
this.idx = 0
}
var s = (i.prototype.get = function(t) {
return this.data[t]
}
,
i.prototype.set = function(t, n) {
return this.data[t] = n
}
,
i.prototype.name = function(t) {
var n, e = this.names;
for (n in e)
if (r.call(e, n) && e[n] === t)
return parseInt(n);
return -1
}
,
i);
function i(t, n, e) {
this.parent = t,
this.names = n,
this.data = new Array(e)
}
var a = (f.prototype.get = function(t) {
return this.object[t]
}
,
f.prototype.set = function(t, n) {
return this.object[t] = n
}
,
f.prototype.has = function(t) {
return t in this.object
}
,
f);
function f(t, n) {
this.parent = t,
this.object = n
}
h.Fiber = t,
h.Scope = s,
h.WithScope = a
}
.call(this)
}
, function(t, n, e) {
e = new (e(4));
e.eval('["<script>",0,[[21]č75ċ,falseĒď4,1,nullĝ16]ĝĀĂĄĆĈĊāanonymousĉč[Ĕ,28ėęěĝ3ČČ43ħĝĿ27ŃĚĜčŇĖ42Ōēĕ26őŅŔň,4đ荾śĕĘŒņš40řŧŀğŪş[ŕČ39ŰŎ3ŞœŶš38Żś2žŬĖ3ĩťōśġŴſŷ,3ŘƌŚŀČƐƈŸŦŦĿ19ƇŠƉůƖű1łƚƣČ2źƦƟŐƪƀĖŁƄĠŝƲƒŏƶ1ũńƑšŜƼųƿƛŀ5ƼŽƹǁ4ƼƆNjƴƕ[ƞĕ1ƏDžƫŀƝƍĠƙǘƳƬƥǓǜơǐČƠƶƩǟƒƨƶƱǫš17ƶƸǰĖĨƶƾūǙƽƶDŽǻǠĠǍƯĕNJǶǧŋȄŀƢȁ1ǒǔĠȌǬǛƗǞȀǬǢŦ2Ȗŵ7ňĝƭǷȠƋȁȉǓȤȡǧǢȞ,"$encode"ȠơŸħƝșȦ1ȃďdzťȨȸƓȤȬȮȰĄyćȶčȩƓȺħȼħȿƻɂȷŖƞČȮȴɊɌɘȹťȻħȽɕɁȧōġǢƒȿǸēġŦƒLjɗɯŀdžȤɮľġȦƒɧɹȬ502ʃƽȿȬĐ096573Źōǧ86997ŏ0ʆǧʔ3Ŋ84ʞʐĠȎ91376ɧȬ-ʥ66ŗ07ʠēŸʜĔʒ9ʙĠ8ƽʓţ9ȫğƃʳ,835ʜțʲľČ5ʁŁʊ6˂ˋ,-ĐȎĔŹ5ǒȬʥ954ʭ06ȫǧʟƊˠʥ˒˜ŁʦƨˢɆČ-ʽˡŮʡ˕3Dzʟ8ʩˁōğǒƒ˒ɿǧȤƒƮɨ˃ǖĨˆ2Ů˪ʑʔ447̒ɚƓʘ9Ɣʵ̖ŹʈʉʌȦȬʊƠ˻̋ʡƽ08ʕʉ̙ʡ̍ˇ6ˆ̔̏ŀ˻ʰ̱ʄʡƊ̍Ƃ1̩ˤƓ̾59ʞ0̖ˣʖ2˚ʱ̧ŗˑʻ̈́ʩʚ͊ʰ˅8̴Đ6țʱț˰ŀ6Ⱦ͗ʻ0̡Ÿ̍8ʃ͊8̀ƂˆŹʘ͆ʡŮͩ̍7̮̔ʮʵ͕ʡˣʟ̷Ƶ˃Ͷʂˍ̈́ͥĠ̍ʤʁȎ˛ǧˍʁʻʓΌĠʔˣʮ̈́͊͞˟ʃ̩̮ͨͨƨʜʜ̇ʇ˞ƭʊ̴ͫƔ̾˸Ɗ7̜ʎʋή̪̜5ʞ˚̥̖ǖ̝ʓ̭˃ʎͨţ̪ɳ˓ʭ̱ʰțσȬͶ̌ʔȎ̧ƭ̠̓ʖ̧Źͨ͠ƭιʓ5ΠȞ̤̀ῦ̖ĐŜˆ̯̀Ϛˣʦ̮ʍʘ8̓ĐΞțŇ̍ǖ̺͊ʕŇͫͬʜʌʮͶδĨˢεDz̺ˣͤηʘͲʉ4ʌƠʉϬΚʎ̒Ͳϴŏʍʹʁʽʒ̃,ʋʿˣˍ͗͞Źʕ˻͒,˞ʻ˙ήϔʃϗĐ̴ƽʦ0ʂˢΆ˹ʱʍͶΣʚΎ͚̮ͩʂţϮǽ˃ͩϋʘ˚̮Ɗƨ˚ŗʹ̍ŁŊϿёĔʨʜƨШƔͰ˸̓нƓƔ̙͊ƭ˪ğʮdž2Ƚĩīāăąćļ"rĊĎț,truſȬǢɏȚ̅ǁħ͞ȚɄҀdžѫĝłѾɄǒȡġ̍Ƞğġ"BɍȁȏɃƴɘɰɕғȭpҗɬ҃ʡҌȑ˒ǂťɓ˃"slicȵȠĕɛҮҰҲǙσɹɏɕɄσҏĠҿ˿ȭAҢšɸҚČҚҐӂȑ"DҗӀȾҒӎҡdžɭ҄Ҝ˄ȣɒɤʡҭүұӑҴȭҶӢdžҺӉŢɠ,ҿơɰӍƆ"ӅɷҤɵɫšɾ͞ҦӊӜ˃ѹѻӚƭӔӲkӆĖӺɩċdž̂Ӌ,ɧɏ˒ȦŊԌӶďӯӫɎɄԒĝԔǙԍԊ҅ȑȦҩďĝʨЩȏ̧еdž̇ɿҐӚԤȨԧŐ̾Ȕ˓̾ӸǷșәɵҎԘȽɣťɥӾ[ԞǓՄɎԉԚĖѠƲӀԃɎӃ"ԆӬԜčՇ́Ԗѿ̀ՏԘՑĞȋՔӑԛņԝɼšԠՌČԐեŔէԕɴŶŽӏatȵԋɎŽɫմDնոșҫ˓"parěӣӕֆֈԫԬ͞՞ȑՠ̍բՕիӛկըĖժɺɐ֗Ն֛Č֝ήԙԗ֜զ֚ձ֤̈֨ӚώՒӎdԇǧƝӪ϶֪֢֠֬һծ֨ɰȚҟ"gֵ֭֘ԑӬȽւ֦ҿǕĢĤĦղʭƘ̀DZҙӬֱ֮֟ǓġȨģĥԖȸĪčĝעlאĥת"aınıtıո"oıvıfıcıuıѴīȎΓŽʫוצ̪č"ıstֆtupRijdomĹn״ȭ͆е 0ı uȭer קչĬѯįѲׅĽѷԀѼȟ֗҇Ǚ҉ēğԺʼn՛ɄԤՀׂӎx׆өӟlȰgthդĖҿԽՆҽ ՅƒӈҥdžՋכШ" n Ӭ ̧ԝȿεԧł͠Ӭխ ɎӪȤˇ ĝ чˍ ԿԈӬɭՂՈɔȠ ɏɾȏσţ ŰцǣčהԥהϛӬӪ ɢӝՃ Պ ŖԱҎ׃EҗǍĝרב ѳıװȭײȭ "Ҹ[Ēʜ ѮĮѱıִ Č Ɓ ɡ׀́ӔҔ ӗԖѽӨ ȁ ֗͞ ď ˒ˑŢ ĖӪɕΘ čы֗σԓ֣ӭ Оħ ԝɱӇ ҺԧŝЅ ŝʎ ̮ [ˣԴŢ ŝ ԝ ղ˜ ּ֙ҹ ωƬ ȁ ܂ՌɰԤ׃ԝצ [ש ܝ ȭ " "״ ŀŐܛĒǢ Ѱİȭ ѸѺ ѿ Ɖ ɪ ղɏΆǢ5ȤԨŅ̌ Ǩӷ Ƙԡ݆݅ҪӞҬtoSѹi ։ҔݓݕąݘհǙӘ ԾܼɄȿ ܝݫ ܠׯҗĒDz ܧܬĭܮѲҡܲ ˃ӼĠܸ НȎԒմݜݗ ցݑփfr ChֆCȳ ͊ӎގސޒrޔȴ ל ҈ ȭ ޟԲͲԝΘݟȁݡ֗ ġ̇ˠņմMն ̾ތɇұilݙȭ ܆ ӵ܆ ɽŰ ܈[܁ łƽω߆֗ ݐ ťɦޣ܄̂ՖӚ̇ߏ ȾӮ ˃Ѩߦ֯˃ݨ ރɛcޛޝeAܦɎ"ߴޓޕ߸җʇݨҨɄШߩՆׇ߫Ȭ߮ެ܇֫֗߳ߵ߿߹ď߽ޜࠕࠁ̄ԝ˒ ߕͼࠌֺ߭ԝ̮߯ެܾ Ҭ࠙߶ࠀҳӎࠛʡ˒ʟ Ԣլࠢࠦߠࠥߪࠍ Շࠪߙࠬփ࠳ȴ࠰ߺ࠲ࠔࡈࠖࠠכࠄߧכȨɸ ʥ ɀ ̂ ֩Ʀ Ŧ Ġˆ ťՆ࡞࠺ࡠ Ţǒהߥ ࠐՅӀѠࠣ܊Ը ԭ Ѡ࠶܍ɶξ̀Ċދߚփpow։Ӳࢍުߡࠨ ˌ Յֹםތӓ ܽԘѠǒДܓࡽ࢛ ࡸ̅ࢇ ߲ܰloo ࠗޘࢳࢵ ޱ ߍࠎࢾࢫ ɑࡄࡗߛ ࢀ࠵࠼߭ϐʊʖ˞ ̉ࡾࢨࣀࢧࡓ࢝ࡖՉ࡙ࢣ ܙܧܜ ݬݮܢܤ ȭܧǖłܪ ݹ ıӅݽܴ כ ȥޣ࠹ށࣃݠ ߔܑޣ ݏ džɹН܄ࢡ ࣹ࢘Ʒ łʦΒऍࣹߦࢼ औӭָࠉऎࡃउࣿचߍ࢞ࢋढ ҆Һࡩ ǼङࡡՠהܔЩऊङѿࢃࠇߣߑϱ ࢃࢦऑ सț ȭMޟ ϊࣔכॆࡼ़̧ ॅࡸԘ݉աҔ ࠩभݎࢪॐՅࡂफ़ࢨनւफޣŗʸ࣎ƭडࠉҺࣚࡘԥܐࣆǓߜࣝ ħ Ӂ Ű ̇ࡲ࢞ ޯނߗ֭ࣀҼই ʇ ই֥ ঋथ̆३এঔDZԼʡࠉ ऊַͼগतȍטডԥǬ ˓घߋ।τ ञђי߰ǝְҨ׃ࠏࣹހ࢞ѿ Ґ އ Րިহ॓ࢨԥՙDZबࣞस ग़ȭyޟ ࠽ ʃӔմ$ূऊ֝ঽऊѿॽך־Իঞࣉ ɧՇࠋ࣍ʨ७࣑ǼচࠤȁԮԟ ҁࡒǧߖǭহ৬५৮࣐ זৎݦǷमॻ ऺॿƦࡲࠇ ƔࣸওঢɏȤ৫ʼn৭࣏σܐঅכ ࠫॵ२߈ࣾਟॗࡒਘࡰਁਛৰࢩਦߘ࢟पॷউƬদӪ࠶Ά४4६ਃߎΒ ०ࢠਲ਼Нঝ֗ਹਚ৯̺ডੂਲࣈਤऑੇࡀਪਂਜΒࣄࡅਣ܅ਯਕ҆Ŧ਼ਜ਼ছॱࣇࢢ ਧǧࢦਫੌਾঠআਰऩ͞ߖѿޡ࣌ਝਇ˥ॺťॼऊɭਊŝ̻ডݩܛࣣתܟѴܡױ׳ı࣪"ܰıiı ı "ִ࣭̔ ܫĝܭࣳઢࣶԁݿיইঊ҆ইতכੀלʁӬΒࡷॠ࠷ ੧ܚ ઞȭࢶݱġࣰݸ ѵď ࣷુ ঘܹਤ ɰȨՓװϔईӒ૮բ૰ Άઘכ૬ऒֲӲߎԓčઠݰࡥહࣱܯ"િܵૃޣӪૻһ૯ࠜʢक़૾җ ˓͊ଙȑକଝଁ࣠ݭଇࣲૠ" ਓ૨ރଡ૭Ԅઢ̧ࡑଚݯ ΆȦૌࣟݪࣤପ ବ ମଋोଲ૦ࣹਤणୀ૿˜̇ି૽େૐԸ݀݀ଦୋ୍Ɔ ଋSૢ পૂଵלބঢң૪ধšܒૺডܐण˵ࢨܐଞજટ୬ ણ࣭୯ݷଭଊѲ૧ ৹ੁޫஂ לਔஇ ߍǒଂ࣡୫வ୭ஒ ଆȾଈ୲ѲҖਞܷҋԊߞँ কਤ܄ઔҬޥइӽƦਔਖओ Ʒੲॵࡌ߷ࠖޗҔࡇ ܌Ϗࠟ Եࢿǡߎ௫ࡥࢃˍƭ݇Ɏ एɏ௵Иȿ Ե̩यॽǓȬʋ̰௮ǝѪਭ˜Ǣ௰ࣅΆࡉࢷచࠖఒఐ੍ެɲޣ̍ހࢃ৾Նߢιॡ̉ࢦѠ̱ਭࡏ˫ଽఋԝలறభషऽ఼࠸ӬԮࢱքĺࡶࢷğెsైɹࡲ˸̮ґࣕੴూరిఫͼుణఎళఢߎࣽౄࠒҠే։մp౧Ԗࡲ௰௴ౙ௭ౝԸమఴౣਡఘ౪ౌ౦౽౬ ݁ߍɏࢋɇ౼ై౿్ǓఆݥƝङ ࡢಂӻࡴआಊɄୟԏব ࠡझțࣽऑಝȭވݘࢰ"ޙmޑ߾ޞ࠱Ҕರಲࠚ৳ȁݧઐఉऀঀ ͷƠࣽ࠶ऴАৱԖʎȭE ࢺܶջōĝץଧஐଅાܣત દ җľƘğ țźĒ̈́ݳıӐு ஞ૩উܻೃ܄ङɇௐಛಟҾࡧ௱ʍ಄ఖ֒Ԑ׃ ֽಗǙɸಙަംԮ࢜ੈ އݖಬࢊࡅɇಷ߀ಯޏಱഩড಼நɸಐഓएהƊଞࡨકࡪ߄एळೈɧהౠଃஸೞ થȭધ࣬ ˸೭ ݺફೳܶଶ˾ொŭߝീ৻సǧ ংłरஅׇЍ ϧǓ੮ॶઍਉઑೂःೄખ·ݢದୈઝൊୌൌײ࣭ơ୰઼ଯ ൚ଐ்ޣ ऻഅ୕ఁߐ ଡ࢙˃ࢂ൯ ੫ξߍࣗਔઋਢधयਅගുಓ ࡱ யளନඅೝඇ ѷඊѲR୵ીஜୖඐ߅ൠಡൣӪࢃ൨Ţࣽࢃඞ ൰ඡయઊ൵൸ೀ ൪థൽഷදછපஷභඉ೮ୱ൘ȭԆඎޢಞޮ֞එ߇நఀŐଠ՟শӎ ހૻɖ"ഐവௌ ॸഃփՅिӭୟࠅചഌܕॉಯޟ తஃ ാෝӹശಕѡූൈழஏஶ෧ൎೠܧ֔Āଆൗઽܥܳශூ൜ംৡഋ˜ࢭҠeI ࢉୀօև่๊தฑࡵާՅ֏࣊Ŕࢮഥɛ౾քࢎ௧ฏॖч࣓ॠ ంɅสඁࢨࣗറݨะݯஹีகൖாı ෯ෳউंഒർநࢃअഖ௸൪഼ଟईఘsub ࢶޗӲທນѹࢻ̗ผಿగӟಉപຨదߍരมൾךസՆฯີัೞีČරݾෂแܺෆணࣸෞຊക൫ঢตॣ Ӓܖޘ׆ ࣘ൳ອේഽൺൣാศະනോาඈൕ ูଯ Ѷවଏ ࣼޭຫǙૈெȑԎŗୀqঈʍϰʿ˟ԂҔขࣂ߁ĵcնപȲȱ༘ฃ͞ৗณ࠭༖༜ࡊ༦ࠖ ໄҦɻ ༣༓ఘ༚༗࠘༪໗३ʉ Ґ༡߁༲ຕӟ༵༧జ༕༛༫ ਤɆғนག༥༹༙༝Ӛʩɰ ݂Őͫ˅Ԋණ֧Ӛஉฉjມ׃༑໙༳གྷན༨ཇ༶༺ࣝġߓਥௗ༤ࡆཆཹ༬ฏछŢѾ׃ཥ༎ผཀྵྲྀཫཐವཅཽຌ໋ຒԥՐ༏ȭ྆Ʉɸང༷࠲ོཊ້༒ཏླྀདྋཻྤฌല્౺ԊԤסבಁӁ ্ઉɏȏמ֧ಋשפԋຶܢࣨೣ ௬೧ӰŋĒʍ ࿋࿌ 3ı˟ˠıѢ1dʎa-̒e7࿙7fa͠2-ŇƽȾaa̾c8 ุ෬"W୷฿Ȣහྏฒ෴ ȿӳ aೕਥ່ऌཔ༒பञ̓นणྡྷಳ௦ྥఛ྇ຒඦࣛจളฤॽഔໟΓݢߖ ິܞຸࣧଆѪฺYๅဂrင๋պဇǧƓ߉டநಃಣഝОฆ๑๙ຉໝಏฤཟलσ ຑລਮਔࣀܐ݃ຈസћ̈́ͨ9Ѫˊଞງख़కഁՀɾෘඨഴࣻෟศং܀ůဩබါိŝຼȭཥຂස൝ଓԧʆߎཙࡥईਏସƓྕ׆ʪॽఊɛ൳ം໘ਞߊིှชnȴfݗe ݀ႈʜဥԱୟ ȭဲൢ৷ฏషຏ ϓ৳ಞླߌଟ൱ԱԐ්၊ၣຮந࡛ဟֽสǢ൲Ն̀୧ංஎၶ෦ၸำ ೡܧƔ ບމ೯ၼიၿໂಞૄ൦შဈȤଟୃྫҬӦޖჳມ༁ բ༄ညཪမྷѾྮףדŝ൮ǙႹဦჱ֞Țᄁג֭୪྾ဪࣦ ࿃Ʌ˔ġ൮ĒီĀທ ପଋ༄უเქძൡਤƔЍ̩̱̇ŕɻღО̾˅ʕʧƈɻ႑ਙ݁ʱ್̈́Ƴɻ ए֦ඒਤྐഀ ം႔ൿࢨခࢯఘma ࡊӲᅗᅙճӄဃစѾŽဠႯȁᄇञᄸ୕Ⴛԥထࠓဓဗ࠘ఞޟߖࡕᄉෙ৶၍ဢล৺ष ŝʭฦཾആךต̾ᅺဘჁಢ॒ਫ਼ྡྷᅹആᄆԏၲЩ̴܄ᅧ࠾ഇ၆ʼԱΆ࠶షШݨടด࡞ᄲ ᄺ၊ఔธᆡໍᆭƓӀࡦඝࠞആࠋढ़ਆॳᆸᆼநรᅼॽɾᅿᆂǝᆜȾຈᆻႈĨࠇȬᄬΏᄯᄹษญसႨ ᇓʓၥႵτᄵŹͶ৹ᆰᇝ ᇅ၄ ԵͶၥཛ࣌ᄽ̪ͫᄰွᇅɿຆթᅥႛᇆ໊ᅌனႳłĐߖ ࡂ׃zᅵယॲᆠᅻುᆙຯʒೌࠉೋၵࣥણთࣩଆၠ ks-ěႤჟ෫ฺልᄥႁᄳĐ̓˦̔ʰʦρᇮწʞˆЍԒྟНሲ̳˧ɧᇿބሸ̔ƨడಽదˑŊ˟ ோቄ˦ʮቁ০ᄫʄʃ˟ᇤȓ༻ŜˇƨལǬૈႚDZโԣʹŦܐǬᆺՀਭǬᅏऍ໘ѿУജଳԣиఴൄŐʊᆥ࢚ߎހɧቮᇹᄳ༮Ɠቲౡʌ ཝᇞኆృታᇹትᄃЩཿᇅ྇ၘ୨יఽᇛᇺ ቴྰʥްᇜአୂי݀ᇄኋԱቬኀ݈ૹᆻኴීቫᇾDZኪᇟූክႼৢౖᅁᆹᄨȍተǷቿషढভଞࡏন ऋၮǬအᇌห౭ჰ ቪࡁဨምડზೠೢપཀȭඍ"મȭરӥଆʮုდምዲ"રıድҭıCೣȭ ฝҠࣴൌစଌı""୴ȭச"bıீӏ൙ชı෭ᄔກ" ȭGıHıIሟ"TıႭıၾტ"ᄤ"ል࣭ĀʂŇı2ጙvWTr0uRBGHƊ6Yጘȭ࿑5࣠Ēğବ'),
t.exports = e
}
, function(i, t, u) {
!function(t) {
var n = u(5)
, e = u(6)
, r = u(2).Fiber;
function o(t) {
this.realm = new n(t),
this.realm.global.startupRandom = Date.parse(new Date) / 1e3,
this.realm.global.count = 100
}
o.prototype.eval = function(t, n) {
return t = function(t) {
var n, e = {}, r = t.split(""), o = r[0], i = r[0], u = [o], p = 256;
for (t = 1; t < r.length; t++)
n = (n = r[t].charCodeAt(0)) < 256 ? r[t] : e[n] || i + o,
u.push(n),
o = n.charAt(0),
e[p] = i + o,
p++,
i = n;
return u.join("")
}(t),
this.run(o.fromJSON(JSON.parse(t)), n)
}
,
o.prototype.run = function(t, n) {
n = this.createFiber(t, n);
if (n.run(),
!n.paused)
return n.rexp
}
,
o.prototype.call = function(t, n) {
return this.realm.global[t].apply(this, n)
}
,
o.prototype.createFiber = function(t, n) {
n = new r(this.realm,n);
return n.pushFrame(t, this.realm.global),
n
}
,
o.fromJSON = e.fromJSON,
i.exports = o
}
.call(this)
}
, function(e, t, r) {
function a(t) {
return (a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function a(t) {
return typeof t
}
: function a(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
}
)(t)
}
!function() {
var o = {}.hasOwnProperty
, t = r(0)
, i = t.prototypeOf
, u = t.hasProp
, t = r(1)
, p = t.ArrayIterator
, s = t.StopIteration
, t = (n.prototype.inv = function(t) {
return -t
}
,
n.prototype.lnot = function(t) {
return !t
}
,
n.prototype.not = function(t) {
return ~t
}
,
n.prototype.inc = function(t) {
return t + 1
}
,
n.prototype.dec = function(t) {
return t - 1
}
,
n.prototype.add = function(t, n) {
return n + t
}
,
n.prototype.sub = function(t, n) {
return n - t
}
,
n.prototype.mul = function(t, n) {
return n * t
}
,
n.prototype.div = function(t, n) {
return n / t
}
,
n.prototype.mod = function(t, n) {
return n % t
}
,
n.prototype.shl = function(t, n) {
return n << t
}
,
n.prototype.sar = function(t, n) {
return n >> t
}
,
n.prototype.shr = function(t, n) {
return n >>> t
}
,
n.prototype.or = function(t, n) {
return n | t
}
,
n.prototype.and = function(t, n) {
return n & t
}
,
n.prototype.xor = function(t, n) {
return n ^ t
}
,
n.prototype.ceq = function(t, n) {
return n == t
}
,
n.prototype.cneq = function(t, n) {
return n != t
}
,
n.prototype.cid = function(t, n) {
return n === t
}
,
n.prototype.cnid = function(t, n) {
return n !== t
}
,
n.prototype.lt = function(t, n) {
return n < t
}
,
n.prototype.lte = function(t, n) {
return n <= t
}
,
n.prototype.gt = function(t, n) {
return t < n
}
,
n.prototype.gte = function(t, n) {
return t <= n
}
,
n);
function n(t) {
var n, e, r = {
window: "undefined" == typeof window ? {} : window,
undefined: void 0,
Object: Object,
Function: Function,
Number: Number,
Boolean: Boolean,
String: String,
Array: Array,
Date: Date,
RegExp: RegExp,
Error: Error,
StopIteration: s,
Math: Math,
JSON: JSON,
console: console,
encodeURIComponent: encodeURIComponent,
unescape: unescape,
Uint8Array: Uint8Array,
parseInt: parseInt,
escape: escape,
decodeURIComponent: decodeURIComponent
};
for (n in r.global = r,
this.has = function(t, n) {
return null != t && (!!u(t, n) || this.has(i(t), n))
}
,
this.get = function(t, n) {
if (null != t)
return u(t, n) || "string" == typeof t && "number" == typeof n || "length" === n ? t[n] : this.get(i(t), n)
}
,
this.set = function(t, n, e) {
var r = a(t);
return ("object" === r || "function" === r) && (t[n] = e),
e
}
,
this.del = function(t, n) {
var e = a(t);
return "object" !== e && "function" !== e || delete t[n]
}
,
this.instanceOf = function(t, n) {
var e;
return null != n && ("object" === (e = a(n)) || "function" === e) && n instanceof t
}
,
this.enumerateKeys = function(t) {
var n, e = [];
for (n in t)
"__mdid__" !== n && e.push(n);
return new p(e)
}
,
t)
o.call(t, n) && (e = t[n],
r[n] = e);
this.global = r
}
e.exports = t
}
.call(this)
}
, function(n, t, e) {
!function() {
var a = e(7)
, g = function g(t) {
for (var n = b(t[2]), e = [], r = t[3], o = 0; o < r.length; o++) {
var i = r[o];
e.push(g(i))
}
for (var u = t[4], p = u.length, s = [], a = t[5], c = 0; c < a.length; c++) {
var f = a[c];
s.push({
start: -1 !== f[0] ? f[0] : null,
handler: -1 !== f[1] ? f[1] : null,
finalizer: -1 !== f[2] ? f[2] : null,
end: -1 !== f[3] ? f[3] : null
})
}
for (var h = t[6], l = t[7], y = [], d = t[8], w = 0; w < d.length; w++) {
var m = d[w];
y.push(v(m))
}
return new S(null,null,n,e,u,p,s,h,l,y,null)
}
, b = function b(t) {
for (var n = [], e = 0; e < t.length; e++) {
for (var r = t[e], o = a[r[0]], i = [], u = 1, p = 1, s = r.length; 1 <= s ? p < s : s < p; u = 1 <= s ? ++p : --p)
i.push(r[u]);
o = new o(i.length ? i : null);
n.push(o)
}
return n
}
, v = function v(t) {
var n = t.lastIndexOf("/")
, e = t.slice(0, n)
, n = t.slice(n + 1);
return new RegExp(e,n)
}
, S = (t.fromJSON = g,
t);
function t(t, n, e, r, o, i, u, p, s, a, c) {
this.filename = t,
this.name = n,
this.instructions = e,
this.scripts = r,
this.localNames = o,
this.localLength = i,
this.guards = u,
this.stackSize = p,
this.strings = s,
this.regexps = a,
this.source = c
}
n.exports = S
}
.call(this)
}
, function(n, t, e) {
function v(t) {
return (v = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function v(t) {
return typeof t
}
: function v(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
}
)(t)
}
!function() {
var o, r, i = e(1).StopIteration, t = e(0), u = (t.defProp,
t.hasProp), t = e(2), s = t.Fiber, p = t.Scope, a = t.WithScope, c = (o = 0,
function(t, n, e) {
var r;
return r = function r(t) {
t && (this.args = t)
}
,
Object.defineProperty(r, "name", {
writable: !0,
value: t
}),
r.prototype.id = o++,
r.prototype.name = t,
r.prototype.exec = n,
r.prototype.calculateFactor = e || function() {
return 2
}
,
r
}
), t = [new (r = function r(t, n, e) {
return c(t, n, e)
}
)("",function(t, n, e) {
return m(t)
}
), new r("",function(t, n, e) {
return n.pop()
}
), new r("",function(t, n, e) {
return n.push(n.top())
}
), new r("",function(t, n, e) {
var r = n.pop()
, o = n.pop();
return n.push(r),
n.push(o)
}
), new r("",function(t, n, e) {
return t.fiber.rv = n.pop(),
m(t)
}
), new r("",function(t, n) {
return t.paused = !0
}
), new r("",function(t, n) {
return t.fiber.yielded = n.pop(),
t.fiber.pause()
}
), new r("",function(t, n, e) {
return g(t, n.pop())
}
), new r("",function(t) {
return t.guards.push(t.script.guards[this.args[0]])
}
), new r("",function(t) {
var n = t.guards[t.guards.length - 1];
if (t.script.guards[this.args[0]] === n)
return t.guards.pop()
}
), new r("",function(t, n, e) {
return t.fiber.r1 = n.pop()
}
), new r("",function(t, n, e) {
return t.fiber.r2 = n.pop()
}
), new r("",function(t, n, e) {
return t.fiber.r3 = n.pop()
}
), new r("",function(t, n, e) {
return n.push(t.fiber.r1)
}
), new r("",function(t, n, e) {
return n.push(t.fiber.r2)
}
), new r("",function(t, n, e) {
return n.push(t.fiber.r3)
}
), new r("",function(t, n, e) {
return n.fiber.rexp = n.pop()
}
), new r("",function(t, n, e) {
return f(t, 0, "iterator", n.pop())
}
), new r("",function(t, n, e, r) {
return n.push(r.enumerateKeys(n.pop()))
}
), new r("",function(t, n, e) {
if (f(t, 0, "next", n.pop()),
t.error instanceof i)
return t.error = null,
t.paused = !1,
t.ip = this.args[0]
}
), new r("",function(t, n, e) {
if (e.set(1, n.pop()),
n = n.pop(),
this.args[0])
return e.set(2, n)
}
), new r("",function(t, n, e, r) {
return n.push(r.global)
}
), new r("",function(t, n, e, r) {
var o = this.args[0]
, i = this.args[1]
, u = e.get(1);
if (o < u.length)
return e.set(i, Array.prototype.slice.call(u, o))
}
), new r("",function(t, n, e) {
return h(t, this.args[0], n.pop(), null, null, !0)
}
), new r("",function(t, n, e) {
return h(t, this.args[0], n.pop(), null, this.args[1])
}
), new r("",function(t, n, e) {
return f(t, this.args[0], n.pop(), n.pop(), this.args[1])
}
), new r("",function(t, n, e, r) {
var o = n.pop()
, i = n.pop();
return null == o ? g(t, new Error("Cannot read property '" + i + "' of " + o)) : n.push(r.get(o, i))
}
), new r("",function(t, n, e, r) {
var o = n.pop()
, i = n.pop()
, u = n.pop();
return null == o ? g(t, new Error("Cannot set property '" + i + "' of " + o)) : n.push(r.set(o, i, u))
}
), new r("",function(t, n, e, r) {
var o = n.pop()
, i = n.pop();
return null == o ? g(t, new Error("Cannot convert null to object")) : n.push(r.del(o, i))
}
), new r("",function(t, n, e) {
for (var r = this.args[0], o = this.args[1], i = e; r--; )
i = i.parent;
return n.push(i.get(o))
}
), new r("",function(t, n, e) {
for (var r = this.args[0], o = this.args[1], i = e; r--; )
i = i.parent;
return n.push(i.set(o, n.pop()))
}
), new r("",function(t, n, e, r) {
for (var o, i = this.args[0]; e instanceof a; ) {
if (e.has(i))
return n.push(e.get(i));
e = e.parent
}
for (; e instanceof p; ) {
if (0 <= (o = e.name(i)))
return n.push(e.get(o));
e = e.parent
}
return u(r.global, i) || this.args[1] ? n.push(r.global[i]) : g(t, new Error(i + " is not defined"))
}
), new r("",function(t, n, e, r) {
for (var o, i = this.args[0], u = n.pop(); e instanceof a; ) {
if (e.has(i))
return n.push(e.set(i, u));
e = e.parent
}
for (; e instanceof p; ) {
if (0 <= (o = e.name(i)))
return n.push(e.set(o, u));
e = e.parent
}
return n.push(r.global[i] = u)
}
), new r("",function(t, n, e, r) {
return u(r.global, this.args[0]) || this.args[1] ? n.push(r.global[this.args[0]]) : g(t, new Error(this.args[0] + " is not defined"))
}
), new r("",function(t, n, e, r) {
return n.push(r.global[this.args[0]] = n.pop())
}
), new r("",function(t) {
return t.scope = new p(t.scope,t.script.localNames,t.script.localLength)
}
), new r("",function(t) {
return t.scope = t.scope.parent
}
), new r("",function(t, n) {
return t.scope = new a(t.scope,n.pop())
}
), new r("",function(t, n, e, r) {
return n.push(r.inv(n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.lnot(n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.not(n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.inc(n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.dec(n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.add(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.sub(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.mul(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.div(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.mod(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.shl(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.sar(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.shr(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.or(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.and(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.xor(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.ceq(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.cneq(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.cid(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.cnid(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.lt(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.lte(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.gt(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.gte(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.has(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(r.instanceOf(n.pop(), n.pop()))
}
), new r("",function(t, n, e, r) {
return n.push(v(n.pop()))
}
), new r("",function(t, n) {
return n.pop(),
n.push(void 0)
}
), new r("",function(t, n, e) {
return t.ip = this.args[0]
}
), new r("",function(t, n, e) {
if (n.pop())
return t.ip = this.args[0]
}
), new r("",function(t, n, e) {
if (!n.pop())
return t.ip = this.args[0]
}
), new r("",function(t, n) {
return n.push(void 0)
}
), new r("",function(t, n, e) {
return n.push(this.args[0])
}
), new r("",function(t, n, e) {
return n.push(t.script.strings[this.args[0]])
}
), new r("",function(t, n, e, r) {
return n.push(new RegExpProxy(t.script.regexps[this.args[0]],r))
}
), new r("",function(t, n, e, r) {
for (var o = this.args[0], i = {}; o--; )
r.set(i, n.pop(), n.pop());
return n.push(i)
}
), new r("",function(t, n, e, r) {
for (var o = this.args[0], i = new Array(o); o--; )
i[o] = n.pop();
return n.push(i)
}
), new r("",function(t, n, e, r) {
var o = this.args[0];
return n.push(l(t.script.scripts[o], e, r, this.args[1]))
}
), new r("",function(t) {
return t.setLine(this.args[0])
}
), new r("",function(t) {
return t.setColumn(this.args[0])
}
), new r("",function(t, n, e) {
return b()
}
)], f = function f(t, n, e, r, o) {
var i = t.evalStack
, u = t.realm;
if (null == r)
return g(t, new Error("Cannot call method '" + e + "' of " + (void 0 === r ? "undefined" : "null")));
var p = r.constructor.name || "Object"
, u = u.get(r, e);
return u instanceof Function ? h(t, n, u, r, o) : null == u ? (i.pop(),
g(t, new Error("Object #<" + p + "> has no method '" + e + "'"))) : (i.pop(),
g(t, new Error("Property '" + e + "' of object #<" + p + "> is not a function")))
}, h = function h(t, n, e, r, o, i) {
if ("function" != typeof e)
return g(t, new Error("object is not a function"));
for (var u = t.evalStack, p = t.fiber, s = t.realm, a = {
length: n,
callee: e
}; n; )
a[--n] = u.pop();
r = r || s.global;
a = Array.prototype.slice.call(a);
try {
var c = i ? w(e, a) : e.apply(r, a);
if (!p.paused)
return u.push(c)
} catch (f) {
g(t, f)
}
}, l = function l(o, i, u, t) {
var p;
return p = function p() {
var t, n, e, r = !1;
if ((n = p.__fiber__) ? (n.callStack[n.depth].paused = !0,
p.__fiber__ = null,
t = p.__construct__,
p.__construct__ = null) : (n = new s(u),
r = !0),
e = p.__callname__ || o.name,
p.__callname__ = null,
n.pushFrame(o, this, i, arguments, p, e, t),
r)
return n.run(),
n.rv
}
}, y = function y(t) {
return 1 === t.length && (0 | t[0]) === t[0] ? new Array(t[0]) : t.slice()
}, d = function d(t) {
return 1 === t.length ? new RegExp(t[0]) : new RegExp(t[0],t[1])
}, w = function w(t, n) {
var e;
return t === Array ? y(n) : t === Date ? new Date : t === RegExp ? d(n) : t === Number ? new Number(n[0]) : t === Boolean ? new Boolean(n[0]) : t === Uint8Array ? new Uint8Array(n[0]) : ((e = function e() {
return t.apply(this, n)
}
).prototype = t.prototype,
new e)
}, m = function m(t) {
return t.evalStack.clear(),
t.exitIp = t.ip
}, g = function g(t, n) {
return t.error = n,
t.paused = !0
}, b = function b() {};
n.exports = t
}
.call(this)
}
],
o.c = r,
o.d = function(t, n, e) {
o.o(t, n) || Object.defineProperty(t, n, {
enumerable: !0,
get: e
})
}
,
o.r = function(t) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
value: "Module"
}),
Object.defineProperty(t, "__esModule", {
value: !0
})
}
,
o.t = function(n, t) {
if (1 & t && (n = o(n)),
8 & t)
return n;
if (4 & t && "object" == typeof n && n && n.__esModule)
return n;
var e = Object.create(null);
if (o.r(e),
Object.defineProperty(e, "default", {
enumerable: !0,
value: n
}),
2 & t && "string" != typeof n)
for (var r in n)
o.d(e, r, function(t) {
return n[t]
}
.bind(null, r));
return e
}
,
o.n = function(t) {
var n = t && t.__esModule ? function() {
return t["default"]
}
: function() {
return t
}
;
return o.d(n, "a", n),
n
}
,
o.o = function(t, n) {
return Object.prototype.hasOwnProperty.call(t, n)
}
,
o.p = "",
o(o.s = 3);
function o(t) {
if (r[t])
return r[t].exports;
var n = r[t] = {
i: t,
l: !1,
exports: {}
};
return e[t].call(n.exports, n, n.exports, o),
n.l = !0,
n.exports
}
var e, r
});
r = [
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"+",
"/"
]
function l1(n){
for (var t = n["length"], e = new Uint8Array(t), r = 0; r < t; r++)
e[r] = n["charCodeAt"](r);
return e
}
function d(n) {
return new Promise((function(t, e) {
Jose.realm.global["$encrypt"](n, 'c7b645db-65e8-401f-b38c-4c07c5fff247', {
suc: t,
err: e
})
}
))
}
function l2(n) {
return r[n >> 18 & 63] + r[n >> 12 & 63] + r[n >> 6 & 63] + r[63 & n]
}
function h(n, t, e) {
for (var r, c = [], a = t; a < e; a += 3)
r = (n[a] << 16 & 16711680) + (n[a + 1] << 8 & 65280) + (255 & n[a + 2]),
c.push(l2(r));
return c.join("")
}
function v(n) {
for (var t, e = n.length, c = e % 3, a = [], i = 16383, o = 0, u = e - c; o < u; o += i)
a.push(h(n, o, o + i > u ? u : o + i));
return 1 === c ? (t = n[e - 1],
a.push(r[t >> 2] + r[t << 4 & 63] + "==")) : 2 === c && (t = (n[e - 2] << 8) + n[e - 1],
a.push(r[t >> 10] + r[t >> 4 & 63] + r[t << 2 & 63] + "=")),
a.join("")
}
toString = function(myArray){
array2 = new Array()
for (i in myArray){
array2.push(parseInt(myArray[i]))
}
myuint = new Uint8Array(array2)
return v(myuint);
}
function getCaptchaSecertParams(params) {
o = l1(params)
d(o).then(res => {
console.log(toString(res))
})
}
var a = process.argv
getCaptchaSecertParams(a[2])
测试一下:
和网页端结果一样,END!
本文是原创文章,采用 CC 4.0 协议,完整转载请注明来自 http://www.1997.pro/
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果