0


【猿人学WEB题目专解】猿人学第18题

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:猿人学WEB题目专解 ,提供猿人学WEB题目总计20题的解题思路与方法,如有讲述错误,请不吝赐教。

想看往期历史文章,可以浏览此博文: 历史文章目录,后续所有文章发布都会同步更新此博文~

人生苦短,我用python

猿人学第18题

题目网址

猿人学第18题

题目详情

在这里插入图片描述
让我们计算 加和

题目思路

我们像往常一样找入口函数,在这题面前却显得不一样:
在这里插入图片描述
这题用了原始的

XMLHttpRequest

请求方式,没用

ajax

请求方式,但是我们却看不到哪里有加密的东西,我们只看到了

location.href + 'data?page=' + page

,我们再观察一下前三页的请求,发现只有第一页没有其他两个参数:
在这里插入图片描述
那么还有两个参数哪里来的呢?
我们新建一个

XHR

断点:
在这里插入图片描述
鼠标不经意间滑动到

xml.open

方法上:
在这里插入图片描述
很明显这个函数被动过手脚了,不再是原来的函数了,我们继续往下。
重新打断点,打在

open

上:
在这里插入图片描述
发现跳转到了这个鬼都看不懂的代码堆里:
在这里插入图片描述
放上这段令人头皮发麻的代码段:(不想看?我经历的痛苦你也要跟着经历😏😏😏)

!function(_, __){var ___ ="undefined"==typeof global ? window : global
      , v__ =[[___,null,null,this, arguments]],V__= String.fromCharCode
      , y__ = decodeURIComponent
      , u__ = ReferenceError
      ,U__= Object.keys
      , _v_ = parseFloat
      , _V_ = parseInt
      , _y_ = Math.pow
      , _u_ = RegExp
      , _U_ = ___.BigInt
      , __v =1, __V =[], __y =[], __u =Vu_(48,58)+Vu_(97,123), __U =Vu_(65,91), v_ ="["+ __U +"]*["+ __u +"]",V_= __u + __U
      , y_ =/[0-9a-f]{2}/g, u_ ="%$&",U_="$", _v =" is not defined", _V ="null", _y ="number", _u ="object", _U ="0", vv_ ="g", vV_ ="", vy_ ="arguments";functionvu_(_, __){return _.push(__)}functionvU_(_){return _.pop()}functionv_v(_){return _.length
    }functionv_V(_, __){return _.indexOf(__)}functionv_y(_, __){return _.lastIndexOf(__)}functionv_u(_, __){return _.toString(__)}functionv_U(_){returny__(_.replace(y_, u_))}functionVv_(_, __){return _.hasOwnProperty(__)}functionVV_(_){return_V_(_,16)}functionVy_(_, __){if(3== __ ||6== __ ||28== __ ||15== __ ||11== __ ||13== __ ||30== __ ||41== __){(u__ ={})._ = __;var___=function(_, __){var ___, v__ =V_V(__), y__ = v__[0], u__ = v__[1],U__= __V[y__];function_y_(_, __){returnV_y(v_U(_))[0]^127& __
                }function__v(_, __){returnV_u(V_y(v_U(_)),127& __)}if(3== _ &&(___ =_y_(U__, y__)),6== _ &&(___ =v_U(U__)),28== _ &&(___ =null),15== _ &&(___ =v_U(U__)),11== _ &&(___ =_v_(__v(U__, y__))),13== _ &&(___ =!!_V_(V__(_y_(U__, y__)))),30== _ &&(___ =_U_(__v(U__, y__))),41== _){var __y =__v(U__, y__), __u = __y.slice(0,v_y(__y,U_)), __U = __y.slice(v_y(__y,U_)+1);
                    ___ =_u_(__u, __U)}return[___, y__, u__]}(__, _.slice(__v,10));return u__[__]= ___[0],[function(_, __, ___){var v__ =v_V(__y, _[__]);return-1== v__ ?(vu_(__y, _[__]),
                _[__]=v_v(__y)-1): _[__]= v__,
                _.__ = ___,
                _
            }(u__, __, ___[1]), ___[2]]}for(var v__ =V_U(_, __v)[0], y__ =[], u__ ={};v_v(v__);){varU__=VU_(v__.slice(0, __v));if(3!=U__&&6!=U__&&28!=U__&&15!=U__&&11!=U__&&13!=U__&&30!=U__&&41!=U__){var _y_ =V_U(v__, __v,1);vu_(y__,V_v(v__)),
                v__ = v__.slice(_y_[1])}else{var __u =V_v(v__);vu_(y__, __u[0]),
                v__ = v__.slice(__v + __u[1])}}return u__[__]= y__,
        u__._ = __,
        u__
    }functionVu_(_, __){for(var ___ ="", v__ = _; v__ < __; v__++)
            ___ +=V__(v__);return ___
    }functionVU_(_){returnv_V(V_, _)}functionV_v(_){var __ =VU_(_.slice(0, __v));returnVy_(_, __)}functionV_V(_){var __ =0, ___ = _.match(v_)[0], v__ = ___.slice(0,-1),V__= ___[v_v(___)-1];
        __ +=v_V(__u,V__);for(var y__ =0, u__ =v_v(v__)-1; u__ >=0; u__--)
            __ +=v_V(__U, v__[u__])*_y_(v_v(__U), y__)*v_v(__u),
            y__ +=1;return[__,v_v(___)]}functionV_y(_){for(var __, ___ =[], v__ =0; v__ <v_v(_); v__++)
            ___[v__]=(__ = v__,
            _.charCodeAt(__));return ___
    }functionV_u(_, __){for(var ___ =[], v__ =0; v__ <v_v(_); v__++)
            ___[v__]=V__(_[v__]^ __);return ___.join(vV_)}functionV_U(_, __, ___){var v__ =V_V(__ ? _.slice(__): _);return[___ ?null: _.slice(__ + v__[1], __ + v__[0]+ v__[1]), __ + v__[0]+ v__[1]]}!function(_){function__(_, __){var ___ = __y[_[__]];return!___ ||15!= __ &&6!= __ ? ___ :V_u(V_y(___),127& _.__)}function___(_){return _[v_v(_)-1]}functionV__(_, __){return _[v_v(_)-1]= __
        }functiony__(_){if(Array.isArray(_)){for(var __ =0, ___ =Array(v_v(_)); __ <v_v(_); __++)
                    ___[__]= _[__];return ___
            }return Array.from(_)}function_v_(_, __, v__){if(__ == _V)returnnull;if(__ == vy_)return___(_)[4];for(varV__=v_v(_)-1;V__>=0;V__--){if(Vv_(_[V__][0], __))return _[V__][0][__];if(0==V__&& _[V__][0][__])return _[V__][0][__]}if(!v__)throwu__(__ + _v)}function_V_(_, __, ___){for(var v__ =v_v(_)-1; v__ >=0; v__--)if(-1!=v_V(U__(_[v__][0]), __))return _[v__][0][__]= ___;return _[0][0][__]= ___
        }function_u_(_){return___(_)}function_U_(_, ___, v__,V__, y__){var u__;if(Vv_(v__,32)){varU__=__V(_,(_u_ = v__[32])[0]);if(29==__V(_, _u_[2]))var _u_ =__(_u_[1],15)||__(_u_[1],11)||__V(_, _u_[1]);else
                    _u_ =__(_u_[1],15)||__(_u_[1],11)||__(_u_[1],6);
                u__ =!0}else
                v__ =__(v__,6);return y__ &&(V__=__V(_,V__)),15== ___ ? u__ ?U__[_u_]=V__:_V_(_, v__,V__):11== ___ ? u__ ?U__[_u_]+=V__:_V_(_, v__,_v_(_, v__)+V__):30== ___ ? u__ ?U__[_u_]-=V__:_V_(_, v__,_v_(_, v__)-V__):28== ___ ? u__ ?U__[_u_]*=V__:_V_(_, v__,_v_(_, v__)*V__):41== ___ ? u__ ?U__[_u_]/=V__:_V_(_, v__,_v_(_, v__)/V__):13== ___ ? u__ ?U__[_u_]%=V__:_V_(_, v__,_v_(_, v__)%V__):22== ___ ? u__ ?U__[_u_]<<=V__:_V_(_, v__,_v_(_, v__)<<V__):3== ___ ? u__ ?U__[_u_]>>=V__:_V_(_, v__,_v_(_, v__)>>V__):48== ___ ? u__ ?U__[_u_]>>>=V__:_V_(_, v__,_v_(_, v__)>>>V__):43== ___ ? u__ ?U__[_u_]&=V__:_V_(_, v__,_v_(_, v__)&V__):36== ___ ? u__ ?U__[_u_]|=V__:_V_(_, v__,_v_(_, v__)|V__):7== ___ ? u__ ?U__[_u_]^=V__:_V_(_, v__,_v_(_, v__)^V__):6== ___ ? u__ ?U__[_u_]=_y_(U__[_u_],V__):_V_(_, v__,_y_(_v_(_, v__),V__)):void0}function__v(_, ___, v__){if(v__)varV__=__(___,15)||__(___,11)||__V(_, ___);elseV__=__(___,15)||__(___,11)||__(___,6);returnV__}function__V(_, v__, u__, __y, __u){var __U = v__._;if(3== __U ||15== __U ||11== __U ||13== __U ||28== __U ||30== __U ||41== __U)return__(v__, __U);if(6== __U)return_v_(_,__(v__, __U));var v_,V_, y_, u_ = v__[__U];if(43== __U)
                u_.map(function(__){__V(_, __)});else{if(22== __U)return u_.map(function(__){returnv_u(__V(_, __))}).join(vV_);if(35== __U)return__V(_, u_[0]);if(36== __U)if(Vv_(u_[0],29))
                        _v =__V(_, u_[1]),
                        u_[0][29].map(function(___, v__){_u_(_)[0][__(___,6)]= _v[v__]});else{varU_=__(u_[0],6), _v =__V(_, u_[1]);Vv_(u_[1],3)&&49==__(u_[1],3)?_u_(_)[0][U_]=_u_(_)[0][U_]:_u_(_)[0][U_]= _v
                    }elseif(7== __U){var _U = u__;
                    u_.map(function(__){__V(_, __, _U)})}else{if(33== __U){var vv_ =__(u_[0],3), vy_ = u_[1];if(Vv_(vy_,29)){var v_V =__V(_, u_[2]);return vy_[29].map(function(__, ___){return_U_(_, vv_, __, v_V[___])})}return_U_(_, vv_, vy_, u_[2],1)}if(45== __U)return__V(_, u_[0]);if(8== __U)return u_.map(function(__){return__V(_, __)});if(27== __U){
                        vv_ =__(u_[0],3);var v_y =__V(_, u_[1]), v_U =__V(_, u_[2]);returnV_= v_y,
                        y_ = v_U,33==(v_ = vv_)?V_instanceofy_:23== v_ ?V_in y_ :19== v_ ?V_+ y_ :46== v_ ?V_- y_ :14== v_ ?V_/ y_ :31== v_ ?V_* y_ :32== v_ ?_y_(V_, y_):27== v_ ?V_% y_ :25== v_ ?V_< y_ :2== v_ ?V_<= y_ :16== v_ ?V_> y_ :42== v_ ?V_>= y_ :40== v_ ?V_& y_ :39== v_ ?V_!= y_ :21== v_ ?V_!== y_ :47== v_ ?V_| y_ :50== v_ ?V_^ y_ :26== v_ ?V_== y_ :37== v_ ?V_=== y_ :8== v_ ?V_<< y_ :18== v_ ?V_>> y_ :1== v_ ?V_>>> y_ :void0}if(46== __U){
                        _U = u__;for(varVV_= u_.filter(function(___){return ___[19]?__V(_, ___)&&null:!___[43]||(___[43].map(function(___){var v__ =__(v__ = ___[36][0],6);Vv_(_u_(_)[0], v__)||(_u_(_)[0][v__]=void0)}),!0)}), Vy_ =0; Vy_ <v_v(VV_); Vy_++){if(___(_U[35])){V__(_U[35],0);break}if(Vu_ =__V(_,VV_[Vy_], _U),___(_U[9]))break;if(_U[0])return Vu_
                        }}else{if(14== __U)return(_U = u__)&&(_U[0]=1),___(Vu_ = u_.map(function(__){return__V(_, __)}));if(4== __U)(_U = u__)&&V__(_U[9],1);elseif(24== __U)(_U = u__)&&V__(_U[35],1);else{if(18== __U){var Vu_ ={};return u_.map(function(__){var ___ =__V(_, __), v__ = ___[0],V__= ___[1];
                                    Vu_[v__]=V__}),
                                Vu_
                            }if(1== __U)return[U_=__v(_, u_[0],0), _v =__V(_, u_[1])];if(23== __U)return___(Vu_ = u_.map(function(__){return__V(_, __)}));if(31== __U){
                                _U = u__;varVU_=__V(_, u_[0]);if(Vu_ =__V(_,VU_? u_[1]: u_[2], _U),
                                _U[0])return Vu_
                            }elseif(25== __U){for(vu_((_U = u__)[9],0),vu_(_U[35],0),__V(_, u_[0]);__V(_, u_[1]);__V(_, u_[2]))if(___(_U[35]))V__(_U[35],0);else{if(Vu_ =__V(_, u_[3], _U),___(_U[9]))break;if(_U[0])return Vu_
                                    }vU_(_U[9]),vU_(_U[35])}elseif(17== __U ||9== __U){vu_((_U = u__)[9],0),vu_(_U[35],0);var V_v =!0;functionV_V(_, ___, v__,V__, y__){
                                    ___[v__].map(function(___){Vv_(___, v__)?V_V(_, ___, v__,V__, y__):Vv_(___,6)&&(V_v ?(V_v =!1,
                                        y__ ?_u_(_)[0][__(___,6)]=V__:_V_(_,__(___,6),V__)): y__ ?_u_(_)[0][__(___,6)]=void0:_V_(_,__(___,6),void0))})}functionV_y(_, ___, v__,V__){
                                    ___[v__].map(function(___){var v__ = ___[36][0];Vv_(v__,6)?_u_(_)[0][__(v__,6)]=V__:Vv_(v__,29)&&V_V(_, v__,29,V__,1)})}var V_u =__V(_, u_[1]);for(var _v in V_u)if(9== __U &&(_v = V_u[_v]),___(_U[35]))V__(_U[35],0);else{if(Vv_(u_[0],6)?_V_(_,__(u_[0],6), _v):Vv_(u_[0],29)?(V_V(_, u_[0],29, _v),
                                        V_v =!0):Vv_(u_[0],43)&&(V_y(_, u_[0],43, _v),
                                        V_v =!0),
                                        Vu_ =__V(_, u_[2], _U),___(_U[9]))break;if(_U[0])return Vu_
                                    }vU_(_U[9]),vU_(_U[35])}else{if(2== __U){varV_U=__V(_, u_[0]), yv_ =__V(_, u_[1]), yV_ = u_[2];returnfunction(_, ___, v__,V__){if(10== ___){if(Vv_(V__,32)){var y__ =__V(_,(u__ =V__[32])[0]);return u__ =__v(_, u__[1],29==__V(_, u__[2])),29== v__ ?++y__[u__]: y__[u__]++}return u__ =__V(_,V__),Vv_(V__,6)&&_V_(_,__(V__,6), u__ +1),29== v__ ? u__ +1: u__
                                        }var u__;if(44== ___)returnVv_(V__,32)?(y__ =__V(_,(u__ =V__[32])[0]),
                                            u__ =__v(_, u__[1],29==__V(_, u__[2])),29== v__ ?--y__[u__]: y__[u__]--):(u__ =__V(_,V__),Vv_(V__,6)&&_V_(_,__(V__,6), u__ -1),29== v__ ? u__ -1: u__)}(_,V_U, yv_, yV_)}if(0== __U){vu_((_U = u__)[9],0),vu_(_U[35],0);do{if(___(_U[35]))V__(_U[35],0);else{if(Vu_ =__V(_, u_[1], _U),___(_U[9]))break;if(_U[0])return Vu_
                                        }}while(__V(_, u_[0], _U));vU_(_U[9]),vU_(_U[35])}elseif(50== __U){for(vu_((_U = u__)[9],0),vu_(_U[35],0);__V(_, u_[0], _U);)if(___(_U[35]))V__(_U[35],0);else{if(Vu_ =__V(_, u_[1], _U),___(_U[9]))break;if(_U[0])return Vu_
                                        }vU_(_U[9]),vU_(_U[35])}elseif(21== __U){
                                    _U = u__;try{if(Vu_ =__V(_, u_[0], _U),
                                        _U[0])return Vu_
                                    }catch(__){if(Vu_ =__V(_, u_[1], _U, __),
                                        _U[0])return Vu_
                                    }}else{if(5== __U)throw__V(_, u_[0]);if(39== __U){
                                        _U = u__;var yy_ ={};if(yy_[__(u_[0],6)]= __y,vu_(_,[yy_,null]),
                                        Vu_ =__V(_, u_[1], _U),vU_(_),
                                        _U[0])return Vu_
                                    }else{if(16== __U)return__V(_, u_[0])?__V(_, u_[1]):__V(_, u_[2]);if(26== __U)returnfunction(_, ___, v__){if(19== ___)return+__V(_, v__);if(46== ___)return-__V(_, v__);if(12== ___)return!__V(_, v__);if(45== ___)return~__V(_, v__);if(4== ___)returnVv_(v__,6)?typeof_v_(_,__(v__,6),1):typeof__V(_, v__);if(5!= ___){if(38== ___){if(Vv_(v__,6))return!Vv_(_u_(_)[0],__(v__,6))||delete_u_(_)[0][__(v__,6)];if(Vv_(v__,32)){varV__=__V(_,(y__ = v__[32])[0]);if(29==__V(_, y__[2]))var y__ =__(y__[1],15)||__(y__[1],11)||__V(_, y__[1]);else
                                                                y__ =__(y__[1],15)||__(y__[1],11)||__(y__[1],6);returndeleteV__[y__]}return__V(_, v__),!0}}else__V(_, v__)}(_,__V(_, u_[0]), u_[1]);if(20== __U)returnfunction(_, __, ___, v__){return20== __ ? ___ ||__V(_, v__):34== __ ? ___ &&__V(_, v__):void0}(_,__V(_, u_[0]),__V(_, u_[1]), u_[2]);if(19== __U){U_=__(___(u_),6),
                                            _v = u_[v_v(u_)-2];var yu_ = u_.slice(0,v_v(u_)-2), yU_ =_U__(_,U_, _v, yu_);_u_(_)[0][U_]= yU_
                                        }else{if(42== __U)returnU_=__(___(u_),6),
                                                _v = u_[v_v(u_)-2],
                                                yu_ = u_.slice(0,v_v(u_)-2),
                                                yU_ =_U__(_,U_, _v, yu_);if(34== __U)return _v =___(u_),
                                                yu_ = u_.slice(0,v_v(u_)-1),
                                                yU_ =_U__(_, _V, _v, yu_);if(37== __U){var y_v =__V(_,___(u_)), ____ = u_.slice(0,v_v(u_)-1).map(function(__){return__V(_, __)});returnnew(Function.prototype.bind.apply(y_v,[null].concat(y__(____))))}if(38== __U)return_u_(_)[3];if(40== __U){
                                                _U = u__,VU_=__V(_, u_[0]);var v___ = u_.slice(1),V___=!1;for(vu_(_U[9],0),vu_(_U[35],0),
                                                Vy_ =0; Vy_ <v_v(v___); Vy_++)if(___(_U[35]))V__(_U[35],0);else{var y___ =__V(_, v___[Vy_],VU_), u___ = y___[0],U___= y___[1];if(VU_=== u___ &&(V___=!0),V___&&(Vu_ =__V(_,U___, _U)),___(_U[9]))break;if(_U[0])return Vu_
                                                    }vU_(_U[9]),vU_(_U[35])}else{if(47== __U)return[u___ =Vv_(u_[0],6)&&__(u_[0],6)== _V ? u__ :__V(_, u_[0]), u_[1]];if(44== __U)debugger;elseif(49== __U){for(VV_= u_.filter(function(___){return ___[19]?__V(_, ___)&&null:!___[43]||(___[43].map(function(___){var v__ =__(v__ = ___[36][0],6);_u_(_)[0][v__]=void0}),!0)}),
                                                    _U ={9:[],35:[],0:0},
                                                    Vy_ =0; Vy_ <v_v(VV_); Vy_++)if(Vu_ =__V(_,VV_[Vy_], _U),
                                                        _U[0])return Vu_
                                                }else{if(32== __U){
                                                        _v =__v(_, u_[1],29==__V(_, u_[2]));var _v__ = __y ||[];return yU_ =__V(_, u_[0],typeof u__ != _y ?1: u__ +1, _v__, __u),
                                                        u__ ?(vu_(_v__, _v),[yU_, yU_[_v]]):(_v__.map(function(_){return yU_ = yU_[0],
                                                            _
                                                        }).map(function(_){
                                                            yU_ = yU_[_]}),
                                                        __u && __u[24]?function(){for(var _ =v_v(arguments), __ =Array(_), ___ =0; ___ < _; ___++)
                                                                __[___]= arguments[___];return yU_[_v].apply(yU_, __)}: yU_[_v])}if(48== __U){var _V__, _y__ =!1, _u__ =(____ = u_.slice(0,-1).map(function(__){if(!Vv_(__,45))return__V(_, __);
                                                            _V__ =__V(_, __),
                                                            _y__ =!0}),typeof u__ == _u ? u__ :{});return _u__[24]=1,
                                                        ____ = _y__ ? ____.slice(0,v_v(____)-1).concat(_V__): ____,__V(_,___(u_),0,0, _u__).apply(void0,y__(____))}}}}}}}}}}}function_U__(_, ___, v__,V__){returnfunctiony__(){var u__ =[].concat(_,[[{},V__, v__,this, arguments]]);
                    ___ !== _V &&(_u_(u__)[0][___]= y__);var _v_ =_u_(u__), _V_ =(_u_(_),{9:[],35:[],0:0});return _v_[1].map(function(_, ___){if(Vv_(_,6)){var v__ =__(_,6);
                            _v_[0][v__]= _v_[4][___]}elseVv_(_,[12])&&(v__ =__(__(_[12],6),6),
                            _v_[0][v__]=U__(_v_[4]).map(function(_){return _v_[4][_]}).slice(___))}),__V(u__, _v_[2], _V_)}}}__V(v__, _)}(V_v(__=function(_){var __, ___, v__,V__=V_U(_,0), y__ =V__[0], u__ =V__[1];for(y__=function(_){var __ =V_V((_ = _.match(_u_(v_, vv_))).slice(0,1)[0])[0], ___ = _.slice(1,-1), v__ =[];
            ___.map(function(_){for(var __ =v_u(V_V(_)[0],16), ___ =8-v_v(__),V__=0;V__< ___;V__++)
                    __ = _U + __;vu_(v__, __)});for(varV__=v_u(V_V(_.slice(-1)[0])[0],16), y__ = __ -8*v_v(___)-v_v(V__), u__ =0; u__ < y__; u__++)V__= _U +V__;returnvu_(v__,V__),
            v__.join(vV_)}(y__);v_v(y__);){varU__=(___ =VV_((__ = y__).slice(0,1)),
            v__ =VV_(__.slice(1,1+ ___)),[__.slice(1+ ___,1+ ___ + v__),1+ ___ + v__]), _v_ =U__[1];vu_(__V,U__[0]),
            y__ = y__.slice(_v_)}return _.slice(u__)}(__)))}("jsvmpzl:ver.1.1.3","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66HrbJqA66HsbJrA66HtbJsA66HubHdvlrd3BifCyq53E66ye2ba64vlqc3Bcw76y6Ei30e36Hh64vlqc3Bcw76y6Ca30e36Hi64vsqj3Bcwew76y6Ca306Dm30e36Hj64vzqq3Bcwlwew76y6Ca306Dm306Ej30e36Hk64vnwew76y6Ei306Fl30e36Hl64vBekB43Bgwew76y6Ei306Dn30MjfFlwew76y6Ei306Dn30e36Hm64HaA86Ek83FK2hC9H7A56Hv3a6yhBvH7A56Fm3a6EkvBgkB63Bgwfw86Ek6Fm316Fk30Mk6Hvwfw86Ek6Fm316Fk30e36Hn64HBuAB26Fn8xfK3fK4fK5fK6fK7fK8fK9fKafKbfKcfKdAn6Fo8ifKefKffKgfKhfKifKjhB1H7A56Hw3a6Fovnwe6yw86Fo6Hw3131e36Ho64hB8H7A56Hx3a6Fnvuwlw76y6Ca30w86Fn6Hx3131e36Hp64hC0H7A56Fp3aw76y6Ca30vBfkB53BgMdFKkw86Fp6Hy30wlwew76y6Ca306Fp316Kl30e36Hq64eF8gF5kC33Bgks3Bgw76y6Fq30wew76y6Fq306Bd30rB33E9q43tbaMsfKmwnMgwew76y6Fq306Bd306El306HrgCtMqfKnwlwew76y6Ca306Dm306Ej306HsgBvMqfFlwlwew76y6Ca306Dm306Ej306HtgyMqfKowlwew76y6Ca306Dm306Ej306Hu6Hg64K0KQDd79x7326Bki07xxv32w86BkbBe31Mhwfw86Bq6Kp306Bd307mxk32w76Bkb631w76Bqbh317uxs32w76Bkba31wfw86BkbBe316Bl307BoxBl32w76Bkbh31rB73tw76Bkba31wuMnFKqfE5wfw86BkbBe316Kr306Bl30vPYmqC93BckC33BgkB13Bgrf3Biw76Bkbh31bK0rf3Biw76Bkba31bKsru3H9MjfKtwew76Bkb6316El30q43tbaKa78q63E86BkKPVu7PVgMPVcGPV8KPV2HEJ2AEIy6BrkEIr3C86BrMEIh6CfGEIa6Cf6CyKEHyHDdADa6B9kD43C8w86Ku6B930MCoGClKCgj5K06Eaa0eC4GC16HzKBtH7A56Bm3a7hxf32w86Ea6Cz306Hz7cxa326BmB36Ea7gxe32w86Ea6Cz30s4e36Bm6464H7A56B3i0HlAj6B4xe32w86B36Do30i0HOhAOe6BhxO832w86B46Bh30MNtGNqKNleNiiNf1Ga6uGG56FrKFxHeAc6BmM7C2636B9vo6FrKh7fMd6Frw86Bm6Em3064vD9kBd3C8qi3BcMdfB1w86Bm6Dn30ro3Haw9C2636B130w86Bm6B130KBo7BlxBi32w86Bm6B130GB3Kz7xMvC2636Bqwmwfw86Bm6I0306B1306En3064647oxm32wfw86Bm6B1306Cz306Bm7ixg32w86Bm6I030C263e36Bm641Bq6B9GBkKBfHhAf6EoMaw8C2636u307pMn6Eo6Bqwfw86Eo6B1306En30e36Eo64196B1G4K0641Dm6EmGDg6D0KD8hBsH7A56Ep3a6D0KBdvBaMd6Epw86D06Dn30Kr7pxn32w9C2636Ep31w86D06Ep3164vBaMdfBdw86D06Dn30Kr7pxn32w9C2636Bd30w86D06Bd3064641B66BsGB0KweuMsC263wmwgw9C2636B1306Cz306u306464HBHxABHt6BaxBHm32w86B46Ba30MBH6iBGt1D46B1GCy696qKCp7txr3269xl32w8C2636930k73C86980vBrr83E96q6CyKi7gxe32w8C2636q306qKv7txr32w8C2636q30rd3kw7696Bl30bg641B26BdGx6I1KqeoMmC263wgk93C86I16Fj6Cg30641Kb6DpGK56B7KJxHfAd6Fsw8C2636930HeAc6Ftw76B76930HfAd6Dqw8C2636q30HeAc6Eqw76B76q307dMbw9C2636Fu30vGvr83B56DqbgKEapE7H6A465bhr73x656Eq263z3065KDfHBiABf6I2rB93brB237wd6Ftr63765b631rj3tbmrd3kr73B565bgbibf7BrxBo3E7wk6Fsrd37r73e6Dq65b631rx3d6I2rq3tbmrk3kre3B5r73e6Dq65bgbiKC5pC2H6A465bhr73x656Eqx73Bt65bgKB97B6xB332wk6Fsrd37r73e6Dq65b631wd6Ftr63765b6317ixg3Btw8C2636q306Eqe4C263641Dn6FuGDhKDcHeAc69w8C2636930HeAc6qw8C2636q307BdxBa3Kvwc69r6376qb631rr3dbI3rk3tbCprd3kr73B56qbgbi7yxw32w7696Bl30Mjr73Bu6qbgw86Cf6I430641Ca6BsGC4KBzHsAq6BsMlC263wfw86Bh6Bs306C4307yxw32w76Bs6930Mjbhwfw8C26369306Cq30e36Bs641Lx6ErGLr6ChKLjH6A46980HH2AGz6HbGGt6CrKGlH8A66Cr6CrH8A66DrbKwH8A66EsbI3eFoGFlKFg7BbxB8326DrrB03brt3erf3kbKxr83b6DrbI5r83H86Drbl6Es7BbxB8326CrrB03brt3erf3kbKyr83b6CrbI5r83H86Crbl6EsHsAq6Etrl3bre3er73d6Drbl6Cr6Es7bx93Jl6EtbFv7bx93Bt6EtbI6eB1rz3k6Etgsri3DfMaw86Cf6Er30bI6baq43tba6464pDkHdA465bhA56Fw3ar73x656Chx73Bt65bgKCkHB1Az6FxMurp3kki3C86FwMaw86Cf6Er30bFv6Hb7jxh326Fwra3kM36FxbKz7tMrrg3nra3kM36FxbFvbhw7696C330ehBf696Chw86Ba6B13064w76Bh6u30HlAj6Cbxe32w86B36D130i0HLtALq6FjxLk32w86Cb6Fj30iL51G96CgGG36B7KFvHdAb69w76B76930HdAb6qw76B76q30H7A56Eu80pE8H6A465bhr63x656q263z3065KDhHBhABe6DlrB83brB137wc69r63765b631rj3tbmrd3kr73B565bgbibf7wMuMiblwer7376Dlbg6Bd30w86Eu6C3307xMvMjblwfr83b6DlbHd6Bd30w86Eu6C330efMdfE5w86Eu6Fy30641Eq6BvGEk6FzKEcHfAd6G0w86Fz6Bl30H6A46980pCuH6A465bhr73x656G0x73Bt65b6KC17ByxBv3E7wd69r73765bBe31rBa3dMlMe65b6w86Fz6L030bl6I7rj3tbmrd3kr73B565bibgeoBm69r83Bu6G0b6w86Ba6B13064HKdAKa6EvxK432w86Cb6Ev30iJp1F56CgGEz6B7KErHdAb69w76B76930HdAb6qw76B76q30H7A56G180pD4H6A465bhr63x656q263z3065KCdHBhABe6DlrB83brB137wc69r63765b631rj3tbmrd3kr73B565bgbibf7rMpMd6Dlw86L16L230w86G16C330efMdfE5w86G16Fy30641Ee6BvGE86G2KE0HfAd6G3w86G26Bl30H6A46980pCpH6A465bhr73x656G3263z3065KBx7BuxBr3E7wc69r63765b631rB73dri3bMc65w86G26Ew30bfrj3tbmrd3kr73B565bgbiehBf696G3w86Ba6B13064HDoADl6CexDf32w86Cb6Ce30iD01Br6CgGBl6B7KBdlBaKrepMnMiMd6B7w86Ev6Cg306L36L4Df6BxKa58B6fL56L6641B36BvGy6I8KrepMnMbM66I86I96L7w86Ev6Bv3064HT0ASx6CixSr32w86B46Ci30MSciS01Bn6CcGBhKBc7rxp32w9C2636D230Baw86Ba6B1307hxf32w9C2636Ia30bh641D56DsGCz6B8KCrvB8re3Biq63E66B8fG4Ko7mxk326B8Md6B8w86Ce6Bv30647nMl6B8wgw9C2636D2306Dp307pxn3Btw9C2636Ia30w76B86q30641Kf6D3GK96IbKK1HgAe6B8w9C2636D230HeAc6G5w76B86930HeAc6G6w76B86q30HgAe6B0w9C2636B030HeAc6Dtr73k6B0bgHgAe6D4r93Bu6G66DtvCa6IbKo7mxk326D4Md6D4w86Cf6I430KBe7BbxB8326D4MB0rm3tr73n6D4bhw9C2636G730bhw86Cf6L830HfAd6Dur83k6D46B0HtAr6G8Mmr73k6Dubg6G6w86Cf6L930vCv6DuKCnpBdH6A46jbhr73x6j6Dux83Bt6j6B0Kk7iMg6G56jw9C2636Ic30HmAk6IdMfbh6Duw86G56Ie307hxf3G9w76B86q306G864eiBg6Id6G8w86Ba6B130641Ca6BsGC4KBzHsAq6BsMlC263wfw86Bh6Bs306C4307yxw32w86Bs6D230Miwgw9C2636D2306Bs30e36Bs64156G7bhw76Bh6u30HMdAMa6IfxM432w86B46If30MLpiLd1d68M9w76Bh6u301Bs6B1GBm68KBf7yxw32w8C2636830Mi68wew8C26368306u307dMbw9C2636Cc30641Bf6CcGB9KB47nMlC263wfw86Ci6Cc306C4307dMbw9C2636Ga30641Bh6LaGBb6DvKB37gMe6Dvw9C2636Ds307dMbw9C2636D330e4C263641Bu6D5GBo6DvKBgvp6DvKi7gMe6Dvw9C2636Ds3064HiAg6HfMbw9C2636Ex30e36Hf641e6B0r93BubJybCp1Bl6GbGBf6EyKB7eB4GB16C568KseqMo6C5wjBc68w86Ey6B1306D53064641Bx6LbGBr6EyKBjeBgGBd6C56oKB3eB0My6C5wtBm6Ey6owfw86D66Lc306B1306D5306464w76Ci6u30HlAj6D6xe32w86B36Gc30i0e36B3647BIfMBIbGBI7KBI1H8A66B36BrHfAd6B4w86B36Do30HfAd6Baw86B46Ba30HfAd6Cbw86B36D130HYbAY86D7xY232w86Cb6D730iXn1Pe6CgGP86B7KP0HdAb69w76B76930HdAb6qw76B76q30HgAe6Csw9C2636Gd307cMaw86B76Fu30H7A56Dw80pKhH6A465bhr63x656qx83Bt65bBeKJoHBhABe6IgrB83brB137wc69r63765b631rj3tbmrd3kr73B565bgbibfHBtABq6IhrBk3brBd37wi69rc37r63e65bab631rp3tbmrj3krd3B5r63e65babgbibfHBtABq6IirBk3brBd37wi69rc37r63e65b6b631rp3tbmrj3krd3B5r63e65b6bgbibfHyAw6Ijrr3nrk3nr73d6Igblr73d6Ihbi6IipD9H7A56C6bhky3Bgr73x6C6bgrk3xre3e65r83k6C6bLd6q273z306C6KBo7BlMBiMB5rt3brm376Ijrf3kbDhr83tbBe6C6bJvw86Cs6Ge30w86Dw6C330HkAi6D8MdbEbw86Cs6Ge30vBb6D8KB3OB0rf3B5w86Dw6Bl30bgKh7fMd6D8w86Dw6C33064efMdfE5w86Dw6Fy30641Hv6BvGHp6CtKHhHfAd6Dxw86Ct6Bl30HgAe6Csw9C2636Gd30HgAe6Cjw9C2636Ik30vD2q63Bc6CjKCp7oxm326Cjxf32w9C2636Ik3080pBwH7A56C6bhrf3x6C6w86Cs6Bl30273z306C6Kv7txr32wk6CjMd6C6w86Cs6Ew30316C664HkAi6D8MdbEbw86Cs6Ge30vBq6D8KBiHkAi6GfMd6D8w86Ct6El30vurc3H96Gfq43tbaKc7ax8326Dx6Gf6464eeMc6Ct6Dx6Cj6Il64166GdfLejHv6Ct6Dx6CjKHgH6A46980H7A56ChbhpGdH6A465bhr73x656Dx263z3065KFlvFir73B565bgKF4HBhABe6ImrB83dwp6CjMir63t65baw86Ct6Ew3031rd3kr73B565bgb6HBiABf6InrB937wj6CjMc65w86Ct6Ew3031rk3tbDhrd3kr73B565bgb67BlxBi3E7wd69r7376Chb631ry3dr83n6Im6Inrk3tbmre3kr83B56Chbgbi79273z306Ch64ehMf696Chw86Ba6B9306Il647EUvkEUr3C8wfw86Br6Do306Cu30MEU3GETz6CyKETqH8A66B36BrHfAd6B4w86B36Do30HfAd6Bhw86B46Bh30HfAd6Baw86B46Ba30HfAd6Ciw86B46Ci30HfAd6Cbw86B36D130HfAd6Cew86Cb6Ce30HfAd6D7w86Cb6D730HfAd6D6w86B36Gc30HfAd6Ggw86D66Gg30HRvARs6CuxRm32w86B46Cu30MR7iQv1d68M9w76Bh6u301B86EzGB26o68KuesMqw9C2636F0306o68w9C2636B930641B86F1GB26o68KuesMqw9C2636Io306o68w9C2636B930641D06B1GCu6Ip6o68KCi7yxw32w8C2636830Mi68wew8C26368306u307ixg32w9C2636Gh306Ip7hxf32w9C2636Gi306o7dMbw9C2636Cc30641Bf6CcGB9KB47nMlC263wfw86Ci6Cc306C4307dMbw9C2636Ga30641Ba6LfGB46DyKx7gMe6Dyw9C2636Ds30edMbw9C2636D330641Bu6D5GBo6DyKBgvp6DyKi7gMe6Dyw9C2636Ds3064HiAg6IqMbw9C2636Ex30e36Iq641e6Bbr93BubDjbCp1e6D9r93BubDjbCp156F0ba156Iob61Em6GbMEgGEdKE8jB26oKvvtrd3Biq53E66ofG4K5e36GjK5e36Cv6GkeD0GCx6sKCqeCniCk1B86DaGB26C56o68KrepMn6s6C56o68wcM56o6Gk6Da30641B66DzGB06p6o68KqeoMm6s6p6o68wcM56o6Gk6Dz30646464w76Ci6u30HCnACk6IrxCe32w86B46Ir30MBziBn1Bd6ExGB7KB2HvAt6DbMoqb3Bcq63BcfGlw9C2636D330e36Db64156B0baw76Cu6u30HlAj6Isxe32w86B36Bw30i0HEwAEt6GmxEn32w86B46Gm30ME8iDw1B36EzGy6s6vKqeoMm6s6vwgw9C2636It306B930641B36F1Gy6s6vKqeoMm6s6vwgw9C2636Iu306B930641Bh6B1GBb6s6vKB27hxf32w9C2636Gn306s7hxf32w9C2636Go306v64w76Bh6u30HP5AP26C2xOw32w86Is6C230MOhGOeKO9HgAe6C2M9w76Gm6u307EjxEg32w86C26It30ME1iDp1Dm6GpGDg696jKD7HfAd6sw9C2636Gn30HeAc6B0w76s6B0307nMlC263696j6B0w86Gq6C4307fMd696jw76s6Iv307B1xz32w9C2636Gr30Mk6jr73e6j6B0w7696Cq3064w76C26u307EsxEp32w86C26Iu30MEaiDy1Dv6GpGDp696jKDgHfAd6sw9C2636Gn30HeAc6B0w76s6B030HrAp6IwMk6jr73e6j6B0w7696Cq307fMd696jw76s6Ix307nMlC263696j6B0w86Gq6C4307ixg32w9C2636Gr306Iw64w76C26u30jE2696j6B0KDpHfAd6vw9C2636Go30vBh6vKtH7A56Gs6v7ixg32w9C2636Go306CyKiHgAe6Gsw9C2636Gr30pBlH6A465bhr73x656B0263z3065Ku7sxq3Ffwc69r63e6j6531w76Gs65316Gqe36C264HlAj6Iyxe32w86B36Eg30i0HJ4AJ16F2xIv32w86Iy6F230iIg1Fz6EgGFt6B86B0KFiHeAc6Dtr73k6B0bgHtAr6Cdrm3t6Dtrf3B5w76B86q306DtHBdABa6IzrB43nrx3nrk3nr73d6Cdbmr73d6Cdblr73d6Cdbi6CdH7A56Gt80pB9H6A465bhr73x656Cdx73Bt65bgKh7fMd6Izw86Gt6C330HnAl6C7Mg6Gt6Cdw86Ba6B9307fMd6C7w86B86Dp30641Cb6J0GC56B8KBxHBbAB86CdrB23bwww76B86930rj37rd3tw76B86q30bab631bf7hxf3G9w76B86q306Cd64HSwASt6DcxSn32w86B46Dc30MS8iRw1B168Mxig166Bw6C2166C76F2wdw76Cu68306u301Jl6CcGJfKJa7nMlC263wfw86Cu6Cc306C430HeAc68w8C2636830HcAa6vw6686v30HeAc6Bww7686Bw30vCdrp3Biw9C2636Gh30w9C2636F030KhHfAd6E0w86Bw6Ez30KB0HfAd6E0w86Bw6F1307hxf32w9C2636G730bavEskB43Bgw9C2636Dd30ro3Biwgw9C2636Dd306J1306E0KB77B4MB1C263kd3Bg6vw66v6930wgw9C2636Dd306B130KC87BexBb32w9C2636Dd30Mw6BwC263kd3Bg6vw66v6930w86E06C4307pxn32wgw9C2636Dd306J1306E0641B36IcGy696jKq7oMm696jwgw9C2636Dd306Gp30641Ff6ExGF9KF4HmAk6C7wfw8C26368306C730vE8rp3Biw9C2636Gh30w9C2636F030KBx7yMww9C2636D230w9C2636B030w86C76Eg30HvAt6DbMoqb3Bcq63BcfGlw9C2636D330KBeHvAt6DbMoqb3Bcq63BcfGlw9C2636D3307fMd6Dbw86C76J030e36Db641e6B0r93BubDjbCpw76Cu6u30HDaAD76E1xD132w86B46E130MCmiCa1u6B1Gp6E2Ki7gMe6E2w9C2636Em30641Bb6BdGB56F3KyewMuC263wokh3C86F3w9C2636F3306Cg3064w76Bh6u30HlAj6J2xe32w86B36Cw30i0HKfAKc6J3xK632w86J26J430iJr1Dt6CgGDn6E2KDfHdAb6pw76E26p30HfAd6Bfw86E26Bf30vBz6BfKBiHBfABc6B7MB66pwB1Mu6BfwpMi86bJ5bJ6w86Ba6B9306Dp306Dp30K9H7A56B76pefMd6D7w86B76Bd30641Fs6BvGFm6J7KFeHjAh6pMd6J7w86D76Bv30HdAb6E3w66p6930vD7kB13Bgrf3Biw76E3bh31bJ5rf3Biw76E3ba31bJ6KByHxAv6BfMqMeb6bgw86E36Cq30w86Ba6B9307gMebhbgw86E36Ie307fxd3G9w66p6q30bl64H8A66Bf6CyesMqie146p6p166Bf6Bfw86E16B93064HN4AN16CvxMv32w86B46Cv30MMgiM41n68Mji8166Cw6J3w76Bh6u301G06DaGFu6s6C56o68KFg7qxo3268Mi68wew8C26368306u30HkAi6GuMd6o68w76s6Ez30HjAh6pMd6C5w86Gu6D530HeAc6F4w76Gu6830eCyMCviCi146p6p146o6o1b6vw76F46v30156Lg6s1d6Bww86F46Bw301d6C7w86F46C7301c6B0w76s6B0301c6F3w7686Cw30w86E16B930641Dg6DzGDa6s6p6o68KCx7qxo3268Mi68wew8C26368306u307uxs326pMm6pw7686Cw30w9C2636Gv30HB1Az6F5Muw66p6p30wkMd6o68w76s6F1306D530e36F5641Bq6GvGBk6p6CwKBavB7rd3Biq53E66pfG4KkeiMg6pC263w86Cw6Bv30K4e26p64w76Bh6u30HlAj6J8xe32w86B36F630i0HH6AH36J9xGx32w86J86J430iGi1Gf6GwGG96De6Bb6D96BfKFsvB7q63Bc6BfKv7txr326BfMkr83BubEbbiw86Ba6Er3064HBeABb6oMB66De6BfwyMrif1d6Bbr83e6Bb6D9w86Gg6B9306Lh30HBbAB86vMB3Mi6Bbwdw66o69306Cq30r73k6D9bgw86Ba6B9307lxj32w66o6q30r73k6BbbgeyMwik146o6o146v6v166Bf6Bfw86E16B93064HN8AN56GjxMz32w86B46Gj30MMkiM81t68Mpi8166F66J9wdw76Cv68306u301F96DaGF36s6C56De68KEo7qxo3268Mi68wew8C26368306u30HBaAB76CxMB16Dew76s6Bb30w76s6D930wew7686F6306Gw307lxj32w6686v30w76Cx6v30HB9AB66pMB1C2636s6C5w76Cx6o3068wfw86Cv6Da306C4307eMc6Cxw76p6Em30e26p641Fy6DzGFs6s6p6De68KFe7qxo3268Mi68wew8C26368306u307uxs326pMm6pw7686Cw30w9C2636Gv30HBjABg6CxMBa6Dew76s6Bb30w76s6D930w76p6Bf30wew7686F6306Gw307lxj32w6686v30w76Cx6v30HB9AB66F5MB0C2636s6pw76Cx6o3068wfw86Cv6Dz306C430e36F564w76Cv6u30647EBvMEBrGEBnKEBhH8A66B36BrHfAd6B4w86B36Do30HfAd6Dcw86B46Dc30HfAd6D6w86B36Gc30H6A46r80H7A56Gx80H7A56Ck80H7A56Cl80H7A56Cm80H7A56Cn80H7A56F780H7A56F880H7A56F980H7A56Fa807WxMWuGWrKWmH7A56Bj80pCpH6A465bhr73x65bFi263z3065KBxvBur73x65bDjKn7lxj32w76Bj6531r63d65baKu7sxq32w76Bj6531rd36r63d65babJxH7A56BobhH7A56C9bhpT0H6A465bhr73x65bFi263z3065KS8HBsABp6BprBj36rB536rr36re366C9r73d6C9bar73d6C9b6r83d6C9bBer73d6C9bg7B0xy326Bprr36rk36r7376Bpbir73b6BpbfbJw7gxe32w76r6Bo316Bp7hxf32w86Gx6Bp316BoHfAd6Diw86Bj6Bo31HfAd6Fgw86Bj6Di31HfAd6Fhw86Bj6Fg31HzAx6crt36rf3kw86Bj6Bp31bHer83k6BpbJa7yxw32w86Ck6Bo31ri3nr63d6cbmr6376cbi7yxw32w86Cl6Bo31ri3nr63d6cblr6376cbl7yxw32w86Cm6Bo31ri3nr63d6cbir6376cbm7gxe32w86Cn6Bo316cHBnABk6crBf36rB036rm36r83k6FhbLir83k6FgbLjr83k6DibHer83k6BobJa7yxw32w86F76Bp31ri3nr63d6cbmr6376cbi7yxw32w86F86Bp31ri3nr63d6cblr6376cbl7yxw32w86F96Bp31ri3nr63d6cbir6376cbm7gxe32w86Fa6Bp316cvD0q63Bc6BoKi7gxe326Box7326C9baKC57BbxB8326BorB0366Diwt6Bjwm6Bjwf6Bjr8366Fh6Di3131317pxn3Ff6C9wf6Bjw86Bj6C9313164HyAw6Jb8rbhbab6bgbiblbCpbEbbDjbJtbJuHCYcACY86DkxCY132w86D66Dk30MCXliCX81BBt6GaGBBmKBBgvBgkB53Bgw9C2636Gy30rp3Haw9C2636Jc30w9C2636Gi30K4e26464HuAs6oxo32w9C2636Jc30w9C2636Gi30HdAb6Jdw66o6930HkAi6Bbrd3Buw66o6q30bgHuAs6Fbxn32w9C2636Gy30r83e6BbbDhHkAi6Fcrd3kr73e6FbbabgHmAk6B6xf32w9C2636Je3080pNaH6A46wbhr73x6w6Fc263z306wKMivMfr73x6w6BbKo7mxk32w76B66w31w76Jd6w31KLdHjAh6cwd6B6r63t6wba31vJoqd3Bcr83B56w6BbKEy7qxo326cri3nr63d6cbir6376cbm7D0xCx326crCq3nrC73nrBc3nri3dwc6rr6376cbm31bmro3dwi6rrc3br6376cblbf31blro3dwi6rrc3br6376cbibf31biwc6rr63b6cbf317B0xy3Ff6crr3dwl6Jbre3nr83Bu6w6Bbbh31bmvE5kv3Bgr93Df6BbbDhrf3Bir83B56w6BbbgKD37D0xCx326crCq3nrC73nrBc3nri3dwc6rr6376cbm31bmro3dwi6rrc3br6376cblbf31blro3dwi6rrc3br6376cbibf31biwc6rr63b6cbf31647zxx32w76B66w31rk36we6B6r73t6w6Bb316cHmAk6Gzxf32w9C2636Jf3080pHqH7A56Cobhr83x6Co6Fc273z306CoKGvHeAc6wr83t6Fc6CovBer83B56CobgKfHdAb6cw76B66w31KlHjAh6cwd6B6r63t6wbg31vEvkl3C8r73x6Cobgr73Jk6wbgKi7gxe32w86Gz6Co316cKDl7DixDf32w86Gz6Co31rD036rCa36rBe36wj6F7wc6rr6376cbm3131wp6F8wi6rrc3br6376cblbf3131wp6F9wi6rrc3br6376cbibf3131wj6Fawc6rr63b6cbf3131641Br6IvGBl6B26jKBb7B8MB56B26jw9C2636Je306Ck6Cl6Cm6Cn6rw9C2636H030641Gc6IxGG66B26jKFwHjAh6cwd6B2r63e6jba317zxx32wd6B2r63e6jba31we6B2r73e6jbBe317mxk32we6B2r73e6jbBe316c7B9MB66B26jw9C2636Jf306F76F86F96Fa6Gxw9C2636H030HjAh6cwd6B2r63e6jba317zxx32wd6B2r63e6jba31we6B2r73e6jbBe317mxk32we6B2r73e6jbBe316c641BMi6H0GBMb6B26j6B66Ck6Cl6Cm6Cn6rKBLjHgAe6Fbw9C2636Gy30HrAp6Byrk36w76B26j31w76B6bh31HxAv6Bzrq36wd6B2r63e6jba31w76B6ba31HxAv6C0rq36wd6B2r63e6jb631w76B6b631HzAx6C1rs36we6B2r73e6jbBe31w86B6bBe31H6A46wbgpPjH7A56H1bar83x6H16Fb273z306H1KOoHD9AD66EcrD036rCg36rBv36rB436we6Ckr7376Bybm31wk6Clrd3br7376Bzblbf31wk6Cmrd3br7376C0bibf31we6Cnr73b6C1bf31wd6B6263z306w31HD9AD66EdrD036rCg36rBv36rB436we6Ckr7376Bzbm31wk6Clrd3br7376C0blbf31wk6Cmrd3br7376C1bibf31we6Cnr73b6Bybf31wd6B6263z306w31HD9AD66EerD036rCg36rBv36rB436we6Ckr7376C0bm31wk6Clrd3br7376C1blbf31wk6Cmrd3br7376Bybibf31we6Cnr73b6Bzbf31wd6B6263z306w31HD9AD66EfrD036rCg36rBv36rB436we6Ckr7376C1bm31wk6Clrd3br7376Byblbf31wk6Cmrd3br7376Bzbibf31we6Cnr73b6C0bf31wd6B6263z306w317ax8326By6Ec7ax8326Bz6Ed7ax8326C06Ee7ax8326C16EfHDnADk6EcrDe36rCu3nrCa3nrBe3nrj3dwd6rr7376Bybm31bmrp3dwj6rrd3br7376Bzblbf31blrp3dwj6rrd3br7376C0bibf31biwd6rr73b6C1bf31wd6B6263z306w31HDnADk6EdrDe36rCu3nrCa3nrBe3nrj3dwd6rr7376Bzbm31bmrp3dwj6rrd3br7376C0blbf31blrp3dwj6rrd3br7376C1bibf31biwd6rr73b6Bybf31wd6B6263z306w31HDnADk6EerDe36rCu3nrCa3nrBe3nrj3dwd6rr7376C0bm31bmrp3dwj6rrd3br7376C1blbf31blrp3dwj6rrd3br7376Bybibf31biwd6rr73b6Bzbf31wd6B6263z306w31HDnADk6EfrDe36rCu3nrCa3nrBe3nrj3dwd6rr7376C1bm31bmrp3dwj6rrd3br7376Byblbf31blrp3dwj6rrd3br7376Bzbibf31biwd6rr73b6C0bf31wd6B6263z306w317gxe32w76B26j316Ec7mxk32wd6B2r63e6jba316Ed7mxk32wd6B2r63e6jb6316Ee7nxl32we6B2r73e6jbBe316Ef641e6Bbr93BubFibCpw76Dc6u307txr32w86B36Dk30Md6Dkw86Dc6Gb30647GjxGg32w76y6Jg30GG26Eh6H2KFrHxAv6oMr6H2wmwfw86Br6D1306Ce306Bv30HxAv6vMr6H2wmwfw86Br6D1306Ce306Bv30HyAw6EhMr6Ehwmwfw86Br6D1306Ce306Bv30HCmACj6pMCewCbMC36Eh6oiBe1k6Bwwfw86Br6Bw306C2301k6C7wfw86Br6Eg306F230146v6vwfw86Br6Dk306Da306Bd30e26p64H7A56Bn807D4MD1fLkGCm6BxKCe7B8MB5rt3erf3ew86Bx6H330fLlw86Bx6H430w86Bn6C330vB0rg3Dfw86Bn6Bl30bDgKe7cMaw86Bn6H5306464w76y6H6307D4MD1fLmGCm6BxKCe7B8MB5rt3erf3ew86Bx6H330fBjw86Bx6H430w86Bn6C330vB0rg3Dfw86Bn6Bl30bDgKe7cMaw86Bn6H5306464w76y6H6307D4MD1fLnGCm6BxKCe7B8MB5rt3erf3ew86Bx6H330fHcw86Bx6H430w86Bn6C330vB0rg3Dfw86Bn6Bl30bDgKe7cMaw86Bn6H5306464w76y6H630HmAk6H7wfw86Jh6Cz306Ji307P8xP532wfw86Jh6Cz306Ji30GOjKOevObMjw76Bqba31w8FLo6Fk30KN0H8A66E4dJjHwAu6FdwpMjFLpwew76Bqba316Hy30ba31vKvr83Bi6FdfaKc7ax8326E4dFevK4r93Bi6FdfDgKc7ax8326E4dFeKJcpCeH6A465bhre3x65w86Bn6Bl30263z3065KBfvBcru3E9MjfHcwew76Bn65316El30q43tbaKc7ax8326E4dFe64vBjru3E9Mmq43tbawew76Bqba316Cq30fE8Kj7hxf3Btw76Bqba31fE864HtAr6cMnri3BuMaw86K16Lq30bJz6I77wxu3Btw76Bqba31rg3efLrM9w76c6Bd30HBdABa6cMB5bhblwzrs3eMbblw76c6Bd30Mbblw76c6Bd306Cq307BxxBu3Btw76Bqba31rBf3efLsMB7MB1ro3er83e6FdfLtMaw86Bn6Bd306cw76y6Jg306I9vs6E4KlejMhC2636Bqw86H76En3064KlejMhC2636Bqw86H76En30646478q63E86Bka0")

好,我看不懂,我看你当中的值可以吧!
在这里插入图片描述
观察到传入的参数中有

CryptoJS

AES

CBC

pkcs7

这些参数,所以我们只需要想办法找到

key

iv

还有要被加密的值就可以了,可是怎么加密呢?
根据

JavaScript

中的

CryptoJS

加密模型,可以推断出

CryptoJS.AES.encrypt

方法只有三个参数:在这里插入图片描述

所以我们来

hook

(我是因为已经知道

a、b、c

的值,所以直接打印转换后的,正常可以直接使用

debugger

查看他们的值):

first =true;
crypto_js = _[1][0].CryptoJS.AES.encrypt;
_[1][0].CryptoJS.AES.encrypt=function(a, b, c){if(first){
        first =!first;
        console.log(_[1][0].CryptoJS.enc.Utf8.stringify(a));
        console.log(_[1][0].CryptoJS.enc.Utf8.stringify(b));
        console.log(_[1][0].CryptoJS.enc.Utf8.stringify(c.iv));// debugger;}returncrypto_js(a, b, c);};

放开断点后的第一次输出,就是我们的相关参数:

在这里插入图片描述

可以发现

key

iv

都是一样的,而且像是两个一样的字符串叠加,而我们要加密的文本先是

page

参数,然后竖线,然后一堆随机数,当中是字母,我们先把他们都当定值使用,进行一次

AES

解密:

import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad

a ='646503bf646503bf'
b ='2|225m259,225m258,225m257,225d257,225u257'
aes = AES.new(key=a.encode('utf-8'), mode=AES.MODE_CBC, iv=a.encode('utf-8'))
v = base64.b64encode(aes.encrypt(pad(b.encode('utf-8'), AES.block_size, style='pkcs7'))).decode('utf-8')print(v)

我们来对比一下两边执行的结果:
在这里插入图片描述
在这里插入图片描述
Nice!这加密并没有任何魔改的地方。
我们看到参数中有个时间戳,然而加密中并没有,让我相信他们之间没有任何联系?
我不信,把这个短的加密值的一半变成10进制:
在这里插入图片描述
世界上的很多事情就是这么巧,然后我们稍微试试要被加密的文本,发现他大部分都是长度填充,真正有意义的只有那个

u


也就是说,不管你写成

2|225m259,225m258,225m257,225d257,225u257

还是

2|_______,_______,_______,_______,___u___

还是

2|u

,都可以正常请求!

解题源码

import os
import time
import base64
import requests
import jsonpath
from urllib import parse
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad

os.environ["EXECJS_RUNTIME"]="Node"

headers ={'cookie':'sessionid=j4ypr929ukbi8rcou79p57yylrnccr8i','User-Agent':'yuanrenxue.project'}

value =0for index inrange(1,6):
    t =int(time.time())# a = f'{index}|225m259,225m258,225m257,225d257,225u257'# a = f'{index}|_______,_______,_______,_______,___u___'
    a =f'{index}|u'
    b =hex(t)[2:]*2
    aes = AES.new(key=b.encode('utf-8'), mode=AES.MODE_CBC, iv=b.encode('utf-8'))
    v = base64.b64encode(aes.encrypt(pad(a.encode('utf-8'), AES.block_size, style='pkcs7'))).decode('utf-8')
    url =f'https://match.yuanrenxue.cn/match/18data?page={index}&t={t}&v={parse.quote(v)}'# value += sum(v['value'] for v in requests.get(url, headers=headers).json()['data'])
    value +=sum(jsonpath.jsonpath(requests.get(url, headers=headers).json(),'$..value'))print(value)
标签: python 算法 爬虫

本文转载自: https://blog.csdn.net/user_from_future/article/details/130735656
版权归原作者 user_from_future 所有, 如有侵权,请联系我们删除。

“【猿人学WEB题目专解】猿人学第18题”的评论:

还没有评论