From be9e0265f6eef822d473c3d9bf94ae63f3486ff0 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 12 Feb 2010 20:17:06 +0000 Subject: [PATCH] Remove the nmap_service.exe helper for smb-psexec.nse. Add a message to the script indicating where to download it if it is not available. Make the script check whether the file is the normal binary from 5.20 or before, or the XOR-encoded binary from 5.21. --- nselib/data/psexec/encoder.c | 30 --------------- nselib/data/psexec/nmap_service.exe | Bin 67072 -> 0 bytes scripts/smb-psexec.nse | 57 +++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 32 deletions(-) delete mode 100644 nselib/data/psexec/encoder.c delete mode 100644 nselib/data/psexec/nmap_service.exe diff --git a/nselib/data/psexec/encoder.c b/nselib/data/psexec/encoder.c deleted file mode 100644 index 05fdb4143..000000000 --- a/nselib/data/psexec/encoder.c +++ /dev/null @@ -1,30 +0,0 @@ -/* encoder.c - * By Ron Bowes - * Created January 23, 2010 - * - * This program encodes (or decodes) a .exe file (or any other kind of file) - * to be uploaded by smb-psexec.nse. This will prevent antivirus on the - * scanner from picking up the file, but not on the target. That's probably - * best. - */ - -#include -#include - -int main(int argc, char *argv[]) -{ - int ch; - - /* Check the argument. */ - if(argc != 1) - { - fprintf(stderr, "Usage: %s < infile > outfile\n", argv[0]); - return 1; - } - - /* Retrieve + encode each character till we're done. */ - while((ch = getchar()) != EOF) - printf("%c", ch ^ 0xFF); - - return 0; -} diff --git a/nselib/data/psexec/nmap_service.exe b/nselib/data/psexec/nmap_service.exe deleted file mode 100644 index ea8ce884526f689ef173527cda86101cd9e99ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67072 zcmeFae|%KMxj%klfK3`|v>bP|X-%zIv_&a#X3yvS%-Ic5 zYrmiGAD`FfpHK4IJ!fW~dFGjCo|$>(nP+Be|MrL(Gfgv!k06-lLOkg&z`y_T*EA&e z9{owLdB@-lpDm2ujbEffBuVya3m@A`Au_2e8k-Fg06ajnQAG$}20r8d0;aipT=4(B{vYH(jk2oUFx76)mEQ@NIU{Dci5Dhx_sk5K zN;3~@uX&~*)zQ!%!h{Np17whW7B*(6?HiYwyt?tB#vy zwYSQ#lS=I@j2_xMpgX66(q*pCn@nkrvHt%Nx>6d&sN6G~UT=}hz)nnx+@aJeBSY^Kxc}vPg(MkHgrhI*V zzSKt~_;~p>Vr}8H^OYN`mG-g3$$h7DlyL4ell;mB6LwR5F0|^i%&N}xZ5*ACDgCDD z2eHBD+B@{+i&F$))8>~eD)UOFtTMnxE#72?=E}wGs}b5N{i1z2p59PFl{5(r(S=W^ z^i6zs0PWc%{8_8vv;Ln?iRxB*@)>T$GX55gO0SOGq*<;U%hpja)6z-q6@hIU{tT_6b3^7e-jA1ZJQT&il2z89YW zJ`MQPvBdo&LPb%Ur*5aldTUz3V?6@jrci{w-T z29W0zbmt8qheTG|-vQtn;Tni{c$;v|rp*0tKH+N5MuPY~Ab9ltE<^*?ZGvrwYCHlaV8_Gl%R%fmpKuL&lux=Dox!o8 zeXM=wfn7V=+Y@Bh0KAxkv)g#N5g-nKEk5-w1AGt842vwtJY`s|Un-RCH7F9wLOhD{{2D07>Y6$S9DKK4_dwG*v1i=$@CA;Vys zcuE4ZEGihN*v1wC1scy2{Wi$_kO!h32CfR-hrnu-SqyNr9~y2Uq7w~A;}G~3U4Zs7 z+wwgf=zdzO!lGK=GK0FJ&}|@lp4``tkkm(UH8~>(@u0s%s?<&K+bp23q;8d_C|NdT zN)LuFsnk$}VSV{GF*izTMDj+Y`lz(s*ajKykRfqw9f(7qOR5i}qCWN)gr)60lD8`~ z6%leD4MOs98n9%rOtHna!D_Z|A{RZ+09C&&5r|OWSR&9)fpb=%%F{}r7($@}Wv&sl ztvo43|J_&Z2~fN^Ne~)op!nV@d#J!;b_Yz3IA?^|(~5fMj1W7}NO(JhH&T(75>uA8 z($@j{+J`Tp+a%^U6Aw9WeM^Z`!qrMMJx%p(kB>@x8YNoHMHM+9m`p`bvserj=Jg0tMe64o2&=-HRCa(4>1*1y-C}x$c&{T2c#8hRf zAPsX^8lV3Wcmco*lxYHFAarewbE>pCReyM1XtuLJe>i`eTu`Pmsu2 zu7ML&Z9c&J7!5~Y8~Rr_dlC$jj2h2Es_myX5(-0F)!tcE?fDT!g%Kqkryc=>^Pzm2 z67{@r)i!n~RdTKYG>2J`(3oDIX9{JSnr8Ja-kqjzS5kx(H;H|oj?0jC3r~w$jraFk z4tNtCCDD50Cx5&vQ^KJFh`fPM#1U=xVM2(KAmeFlgzyR7Q4ma$8qN#$(LAM&PR_HJ zfP6_n?-JCApc+DVE1)n`;O!vZ#L-XzDiiTBYQ9Qkj!=;oDuC=z7WV*V0@YxXFp+^1 ziP#GJ_lUIwAo-2Z>|pc;)5L&qrb(IfLD_|lx^F3y&aLTn_iaIj=nYY%RpgB{AdkDZ zGC1c%!Ke93fl-miPC(HCCBq9nAT|$idCW*gJ!eHlEJD2OyHsSYQ6n4dNxW7{ne4}S z%B`C#^4t+m>!slG2PZM(OqDCLLIoH>f)n)L6a@3sPWD>>=9s5ZziRqpADyA<^n?n; zrva%(f|EIV1bu89N6-ZX;w-r$b>C67gY6kZ>P~U^GkqT7 zIQ!k_oKxabpP+`lRqVkY3WsHXR*pXvx`e>EH2JgG%|Mq&%2;%HKN$m=zX?+k3=uB$3 z#ox2`Gi8FH^;cKbu>bm$R~G;a#sRGPg;W~W|EaVmtv(V#ACXHlrSEBmRNp20GsK}B ze+DhMpa2wKf|?|Nv<3_uki=$v`F`qG6N1yqMkQOYG*y56CV*85ZwqRwpxW5|M@;jh zmC^W~c&V-Jd*JRzrKwVBru{d73RYy4d6d!&Q#-lk@Pu zHi$^bZWp@}?N}*Ovvdh+k0p~-qY|zp_KXvIn)@VwmdLYpof{MRv21REGEz@N*W`VA zJ&|15ogf)KwZaHqLESSK-R~ACFP6Ys#BH^RgB02^8etf0Q6n5y`;lB>RI_&yl%_XE z0_vJ-_DP4;a@q;SmZF`OX68>Ek>)6uAI-mfI2QR$HWUYOWI@+RlbPPszC!&7jjWv{ z&>m?{{-hBl`)Gdla4hPu02gw=K)XxpWQV^**=@blx;;v5me8VRsh?J}sVG~rIs9QC znmZb@>oHm2p=oHhgw$Bc=rhLrWw(^IcdC$1XGf{S&FG}Ja1YO z6o5B3CU_H0@}@LW#ZD7ev|{=$;td9XqyMLPGx#OS{tb)XalAQF#cn~_Qs$UERS8=S zu%^n(c7tik+^?`^CB|~FCc@^Tl8Ipya!9>}raRAl0Wj(&>Io!OeA24+N~(duP`OD6 zreS)}pzhH4mly!qfJIb)p13=`KB8!EdD%~)&UvM2?0@LVE;){&f-QTG2!g_1Is#1M zIjO!gn4=B&*yi_%ohv)#l@TeA7LU|mcTs~ar;!zMK(me!Lg~~BIqGqCAry|p@JocS z$N7ZY18Ei`pdp||2pMLLM}Z;F%Qk?-O1U)E%RWShsr*tu6MqQwUiLErO3VVyhhVQ5 z)kfGqy-jn6!BP*HrUzzBlkIs2V3i=U$1{_NycC^tVeQ{cv%F=5Oi}8-Wqa``fqe`M z89&s~j~DdEDY>YNl20lNH9ULQhC{PkiWpw?-{i}+Sz=UqAqz_zwjAcYO42yoo$QZ9 zF3W;0#v{V4f=3(&i1I?J$*%v9Qc4Z?3AXKBWD~j%%nX=Iqok6uzwXE!v59xX7{F(Y(!*#wo;m9 zs>43EGX$=z$CvoNCDvd6ydP-5&=;8Gzj7S>dj$U~z7pM5@@KP4G2G;_ zc|p^(-wWa6a#u3t5LE4@`_5ra(szKqyIbk|_(A&Ke~7-D+won#yxYegeGU9^yn{bR zI{D*p7k_-vgU17pj@02H`OT$!`7^pSfTzQ6EZsq2XEu%DBSm0Z9RJHGap_)!azOhj??oC`hx_n=Dv?kbz0!rb^%0VQzpzIjV{*MA)jcQoN_8H2dsONT z_U(&6pFAt|z0%)gI_uV}L+oE005=R3Avm&S0Ewq1WEx91*okJs6Gd!#VEw4tqtvY* zMImuILKc5#uvwh zZ}JsHkE_&XYD1DgL)p0gf>42d8u|h$QxT=KXLQwUe7CR2lWM0_7al_ob*zjl3x0uq z7GHVF;h*Bu7w5SRAKQ-V00x35hNa)nK{^ujMbX_#Hmxm23Xkp*b6gWXP=}S;u2FHs zHK9$7ArdMC6q4nyp-il4_2S+9rCoot1utOehpq{&+F*{q2X;qOJWx2aceU2HcMFdK z`KI_8(jc3rIH1_V>KTBmy&NjKcZ(X`MMd06u^&J?rK(HwQTmD{QT4=?d*M7oon=AMyk)2twIE85T`KqP@-^+FcVZ6lFJ4@iXYFv13k$rbnieG)UV&m+7F@=0i?@w zFOtxOd^|}rAhW_uEKIQUqNR_?9tW$E>xcheMW=pE(Ra5ci=O$9iWa)JfF$0Z5>*zu zsmfBOGhIC)?B7D8>kCAjlsN|Q5&`6H&Ku*%X>epCK?Vs@n5py;uY_g9CE{2ws=g7K zls?Wk`!{yOTo&oFhjyFc_kU>+AU^E$BCK3 zbomM5zK3cls96*ymdGpD=RQGQpfUFe>Sv8P^`6#YjDCIW?na;{i51p*gzgPMlGN1p z0Nx#8MFfCeFZm;K{c~tZV;K!)co)__$4UWJnalyb)?@|frgg45hdYPZtB{ z^T?>68qRdR*oJyY_3bDGGwojpnN)w!3T?GQ2dvO8E40@NwOFBm6>76W4OZy56{@pB zx)pk<^egDuc~@=IJRBHe%+%kp2exc@=w#X0#-dW60%YPZM5df)CUKc=O#E zKor)?23qhQ>m4olRRP_32yl{(*1wxUg0!Ec(PLg4z#8`&PX?s1YUwLzKLi*LP)|Z2 zn+K?6g=>^%f(nO!ri)oc$bzp8~*NbmM1bYe{OW04@*%_>HEC5a^i}5hW$GiPx==oN^UP_Vd zI|xHp=7q6K(GAeFFL*{iLdUZZHUj}fb!l>-tV>GwKZB78=|1p9=^n7M0MiMQ?n^27 z1?dhI1Yi&O9pcH9F{XVi-2jRbW3{D{S(`dHW3o{0A??SkcJFX-<%jlTetH&mdaf18 z&O_)?4rePL?<2DFAYNo=Hhnv;r0?HMqwo8FMBlg1r0-jA#CQ4f-`M!WF@-dUetgVJ`U%8o3&{t!T^=G%!Hoqb@yyW8AA(Aj8EclFt>C_%3Vq+ZW!vX zpfRv=Y1RoSb_MD&choEIr!;o+7ZOI?pKsX=JH`USD~>E9csT;|afdQ5S~AIqHkqp~ zai?qs#6y6n!e*mwM2b3TIWA39E97>(-_JcmET47-6fN3$gt}AO`(F# zc?=szrmOh@RL;cWXewwB_ETBx!4A-A$qX$QdHsT!Wk*U)ytHZE6 zTO6WT1i(IU&p8WyuB9SVFa9q=mS`t;%@54D#4N#>42cnsd0b!y6l)mJEqjfRT@G~yX&7b5p51{3k1*mv|HPmq*F~h- zOnFOG?vl3{@|I4yF3fGz?yx67YRN%h3r&TYyEF@m(F9ltDzTs-6IphUk21RBI`D&! zCXVP`EnV8nk|_luOBA*4ZtA{jlcW9uER5Eib=0G;rtbp=G5|lA%q1MS%ga8-5L;Qv zu}IOo(gUy&MSNbil1JBzzn5$vK=kBaHtOETmJk(EA0NP?y*yJa7bWlX+y}FpWK#cS zSzsYFxB{N6o)HcVv#w4=@vz)EES`{}!{>5aKXb;QJwTB(}v}I!xmd}ds z`cp$U`{WlGEaT`A352pA*2~NdODP|gx|thfn3{laleKkKL!K*qv9C<&;#&{WIwQ27 zHb|uAy_!)^N1<_N!K%Ot zte|buG?c1d?UHn!XIhb64B1`Eu$)Fx-^IVw-t@O z0}}Etk@WtTNIJ$z%9QF1)b1nX{0S`!TB;*@G1<=(Xm4UoNV0b#hPKqPeTgRSfr9{? z7JM}|o*nzg+TK!t=F;xs2Kg{m5TLEn76Z@+Lno#65hW!>3j)UhWnzjJ4SsX&`;G%^ z9WVVfEcJt6<*BHt-sp)_B^nKO891;2?>t~bK)h?iqa%bCZcSih9?(Y9nxeyqSx9hN z2<5>BWQ69hrtb(a6M4FX^$}rxSXke~ciJ$TRd5(oLmnm91T$|d&=}H3!ZV%1GhMl=3k)G=eIgIveSNa2fV8!6dio zHa(NUml`Jhp8OzSyWJ{1*KTa95j1!m+yOrG0u0NDlrSX2T6CPf54y>Ao3tX&<#xp$ zdm2cU>M_LV#Z&OQ1T#?*jhlRCW z!djSfwIRg$*m`gcG{Bq{%+ZTw%1b*_F1)}}{G|G-m%UDqr24$?WqYjm6zzzYy@PjX z4_?P!t|zf02xB9ol6EqNP#oXIC=5i~pWOSTIz$>x2Nau?U8Kmt@eGwPwBEbPp+OzW zsqdocNa_`~NA<<=Cb?HUlQs>T^x0u(Cxi7cSVv*L9=8wKDQyiC!`vxbWd9U-YgRB5 z+nfW~*i|}AcG2Zz0mpI*tPt!)kQOK;!O5$P;QqPL>B>H4*?^F{SS}t3?Sr7Xl@9X- z<*Gq0DHk=YO4LvqQZ751f7x&>x3Dgno*!3x*ne7BTw}$F?h;z8tXSiN#uJF;eXFb1L~2&tAq*IT|Guff`|{`m70Hx#eU zbTkY{(@mFNd>MKG${p2WIsTiZNHm1gRoJLUDO=1r7AUX}U5K zMPp(pjPLziFaBo)_V#I!qF7@Sm}`H868)KV!8z+rIhx|GeFN%16Q$(F21FHn7oQdU zr4p=4_EFkWTc^PgEDUH1a$|kcP+_f5v}1TgJdFKk zb(kmI=Z?DtYg4mnH+9)CkB$Pq5%je9!}^oEAb4W8G-TC2Ky`$zw=fRcu}SUEpawu4 zbtl!3ct~cc*9!ZKXRjV^v_F9W*0}oO*`lu4qASkO=6COF`r`h8YXPm0OpO(u(HGCs z=gSmy&W0<)<5!SSVI^;h|I-wlqef%X#K4%qv^OfY(W07>RfC0RB)#aB-ouE9smahM zjcwD!vuV>F#HAe9*yMeP?rvFmoB?NI?R?|{WdA3F#F zDwWzPG^qyt5i;m}a0XJ3trkqgx>JGxfIoJ{dP=9@V3LO&rC0$F$vaNBin)-AUPwi` z@{h%WcDG>J)fXA%$|Oj})d=IQPt(ig{>H{Y0F7_IgMex?mHd=o{<>q1x>1g`Pbr8Z z)jeQ;4Cy3B#ds?IFf7YlP(~eo+t&)p%Un>lCI#hCxl(Ey(0&Gom~uHr!eS#~p_fT` zIV=t3HVl6@o(LJ&m+vlg4>&oPC%Zl(Sx7z&)CPj0M<7KXYJT8y~r8{ zXY&npMJg(is9XT*uoS5B&0sIG3iClII9@hF(yvxTXKn`gK zTZ*MO?2E>=(-?oO1qE9Pn+466@I5%qWS)!98^7mxXg4;gB~vu*v9_U>e7D_?ew(lX zpw?ch7AAT>GV&TEmcLUk=Ji13#h4TbCl~#g>Uyxr4Bdd%F)y@~8sOO=^14rNmRq@| z!0xlMO1Yw+d~#01XQAvId;&nb!K6lN_lTH}iqK9KqfUzmf?N#9b-nB-R{`CTO4*Pu z6o2kMy@h7mq}v#jwFv21&TF+lhYAXzUlkXqr%NVcZDyABD$Vy{R)x*Oo()Y1&dbWg zXxY1IKTs}@X_2-WMMFwXT(QU1bTm%35zD7X7>`-XcVqeXQEhngFM)W#g1dy^P{5`< zd`Hh4O}wlCGUQ`7?E)XkZnTR1=v!b`K?kOO;)>4Z@^Ap*jTp+Tm0rRjNZnpd^Z0XE z`@sx*8)+MAM>X4WkeYf3L&_OPeUEz-n}_o778$-p^--};dP81m$b00?UGnBAG?>wI zG)8U;yi9&>$)-_C4O9D=tQ{zdudq*g*-YRsDUS%$B;{SE@`}5Ys#rXdd@|PhEHQ{|jjyFGNHOt_?sv)u%>PwT!{HlWkYNotSA~i)<(d1}^P& zg~hbD6=rCM>*};_gmh;Wk`)KR8}`@6-lO(6#@^%h5Z+5Tj0;19y?rcc)ZT@6*TfIi zgGx@+YG-LhYB0qzN9&GBP$ezw(X{)CK>MYLk$Cg}sbD~#Kg-cz%(TS8ej}3P+o@*u ze7q9cPri(nQgz3#IaUnvG)%9XLv7+?R{H4?s_VIKt0u%%nAl2vZi3s zvp2*6-r)fE5R-)!Xc#UD_U{wG2EF))^!&44d;>lIpcmgvPgO6zm7c5h;@j!DMKAt2 zp7QM^4Gt%DE^P77^I46|L=3JN_zImQd6n7`$w3{@aXU#KyLSTQG}dSpTMX^)UUZEw zKs*TudoA#jpx8F(k1`D2dhyff7&-mCDwO@5HhOuCM*edN4R(BLk5V|IXpV z4^_gx0x${#*RKLisO!^h`FiokXg{j+zfgKygS*!zCu z;D;`b=J1h@3K7o~?n*7K zsOMZ0pI2Y7#0gj+aEI6!@5oekAZBEaCGB9F2qLsD>xP zLwzvd-FXH2Dt6g#rGWu1hb5PyW-#wroks0SV5}DQ-%H?6THuwHu3M>>Kd*K|h{pll zM?e*0K*0~xbBQ)VCDHpy&a3S)G^kY-YBt%i5V2yr!q&n27{da@yI2MYpBokU`xAo#7Ek z#8r|_9mUZc-qvPmWSlsBuJ92!jgLcL6b&h-KTjS0j1%opCreyz1U{%Z3swwMGENWj zKKkG`AN*(2;61A3wtcj+j8p@gnro#luh4g`YNs~K&4T$*7M5Agx(dg{5u!nHR6V#iwm$f!DO7QiYK zircCrts2qVk$`xT8`mPrtu$WXOp0(jy|7tmYvmpuS1Iv%zA#qAXXWAo4TU@mAc^b4 zg){A!qrQJfleGp!>_ctZOxxoR-ALQxk9^t?Fxz(r%vbRF89pia3^oSLSMe!Dn)?-x zi(&2j$Ysz^u``wG@IQbJ+ecs-Ni00w0e1%!@Jgzn|seyHu0)NF3tO_+2KSbP1*2)|G?W_^@zs5$C! zl<7BZ#7dgoW}`+zy@8?|6@ON=r8IlhZ$ne1$z&AXPpqQ7793`wJ)mLN_NYrN%dL-= zz&~QdoxTOmqj`1Qs$K96v{?}-fq??T-w2d-b`IFyAGPRdBg2)X^QeFokmGXd(3!>KKY@<8ylPA|KS z-ofe)tK5X~RkC5yfm7Nkq;eTZczRf(P?_7%8ig2XILdH62%|%6wA?3a2rO3x#Hq8` zof)%S{WpLVSgxMJ^ZcFzS^CKTcbw(wS*qqfRy_u1nQiQ_WMQ$3O+a!1Nm{NlEovmP zT)k^qu6*pTR3CB(gkh=`hN)gMhY82Q%Y;(p)_&b)UWms@?OB83zc}Da7B<&cs zV?M{$5c?JeFPJXUuv!QeRLa9-5~+_S4GjFa19C`nT$jf}Q(cor)xh24QlYhAf2m5^ z(*{?xl?SV^gMALx7;G`E*+JuV1Sb=8G-ivBHj`pdn3|+fh-kNG{ zl}GQA>LTg+iuPX1Rzp4KW3Lls)bo!CXor(zo$JA-kEZ+Bdx<32a^U7)n#xEas~3wy z=xW&<9d`nFgcpJhVQY*1EP!B)iDM*#U$g&8_HAt0kA!y+{+6*V(~lh8q!p*d6e4*=pux53s}wKv$q zr-%)Sp(0c4mxh606lLW`gQ`)MnUq$NBC-rZSqMwL*uftaW^kBD*_0%V()?qLEv9zT zLr?bWPkaZoLBLSA+eQsz$?YXli52@q1yfgs}jO zl#kzs_dE$qLGBKPyiOj(8GWyxx`a&Z*z z!L+g}b`D7`!`inHcwKm#^&^PEbHWT7iG`~ZNWX!gWJ@4p2ylaOmO9en&(?YgXX!K? zU6H5+sdSq7Z=Ut2{=yB!gH1Fnc~(ZS`}1Th_B;T{?zh6|GZeudO9aU)xsR%s z>1DOGv_AZ|PwBh;8rb96K^}98e+#cud67asyCAgZ(mB%p6~{(seysi zz`v0*Y{|>|%WB${HYY$Jl_6nwbt=9IzrLy^09P6#Q-1!?gto zCy-DwAr-9Bi^=)IGZQY$xAmYGR^PG&GJpeq$O8^QTKlYB5cP*dRgWhM@cH?G!Q`7e za&u1;A0 zya9{?(1tGq-D3fH!X0tbQv^&^?CRGzBJmw}MnZ?07Q8}hr$fX?X*Cy6;2f;emnOrx<$-6cg{YZUjmw0KOkh@LfIaA(pd`ASl+6wxf8%NiA!* zsj2a@JJI&!&8`>MgU^!prDg5#52w@C(yZ#17HlU@`_t5jk{^j(6}+kJ;y)EcV)L+J zY_znfQJfowGC|`D9Ae;32HkK7zK#>9LrfTf&m1&g=xKJ0vWS2bT!9y9`$n9#hQp7% zeIram$|OT~E~NOrE)*;^chdKa*redqrR{&39g$YPq-=muQ)=eP$0>Pt?0X<6IDOT3 zaXJQWYAZK1Lq#c22XpE-C_p7{ZpO;m3YSoLd-Ly;VN$rnJ}G zPr(Re6ZgR25EwSSpaygS#(p2r>}}TKyS(g%_t0n#Z8%;yjD4s}+|gZC?Ao(nh^?|x zZl<$&7zJ;#FjR}Xz3c&Gkft@lVX;zs7v2u+UO)pDJ3rcXZ?%t|#TahM=U7KLgfS6< z4O2#JvTKj2E)Y0H>_%D?9wy>UItS9P)88Tl|JLh>=6_8&UZT_E}tej;Oev0Y{#GdPIM?pdL};USSAZ zWJcj|(I^y=NZ~P@@WNvFMUYLi)fr)krUXb;ZKQBm@JEW`^(X+v6;H)Z5KcR(ce^HZ zXgK;csQw!;MRRux{E#GSrWe~m2K;h6wCLVJb+}%fyj}bbPnd}WzQHv}`YsU|7UCG4 z;X^uF-{ji!k~WE`{e;|Mj`9=h5l21TB91`PGsQk~ib6F|3DjYR9TV``oxJeTmv*B< zv(*c!E@(q-E2q%_39s!P)OIFEBIbrC0O~pP|nE;8^ z3qwfS8mYH?F$p94Q0}Nn9HR_jdoLnUlg%#!T}vUF|5%U;`L8 zAmWg!W|aEIy4T@lfK}8|tbAyig(xYfyyd9Y8wixQbg7f9$2X<@cc3(Q zA+_aH&#(o2Rn^sSHWIFZuOztg9`@0D(QaT4LZ6X;kqsUl8Gxc=Y;>MFm6cqGp%tSb z#w6&QcLAN0C%%M*FT4Wt)F*}RUr`n7DR-SN(NI7tWKJ}gQg$If z;^AF*h@j}}A3(v|k2N}b(Aha2`r^0bwa%*H+gbkRbH_1 zPFP)a%l69xx8Yz6b^&v=K4+dbm^O1MotqUmdP$^&?wQ02H8rH#gzg*h9?G;1U(s_8 z57WgVLib#P^Jj$onW0Sh3k=PF6_~|-=VTQpC$R6{pDAJzLuFDXchw9Dj{43jAG`K@ zv~JWF&5`oqv`72rD@T!{Tc;YyM z^GQ$(dkn;FSJRRwZAzwej(lM&y2{~X*lX|!YokKJ51$FXPjK86&)rdzdx@*-~auqUFvww&3sLX9h0Hlrw;5$eh z=xGkrPF!2=r(!UgYQ3%l>dw+>~($u$wzj$V{91Dktr`#fFgtyYUb-Gli7um;q*!O} zysU!E2+Iga-sO=vG_nD713;4t3J8ZOJ|?MIC}0gn?!@8{{S2czdznbPr9*9qvjXcNf>;{)y#N`c>J9$SRggbH{+h(X0Llq}qc z%Id|?zf9N@l!DggOuUv|S|Tv`!Rf{80a+rDPn=%70q^>v9Q6Ba&N(=3BZj=nFrZSu zpe_+Y6z`;t#!lGn-n$Y7Ub`D2EkGW`h~ig1-)43yX5&7odY*jqeXFP?{h zzPKKpWw!lScpry`O+`&=vw-GLvsCvJ>IQ38Y%MI@z1SBJ5Cr*k7PuSLTU_VOvu>N+wvNI31`a*%9HdfDvO8!*Tu7ZPXP7cei{t}7l>=Xrp;&I3Hn z0ffbbk3Dog-ho%jSYTyr0Oo-7#9V|vAQAPk=Kvr*aU4cgz)VvVe!yxt{qDqDNaZ^3Ukhj=LfK^sHR{C=M#xRmfR@k;cDztOb z5NPiQ32>avxD-Gwn^JLA#xAH|$>{G>w2~8s|CpNNW!F=XpJm{q94Vb7a(@h1TZy^0lRZe$>z_+ZxX;sI zfC=|bBaO;G80k9X8RC-Ecc?9V6^UG@w8EgztJ(eo-X8YgG4E(}Fsc;K@~e}WP! z3`b*}ck?y6z_#HT0^soDr~v_NoEr;!E(30M_3#HvMHJCG*nL3y_|EY%voOyhlQ~;y01;LbzAvA$wTDMa1-s%@B9t9k)YrH(4N` zVV^N|#w9bR_0Lu_(k4rpR2U!{+QVs=#b%WC2H{S-#wgQ+fL%Mdy$uN`UTNP*AJ+i%^;Ap?NItH;V$Sfd%y8Y1Vfs7%n|*D4{!25zBMScDmh*3 zJGAg3#z*Rvl=fBEV)X$eSG@)^vmcdR^m<`nDhv3@+2{2xQJxr_~W|eftx3Z`{Y&0!Xc8Z<|0P45ZL-9N+}E9Mht>sql~PE_OEr4pwej zp|bverr|$=7*wdnJ-{j{5sS%|W9mW9j4F0jpT!9ER2Az+jVjp>f1b>Rn;pe|d5?%2 z875+9Y|J(d?GaN+7Apg>c|dyzedYX4i`QXQ4PBNdgd>y)`83?;*hScruf)BAUpTEz zEktrGVyf7~*%5htYA9)${f2rb}vf;LuyRwS+LrA(UcX3<(Tv0Nl1Wb>vw z$k;@V30l|xKCZkk;Ywh-9+LxE%z)@%3l2~GZ&H?TVZ&zV60ZN`qEYFdOzcWsL*p8n zz#ZEpmu3f>=`4O}m6V3Vt9-AEpH*#0Y_4H?diSS*r;W21DY`<>szZq#w#4yNlF-B^ z*)V$r`*>q#Sa*s4o*ccB4VDl6i?+tr(CC>Q!CImJr~AV$TBpht*+mubOqfYRBUk)L z8x|X0`83P+z<{*SbYT*kqn=C4Hv>bk z6VXmc)Kx3Eq!!?r>#WzV;SAAL4TypRmFL>avzn8#k|I zipLV?ro`^VF)J~G7pfL;RAl1t%1?mU{B+&|6KnTiK3_4f2x_gE>kq=}aJ1RP@UIs? zj2z7-WKwqqAl^CtDTp@3_wa&zruYe7kZOv@n~8EwZ#JP*Xd8p`bf<1*ph8g|&bPYo z=FGtbTYVZVSZOmpt?j~jBf7PdVBoHV1L_%gia$#_6| z`>Wmr4(!vrI#QCJ4yB;0lGWf_GVL0;NjC*?zYmzZ8vZ{K&}P+}go0-yuZG}c^)43Y zwZ%|pic2l0ky>HQX{1)bB~Mw{4Ea|8NW;=ha(c(@ls)`bN;<7siSuTz+3}(sqtUOV zBiYd~+V1Lb71dtgdf|e)qFUUv?m|)N`7SuwLNdUiQSBM`sB)cvTUFWX7*uFw>1WvS zKgm`vfj7ZE1sSwjq#nBh>$Hg&CFpQmDz;{dDpJ`;7(r+}D^Ndom8O2K;<^b24?KYH zYT(EqoOv)CzRkXcu@8_4|1{k%fPhvIfJ+~S%mrouf>s)alYu|`(;RhVuomWvLEOXU z4}Y2y%-0&4NxZa=umz6C5rjsq5FQkYLXSWijvgP+^{2#f+c|nW-95qOU=VSmVhqDa znm&La#1u4P5)3#T;e|&YwN;G+xnC zYkP6hZfz?TTe`CxQTlv;N=Sfn<|hci1(}xeIesQ!U6AO7_RkUJ9_7r~2SbW7H{3r@ z%fW~O?tF}hPv;>D-9ay=olbX*G%_UR&gCrT2`UoE#QG>QDR?;tyK&$9;H7l)n%IFE3v&ZbYm_!%`~}WPk=InK0}lC=V@q z7#?&cZjr^p?~H0$nFM?<{5(0Hdd z#dZ0LR^#g+AQFY)e0#Xy@*&rER}9Q5GWJzmpnirPU}z^OlXajZftmN6c+_QdNTt@0 zB3;LYX%!z-){b@J#IWLqKBZ=sK>HC^;D}a4=%yhHwLgE{vH2db^6SdMF!MIs4H>Ak zKLq0jMw9EuRg)iGmZLB@aT7S4W9HE8y=y*Z?{sc=l1jUhx4xcWKfjk6W|O?n+R<&m z4SqBO=7^Pw4r^75YFKx^Uels>;%Wka&*2qlX7X+eX!H0TzUMFSb@;PWlUChB#vA3Y&i90aUp( z*?t+Zd8<))_RZ<)2olA=y^#O-W#vYU-#`HzA2#2KF5UpDT?n+RYs?`yNC_Gi% zTzCp~cyqe;&GS?MdY4?AS{|(91k`Z?>No*)oPat`K%GTE>OUYLwH#);a(GIAR*oID zL6oXH=Rq>ZHwDh_(VhogFECn137Lr&6))ur7*e&v2_2cn9Sm|~LPYjtstRq|PXk}k zQ6W>A?2l0Gq|%I*O<$0l5BBj92nJ%DWuR8D49xcX@lKM{#{6(5;`(6n{3ncBTyoBv zl)2=H&%&1pcgrKo*)L^T@^x8Sp!c9H%%sR*yCWYbT8~GyCaS_weerN;wiU5yybU|S zALK4H-^|0=%GqMrYO8|s{y7PWL1ukXfxdWVeR{*2K-obk=@{mz!qZm!P9_nHN zqG>gm(9JMxLYoucLsy2Y1KzVkvzy^pMZfPL<&zI=Noh8Pv2KHVnTLki7qT#k(8dnt zsw{@heqqd*0DFM7u&p%`R~g6YIw8nJ)81Hq$v%FK@kO{ijQU)8OI;U!O+uP?{_yNr zeyE{!dt-C-MNRl!5`ED#!=Y=da5S#VnZEV}1_gK(1}Bvb!Z9TFgW!a+f!#{Mq2M)T zu)A^t7uh9}e-@8YJjNvf)4F$O8AQtTDN~H|m+jba+0NL_I=FQQ^&=n;loR}33m+ZH zuC^5%{ea?dsEJZ&idXoLQUs+yJAQU44LT#PZm^g$?tY%c?}G4Kjqw{u&Ct%lVN`vb zmoYA<{z?v1!nz@4D|u*nx}Ji?8VlQU?4?zpru@f7zI><4J20N~NOh^9Iqcc{`JFCd z$#-a*mW|n2DSEsYd^rvG*aZJ_?egpT}`vx&YX(}W5(NTivYB~M3*2KXV?M5JwzmKsAHp$WvytFF0?3@l=Q;)N_$@@t0N7?uAN z*;?b?GF&xvlcd3Zy5QsXOdXR*u zQIsS#8On?BvyCT4vzi**GeRzs*hPn$T;;`HJ$oFGQ03u4t)655`T(t?pwhtuK)PCd zoey@YxQ~N2q^Iz1W&_|EYkdO>27T;7lYCBw~kYqt0~`_mXU zwvOXhYOmxQMM>?4tPt?+m9}QHVQ_%EW_N)50Wxt^qFWYWt*j%lJP6|y`Sj&b zmD4PL{Frr6B*&jcT^FjrWG*0@p%_!%)yT{Jiak_~ z7l48POaPoxuXOjbKM)c!S)#`FzoHt5JI2W`O@%+NA_R2DUPMa=Zp}uUlba(MwWw=G zdCUkM*9m6o%6}m`y&k-MNm+@j23kPj4+%N^!=UK#xX$yu*beod^8#Anm0}FspgEfz z0urV4N{p(G&A9G`SDcV)ClH{TD7gXgNq85-UmgYgr=3{9GhBwVHF22L+AKozQ*eYY zKYJtwZ{#c-L=n`dciG!8m+=!wcMxILcB=NGBf={(b^=K{S2B-RYTmk2Upj?^Q&3PJ z#P8={Is&t`B@5SCKkSh>Hj>+5MB`N~7m6aWHTw510r})kv?BO?CGEqJUV-_qiWEAm zC`rWf;k}s~Oj(Ox1=F9r7tAl21Y?C+2B*~f&<41Ux5}$rsw$DcsJ7JPj8)Zr7rXCFST_#DDVYIrP5Zg?~cPlhMM za|)hQ@XW+B6VD7hGw`(GX~Q!W&s0a$Vd5{A8M7tWAqiCJ<@h{=&o2l!`~WxM%pKKu z{JT~AL=63w*m#bB9Z6V+_HL?URZD835!%l;Lf-|G?@2|uVJAuv(tZF=7Zk(NkKf@- zw8kUdXNMN0)C_&?{)aB$EUD9_UVkGT`}ci&b^B`_kK1GHPM!UIp0P!ik@I!bUZJ5ydjR)b%GqDX<1ncy`M#^65(KD3q zu8_B81ZQby+h)N^BQ#r`yTe$@%vU3 z4T>`<8f#PJ3diQO&BTvs*07Zv7cP`F669dIdW6RL(qCYl$B0_4AIeY6PvWPE6%bd= zwSng2(9pRmsUM1fFikZ(iJLzJ7+39Izeak16!myI0VyS`tE<=Z*4QQqc!)# zW9HYCTEXP4Q{>uAuFN88EArT0PUCBhsMgC~0>RJ>M^GfWzGLCdFarxqX<$pbW1u#q z^y%#F-z7B?T3=and-Cq5PS%Cg@l*Fd!yJaG8(PHQnfLYiFcT@+f#fDy4UM;6_7sdP zbRlnjq;koVxVviZ?~^6+<7k)@-;48&30%<6la62<5x)aX2&YI-;~t*xa7Ga<8ceDxAMLRTHc2r$m!&al{q|I16j8Y40jUq!l zjcwX0{O}7e?shD&tm0ZqQ?cuyw1;-*6mNKwIzJWy=TxoHBP!SH5 zF>F6u4zF|K_+6io=dgaa*5Zi;EiIhzGa#tA)?OG_^2vQ{yA`2cM7us_qSGcGQv4@E zO3KREOeIqY%~SHRXB3Z@XiREKMb3AMv$S^DTj-ewpfQCNYfmus zQEt#qZt+E6;)8_ZPA*);)kTIPKZGB>x@Aj`?tB0^%3(WQ0He4G`^eh2VYAXvQh!yo zmlbilPJ|r+O6!t6b_%Z&_f>??1NT+r#$4ojCpclvL6-IyNGR^M zmOnB2x-#*NwK4Y_f0JH|246GO-SGN0UCP9cbtk1+(?tii;nJpm_R_+JltKK$O|9|S zNwL%MdiGe#0}JOO0}^o^ZAdRiVfc*IX2^ew(!mdWZ!_TB2(oAp7*}eA zP5BP4QqRzxj{;8{Zep&m} zM1#*5YH&WMc|ym!Q_@Y-FHXDWGY$0ah(*=Uh^TkP&mFI2^Y}X~YAK1+`wYkg7DL(@ zrC(>_7^R(tyxjnkapfJ3!N8?QHG)?q#zEZX8JQtf0@|RV75TU0+rW2lyP<9@1iOlA z^^|;0@m<=!G{QVTC)Q|cNmfV!~j=|)o>R5nIac#N_do4GGkL%4CD z@ijaO*Bbw?_Pzx!$}0VT4D+&<wapsG zAz>6RrT7jLw*(mwub~J!2qg;0F!%dRD&^fNNm-=?MI2>-_y2v)`wk4KZTo9~yPyB( z*XYAJ@3}tbIrry0=Q;QcyI`*nn>pc#X0A9x?Y(As0F#S4G1#Jtj~Z|_CaSe{ zVkI7h>!lcys)KkJdaCJE%#%tD#C&)?22E8;ILIGWpyH7|I5iH(@N-M?})6 zE;u%kgM~g?NaSHBKMI^N4AL#Vfsniy9LFHIck<6*0f#TB%6YwlJwG)0b!sp3cUR6I z(<3%vBC0BGMao#y_u!%=(%rKMQaG`_bLi1i(hVXhn&aH(%-eAf&chMw47L5zXD zRlTZLUS3t5536Eb(2V1dN^yMa)K$14vDY!LB%{SR7C;$1KoLGqSxTg077AH}E3l6`lxXKv~)zf$?oC-H%i5!6wzydl0c% zu#~XDXq3~k6Jz<85V+jYuKYAYzR?|lnu_fa+=1Bx4yqokNbCESN1y@{smOc;d51he z9CLBUgwlg1l#!S=)R#l_KG!*+>|hfL^SOf9m{36PBsSP41&}I@w>`zkd+P2BOeF$iNkNA!P&~lI+Dl=KNLPX z%yW5AE|GOd7+K33l&x(FuM*m>WgekL0LN&*;?T3cwSQN{jUb$cWxXtd6vovL2` zf-OrgfYm&FfC}&GMx95q19#Wmcla-8nm*6Qy?e1PC<-dfN4NGq+T+4~e6wnNJ;Yn_ zfG}qs$}d)&poFgx=3a!km){fx9rj>|b;g8ZY2GWvyx7I>UQHxooZ()*9;>0D$Va*m ze36zBoTVq$FN#kaluT5UWP{r=COvSST?ufXbIu`5MB|$ zMo=NP$Fd5AHB^>!GCX1TP6CLJB{NPtG1^?&^GoMexMfF2;--t3FcMwmUx#sX^se~P z7&lA$DGGZ970oqR_w<+AAG-SztZCNc5z+*@AfWgxX#Ok!#-Pm4deG8CiifC!gJEJr zYlKGNqZ{KYlz<+Myc=&9V&Xr3A!dxfYw~{$s(#dqS>No_<)Oc3}m?KdO_K& zEImt|9%CUN+4>;$YdCq(t@|m?$(Oe)4Y&e((tLvES&$oREw)(TFR2cb6Ai1%fP7Do zE%MnYK4tJpLEx5r5q=kr4sjsD5l_!sD5u)kUmyPBS!Q-jJ?JvnwK4obZs0=30Dl06 zw2NlK3R!<;y98nfPeRZllA&jePPwEN>9WY6ZXG*+^O3f@NAy%qJ%Hrn-Z+TAi9PWS zY+}!L-iHyn&x3Ri_z+0J2> z#MZbm;SKZx#pS*gmx76n33KtmJ%>HHLZ5+6WLdpDz7}z?kJKqH%UqX~az8%ta6Qyb zP~^1;k8sRY9Z0}k8y#F^X9V~w-eA;X3E=ihya_Q$iTZ*)*la4}>E)35@l-x&(u`k? z20j0Rf|c4m5&G&$;4+>vQ(SHxt6Bl&Y-i@{Tyb0b#g+VwR8_5lLhpXMs81Uw#p<~9 z8(3k~7KNPhtQpl>g3H}{^O(j3FC$@ujn~5+chKX&3&*NVMbcZOzOqur5Q+K*7uLl< zIxZ(Hj2vM|Ys0D*C_USbU7DN{+73O0L>DQxxL*_16>LNV=ty9t)!|xcKb<0;s!}0< ze4>s7BHWhH$*6R#vJQGHuGKR6enq zrGVRH%#Hi#FwV`g&5V+b@mZ7)OSDbGQ~f1Wo$Hj$pR4E+*v#;tl8M;hB-G0CYh2h1 zJpDlj;jcJ1|638uxWY!4;+(Rg(KhHDJlvzH37{#XeLhZ&RqTbVBGBUE9|d)!)`b@e z7Wfe*>ay696mlYj>SbzcLJeyh^7t}*KskA`RWX}h+8M1N@HfxG+$ifB zRuVHkEKrKH2hqu-*fG%M8{2oKfE6#t4M?N-cYzG7WAKJ{HyRkjMn zI;~>GYFl-FQ?{~BuUD}$w@F5}vO%w3#M(>`D&N!}UOqb8QZNd1mhThhMtFpkubRrI zhYu^zG72KUq9D{y%X-OV>#2H7Vp&j#_Nf%IbtEgwIk60_G3~6sh<{On))=t_(=hC5 z9(VUGD9GA+9xHr#B+lKo%jJ}AO)OLFs#C=33Z(ZAh|!`LidX8{yIdXBiN_pbbn*lz zMZQ`GRyVayrCK%Lxp-6*qzL!Z?uoU0xNH4 ze4z%TJ|hxS^)mHBq)1(+Yx=4u$W7ogR8O!l>V0@2z{+|kbnSn#EW~N$*1)RtMO90^ zHyfY%QC_KEu<>3Gp+eRI6KyBiM)C-ElEtq@!{d&@s`4|%8chm@NDXU5>o#G^bU(bF z+xY>zqS=u3EV0JdVA{bZiCE0vaJRq5cDvbMNG`DeS1YcXFFzZ0lHDx^D!NJc4`e5#&ew{L|R{!&T2*m6EI48{4xD znu%s{hZtVZU=Km`tHT#qhBJdw zm_ea&>#t>19p1OZbuCElk@!MG6bO)x!xC;R9sXl4Kza2BW0e#IhJ+B9SPw)Dln6MU zdkG;W`67gc{3;XXg+9Hq5c?Dip%ozKjAisEk^Us$Pp7ZqJgGq{uJ!Cy71yXX;b}#6O&M-Z#w1aPp=EGL{naN5u}3^NiO`!#f1*xLqB75oTJ9IV?U(i|}&0m6ksdZp?TcO4e7i_1DMp5ambcCvBK;4YO zL6>1qJWH-9hJL4E%3W*Wj?2KsIm(g|V|V4uLo(#DSJd;QEE%FW&s05~A-ztmk6KHH zEIp+t8A2+bwro^ZoP}o6AyId8PD1B$sG3R0no{{nmXuQ@+Zvr8b&B>;ko17EPBpZa zaJ$D)6)?Z9h@DlGhp@tF!3gE99QQ=-lewXWf_6G%9_Y~71ZK?Y`uS$(r_4zo+$$>N zg>Kx47AYG+HaZw21u0T0s)3M=+`@f?aMW-i0D)+j1{>p{uS&=&y+@BFd=o9<*_+2- z&}=Qfd8~&Q?)uUSwjQoJ?$_9TKqa4#+-FcSvio)1OQK^fbDSj?^`-lgLvz!L)tz7&z%R0>ItGxt^R$NkC! z?EUsr@{-=$SK&xwAeQVp*?ma-a$j7B;x8^L0Ta+KL|JDNUP#xc<1~~6f*hu2+9P18 zok{q?6SohyN}gZ}M=*bxlZwe1C3kG5@SkoCvH)RY3eK=mdpOiApv&)j z57dHen~ve)&mdG6acs28@9^HpBHLYeK^O@G-5*~>qwVa^qQLEAXum}TbfDVbdg2*0 zQ{GloM90ioo6+sE1aw(QeATmsggT%!Qjn-Kp#w$es~X!vPS|chbgq8MF+~aPi8buB z)u{t|^C-TrYBbhC^)<0&=JNWb?U354pGo2A`clFRNF3Xngy}Fz>0p0*tGX2sORAI`c5%3ul7Ah^rV^K>dZG3OKDbh(KQA-+jHhrTGgE&xn zfQo|79uS8g$c?H)c93I?1lE1-{HE_wMCarY=v7fCL!?Avp~3wO6-WVk^;2IYT7H4c zTX+I55~Xdjme`B52*ZY2kk~Lu z^yC1LfJ%m|jS$xQtBpo+Q0Sd`M$c((c7WkxN2O^vz%jT$n((3|ig z0$^P`t`1!gg7au%VJ!mv{!AS;irzG<7I1a1P>UEV*ADEc{zDm8ss0yNQuQBU)sL3g zweC+d$qby~Tq$lr^EyciFG44TGBj@5Or!&4;;%BZiJQgD25v4h>$x~))^UksI=JQR z)6adx%p+VTGY@ci%-qlAGt-NMWq?oMWAarZMbgB!`r6fTCDYHkuU zS8z`=a~by>OhV!5M6@#QRdRhgfvmHcHIA(FnU$9J++t>(OI9_r&LL|iv(6&xdS)d_ zA+Cs7UnOf9vrZ?gky)pa)dQ<)-2TuiK&%wCQ*qhc!n7M<9B4$4dD^|E% z_ZqoC^w^omTne}-a_N@H63DojTN0!=qgfoB)wje+E>DRr_2!m&lFQ4YOP#r8uH^Ez z=u&HLnIpL@5?%b}mRXWZDsx$R#O!>Nxj_FLxd0nUQcN_kel3u8Y&xBePE{cb+t!Q= zD5?qVjeiIpfr=CCK1a*o4r#Lamzh^gd*h7Yk>ml8jT`631(ePtp|~Xo`L95q3E5wI_oj=?RQT^@uXTb{%Zj zMR{P0fGr~GfS6lU;9Yfqqt%;4gF+|ZHRzC_E zs~89&h!xXcz8meAY6eUU9q|LEEkcXN)jU+D**O>7j-+FFSR(aFGzlV70oQ&TtXE-b zJcEei5p)$qz@#e^)E!hkq8s0z33}p`%SZwzDkG_(Aw4v=zKkXP*PIs*8}6>|=M4!gJ@wnDT(*5OSVJjrpPfGd(A5OICLhH2leih+!NWao<)_t8|r?_Jfj z-rBMP>8Q`p%4HxX9@^720--_R_sO{G)!4E7I2$w8;T41^JZtb61>=suEu`iKy#Rzs zA;P?yh>4^m0G8!LEBCI7-c0(5@Bl8ZU-Msak=da*BFl0C_-@!BK-Az@D0<`X(R}(V zLD4>ZD<);8yaj|w$_zdG@u^r2Oe$z*=)XjFJBZn53NQk@j0zDKP4-T1(mJH9*f7|9 z2hDqdEtu*UBc;iF2cK8aRmcZC?K}8VtC3N}UBC^Ij{D*@pas_S^s;K@!a^uRN)O-bBQ`1;R8$#&>okgnz-w*w#*;&2)ZRw zK}A6^=cPZ9(^GJg3f&n0Ha-~di8Ye>_(Fz3smMj#l>1nLqY1m$k*Cxicarw#KMx@S zlOlFpZW$cqEZ{QlV4(*?n(3gTGNKGzur@^uEe8g3vWIcp$7LZsFpUuVJ=idhTbB;z z%TOnmQ70gMM;#E;k{YS(43m&5r!@WD)BFRaDdVHLDwY_OrLgOo++JV`rj)>Y!x|`3 zFCZZ@DOnQN!lNkPfjA%<3hji9G&;@F!BC|ZPexNc|ORW97pI z+*9<;okm)r-oTAmiYn(?;WP-lTp8k@=6;ronvWEBjd=eKUwBytY6~z%Gr9dbFqhnS zOYfaykAW>1cT)`21jodnA4nM`1qmN?4OS08fM5Cn*HId(3-xwEz z(k%`^28!tsWN*qA(S70rSa^XaF4h)!Hjpx34@5+~xgx?)V7y%>QbwJL8XMhC0!wRI z^WvcS22Bu(kg35C;|2j_XijKggqq_m%6-M<#lz$KCOrhf0_-g)$ZnPf!lPnCD3FAl z`)>BOH#cAnlCZV#7q|yu8!O-dN?^Ax`$aur?z#9QJiB&7^2gFDmJ%HLSf^-sV?qTe zOs=bmS%}gdK_N-qL!Y5#Z{aQNqZ1(RO3T$RIZa3M+=sA+YD0M$xE|&E;fifzLSM8V zWHnI6bChU$m#prEC&nr=Sgp~(UBC?(i;O9U2CjkSfIT%k0V=_+iDV#YUCb_}vR9R8 z*-a;35?cfBI0=ZAPlEE_T>EZnr_Qa=W4A1%zoG+oHI{yx`)f^PN74#}ng8^*4WsX`vC(vAhO$Bk0=B`3NXPPc%BR$6R zlJphSi0MIm9LzCM1ujNRXu5a{u^C%YJ!%p;KpJJ`0j{81^nqYy0iE#Zm}1w80`mL` zR4ghtz&(sX9?hSERY00XMM`?jn47Th0D6#Vjk^F`AsZgq`1B>wWhGqDX?H;vff{`j z3dJMU57$H@_1`e2o3!%4E3OrWBZE-5x7AL`N@!}Nu(}_qk zbW>>tlyHP!R;pDl?FTd0&>ThfM(>!+&S;* zRFU~1-if!sV;htugF}=U48M{tIagHBb_>Z97-mkpu4ZgvbV2^g(Smyo~q4 zZ*OIZ(i;|3#C~)i3$K5v|AMX^ww(W0+^;09A=kQJIczfS>V@v|h2O8_eyyjwe1pj! zW)_*f;dTU;GC;?j$?v;gNvUJs(h*j=tJm#*CBxyG_ba6|Mj@#wfM)^I0IvdO0pA&>g=2wfmJRlPF(yztRsYXcnrI@cWf&;DWlK zz;hE|p9UBK2;GUi>itRzO?%3Je7};V8y4;#->;O?K7uUv16%+TpaM_|CMpqdW~(NB(Yw?#lBD>r0ZUo zDb8T_Q#aVYCROir->U_ZXl#MemigTeV0vwwJz*Ork?jSmF0zYObQ}>s5uq^@ zmo%7J6pi1u9(Usvi4-51H6~~=VoG!3Ae2tV-ME>ScMuVkE{ch>G98dx;7#Wnq`M0% zOI+ZKT-Dw+x5ju16!jz{3oWWbGutq6W|R0Z+vRkXZVZ-xBaV(yj5{n~uWBBnX;#GM z&w;|7;F0nB=te`l5H*OUv}oV~FjhJnO5c_dR09P#e{SX`fk&Rt4ZH(O_=#{h%?*Gx zUkrl78&QTX8hbdUde2WGS9#gAjg z%cRLEd*1VtVZ8Y+dn{MML*sBzDZS0@gGW0Wh4?tVLLadT@`Ch|FW!O$(|Z*Tl>1_v zA%0;JRK_1*o)m8tUQnh$IBVA{rw)cq8NVOy;=_7!781=|j|zoIKKOFZF=Dhh4VZP=(~L-QkT$cwm>BwK*( zB=&|E6v+{)0T)RTe=Br3hjxMxdK74{)_{{FY2#-@2Z1u<7;XWO7>_+RVH5ru#S@_IC+!Fw&#)kbYnoS;wZ z(qVi(HHD5)3?H=#cQd(rUj!;r-Pa%pMn@^B;b=@?fJAer<|7D*8g&7hGi2%(Mac*y z&M5|S*4wD6%A@64k~R|S?0g~BS%{M-n$+I|HDj<|Y>oY9^o7{`LD%;r(M8GiQpj~M zT%{2eJ8cw)^zCh1562Aw_Ogrl&g4QY4OPFP@vD7FJ=Gq)$EBD-qZo&N6?I;*Xbe0_ zu{iWjff9|1MURlf)4{qyGhmUFev8V$72^lJ2{$O1R80}n^x_u9mCDGULjz#LZ%7$= zMBIk!pivUa$j@+(gN-K+nWUFIBBuPh4!z_-`PSa6TDNVNmqctYkfkt$xv_((KOUhY z+Eny%I+A+2ytn#dr@sS;KC{8i?tWoI!Ktcs3v7DxV*XipLD-Zv9xe!Th&oQA;ZGMt7*{dN615$8Qnm;%)I zTqhb4WXKLLL%IKxzac+|s2bpU0R7Tnz5-YS&;jNE768fswF3lUKfng~46q)c0lWuz z0Wc9T3~&peA3(TC5Y7SW06u^oPyk2+EC9R?_#bC~ z$Ii;)igMwAkS6d#2L63X&ccB-J|jc43YP`^$JEszv|bi2w>1RI%gbBn=ky6W7T9mo zZN3x`>^|QX9Twt#e}J3=YqQqkCkQK2R^S&v2;q_t2*3#7AAPdl<;27ViHj1ELF2p zN=fOGer2krd_|^Or%BD#CMOF*x{xg73aNrd(Bj`-A%~S2ZJke3XQpfYT8$=E;}?YU z&1fs7#YIJ;3w;VjJ9q2~`xGjQOR9G6=yciU@VQ;*o2%0Nc_}FwnYnrD%+xf0R$j6{ zJugS=&x5;KtxZo+`_-xbjMTgwzdB3nuk?rV&d6M&$Hs#`3+*x(sbz zveuuQnx@XnMNGs9OZ{N7KbcQSN!7qdo0sm-2J-2t8ZFX*HJxFwmmv@Q2|xGw=6(LE zPBeI=T~f5O6d3@;Y)xu9vdB#K=Org=)7NAy_vi4M%(T`1G$gf>&_Jlnv`lqoUPk7J zEcxa_3ZI#lLj~3%rhg5;8sGlqsk|l}*S-FoYCnRerzWfY8JQnzkvbJeqfO>B)c(|L ze{Nnz24x0H5l;JZQ`1v2GqgGW1E1$+XukAk^J%$^rVP)#PNdS3)fzrmjl$zU^Q_3o zD9OuAV`Zmud#K!LscOGAEtOxLE-Q4ua2^7#md`ODAHS< z1*B8caxo zlo=M0)mvvg$2H?6t8>05o|EFG@Mvu-Gc{^HFQc=9s3utkgcth6HE6#sHBF1&`8gU6 z48NL+*nyYVO7S|&otmOeqkfQ_3OeLyS7zphg_UTeU6F!*gBC-S>Fk+|&R#|z9yv;3 z($VZP)ma)XdLmlE$KAtUn=VqMoIG_N&^<3!d04k(onE8;h}R|)GSteqNdpWj5F>qh zCOQ-v9o08AcRr0zCITkq{R_K1Xzyb*ylT7GrlHnS)6%tRYLtP(G8$erY@TK{PXUud zb?RgNDI0^BnmTL>&0ifO5hX#xo0hd;K`6=0)ubk;W~==LnXHtRH8madC=~}i3{OHc z`orG6dj(U9CUvz2qgh%WMr1zi81n3Q z0`{O}|7)0C4tr?cc`wZVZkT;;nEjnF``^OsZ-?32+ggJymoEh_HeYBuf3C6N?04VR zpE>>ax>F~=sXg)aSN`M2jvhID=-`1bzo^;2Z|~_W`Hg8RCjy8LBR_3aYGt$#iQ$ErptNE2l zE0%xw!Lp@G77Lj0rTJ|OhT+ttA~oyaMPO zf7r z8iY=}Xluu=2yBBz3snj63*L`Y&R5KnzxVFkcmDSFoY{Z<%dEHl{HHhHc>T3kXTCCH z`pYl9IPJgx_=gvsfA06s{@3q*`^?m*pPKTUCx1QpiAj%7jGZuk++#6g$Bce-)FTg% zd}zdj4-6mntNZU8dhb1V54r2kJECvD?bgA+yya$Y&@Z9}{(Qhqk^OJHq2JH?_UYa0 z`koQj;jxn+I{{sLg84xc(0{u8|LOdHH2we40^r*IYyt3}E`M2>B|Y6jyKC@P@Z0Y% z!Ou^Y<@gCDC7Xc8!L|2Acdn%S&TcjULL@o(< z9egfXv%v*gE(HR2)zGHXpWQ*bWObfKEffQ7R!H!6QW*y)3_r1$LedrG z>>7rU1rLMKtb-o88L42;5J5VKu}zCj5oJa$s7b%k!0NLjj)nqsM(`g<%FM{{tHD+} zoFlO+z~@RP*4}PPB00RG#mG5CF#O6y|A4-({NeB!VgukIOJ?YM>q$Ke z9Qy9=Uv}dA{TF@x{r+!$_5J?O`@8z%xRhZSO4z#eR4oAgmBLcvkwhR zN5HT4i_UNd!t5iug&X7PnqPPSn~Yuk=Y_@Rcj$%X0Q!Y+>W=Si-Tb?!zg*WfemFfS zUFSB@pX}|hhw_0?X$RfN@2jnPGCKUb<57^;)xUc_M{piMzfk(!! zYbQ%y>FVD-e)fNTzrXLdUH!Y4Z}v0a?>}dPUZ@)=bo`#hd0oQ@9HNA|oue~3xLxh{ z(>dUeI|n=-EXvSg?KnrMWD5&vy-@{C5v|+6Jf?Y65Mo*}eO2-}xJgr2WYY0Xs%AOD zyc3GWRz#ITB~9vOnC=j1BG$nfTD6u^s1iOc-?pQ?6kN8Pj0~vwZ37=qqm~vOm1<2! zMJ7%y)VWz&O_i{?ZJTy=Cb-L*umEDJ@O`okxJVwv4dk)ntEwod((MeTeoMQ=0c6Zn zK{(r5f>pSPM=JSMrlzL@$c(n2`)e@%+<6U(%_klkCV;^l{S{J1?Eswv$dM0XSqnVQiH=W9Dfv{0ig6aC~qs(=B?CT;r_SQZR(7z zX-Qz&3MX4j=qzH-a<#TFbxUTBwlWKQ5{~c@>lDj7!q7~mFH+}7%}2P8Fr-Q=T#n_o zRrE!p;Zum+TO~}A+E@3?XSS8$e1s802)2hGkjjHwPyp5tgnpg$r#yCGU5WPmSv$om z?>s#yQqu`xa+UBng}>56`1Bevwg?{vLxn9&?Vx}Vd-Zfs`>!#)#a;-pwP1mG?!*dG z*t(t9YL@G?8g}xDqc}!1>?N~_E`^!7A4^pHBc(6(RH@~nVv8B|mZM9h7h;86mCWc0 zo3M$6*AYpDZDg;i)Ct136u!8;gzR^t^`ez!=2X&QK6vKB3aQsqB2~gvv>EBlw0lFS zO3Nuq$xIVbyMt<+qI3uZM375ZjlaPtAU5#AQ2C|yKArh((~6%ehP8NHMmWw6`$nh2 zh*j0TJA+ToqWt#o+1XkRdQ<jKhcc+`+uKSjOY&00I>z^{;oqncquA!C1yCDA z2z^%-+m*(ikJaq@=U%)3fevf=OdX6HFQtx%>6Pw=gHeq%k-F<|&vPVV;C} z1m-s|2mVUW#y)^Q+UF)0r0>7Yq;i5%-es>-~T>t|Bf84eaI%}e(gh^e+PE|o;U-5TQ579|4nNxpY_$n#<(+L02D}!G-Dg5#k?v+i~PJhWv7GpaW zz}xRxe~({Sch9POJXeMvKJ?D$UV`9VB4U#rK$S?FAGOy)+E&qQud?=le z8H)d(H2p1a(^TH^EB&=z_#qIAK=rT&ZEWtXctaKt2S@-U0+s<*08#*1fVF@^Kp8*} zZ~=UP{eT02BLF|37ElMM2Q&bh00BS{5OJGchy-weXaI#D3UdTt3}7 zIe<8T8juCJh|OfXApWTB?1fd0wl(?GKZeE9kJ=)oL2*NAQHtI7Iq2S9eu*h!_{jd^ zK1)|r*v0>!{m@nXxcHGMhYvTKI`(})Aly#p8wB+G8h&QLCjeT9{RJ=;Fbr@5;4BE? z1MC2#143~u@XH4z0sabj1~43OBcK7{J_nQlG64Ah)9)t=2bM-TB0VE5*?5fCq*;=4v$W}X$@|hn!rpXy!;+Vr zzIUbf7%sr1WoAPdz5q-{aK(+synB7e4CkBueiNh~l9_a}|A(dK7ULmivNji&Q`E~@ zI<#~&b%@;SG?^>GSzN76?(huvE?iLR^u%>GLkQnm+F+G@_e657E=0tI}0fR6rbM^JdBN zW4_tO4)u1?*XTRt`^tCF=ktByo9MgU7xXrJzx96M-QZ2|%Dr!U-|+s{JIs5p_cre( z&nC~GJkNR}J#Fq2?h5yMcea~%2VLh}hg??Iy1N3J8wk>*(GSmIDR-f_%w zyyAG$G0rj4G0bs`Bht~^A#+@`@3ZIIpR^CN-)z6pUTd@2cH2I+ZL@8(W!q-k-muNE z{oXd(Hr#f?YPD{(rdnUO9=AMh(ijIAe`fr<;cLTthUV(C)$VFb^;6YoxPHi^q5Rdp z$9;o+Kl4TS+PwANTJJ&c3hz?y``%b@jQ3&haPLk}v1cpFo#$EYN%QcYWgeAhzULj! zEYGW+X`sbq&tslPJtI8#cy9F!@Lcbac^cjI?vrl6+u=64(?Os4?%D1p$G49C4v)j= z*y&jB&^neo5*;r(o_9<^8SiyOJNh|#I=;1kWj}29+V%F`_G0@cd!{|r{(*gw{XP3E z`)l^6>@oI-?f2NPvww$@udpq#O|v~`d(?KDEnr<}ecAeZ>&@1itX7NOvdOa6l4VJ= z@RkoO3oUV$xt70J-n2}&Ja74pWs+sQWwhmC%W%t3%bk{6EjL;M=5Nh)=A-5VX1Cd9 zE;kpM^Uc}j1?G9?Y34`GL(I>arkEZxMVoFm$xL4v4;!nEJB*u*tBpy_zc9*-7Y&~q))+oAd}w&x@UUTsK^!=;V7%xX=IiIH_b&6k2D(1tZS#ERsrKyh zWP4V6;yiNCuRJ$;_PA?ZM_eXXq3aK>2VHl$202GM20K2qKWn#I`&)Zje-GT9<~`<< zrX!{az{PD`V;o_~u3kZPsRvI5#tXh3-VE>Gyf=DVJbur|&P|SA+UsprTdk$eRBQ4h z<^j`wlh5QbnN7u}6w^x6G^BLNxXZZRxZLHtiSV?zo7{Wda@6=V_ix=( z++*AixbJljcK_Vnie7TS)9zVEn|GY+Pu3-#E?qyzzG9EyjK*>mh^N zP;J;{C^l>|EH=Dv_?zK+gS~o3wXhcVY*Efw-vhoT?WHGO6(GOaVsGR-tSk22kCy1{hPc+j}tXffVkNUpxKx_>n>{qbKokMYdotMDcG zru!D4CZgRJF+zD=Wv+Brg3Icxww8f@a%&lKU1wQpc?UhD$^4OdsrhH-MpK>1U>aw7 z(DVyaz_{DU8}}Nj4BHGzhTj<`816D$XDF)9seY~c*VOJ3#rAO8cidO(+u+Ogz2uwX zJBcx**t^K9^p5p@;aTTd;aTi?-!l*GWRB+vj1ukc09r`{Mu|FiEyjr>?liaBy~4fB zo#?*B-QV5h`qowFs&)BYRj!X+Z@8wrrnz2lJ?nbLHN`dAHPO}VY;e|Nl&y8{aJ1S# zw{Ns-Y|Cx;*!tOIw#k-zEGx|)m?s$@F+N}%XzXtk3>OWj4aZT_yA9h7TMQe}M?W^i zVKjUT{q!Zn3x=l+PZ%CF3^m+o7-+b`(A&^neXhE`dT(`gb$NAxSkAfN8KSsb+_~<* zx+lB)qOQ+5PC1S{Djm}t8|};N85n^F*p^u~nh%=_Oc|)5M@*TPdO@}Ds<<{4F!Sv3?eeYnJ>{G1i}l6$?)SA|?)k*K&O6=v-)Lu3y^}Fw z_&ipO7o$BxJvV#$d1~BNceT6NUFgnmYut<6?*ped-G4-Xo8TVne$ah~`z!RaeAkx_ zpTpr8;1KNR?WgQV?KO6XJ=^|Q`##%UHo>~YT5P$`a=WFMMKCv;zcYVjK4dO1-(=1) zePmD>W*eR|j5geD__;x5I9q*`>iSvS0f%wa>-5HZ72ZE!KD@ze!aVRidO$Dq{7=yD zA9MR$4)g%I>%UyXTmk1f=SgRt^DgIL=UT^V^yr%$`M_a;{de~FZSPsjETmX#!<%W zj6p-d&}3*Z)EnvywFbXol_ABTHmoo#GmOL-JlN3R&{%z{`dIb8>OIvvtBb3()rr** zEfGv8%VFQ!zCM`u4tocA`(n&AdJ;VgFqVz-^zryGd)2yXTq&57KX5E^#5w-#NVFr; z2#kL)O1(O7p?9-)qc;mN^c$Khp|-OA9zSE+wI*6$wNA7~TO+K3rPkud9JbbyXqksOYno*YMuMO@fRUig zoMn!~tTYB&qjok9$9d;^sV{7H<~TE)YUeU%f^(j8j`L0Dbmt4sXE3gg!>VJLa|q}^ z5G#)eXVB5)sCR6(=*&})&QLRF?rpB^m=$a$y{W>KXiPB18Rr@28s`{i8Q(O%YMgF- z*7%HZigB`WqH&yY3|jRF<1ph;%zM$s!A1`KEE3~sZ({^{Tle}nVmM&fZ}1sh2AjcT z&>JcYWrk9N&QNIBY}ja6i`t^PN;D*(PtG&UHOw*0GQ4S+W=N@4Q>**w_Y(zvqQFlS T_=y5PQQ#*E{6v9&83q0y_IF`; diff --git a/scripts/smb-psexec.nse b/scripts/smb-psexec.nse index 7ea5db5d2..211c136a6 100644 --- a/scripts/smb-psexec.nse +++ b/scripts/smb-psexec.nse @@ -414,6 +414,10 @@ require 'smb' require 'stdnse' +-- Where we tell the user to get nmap_service.exe if it's not installed. +local NMAP_SERVICE_EXE_DOWNLOAD = "http://nmap.org/psexec/nmap_service.exe" + + hostrule = function(host) return smb.get_port(host) ~= nil end @@ -695,6 +699,18 @@ local function get_config(host) -- Initialize the timeout config.timeout = 0 + -- Check if we have 'nmap_service.exe' in the proper location + stdnse.print_debug(1, "smb-psexec: Looking for the service file: nmap_service or nmap_service.exe") + config.local_service_file = locate_file("nmap_service", "exe") + if(config.local_service_file == nil) then + return false, { +"Couldn't find the service file: nmap_service.exe (or nmap_service).", +"Due to false positives in antivirus software, this module is no", +"longer included by default. Please download it from", +NMAP_SERVICE_EXE_DOWNLOAD, +"and place it in nselib/data/psexec/ under the Nmap DATADIR."} + end + -- Figure out which share we're using (this is the first place in the script where a lot of traffic is generated -- -- any possible sanity checking should be done before this) status, config.share, config.path, config.all_shares = find_share(host) @@ -932,6 +948,29 @@ local function get_overrides() return {file_create_attributes=attr} end +--- Check if an nmap_service.exe file is the XOR-encoded version from the 5.21 +-- release. It works by checking the first few bytes against a known pattern. +-- Returns true or false, or else nil and +-- an error message. +-- @param filename the name of the file to check. +-- @return status +-- @return error message +local function service_file_is_xor_encoded(filename) + local f, bytes, msg + + f, msg = io.open(filename) + if not f then + return nil, msg + end + bytes = f:read(2) + f:close() + if not bytes or #bytes < 2 then + return nil, "Can't read from service file" + end + -- This is the XOR-inverse of "MZ". + return bytes == string.char(0xb2, 0xa5) +end + ---Upload all of the uploadable files to the remote system. -- --@param host The host table. @@ -939,11 +978,25 @@ end --@return status true or false --@return err An error message if status is false. local function upload_everything(host, config) + local is_xor_encoded, msg local overrides = get_overrides() + -- In Nmap 5.20, it was discovered that nmap_service.exe file was + -- causing false positives in antivirus software. In an effort to avoid + -- this, in version 5.21 the file was obfuscated by XORing all its bytes + -- with 0xFF. That didn't work, so now the file is not included in the + -- distribution. But it means we must check if we are dealing with the + -- original or XOR-encoded version of the file. + is_xor_encoded, msg = service_file_is_xor_encoded(config.local_service_file) + if is_xor_encoded == nil then + return nil, msg + elseif is_xor_encoded then + stdnse.print_debug(2, "%s is the XOR-encoded version from the 5.21 release.", config.local_service_file) + end + -- Upload the service file - stdnse.print_debug(1, "smb-psexec: Uploading: nselib/data/psexec/nmap_service.exe => \\\\%s\\%s", config.share, config.service_file) - status, err = smb.file_upload(host, "nselib/data/psexec/nmap_service.exe", config.share, "\\" .. config.service_file, overrides, true) + stdnse.print_debug(1, "smb-psexec: Uploading: %s => \\\\%s\\%s", config.local_service_file, config.share, config.service_file) + status, err = smb.file_upload(host, config.local_service_file, config.share, "\\" .. config.service_file, overrides, is_xor_encoded) if(status == false) then cleanup(host, config) return false, string.format("Couldn't upload the service file: %s\n", err)