From 73ea17ce9cd68351f9c330122a19d5f566f3bc7e Mon Sep 17 00:00:00 2001 From: _N0x Date: Wed, 15 Mar 2023 21:47:12 +0100 Subject: [PATCH] 0xfat part one release and restructure --- content/posts/0xfat/images/lvl1_2.png | Bin 13617 -> 0 bytes .../{0xfat => 0xfat_1}/images/lvl1_1.png | Bin content/posts/0xfat_1/images/lvl1_2.png | Bin 0 -> 11564 bytes .../{0xfat => 0xfat_1}/images/lvl2_1.png | Bin .../{0xfat => 0xfat_1}/images/lvl6_1.png | Bin .../{0xfat => 0xfat_1}/images/lvl7_1.png | Bin .../{0xfat => 0xfat_1}/images/lvl8_1.png | Bin .../{0xfat => 0xfat_1}/images/lvl8_2.png | Bin content/posts/{0xfat => 0xfat_1}/index.md | 93 +++++++++++---- content/posts/0xfat_2/images/lvl15_1.png | Bin 0 -> 28553 bytes content/posts/0xfat_2/index.md | 110 ++++++++++++++++++ content/posts/0xfat_3/index.md | 26 +++++ 12 files changed, 205 insertions(+), 24 deletions(-) delete mode 100644 content/posts/0xfat/images/lvl1_2.png rename content/posts/{0xfat => 0xfat_1}/images/lvl1_1.png (100%) create mode 100644 content/posts/0xfat_1/images/lvl1_2.png rename content/posts/{0xfat => 0xfat_1}/images/lvl2_1.png (100%) rename content/posts/{0xfat => 0xfat_1}/images/lvl6_1.png (100%) rename content/posts/{0xfat => 0xfat_1}/images/lvl7_1.png (100%) rename content/posts/{0xfat => 0xfat_1}/images/lvl8_1.png (100%) rename content/posts/{0xfat => 0xfat_1}/images/lvl8_2.png (100%) rename content/posts/{0xfat => 0xfat_1}/index.md (67%) create mode 100644 content/posts/0xfat_2/images/lvl15_1.png create mode 100644 content/posts/0xfat_2/index.md create mode 100644 content/posts/0xfat_3/index.md diff --git a/content/posts/0xfat/images/lvl1_2.png b/content/posts/0xfat/images/lvl1_2.png deleted file mode 100644 index 94f4f14d31b5a589dcad1b431e33eb8bc1b0bca8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13617 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 YF49wZS}t?sT_}K(yt-VOjQP|50~We9I{*Lx diff --git a/content/posts/0xfat/images/lvl1_1.png b/content/posts/0xfat_1/images/lvl1_1.png similarity index 100% rename from content/posts/0xfat/images/lvl1_1.png rename to content/posts/0xfat_1/images/lvl1_1.png diff --git a/content/posts/0xfat_1/images/lvl1_2.png b/content/posts/0xfat_1/images/lvl1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..25209e3c6b7ef300253b7958f9840786ea182c7b GIT binary patch literal 11564 zcmb_?WpG>FvgI+wjEN!Um}6#UW@e6KW@b#B7!)%z#f&jCGcz+YTV{KlTW`L1-^~1& zdNWl=M=GiJYEWx+Z|x3Il$St8z(oK609i^>R2cvu6y9Fnz(Ky<4MNucKEc~dYB>P_ zO84IfL>vtY9sm#nQldht?x`m$ZtnOq4Fc!4!{Al2(qxl?=(me@K(4GG6HgXdiWr$5 zTG*DJjAQwOt#JDCHR0s@`tx=<;;_i4V1g~k`T5En3JsT`=$X3PRvsr`Kgn7Xot{bQ zCYq5)k2|ROiPS2yy(Y88RuQZ?H3;Eg*hFJD;8QGdqHEwCJ&9_G;2@?0+RnBCQt+^ z)~PLv9ztXpn;abvUOo{A_Pv(gK7YK`1c=R=n7+{E1$U#eNy`mLHStR1(ab?Vd><8e z>%?`@wTF55{!_Y?RwcSZJcjh z97ED=sU#k6Q$ixQt#^7Ry#6I1ny**z0cY-`5&x{NnS%Y4$gm5zfWcJP4vkuQlLL~4 z^5D%Dx$LR*nor-+S-!*4=?2QYN!7z~xVMu;!d0^WCeMX}kGakgFQmw_Fzc2D_af1E zBI8$(Rj%M65mq>$(_5*$BPEeK?)@bll_ma}Jj-HCH-SPGLDr=9G`=G^}IOuEFhw_&%)Ujr%@%+Dc6%~p?;N|9n zR0}>OA^6los8#)86o$d^e;j{{{IXAvhINjKVBC<}DQn{PyEbC9(M$4CPlL_)Zv4 z=DH2?91*O7+eEiZsF=A#(pcvfmh|_P8B{;;#`3gSrN`{Liv>x2)XHNvN1!zP2dz2= z%rg4$+Rm+82fYVI-(*nX8er=-AaPXxkd%sf)X@@oA}28uiyF|H zka}sajv#qqj@v5#H_39tMG5pb$%}u-)L=Zx0li^r{=0ULMDRqD_BRX zu${gl!$%^dy?y)rzb0qeO0+MJvyE>)Va`V4aMtA*lL%MtUwDfTBej~zxf<;9%koI) zl^`F4@^axBo#gAiCG2vLg@jaBaMJQg60mN4Y0vZo@${>!T0wY5Lx$OEDv()-1P^l% zTC3(D&VWwJI49&w!EC6iFkoNz5WRw}-|lrlArwW)@MNyv5wyF2o4U)LvbQ;Go0Dv0 z(%V>Fo!j^sdq&dXVQ?b@_09`w-~?X5aFH_WUW4F(=H@50O)s_2+cl2QJhwo111{iT z4=W9x&i*yyxuyMmm~v#`kCUc=s}VHFjml1K|9Jc18;{$*8$<TYQPM{+yM>aZr2VAX%4}d;Fbg58u!yXt4V>$tRJSZ+R?6;puvNk3YFNs@ zr{zzBO9V@O6&0-$jcHXbr_o>${^{t9OXR-Ic{ZtL9(R9vSe}3~ax!{lOV7>Gh33)+ z{SgvC>krgrO+G#y_IX=89$)lkEz%5kz%K~@NOEg_%R2lTiRG!<+}fu`l@fH55+05qy4e4~t&uZ#X+Q!Q@X6fJHLrVMp~C=UWJ3pUuz#dnHT0Q^vW4 z73>z43&W~lp2geRLc0j5Dn%1rGe+8(H$>wSrr(_rjrj>z%{)FoP=F5&j&}J13oA*F zj3+VcNAQ~A^QC=Jr`;aZQ_h0;@7y#Q2n=w10nAN=Dg8 zt71W!;)maBol3qF|0?8qp6PPFj*kR|z3~7}MC4B`rcq%LerK1TV&Tp}Af4B7Tl$jj zFG$TuJ4MmN;6#*1K>j{#qBeov>5ZSidR9I%-;RXy-D@eu+uKS$DZ-9qJ>-v3)S}~(4t!ZtxxvoaMY(6rd#Tg@%KQ@)7BPPBf15g|e%!90o)^&Ph4SK?=1-V8WX6SnZ_W%I2! z%0=Y^7|kB1i846fJJ#VrWS*TcWpMLuK*rdRyf{d1OZIA!Os=jQb(JtHq^t4Jl;`H} zisMB<=dL((VD6*hQrA?Zll+u6?dCVjaq#cC{qk8#X_9}d$SOL9gL2&hC?OvQEIy+jG+ov` z3~D8UKP;JVCDd1|goDpG-hUccNPdFKN-Y)djC^@E9Sq}lP^fQ@O$qkH$6$$`QYK+G zCZMm)?T?WY$-tn`Wna7_zeY%H7$v;v`E`UWEXI5`hD{CA>+&-(f^BXgzg95yuSR&B zzZwVhKSMKm?e%_GFwYkgo*EUa?|{Mz5RI()L>G0kN^B+aj@0xWs&;SD&Rc*S*wJ4( z$qdQz8{X>V=ke#mm+@+t;mX{S>rZkl9z^d~_dPL9eMyo0%vz=}%3-qG$eN{WSX9;H zopY8cUoZG1*Y5nQOE%(no!1?73acFNPF(+FklpXATj=~O1*z!kFxN)1jnRdGXRN`= zR66lavWJvtI7#p<(%@vkbIw@fd-^vcGdftEZ4<>Q{a^^p9M94`X1XZ$AFQr*? zsexe6Y;aZ8W59^ivU$Feqc7%E+ZfUZ$GVT7q6}i89cw=Z*(D_|LSAqyOesNr!B@D(vM~#{nfeL;=^~Ikl)Y7R6BI#LM-{%I|>L#O&}PrA!tXcChj&v9%G|uLadUK9zKD~f^L^q`#-kb|5v^F|FckMOM3r1X2(0*nj864;zOdxCG09cQC zZ7zNaMkb}}QMItk$KJ4`aPq~P-z=C&3t@OAN-Oh-$XCyo!SRPg@i*mK+d&q zJT<^V0W)<78-;#NUpYSGPl1uXMY!{2-veBjm3&@WZz_K|InJf{0vx$ffFebF9!;DD zM#l_PLc!XsA!>!-bYqF*3{}Ub@aUAfT_Q#yb&fV=12_o1Z2-F>i1bUmGD#$Ym}LXA z&Zn@)WQd&DJuLpa?#k$cJ4y55liMVyPj;+W8&qiGBp6o4p|ZKUOqK!-1zl%V(88-Y zcsqjaaK;!R`elQ$px!g&Fb_P~G(rSOkHt&Ydn!byfLe%@Fes7-o(qt?ys_e(m_9gUGnw6n~Zr7=oPbQFOH-%myu!R+2{IfS-^p|PMz^`OSGJ0R6pKIl=>nA z3p2Y>t#>UZ)`ORDIB(Q$VrK>r=!FMjf8 z_Dej#TgT76OqL|yEj%?2|iC{J;m|H#)qOMeM@t$4X1p4 zU-o{(2Dk01FIo)GnL0dNowc4FWl)bcf?LYd%hksi2G*|qi%(H){E8xeK;VR2K4qP@ zAO1kdDr!`|JZ;*DO8Jbu^ey{%aYp)`KVJ2$oAUayyiBn{)w+s7+Z7bZSi^~KU|@XD zShb|kvmp1TCqcLLw2;V5CF3!ztug2&?S>6Tqp((<|AckYu4-wDW97bdEN)LPMOvtE zE@66KM!j+=qVDwxGl+}*x~-w0uIDf$mj8OAoG;a`zLu?ja;NgzW5MbauDW^VY4fzg zt)z~8x{xR9(koPM1XzFh0U z@GKzJVvT$=$?79Q9TLisHXhtf96GnG=W4$V&)m!k?R>AX?fTjz#|?iG)mjG^TnOo= z2(3p>`s34c&{g`=OUvyTHpU>)3AsmxUBRipk856!)XyT4C`!-akd$!g2w@NolsP&8XgY zJQ1TRXqg*|GA%pK662_y*WO|y+F!$ETkl?q@+G$vT<=M9>Zs!H8&TQ%25Ej&D*Gf2 zyD~Foa|r2Z{>gML3DX%-YA<~H}exR=R4(ZKL_K0o10AbeFGaZIy5 z5V_J|t08bfBu_n36fxH;Rn;so$YvvGZd8z52_ROT#yW%_58m6qAnsdi_N{%Is#{B; zBx7BCGQF|`-+j}V^)a{G>wFyI_cKc-vwP_~yY{`3v!lH@^TojfIhwesVub|sKH0rq zcc!FiQ1ZKut+wX-RhNm=(H1coH!qoOns?iU8msc(ob$p!j2^f@=i9)-)^GG2eHlv+ zkMMIC@yw~Pmw3thxy$!GXY@>zI4+HQnn;V;fMiZR0YRQ!*MoJ4{a{~Zo_0z>VUK%aAESUSN7V{WB z(=WmJG*U`n+E!qS&yh%jI3xt+q%NKF3y%vIH2}Z`iEMQ86j2)ktd5%z1ZM_eZy*)& zuS0DX)sBMQ$%{*>U*(Y?_0FBWzC!!M4HebAku6cMq^0HF5S(K9*8V+C+O^pSxF7YG zO~s+z0ITO=#K~MX3IKGBo@TVI5)q#01f#=!Rf>lMc8mrd!E$s?lqV$&vdC8IN6^3o zxC3g1NxI?a1;S!|`v<8!Lg0YT@96h{I20YWf+rPPM<;cfC+Dd(=X#`Se90tw=AT~A zprA?fdCGG7GIhXyW9v*?Z~4Y5FE%US`4LtN$X3PPBXej|CXOqH;*W|Y6vWUx4&Jod^+oZ2M^e(*sLcSZm()V-<#6PR6IwN%>l48WB9Y^6B`$?( z;#T7G6Xgni*m;PiF>tjW$5O&xRsT#On1(zXKfWzMiW@vxZSt4%sx-lA;mh+P;x>L~ z!|<+jDQ9$4rx0CyrlvZjn$e{!Eg{ z(B7)VZ)J|!z{!XyM-v$@o2xoeW)0192pprJlz$g|iGb;UOOrLB( ziUx8ve}2TSWe6E*SitD-G)^O951&3S>m$(Qj|ZMsSHGDCP*8*$NA0!l@h*w*ci|`s zEZuwNY$f?fbu{ZP4W6ss9MEVGjae>G)O5nizP&W$qJ|vB)$>nT^{l4mvN#xp`D<1K>`@Bh#tB}gL-x1qd?n80IX=Xjezq&L#{BxtZD)% z96zk`la6GvMw76(KexPAau?99B<=j}BLs2u4}+H_KOc|f@cuYRNb5`6fUhJrwFWKJ ze%B&eS8AKbMU}9{gM`qT6NY{|c3l@`jWNPr&UbT0q7-VOfWN0+l+vv$ynom3o*;!` zpfp!Ijs>hZHs72tyJo#MJ$<=4XpD=rgcL2#uF)nv5STM7ZIgv~^AR1Ax*-|>>hYr{ zm}THZWxs#XCU3jI3<$3GrbkFh4~9LHz-M*?Z-2}ZB#B<$l&=m(8iNrX(LLte%@hm- z71bbMAi|_p9!6tYLhA0jw@@Mg?TnCrRJ}piQz43p*Fq+b;m$sf3sVA~4Ua4DPklLL z-hS+~bwgYRsV z^d@XDNrW59JeSVl0|tD>e<`**Y{?JD?qp}#TgP&~N8h?>(hT;<_LY5%Y+$KFG?pda z-UD#T?rVN#5Y`{ypaN795dLV6C(+2H=+K9UK1*lHQZhFtlkr2JIxZI>F(GQlJdZEW zf6{+Ic=C<^=Fk1k@5$P1iHavPRvAGMPU^HL^No6yfX-l;EXAdX*4i8&Ks3FKidLC{ zTBTGwDlg{1&P#Ti&ET%jq=9kwMhrq!v=AK;u=UjGun$bjPhbIJd!KR$+H`v)WA{+? zz~!ISEvsk5{(OaPc_;-9_6X*rKg4uwbjv@mD8q?-Vt@rQCqN(JmJ_`X5ha4PNeOJm z$%W5(TBf%MUGn`CqWO{K@Wkm{n;t{}!O5`66h99+Qog*_hk%ZlQA6YHV;QnW85aU} zlwegAy<_AdM9Tyj_?^bXQVn^f_feuYr!JL%C^2dRL$A z(zb9vEbvl)v2a3qIzmRRq_L+&14BYxI%`@&tCfe-ctPWALlcFg7siK$60BHdxr6NH z=%i#2#6q@kzHIhVbG4z7!B8Z-iOCtDY_0i}n~>qYjLa;orViZ0(St>FS08~xYlm9}G~9r|M$`->W#UEhhwRks zMdeRfe-LlN(Qh~8z$`{&%p3PCgeZcMakYOo8wnkwAcCgyw5yy|X3f9kE3qH0KCh4p zcv1%PTy~jCEjF0jw;!DlZ4o_=*N}=wuh!SCj6%e)zfMTNJk0wG7@|TC>uaP8OdqT4 z@?8vvLVg;r*xL_T50*=a3MP>Vujc~9T<&AswugdD$>#b|Bu&_lPIsxuJ2z2jpW20; z#?9cNt$hv3yBvFuuSb{uoTwaaLl-;;=9)Zl*_(dGRIpjlFYBY)!Q%D;9=g#T1p}QXl zdq5?;mUW*Qtm1@T%cu%7ty*#z$K%(rET|o%O!X$}2FsRB zyW-d0ii!SSx<7;%+v6y#k(;XZXU>!?$AY4ca?f7zO#-GLXs*)lT8##pMktdB!YhR1;&rN*i7ieYDyuP6I@Z3-l7%yG++K>cI$v9QXa9A(tCsI-hE|je#tbVNj0Utdv z84sdd&ef?YQnOM6rd=l&J-6&--*PB$wg1RYE8|hIQ8eXt-_3;vm6fp3(9P)wmkFrW zCdurBSd+G%7HHCLF^8m=fXMxRimNm6=(Tm;x&Qs`_$Wjb>4~UrV@|DeDvVLtE04t) z2mq!o=fK!7J+JD;@ds5L0$=hLvWIPwH}^vEX=1LAiwNLDW^Z)mICeX&ARq4#ufTe5R|uswPCAU=49 zLWF9)kVg!(|By#An67vDBjqdJ8Q`PWrVgL6T&5DNx>Hw9-}ZbsX}uQEXh$IXde31i z&(kP{ke?RJHX|P9J?Zu3&v~H$tA5GYymLxcwq{frddTM^7wAT9dU(DdZPmQO?_yyBENJw|W} z>s{7qS#*B?)}-i^r)?Vak=!uo?eoVqe5vtOYNeH<`|zHA8^r_4{~Bg0*3XvO z5L*0UG_x7x=h;UY+P4^y<@3sW8&>zE;^7;~xEHc^YTBpZ1pr8se`f*aUH|N~>AT3^ z+5boq59D5{r7QRO(z?GpH{X7GmhN+PY3*f>ptSOs_L%X(+2m|d1kjs z|5Q`8>ao?yx_eKucDU+xU#$MG>&&2sU{V{A?`U)>b8XGJ&>0HCD;d&w`*40W_ zH%A!qhd5FOlMB~nF%Fg?{8_*KV34(XY{R8Wlo+GGC-liGY*KODX<^Gvg3C}; z`v*6uVP-X3rwdda0YY@qDxq-MX&mF#tu@LL9{ur7o1v{~$g3n}hr-jPTicsZ2c*$> zJ|!^kkkRqH7_qcU)C_JE%p22fdFsiZT6;ci;9yVza1j?tdez3-D&<=qhn?C4Y%h94 z-IibMZa>7Df~4A=3bUN%PS1O?^iZV+G+ydWR?Di^7F~8cdb2kf+FD&YR^h|>=LPF% zq8-lsRB88*Uv{I;!(<%k6LQ&7wJ!R%hUVf5re?bBnA1Gx8jI=ob69unICyxqj@Ws@ z>z#w%NmT0xymR;9r41}R7{jhpiehZ6wYsf|rpr*4A51|f$62d-uq3mL*bW>KxB7t| z3NNlp*?uQ4#fPm5XObLnU(1A?x_D;OTp);$VUMwoOD=2uyw*ums`d&Ck1lt7%A1~y zJ6C&KV9sIB+6bWd6Qmlg`xIK6JVhwnTn)~29!t|xqx;h7d@@x9Dco<0BF9#bv4&r} z>rU$#x*mJSmL$Xp0KrVuw5IvtL2Bw9BtVc8=lr7`&1Z^$m_CN3maNSn0dP*f3}VhI z)a&tz({j01)ivVSF2hXsMQy>-R_#HZ^^3XGxq;uGW$)8)achWyZ~49zCn7u1Wu(t` z%@ZEOSu1yv_oT($fliHjqr**v-Y*SBBM8x`dH^2$| zltnrpX$ZW;p^m9&9ecTR-5x_KYXVe!BM%K~n-zPo*OYknD5^AV$cl?eh4<%@3BH;?6<%^&=4(!kWM4jQgu zwPj4aU@wm@zUfMBY_B7pFdi>1pzdg;qgtc(1Lly?qi$!>NW`qt7dE<}_1ZUq% z8Rpt+fzi_{!Vzf>pCwAz&od_;yiI0A_3e)KjTahJYcj};1EMp|0q+$fHTPx>Ht4rK z4VSpvV->1*k+l0oDTs&RPY%DCJXKt38PWFc0rk`;tZE6CAzK=fm3(WcsEX{O3e^w% zt#d|rFY#z%i=!vDxd%IqC51k`(_1$Wm1p`bS|_VbV=NC)c;rcz@yPzfUI8NOHcs`h z-}#R+S|`qH<_Ny9)6&uuD0{9wcL|K?@=s1V{m#!{ot~*K=BK5Z*qyNVl=~7ztXMb3 z^G^#dwlMLmsb`y=`C5=-UCR>8FMyL>yV|lf{i?ZciLF^%e73H5 zL)GwUm7D1>rv0{oKrpgQ>TA7B3u(sw=#2}PCI!ccAat~YJ`4Z|tJWN4AUx6$D%X!H z+84ArO}oRpto{rKMXaf7Nv(384K3Cdpf%gELvsgSYUyr%nhoVf0SaWtfMJVjFr*RRSI!XgLaZ1H#1!s=~ zek*QWL}Jg<=mWz_OdEpb_ltA5E}r3p*-9MCgI@65odM{6(hvZgKVugaR9(ZE&kZ@G zuhSB7o#VGRD($_kMkIsG{2)Hs$BKpQ5Ss;va-J4L1O8~lf7(|KIF4gSUN=;(_^UfE za(p@_V%d%5xIvIp%`}sVLeZOvJ0v!^Cs&VTg@mE1b|#x{aH2 zX3QDaRZA9ht>6gwd3U?EKjZxp6Y10ETB|hB(aWXLi>(2FM?8Cy+}_l&5%3bh*yS92 zhuSjf(9OL}jd#&4NR0(ATcX(uC=TkKFdf-9rTxklbg(-65ng*miWbTV{uzZLo^w2I z%Wd*q$@O~m#XFyab<{93>aLZNVLCLGkfzUgS28H*n~UdjR;uv#NYMOB@`b(&QhAqO z(cWuKh;V-Ls(CJ=+jhxB#3BZ|RA7F%w$zu!$;!|h#LTVVT|xm-mMvHcvcv-eA8i8= zQ6ESzzj=S=>_Q0#AfylCKvTNiX5r=^79IH6M=_CPH0%bVbdHf%zNS^=G5IyIFc%D= z{dpc0Y2r4x8(7FEe7qVm8|buI*r6t{a(M7ZYirBtnwr=+FmG{x+AkzjH;jBQpY4>) zmnxcSg2S&zcyr?(XF=p!VlI>PW%-tQv`?^`Ic#JbCX7r1Swnq^2<`BaW#F!bu500W z_JZ#uQ}Jg@e$$s#Z4-1R556=kCo4g{hjn$f6Bl-_ovl_+av2ex9O0R)HG};)(`B!6 zd9K4{n#lzPS7(-mTYj}#|EpBq_jv#@BLc$>hlDX(4KX~Dr*5g~k-zakW0Q1n>BNEp zCI)(#gQykUAK$9J3G*9Kkeh03xDU!4?M`_FGnA0N8ZD>q|0E*V5g{D-M^OknkNOmH~oq0kXmu^21&UR}vZf^eIerB@lg&9J&Dddh zt4>}?AkPF z*&czsc$p%Lre)0}N?hf7rsCUQWEM+I)NW^s=9%oKa-$-3RJE%#JK5_V`jB{l;7Ssk z`0)K`f((OCt4j+9gVHo~E3Hb0{Ie_gB*FnkXKU}&`CBh_*2Y`irj6d0Yx(tkQ=Yw9 zTq0Hn}aJNDwcO8!U%>VOVYw@z>`Um36i5L+j#w01v~0o zarkXm?FghEZ;`nME`M#RFQyZxbXOx$8!KM59x@VJ?cq?j)4<9m)^7YxsZN`rRQkND?K&!h9{&;ksiR+0#*`I} zI;P!fMJ96s>uYKLLgo+-Yug%Di-kfOTrQW)Dea0b8uz7}ikW?L7IBBU3U>a;kY;PG zxsBYYH~G?o{@joqcPcFqso1u+O#D?hw#w8-Xa>?_J^Mi6)$2ad<4(7+rDp~`8jFsu zK+ixi8AZ<}!Qdfh1_ST4MbaeMW5{-_pIzrR1JMBhFp@l1D@#9e#b>>W$cCNzlF(^0 z`?<)umND9|$Bk||Zb|3vrFr^sGRoUclzxhs;fp`!KZn_KMykd3-W?#aLvDGpK4Mz? ztwF3FnmbWoHoSKAiIsjiMj_a+{VQ@%sjtOG+R=7aUhCCMVF~#r=$G#WewNPLiEpqu z8BU3>p_+-w{X3iAr#@ytzFDk$A~;ads>(@YwZT1y*ZXAz%%O9x`JNn#u ``` -Clicking the password calls the `checkPW()` function. And in there we can see that the value entered will be checked against the phrase "_tooeasy_". +Clicking the password calls the `checkPW()` function. +And in there we can see that the value entered will be checked against the phrase "_tooeasy_". {{< figure src="images/lvl1_2.png" alt="Level 1 cleared" >}} ## Level 2 - JavaScript: Do you speak it? -Another JavaScript challenge. The screen looks just like with the first level so straight for the code it is. +Another JavaScript challenge. +The screen looks just like with the first level so straight for the code it is. ```html

Level 2

@@ -115,7 +122,8 @@ Did I fool you? ``` -The value of the password this time seems to be the result of the command `unescape("r%20i%20g%20h%20t%20")+""+"p"+"w"+""+"6304b3377"`. Pasting that into the development console of the browser reveals the passphrase for this level: "_r i g h t pw6304b3377_" +The value of the password this time seems to be the result of the command `unescape("r%20i%20g%20h%20t%20")+""+"p"+"w"+""+"6304b3377"`. +Pasting that into the development console of the browser reveals the passphrase for this level: "_r i g h t pw6304b3377_" ## Level 4 - Length matters @@ -137,13 +145,19 @@ Straight to the source code! ``` -This is just as easy as the previous ones and the name of the level already gives pretty much everything away. We just need to take a look at how long the value of `pwinfo` is. We can do that with the console again. JavaScript is a silly language so it allows us to run something like `"2ab135a4dd3ffa04fd5b53ee5ed1cbf 3122c05 ecc31321321b 353a51a12e".length` in the console. Which reveals the length of 66. Just entering "_66_" as the password solves the level - I don't know what's worse, having the password in cleartext or using the length as a value which would probably be cracked even faster ;) +This is just as easy as the previous ones and the name of the level already gives pretty much everything away. +We just need to take a look at how long the value of `pwinfo` is. +We can do that with the console again. +JavaScript is a silly language so it allows us to run something like `"2ab135a4dd3ffa04fd5b53ee5ed1cbf 3122c05 ecc31321321b 353a51a12e".length` in the console. +Which reveals the length of 66. +Just entering "_66_" as the password solves the level - I don't know what's worse, having the password in cleartext or using the length as a value which would probably be cracked even faster ;) Be aware that the value of `pwinfo` seems to be regenerated with each site reload so the actual value of the result might change! ## Level 5 - ASCII fun -ASCII is indeed fun and the author of the side also seems to be a fan of using something like `figlet` - [for example this website](https://www.askapache.com/online-tools/figlet-ascii/) - to generate silly ASCII images from text. But back to the challenge. +ASCII is indeed fun and the author of the side also seems to be a fan of using something like `figlet` - [for example this website](https://www.askapache.com/online-tools/figlet-ascii/) - to generate silly ASCII images from text. +But back to the challenge. ```html

Level 5

@@ -164,11 +178,16 @@ ASCII is indeed fun and the author of the side also seems to be a fan of using s ``` -`atoi()` is a usually function used in C and similar languages to convert a string or single character to it's corresponding ASCII value. But it just seems to be a wrapper for the JavaScript function `charCodeAt()`. Once more the debugging console comes to the rescue and we see that `"o".charCodeAt()` equals 111. Now we only add 66 and we have our password of "_177_". Nice! +`atoi()` is a usually function used in C and similar languages to convert a string or single character to it's corresponding ASCII value. +But it just seems to be a wrapper for the JavaScript function `charCodeAt()`. +Once more the debugging console comes to the rescue and we see that `"o".charCodeAt()` equals 111. +Now we only add 66 and we have our password of "_177_". +Nice! ## Level 6 - Color codes -Level 6 is yet again a JavaScript challenge. It looks a little different than the previous once tho. +Level 6 is yet again a JavaScript challenge. +It looks a little different than the previous once tho. {{< figure src="images/lvl6_1.png" alt="Level 6 pretty colors" >}} @@ -199,13 +218,19 @@ Level 6 is yet again a JavaScript challenge. It looks a little different than th ``` -Looking at the `if` statement is seems the color value of the element with the id `thought`. Checking that with the console reveals the value `rgb(153, 255, 51)` which gets passed into the `rgb2hex()` function. This only seems to turn the input format into the typical HTML color code. In this case the method returns "_#99ff33_" which once again solves the puzzle! +Looking at the `if` statement is seems the color value of the element with the id `thought`. +Checking that with the console reveals the value `rgb(153, 255, 51)` which gets passed into the `rgb2hex()` function. +This only seems to turn the input format into the typical HTML color code. +In this case the method returns "_#99ff33_" which once again solves the puzzle! -An even quicker way than to look at the `rgb2hex` function would be to look at the value of the `thought` element in the second line of code which reveals the value directly. Solved again! +An even quicker way than to look at the `rgb2hex` function would be to look at the value of the `thought` element in the second line of code which reveals the value directly. +Solved again! ## Level 7 - Jerry's screw-up -First level that isn't of type JavaScript. Apparently a Jerry is to blame for this mess. Starting the level greets us with the message "Jerry f\*cked up, he forgot the password for this level but he mumbled something about a robots.txt file and something about a hint.." +First level that isn't of type JavaScript. +Apparently a Jerry is to blame for this mess. +Starting the level greets us with the message "Jerry f\*cked up, he forgot the password for this level but he mumbled something about a robots.txt file and something about a hint.." Oh well that can't be too hard then! Let's just look at the `robots.txt` file which is usually stored in the webroot of a website and is used for webcrawlers (for example how google indexes the web) to tell them where too look for specific information and how to scan the site or which areas are not to be scanned. @@ -227,7 +252,8 @@ But I guess "_jerryIsDaBossc0_" ## Level 8 - The password field -This one is a neat one that could actually prove useful in some case. It focuses more on HTML than JavaScript and there are multiple approaches to it +This one is a neat one that could actually prove useful in some case. +It focuses more on HTML than JavaScript and there are multiple approaches to it {{< figure src="images/lvl8_1.png" alt="Typo in password!" >}} @@ -237,13 +263,15 @@ Now the easiest solution would be to just send the password as is and look a the Just change the "0" to a "o" and send it again, level solved. -But there is a funnier version that seems to be more in line with what the author might have wanted us to do. Let's look at the HTML code. +But there is a funnier version that seems to be more in line with what the author might have wanted us to do. +Let's look at the HTML code. ```html

Level 8

Nice, someone already entered the password but they made a small mistake.
The - FIRST occurring 0 (zero) should actually be a small "o". Can you fix it? + FIRST occurring 0 (zero) should actually be a small "o". + Can you fix it?


@@ -257,7 +285,8 @@ But there is a funnier version that seems to be more in line with what the autho [some more irrelevant code] ``` -The password filed is an input field and has the id `pw` with the type `password`. We can just change the type to `text` and the text appears in our browser and we can edit the wrong password! So turning "z6sjdxnix9kfcu6qdnq809jtdp9k1edt" into "_z6sjdxnix9kfcu6qdnq8o9jtdp9k1edt_" gives us the same solution as the previous idea. +The password filed is an input field and has the id `pw` with the type `password`. +We can just change the type to `text` and the text appears in our browser and we can edit the wrong password! So turning "z6sjdxnix9kfcu6qdnq809jtdp9k1edt" into "_z6sjdxnix9kfcu6qdnq8o9jtdp9k1edt_" gives us the same solution as the previous idea. ## Level 9 - Calculations @@ -281,7 +310,12 @@ This one is just math and making sure you use the right variable in the right or ``` -So `foo` is 47. This modulo 8 gives us 7 (for `bar`) which we add 1 to to get the solution of 8 for `moo`. `rar` is not even relevant as `moo` is the variable used in the condition for the password. The tricky bit is that in here not the password itself is compared with `moo` but the length of the password. So what we enter is irrelevant as long as the length is 8! So lets try the super secret passphrase of "_asdf1234_". Very nice! +So `foo` is 47. +This modulo 8 gives us 7 (for `bar`) which we add 1 to to get the solution of 8 for `moo`. +`rar` is not even relevant as `moo` is the variable used in the condition for the password. +The tricky bit is that in here not the password itself is compared with `moo` but the length of the password. +So what we enter is irrelevant as long as the length is 8! So lets try the super secret passphrase of "_asdf1234_". +Very nice! ## Level 10 - Variables @@ -304,4 +338,15 @@ With this level it's back to the JavaScript challenges so first let's get the co } ``` -Many fancy lines of code. But looking closely nothing really is happening with the initial value for `CodeCode`. Just some concatenation that has no effect and some very strange comparisons that also have nothing to do with the initial value. So it's all about reading the code a little. Very simple to see the solution here can only be "*moo0bc*" \ No newline at end of file +Many fancy lines of code. +But looking closely nothing really is happening with the initial value for `CodeCode`. +Just some concatenation that has no effect and some very strange comparisons that also have nothing to do with the initial value. +So it's all about reading the code a little. +Very simple to see the solution here can only be "*moo0bc*" + +## Final words for the first levels + +All in all some easy but still fun challenges that makes you think a little more how things work in a browser, be it how JavaScript works or what the `robot.txt` file is and where to find it on a website! + +To keep things a little more organized I've cut the Levels down into ten Level segments so it's not just one giant blog post but is a little more easy to navigate. +You can find the writeup for the next ten levels [here]({{< ref "/posts" >}}) once they are up! \ No newline at end of file diff --git a/content/posts/0xfat_2/images/lvl15_1.png b/content/posts/0xfat_2/images/lvl15_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b5b5b596d982588367c625f971aae5a30291e9ac GIT binary patch literal 28553 zcmdSBWl$Z#-!3>vAUFhfcXzko1b27W;K3yXcXxMpCs^R%1Ua|_cXwa@@4fGrz4va_ zR_&Lqnp4x&)!oxI{nO|9%?VdhkV1mTg9iWrNk&>+1ppwY0RTeyGvr4P3esocj~m=~ zX>At(K>qWeA4D=eGCly105amDYCp10);zQ@7M6hv4+{_DL$}oR6l7U-5!8CAlV}s} z65k=)f^b$=n>ifL=^v)yRCu~4LCU5mDOv~J%ynZ-_DjVcS}o%~{($U~gq@Z1)Oq`q z%XQVjcozFP?|ybVJ9}DTB`nG3ppUD|;vsV#0$LOmTJ()NFAM5Fjkvx5XXO9tf`J<4 z{pdi2#zmyr7x_=ijOG8kK}s7p$Rxw>&??KzbSd#b!1O_e&HHEwwWFg=VjLi%3|3S1 z9J$8*y1cxqu*IP+&xwa>CXCS1+T1jj+x<17A_N90+l+J=|F-tz33bQ52(4*v7@ipq zSjwogyuEZ?%3ROajNR(m0XdekIK^Ev`E}lEe7fwnB{O52`F_RSncDtuF!lF}vsjs{ zIt7HJYRhX=?_qj&dX|UZKx`|Wp-(9)w5JTssTAr?wU{(z-u|hr;$TiQg$yds?C|GX zv(HzG0XlR+B#ziBR1T?I^V=XkVg6kp2tXn)p*k8t-N^;kbVWZVi+phoiW@8bQjX}l zy3d?zqTuO1Dw+VzA|FKq0M6^pf;~fXw7Jiuwlxym8mK$+UwL6aR?VoYR%f7;j_Alw z@9u6)HTnY51kMfv9eNJl#+ZNEMn-W z>5UGh?AZ!YnxjDnewk1u*bPG|)Bdqu=!QLV>RYq61t+S;?9nAz_FZ{#95*`t`X zwsS!gb;PitgIw;nlxbuD2(Id`*8f_T?ioe6%Rj!hzAB=a$z)qrQ-%u1V-1Ir*yh%t zndSQBnv_JB@hCnJx6X#fosVx3jih9^h83NpZBkopA#=jK{s+!k1xY7U*c z;N1X4ni%gTL{4CZ1E6BU!4c2`an3TC(5;9Djqd5422$=~38&HO;9CLMa1+dZk@9%s=5q|09#+0MD zhXLvilGumzcCAUL7wMO9zH}>Etk`Y=MdC^B$NkBnhd~-2W>b~h9WIN{wk4OBu#m+E z>m^sDZCkP&11RL68gjwr7-1A=PC%)h$uFb3}*(f7yTr0=c1N!JV0`oemGNu5z2r(?sdr^|a(~<-YWNq%*gKf!ZNmJuP ze*4|2AqFI24uRlgfR6g)4lcBxAS91vwA zVBsEjh~H^1`lTo$KHN`}S#tE~$|3jZF|*lL=;c6|*ssHHcD=Ecjc!E-=q*D$ryMKg zt;pA9_o}4v}?v}d_koEBs~x>xDI%3 zL76kAE|i2ap{c17u|+@QMx{$~a~UzANGMMhlWZV?&*@ovPm@~sbTA_GLpj2UI;H;@ zb=Z{W>ghk7eyq}XciZY^y7pNDJU(8wZ2&*r-`#9G_S*%eA<{Nu#k}EeFQZ^wYX9DG zgD8DL8~`NQiSfDcx+w@n*D2-zv>kg%ROgJu1ynbJfTZh!!pJ1KnE-9JT~34q8j-1z92{>K3nu$_^1 zs$c4(6I5&wVGi>(;PUIPanHs6!^nv8X5N}hzb;iETx&kpk#e4fqGjsveK6B;k(xJV z_ev7%$c-X#M7Ht&e8ojBy}CN0KnM#oa4}bw)yo{()>4?0(OS#*u~d+X5ko=11t{yx zZnF;(3EAK{oa~u9B^$1?(xJ1_rae6_DX{~1Fg!q<{imgqCyU~# zVkOy6(K|{|h%|`gP>42$PVKN^Wn;0PY41_L@V09Q$8UW=pJDYjrok9f%%YAWQgPf+ zy9A%Fu*d_U^?mg}XlK z71|G1BceuS=s%8z@~?gF?ka-X!-z%JTj8rsqhcObOlF67#u^P%@~D~7?!Kuc1j%l( z6P$!1_7F?B_)LBCQ&t)OiJ#ES6ST7So#dH%9EE5CKv+v~%B)Bxqe2z$o)mmSL;T@v zq5sQfO7`Wq*C#`(BMxi$^{=gvQIcDLxRo&wdvPQZ@H5v5P|KpXsSI+cG$Y~7)1u!$ ztHJ}c+k+HgITnaGG0hxYiFqi1it$x;Cjn)n6pX-nkEFOaz7?KTB_OF@D2sozl4K?n z97WRX+RVT1KxJ=3AU*%#X>0>)*vN)g5DP_kYumPM?d86?s8dFwCA3(;m04L=93SE1 zS*du}e9gg6U6%%c!PVKdusCA|LqqZpUDz3lBlry{>ulK=rG zduJm>OR*QMB_HyeUVn&WHYE{WFzy5QA^oS2QW-QIsItS$D{w!jb6;;}`(8Wm?fm_V z)-&7x1}a|`tj2iDx21rFjXU7oe7oC`oa+ua&0J@G zUifeUK}uRHKJ(}20KHaRiK*jGdH2g1Mb*WGQ9&t_?wTM#8jhQ{{RnBT zs<%wVUBv_X|6O~%T9_>p4v+)0{Qxh}Q}eQY zcha?WvHf^fWv~OU$$IK>D#`-r!+h@!RI(;Jp7le_=lI^bD}%mG-T1ESzvp^{9Eo{< zvz!=Kn+TcGX?`6uvc>$^|7g1xt3=;7Jv3-s4l88ZAVj`fv`S=eTHjVpYD7HKd;5+w zYFNPYac#R)t1`tCU*$XJSUkc!Y;en*n)-aJsvAs+|pZm;Hqxt$1M%2(nR`-ypg|4r;`cG)h1x}8+0uLV?Y-y*F zfdLSaX5KU1=PSwocrqCL5amO>DF?4$wNL(R5~2o#z7IW&?AXjX|H>2xfI@4WjAa}l z{j?=k;A~M4P*`@D zu5;+Nf;X-5bkKipX$tN5cB*rAbg<#hnG`afdtzM?0TEJph^yJTpxV031CubrHk}?Kvy-R&@-uM<>RjA{EA~ zQSUwQ6!YQPXXvPVOrxOUoE`KM>NZHztmxWW{J&KVTmXjL+_3Z|H7OzRAEA21my5;p zkyw+)PmJBIlFDEeRZq%RTh@w<7CN_HRaJ90?FAIasFusS%R6V6CX=Hhn^`9rTe0l0 z)XeNJ#Ho6#QB2=ShF1U=*V`Yn&jJ6*2#0%!GsGhPt7Y_G8O2B6Plylc{!g-q2=kFT z{HMi+qx4~+|1e4Ae@ncT^`?}*%=L_68pwWe0;6ix$W~JJ(5KyJivXmC3rnb+0zVEepjb`xth_l zntEh%^hOhX&3$qNEZgPy_ceE#{_)j-QAgoC(TiPILiLO4Kb|*&<`+CMb5sFK4zl6v zhtL-I9eJ`NbmrB6ho2@0p3RyD=0fB$cjhi0`UOcZCGSshS+;49-#bm(MjKOoyp;+1 zTTTrAiTjQ;FFq)mz)kwOT%30-c>fu0DFA7j!mkW3bR;jp&%!_0^~~%bipB+sRe$z` z2);NMK2y_GNavKphXV4_V$+YMWZt&9q^?RlkZ^J2Bz{rVlv~B2*7D<8F^6|%_nzmt z7%_X5%g~;9)_gTm!#ldqDNrgeTktTJ$zHiPypC^Bxdl>bad&}PWOC7 zc_USAnxJQykOs(~z;o-X4IxBY$y(bZsVI>~hnka^_E}+=iwDp6(uTjWujPQEG8h{8 zmonQ@;}WypbgYpbe_plJXV6lT(GU^TM!#QEsy5P5y~gw7G_|ox?egC5VbbKBTeISn zIyfZOrSUHno@_$_lejo$%MG5tll}tkb;%Azj!$xchfS8y)l6^5Hk@WHvyl z88Hi8Xnjpblgxzr50_B8iFhj>FTd+5Dn6CIUXJ&>%Fe`Uhyykmjl0W2Ev~J|Pt51& zT06c)#DMY)Sig(uxlO93y@Wa8nA}LTQQ$jcX#Hm6OQ;r(Ql_lRxdESl?nbvA2B>{S z=x(;4Z&}a+o9n!1!3GNhk8f~ACw4|9=bC5hWa7kYF#U6h#kB1RLHl{dd8x+9l4}Y% z=vKMOR(_-^w&EV0w?=1IO`wEv2n2C6D#QFT!ww>C_aYXJ} zb<0>0C21g&To>7+g}^Og&(-V3`hjPkoN@ENC>h%Y9cqIl=m`Xl;udumVyT?2IGt}m zS=v)bNX&hM`Hb!-Yvp*$^J`tORMk@-`)#RQ=qJ@E6=c1cw+G=4f1k^5vIxLGFH=oN zJkUyaI^l&c&na3euXEZjWR9dAajC4HF;ZVmhur-NS*It5%)!2BkV_dnN?e1Ir_R2@ zCjWC)S6=uDjm`swB0rS6wyK1|33yhs!A82*O}`{Wk@(c4K!yX$a#hHUtE5Q3FP026 z*tt=dqvg#|OgQH&w0s>Xb`|IrI!l>%*66&DwfFNlw(&5=cbmXe!Qj4KW-i`&!!xn$ zp8M?E3}HD99@>t&7#!1;$?$yEF*f_0P{(=Nl+;6%4x?sGLOwdrbY(@)lVgItw0R`0QQ+sdQ@L#{#Z8xI)3_wqNvap7UAW zy2LVb^0MhJ?ySUu0Rqz7I$0k^MmTTsH|bOOz-xjXwgY$M9+@G2ZC){zI`{fmYs-%V zyIXg2g@z7oY6Zj(XQiq*pRn)kRv_3+o z_I6)Q%-5NE+3_{h?jO-#`H&%P3-qf&6-Rr-GA>miPk$UV4~yp%eQLI5s@IJdv}K&K zl>&dQ*@icO`*k6zc#4@Lhj{GIxq= z&rtZ~bZ-rWPAf{UFYRcEcLFnaTg5d>J++XkX_Fr+{r=h@ght|x(*&g1!% z2rcAhJ=-h?N{^9+;=Gu0PK#q89QZb8ci*l+px@7D3;b8gjlQl=c6y%8Mm7T$(a8oI z%}(tj-$8SPy_A51!lvpl8h%UuYfKpY-q#M)ob?SgW0x#~8 zi4?aK9{|*_yW&(*(Q1nT|Mtj(?8n|$-v?5llp(Kaa~Uqd_R$;fx9wT(laENpv6ko& z_u|@RH*}J@$;X=knK8bOIi{x*KaUq2U*GIt4p^QNf+G%4;HJmsSe?1KQl`z0_o~7n zj3f<+qWX(&bU0g`eqTM8k`?e4j5<#au&1IQ4!ja3jRz0l_yr<^?-dNC8NR@KvZ7hO zJGjH+&2PsDItZFH6<-Y13vWG=iM|bNkSAt-WI&kvy(HChjnu?@pDTiYg=0@jw6@27 zUnt^@h5tL&arOKvAo`2s)n+GmiA`QmZqU;#K+@vR$TKgbvdmq!X{w9cD^!-%5m8|m zZFoHByy2S!j5w6(wm z{(cU+auW1qL~JF(HB+?e37Dv|G5{{Uou9na}i zc#kaO3se=x4Pr!Ulhv@PX6E9Gl@SI4|JZVpT3|V2Br?V~{*V4bSt?aUNy1Ob0UM;I5vj(4l1-JW#YB?FY zkDPHQ**`ZXiU|XrhqY8e$iWE-XI+pc=>$$*rtGHV`|jzBH?@Ck*tX`p8m1-1-rV2j z=5ind=BbI#z~OgYM*^{j`+Hwll!eN4Y;anpZh^UFX{>2T%Y0n?AF%P#!Dd=~bu*tZ zbC14fmMI4O{p1MjNdn)hyzxgEWE*f+O~M>g_JiQkXzpnmykEQ93IRxRb4}N5V}m_n z@V@xv1G!cOc1_1(Omyh7{BNpMiEcN`D#nszhex~)CBNds!;=#ex&A-}L}jLcpDvXw zy?h#CI!l!|3!C^)^j9clMl?C0-u_Pg1O%|lMddTJ zw7F0rD-ST+WmuS0L2^RrCD0jRH^nrxYHX%yRbCaC=-6Ye=*~pg+s!?qTvGyTQxD;I zqMnvWGQ}SWJPW6bYBrvMw#$BP5E+{BwB>+oMKPR+!6Svmjx#PCkXGLgSIp2|=EA+= zQcE=Ysh7hpu#6GYb9!q@8z~5GS zi4x4GM@|;PsLmR;00nk0q>X5lNS0vTO8E!!ok=iMKfwk}9+0`~|YcaIL6OR4S$%DKADIJcLnEeGa|22EhO!*^Q7D$|<%{H~ zjvxHX)eO9@SE^e_I~`%!GlG70O$EzUnaT_L4+Ngn+mM*6crJ9TBq-FrayBpQ2Kq^x zcOT0!C63w<5j-@Q-i^DE=X=Ntn9687`9YX>6mmvd(+zK8a$c*IENNrcrGh8 zWS53kMqY;vp37xA+rGyLKf?QC>|%1nwzQg#R8_z;r(9J1dAno4S}Tb0EzSV84Kh!O z_P@wT9ngeJLVF_p?Z(^zldg#OOZwth)_9`P%`>1kd{vWx1SIoS_@DUnK#St00jWYP zZkq3#SD>B~Uf*2jM^L47!2|L8?4H z`WZ1WH>DZX+JE#5Qw802Y!Y9lZE%j6i|JCSyt*t2Z$)dC-*1qksydniv;RppFs!M` zayq|J($4ON1t1Zp+-+;Fme?-`98l}*Zok&<`&x!~RjCzCnBcm<;SM_YOBs$ktKIpq zC{tntrdONq%hTvhElYM9XyyNdpeX((+qUGRU&?C0)!fxj1(&O8v4gW?te!bm<9lb? zW>#5NFxcB)#ZG2blH$8@apeR4ss>Nr+h1YJUCxw$%r((+?Cmc*K4~-?8k5bnS|UK% zUSRuIz22*Vu;Lfvw_+WwC3`@lfm&rSekHS%Uw$ytUVRpu#BN@MYrU{qH z5PwZ?bdSsK;%`Fy$*YN%E(UdsS7`{(4|%h|M;#6-D4?^phA><+PKwRWO4OA^q?in> z(jfS6Mf$b#%gG6|MKuMcGlMni1ZrUKS@de43QNU6bEQnsH8{3Bq~rJ6!z231b9Vk; zBwA}b3|nm;9jjSRL_*04lLYtHpguQNiDgZokqKjB&2Dhr zWBC?RU;W;Hv8hAo@$$%u5*%YptZ?08!lLaLi4|k1hK&$@mn8*Pox_d|vxJY2(+M-> z2`Vbclb*>zCtTRW>Yy1ONi*JKyIa$)L1JaKlhKuQtyrZtJJf+@VA_Uq7 zV>gwS#|66)QKod{ziRc#$D|4zM`*9kLT5>UG({}m&o#K%B`F=-0e}J?L z^99NxmpQ}9!Lp9<8cdFMRvMg*=7-aqH&riR#ia06IXLE=Ak&Ccu|uGFagUGj`5!tn zN9pNpb|d^KAc}tR3cMN{jBoX;;7Ye;Ijb@&>N9mJ!H8%Gu}=o7eTfEm2Fzceg*zAC z3WRq2KXG6^GaLJB+}=TZGD(2|+guGaK~Gyp`ARzk^*4dyPM* zcN{coS#T5O;Ots6X0Y;o5xp67x&KKG0igEl!lKOfmxfdmm5R+fp--K3{)q=f-gX74jr=Y; zH-al7##|iU@Nf+kAu+^H_>r!u-z~58)Sc7~PQr7Ut|@?o@v!dwul=CzR@x+;RKnY5 z%138dfJB#V@|>5Q+NZx0|Ev1oZhI@Tq`*-&7g~Xj`k!6q0h0BaGxbwHIo?NMAY_o zHG|AKTg8z@Qe4_ir!K}(Ei{x`z<2czq56b(^@%om$;Sl1(bDzlj zQoW!c&VnuXr{E)((Ear?PR*9(F>i6glCD!)f z^7uDv4Rg|5Lm>J_`{BOKP~#gklD?A&#s$Y5SDCwjv}}~hGpeQ&U%}3*Jhi@BLkC_K zEpM|waXwvI-_nqwnbqZa(|?pL$k=PABCo<{x0-wl!J}ms{Lp}Z{GWtP{{lBQ4VNP*T%Emt9>2M2iTQJ=I zz`0)Cjb_cZYlvy?j5i3^ST*~kke@=WW8dtiG)->}$T0hzx~A|k%4^Qgm-wdcJn#2D zDTgvFzrU_R^sGO78nrdt>kA*F82&cN_0NoOPdR#h%XcjG@S)Z3%kOs`s#$7uckMA$ zAsn`Ni>E=})V*iMf12|4d;L^^z@A-ieLlKLNE~Kt=}8YpF}~+vQquqDabSXaI|+W+;2^*ng~!8`!i6PrP{CGVDb%Ukd1ZSnZG|- zM#-dICf&a4vv%F54t^FL&GlGv1JX2lEuTN|TK^HT+t>>9opQ;$S9~XPwt#)RM%k?+ z`>O&8`~Yl&O?n##$5ek&$M+&(0wW{zyzMjV+3L;#4*j)LtM?-A*`9x!U#{B*jT|h& z@!HdbS>xjEkJ0lncZ9^ZMLKm1EJC5R|5lP};pfRI|5&@qgRzM`>RMT~{l=8a<}_!T z;FOmqq_T$Ie{qu=J8s-!XUTd`Yg|R(!!7Au@X&dR5C=X>^_6psMq(g&BNXoXkK^OQ z#MvyZxvgAi?Ww`guq6j1SZ ztcgV8OlKUBud1@bl=&r3@lOZYbincvrJf~^E4gUB+x1PT=N?p2hM2pQuNqp9n4gmP z(pGi-b3dS58~Rs>!ez^RVN=q+Kn#yJduI+b=Z1Qx4-fTNH+D>;vVASR!t3@!J5IhH z1qK)u^GmD5`>RzN-mk@r#F0z4P*Y6bA1dIZ>?sY{X7M*yl9C~t$qgH=}(mn zC6wXi{M|ZB*PExN5d)*M{dggYGp{e=bx4!z^tUF60E^9k`Lnn0f2{v%^K9x2o%djN zLd2(x`u`PZ{-{T3CBo)&IZ?6|vms|b+$#_J5tzj5xwcQGEH&!8FJG{}L3Dg0FMT~_ zm}@x(0PMMMx7?HUhVOHzcN_J$tre$1AsN=gm5=GlXxPLlM+!R6yA1T|FWtny8yBA^ ziVLWd#cuUl{55V-gf$d4xTe&Tw{F(BB7fq?THdd^Aw8Gpevk!4^woQ%>oEevx=ekH z7LEoJU0rtz9Js(gEY%);%d35A(2>PmSz?W%t7`V1?{oMWvEfU?3?$IDz6j17x^#E! zV)*Nl*!$Krj~7tNPC3z%BUt-ER}13g!&Ke) z`}fkIMb4{|gpuy*#Mci2uB~P)>X98vU#_{nB_kn9cb{2^0V^>=tjQaKH4@jbmTNLf z^&YtiT-fsYdaEY;jlHzRyGbQos8P)FVHwvtjuEpf7(X5@9PA!}p#H>h!O{U9UfN6) zI7L)5m&f$1*HkndsUQtJ`n^+XwAttF)ws`h8SCd!GuPxe)_)7~X?K%8(G(W8BZK(< zTA%B8p4{MmUudx)(OJr^H(ZCDxmP96kz%nXPBY~@;QVdB{DHh zb^Fs^SvZK*8t8Ar?&3ne|-8fp`wEG7Q9mhc3{2oP=-R%^YFPkpmV8wx;qxEioelkcv&hjHV zKp0v+8m?T@U(?(u5UjX-m~#I#AwOt;d3Ik$Jx}z_8rCg0_Ri;DoR87krYl_8bJZ$m z>Epkr?Z+qIEhP#lxmow|uDE)K6rDK><@xTgjY4?uo1+NbV@Db14)fls3z-}SC>?Lg zedC>U`XwZ2Kw`tqYY{_ON>#s%S+33ZPQ^!?A1Kp-nS>)gcc`XEt4BA%_uhvRwB7zr zU|nO>b>KOUi7YusDoaMN;EtTb587B#iLIK9ecm1iC)uAva>4P^ql^@dC=DSg>3>6onl%KK>7I{0x~=CC zaY1p8N6rQvU8VHN+@vNXM35 z?<^BQl(gftTy>(&0Yq8b7Alye+;L$5t8?=q21%*Rek$<1_ggK*=L>VfLUqmy-Le_4 ztI3hw%S5kFYc1z7L+Ar3)j17|w@SU)y zn0Shfw!Og-RPw5P%Y>jIcPd??u5T&NITgO@OV`dvoh|QiTbB<2MkNCRxLqGuFl2xY zzh98(*<*KR3-NR3l69Z|*VQ>Xhtro$XD9EYX=ZL38(}k-m$%xf-6oewN39M1O(0@B zNt^32e#5`>S)6RM`-f*)VMPMXi8i$&H#z2VTU;ga)yN#=1In6+eN!*nf_zOQ$G-)Fz#uFp`Pc5R$SPbf0MzO#0Tmrm_& z_vU<@Uj~!<$(S6Gj~ed=X?neKj__`>Zm$RBZ1K|6EbuN3MJUH=u3G=!6Zt^u<1jJN z`Xx9-KNP(lEz%NEHI<%0?Y?7B9`u`gs{U@T@AkOW&!0=ta<%_(GMgH+ZMux*y@fy2 zzk5hib-5v_myvqBe&W@9U>PjDTGo(BNMsd2A6Zix1_9GjC6)OJh?w0mdJW!~_piVG z-m#qasc&*kF;ZIjyiH~9ud8pWkI+h*|La9-rU$WN5p=Z{>p;cANb;5GLZAh|2e^Qg zQ`!6XiYJe@_udUDp}(Rs(N{&=G;06f1oE1L5kEjHTKJ> zr)1M2i!?WwqOB4T<#sAbH>57)Er0W8bLN#px9$Fk-CI#N5WJWe z(wCY6Q+ElEWq-`fc^rBE-4LAE`9Y)kH;z;7L>8|vzO z>C|MlT z`4*3{vA-|tA}m6N6#f)as5jG&lUOC=br575F8Fs8zoI>ei78Ret@uLObboK*UhA46 zrW9aswwtIq`|VdTFSlP$JUIl=+qC*qV0U_-Nq_+rK5~{R_n~sGUpVi2DEoh52uLcN z6C(da++EYkZI~WX=MRm9qKGF8bswr?y1dzx)a5J3-Ov}c3DS;2)H+gcSplW z*4H&w$;)7-EjJu|oS*4Pd;5!!HHo&*{_1PjQOQ%mfs|c%O(1dz>kA}d#d-GcI4uf{ zD-*KGx3v=t4mm@EG*JE`PsVmyNprQIp9$5-2i?TVn3A0zmtA{utV%aY4#mMnuCP9Z z7AD(pPSBZEc})D*ROM$w1o%7tK7Efr9a#o>1;f68fD3QD(CSCI?lB5Jf6?LOA$|BD z=2wUDrAQPBH9>hqpirsJLqW(WbuMDp{$vgk$-@JI0N}p8Fu|fMamx}KeP~sDkJll? z*jalNB#YnT9F;#cuTg2)*W*V^R;8np?{T^!)17rJ+P+@zPIaDX+*QcAqXXJ%I#cb< zWmRy8;4iotyPS5sEb7Yy&ij@c!yoG6#bD|R(>k7MgatNF+O=xR5^`N1UrxzXr0_v? z88?+Z*&W%mWi@C{g{qNo_Jq}w!pf)x-Eq<3`wGJ2=wUxbQe)S#bfRxgh4!ORDYE#n zoVa@mIy$llQ)&M+yUwvn{5rxV{@*YwozBR&Ll2D$=m_)~;3sQs*-?~1Wy|w@b#5>= zNN5!6827+LwxAM3`Xj#=CSWhg7HuTxsia~&lopaxP!Q}FtF#dka{L_aRNm!#rQ#f4 zrV{72f0Haw(o<_5t6bk>3Jc_Iu{jrc>FoS^_-gFAzJXn{MF@&uPp&AD3ilBMJ{ zJsk2NTx+SpHSfHYFd8~@m3wdKzfdKPSf3A~!1x!W6^Y@C|u<4Y3e9&9iekAlG zihrz}0~v&f%(Q_!UVTzxO6@M!95fV=(H&}PDmg#<{6ov-ZXyv>Q-rAr*0@qd=VjF4 z)8SFhP1ms4pB#BHFr0(F5t-*wAX9SXr%1USgRitYd~v5A-M4AimH3 zBuu*@zfMFP5uz8DYDfu7cXcTdjq|0y#F}b|P6nvN$(~Tr^#v+34th*jeaTDU2X3$RP5Eqr|3SIY7Nv(5J$PAO zBt(~E-xos~$pK&0$PQkrc$PA*qN2u6vrcG(Fn;|yYPTuKAcVa$Fs0H> z$4l2)Qx+qo(86Q2ZjpGG@l6M5He$KwgI{+d_q%3|FkkbvM4Z z)|$VGXc`hR5moD-v)ukUx#VkvcaA|qwQMXQ09Y6~RM17xC%dQgR2797K^VE3Qj)68 zSBE64s&F*4*W?$XB*^TF``Yg_2F6sJ>IlWl$rw;_N0o(=cA9sdep^mX_??b)2azjSTmaUABn9?;EhX z+%cmg6B8o}vh-!~TTgN&AuYEcVK4U@$ifO`i4L6*SJSQ?W&>SIOm&yG+u)oTPWtGh zQtAR(*g_i#G-OwFmsc2~o@>nlva<&WpkhT@!naK)v0l{FSX6x<4HMh>+fEA5R?=T! z4atF2)ROcC+id5sd)wOQo09qV;Y`kBrAW=jt>gcO+y#`g7Ml* z@BtYO!AR4iM}0KJUloG*IT?lE@pU&n@A%d55We5TX0i46E1ZFf2i$O zD*yRL&g{$-%zbR75`LY=w2~kK17&ta^Negav`Foty_=kTNPumG9R*D^E&w7f+S9WD z)mt|uqd1CKv%gqtZLr|9@-RRD?So((_eWneZr9{Q2aQZa!d4tm-fl=J$-&fCC?h;c63 zoCME;Tvk9;GyrD4aa8(0glG`~PmI{qgfWf+glDdAFXB%PKQs$90{qO07{$(9Zuip% z>UXXH)KkA7(j=@^E6`jO>K8}M8_FZ$@{=PGGC%YIEHkJ8M5!jc77z!YvV^@_(6bwB|&1|1;U@~hJ-Qe1o zo*mtdfDO|;pd5nHwuXo``V{RnwuLO)h_*j%Q7=>+BZ?F2e=us8o5z+B%v3{Ulso7*8$mUV|-c%8q7==1jGHN6u?$ z+Op0JU2rmV9HwWMWXdy+cXz?pz@i{fa-C1m31|Ds*YXCp_-4#x6;pg$FUw|YEnR#W zy5P0F5!&iS8`1PXtASu%G00hG!;8lR5f}xv&l0W(wvr3*p^VFSOFtTaJ1wOpj#_$k zv-`D?a+4O)(>d8=RUVTHsN;KoD=6rCqJ+faHrBRwJqt^z7Hn+p>dFCtteM9H#1adW ztMSmcKPQM>z6Xoe1NNh;3G~t=|4likN|$Lh$_>LSW5NMAzhqCnMpqWa3pMM*WsN^+ zX}L*2gDG9tN|xL?LM-E4PH%mCvVLFEFlDRK4&@$S{)pfmD>){?SzJ1p4;NP~$TZo+ zwwerI^=8?sg_T)a|UKolIwA zHNR2q8!f0T#r}Mv8Hk#kv_0Q~rSFl92$@oCZ~)$p;ChQPm73R38;xe1;HQIAZLRwY zf_Os8Zyjumn9uCu=>Zy%KAVXuDSgJ7b?(H1t5`;|%@-M^y*5ma%6Kd;fgx|v>LsgtUz9EXZ z)X-`c5!YF6JjkY>t*@Ux-jCP;h9WIdBtJ+I%zjCI+sa9A-8SQYqt(Pwa}^qkp^?A( zZ3uO}B{k8isu;h2P+1sQr@M-v;g+nMucjy{%!--}{DlYB$iK=vpHNbT-^`~D>F>7^ zm&_Tp7R)pn$OH=`IPFHQP;4wz{1yg@KMC6F7jHpq6?;6Dr)q2Rr;`6|YMG&<`{%Cj z&SaEoqpNG3jCDl;h-grWH%3!2qukeXT4;Gr>F}*}{4T4K3MC)&Cs_H%W;>mfZy|>c zx{NGAQKkd}>_&Z(6cDnozZlv6;qb_;H%n00wv)RIfbmGEDKD2*R$*~EYqr(yF#Y-y zF*#Z9uw-N&vgPmSihOe#Gg-J7QSIdVnAoH-%0)g;1KTBQDyv_go+AR)>?pI@+mGz7 zP?=`vfUe-|*!IW8@HUAramg4MwqD+u$#uN;5gPx+25-$|9kg+^{*@3_7(!%Etv{c1 zwhs$8_NdjS#6(Ewf~~g~LfAkeG8y7%A#SB{rO^LVOBy!16Z!~)j;(mz!eXZN96WJB z^_aE(6AwT|!aXd;A`ijeDK+B~ezdHxzX&=!vyd}=u8;gGDe^Qh9+OBUC#D-&a*_c3 z@rjGA?KF+=o@Pb+losFQNRsg$Ru|2m_Pa~dnkc)nYEae-lwA|pt@>q85nuLPmAado z+@ciA>gho@m9kVb9w1?kima^5Zs1r1M;V(D<8W=DBoJFP$6a+SOP=PF`^a(5-JT9j z<^J6#R5erea)qDp7cE1HG&VZpWT#Lnr0J2HUtT0xFy&3NDznDxjPiF3iG zWVO$|c!ancLZq)fJpYuLDgnCAy&*JH6+^c$vz$^YJWl)Avp`==MM-%eJ)N3|xT#oU zMLOfR*qVIHU2HtQ<+OtQ{Pjwmq+i_ADw@=dH~8k2wKdjzg7kBWr9GJn|53C+Soa=# z4bk0Oe9eh+lo_=lCSQ-H?(+PRzat0(YemH$g$GHAQ+)3B+OgY32Ba<_+N{whQoo@2 zRRSoILzVoWpRy#pTi!Iwnyf}MGMiXJONGZHwe_^{1%yfcdUTI2xdZj-~2 z9wu?O)oSyHq+7kxdJ0-L-94N(-+W(^@exrM%VJ5-a&L~H0iqGhk%9rntJV&S{TqJ` zRft??eSY7hyq-e0v@tOg{r_6}@KLs-XFUCc&%_6XZ`l@=`_D3W?eU{D=zsh#K&k5< z>{3GFNHY%lUS&q&v@a9s|EW4dB&F06%=d&;YDT>y=;J%7Ick^jnWtLtM^nF)%7bMPqX%{GNZ#S(GX-`}Tc`T%%^qz0FfizyH5*Sj0q z*&Kv9YKe8cX7ek=^I&vN-}m+&d33PnW3rL<1YTculy6)A+RMY(X z4`GuH>onm<;mrMth{`Jy#TVD~g=@OF5B>&jesFNnL?#N! zdn%?fajzb=^b2A#zd!Zfn&7fLrxY-;7xK(?k@7xUkBTO3^z?IOcH7`X*+j5Uokq&p zQb8Q?@D}|0JE7a;;n-GnFr7TVWtTI*THAVb^4U3m-`YIFc9ss|fjruINsoqLES4cQ3WQ4R6iN8O5_%M3nTKLn_~{at_Wb zC9|3|3RSYn#U5_k3B`O9Wznr%Y9`e4P~R7!`?2lUPkplkiEi7HnHyI~n>QN9Z-s@S z4yovWlTT2={<)oYjXWnSYfV%T&zreDQd?sdwK*Vd7dqAXPNg*zB;liRx7oVb9)zH$ znVV-#zfRn%%~i#{i=OV)MwWjg z1}8YdU4{?{?wWxRf&~jMgKKaI?!k4?K?e&22<{GpySu|qzWuK3J}YCwK|mOa}fh<9nE$7xvWe95tp6Z?H}8HwF>GnlVKhv7j^I3i5q|yJ&U=dj^+KUVUR)>6~kSFNkU=*!{f$;EqF;y=YcQM1)wE~fJ&%*iwG@-NO{X-H#t#=(1?@a@?WQ{L&T1bMd3vuao3H5jMV7oMoo`GXUTR_BxH7r_ z0FiKMT`a1-XM+pp6)ayA)isFv}_(BVM5bG=-=Q+!feYc_G-*^~-(e<0>XP zAo|l5S);)3ZrOCXF{c!P8L5;Qz3}&go4jq4p-rZQY(atgM^B?_$EW@HAKTT=(w~26 zd&4)T&E^1=6N3miA1n}OpNyVL%mqK}<8Rg|c}Pc3JsbOm1tzu8b3U}vSWZ~TC$W1J*NL=Z_nSaa^b%)G1jvRTBnJvSJf zc4^Y@sM(*heZIa=KQi_C`JBNmMC*SFeSplc2Cv}Nnp{3%JjYm<;_(RpC8qu7ok-CaVi4+ zsbt1ap@G|jxwaeh9uU*tetjdHCr3XKx-!^CyJeLKMEArGb%lmH0eR4ey8GYn7>7z&i*VNMiO_p zS?*3ZbkDAcjC&e#7y>IL=-x)&uH}TR%G|gMzE-(r+K!?NINI;#xUF)S>=bw_kFh+b zbY~Q4Jh%>#4kZ>nI~|-K9C0QcZ@AdV`z;g7kO54J``8k5Gi41m?=ZsJxFKaCgI_r1 zuapxB^n)o1?RTBsvHNznxNcT0fDyoBNsm^gK&A_`?wqkV;Qb& zcwf2f&w^XR=GT&Jrmba4AYvA3z1=zenGN#zA(k-;>jnANNQ0EMmYhvzb(rBPSnQ*C zhk#gPN5Hx<1)9)>fvB)4IKVEU5j40WO@qww@he2q#cS|P=;15NY z7GRdpVz#+nk4%OPg*sq31;>Wi#3lPV45IvC^_}y2IHhwDiq$s`6tnz1gv0T8)N5}; z-h%h|BUMezQvq?jUZPB*wJ?9R?&8hY;E?OLUO3e4!Xykg-R@OXMTVa@HWhQkjqYt6 zmXJ4`Z&slH?tdIBTF9$&Dbu^ypFR3`+U6GfkvC;`_*3S*9{iJ`2Uu<^J8)=zBW_rz z+%8vPC(A_KfR!amN8EBE@G~n0?(hb+0|3VMBW_xtYqC==22ZcAsKmtXEWIg`vKcDR zv4;RA>#9V1-M1m+m93iR4aA82po&pSZ#;8=_o3;KbF~n``bRB2Nw3kodzsZ;gYy@9 zA6~m`wLx>6x__6|CEhGF3zz@ij3>;MK3H^tb`=H3&hCb1tF%uEs{vdKK8c}AkkNjC zlPN2Ht5x~VVeib#68@a+r&I9Oq$wra*E@QS0mZ%_7jN-Ka+_){6`gpvRG6ER$G*vM z*D~|N6-m|j=g1qU6B;HP7UsQ|H3_>M8slBsl0}igi53LR zrZnbG(*;t=ghdA0Yy`$YLchE_o2UK4Ron0(iAOQkTd-Y1orikQ5KLFKk-Ey;AQEq~ zvr7uXFv`Qnj3szzr7t+qw>9XTL$-a1@`e>nG)7nHHKtw{s?auHXo1|HVxvR@N%2MU7^&;1@ z@OCAz-b&Np!8og-bBvTcbkfVg>?WyYQZNWkiv|#s*Z`PAz7iZVlr%t6*57v~R0LFX z#=I;7Wme{VjF6^Lk7~mM4&<`9{N`#G!PhnyIQz!0qB(M~MsVUgQIfFcnwNt9lAj)o zD$|%8>Il7gic_`Bd*;r$zVbXq9*CY5S{&(b_(}ZUREa{N>%0$*FQ)+8iI*spRirEG z^ksr6QB$d~AANw@h>G?SFE*~NW9}1PClfK^XQ-~|pRCY+?i*RI7^~Ao_QtsMeF?y$ zVQFbRCs`l)WxR1yTuC%@8C53wO_7y0fbgS`>$r$(|BB`qVeU2m;KzaUyE=H8;&X7d z?b*9Wx3H}r5Hn>1zN=vgwIO_l{k<}*XVgHiF~j(>fhNa;$b{3dp?IRS*@_R;)3#@O z4=H;&<9|e3gYw2(_wY)pS4Jmf*mSZRoF!xBwGA$1O#*QVfQrdir{w2>;s(F-SOC`K zCdP~XMW}$aP%d(=$JTV)!N=_%_4JE5goe_|+WO$j!&V0isM3P)7_KdSm`MPhbU}}N z*M!xB5YPEGGZ`#9)Ms34s&99$`8<*kP#^pt>r)$u@5l)|Bj2D`XdzNZw3lmX=`F|^ zcCe0YQ}R#`gS7+8f12zHPwUzr+Gxd^G=DjtIKd*%<&FAV-wOv>-%Rk%yIO?KuAp|W zK80o3>k*c4zjRD1x__pTe6p8R9Skb}qG{}@3^2$3gG_e=XhRE!A_ag1Ij#W!AFO{~ z{DMrm1Xy~)g^m>8P?AxRqTZ(;1t~rv2N3dLr$Qz)`#)FnU2N|@Kim}M6OjGz;TWp* z_a@frVDNp$Fe(YVf!8XrUYy{~<>|w>6#+09Y;C>Ik03ynX@dX$d>l;B{St%_aE6&% znOJ?pdxC6;1SB5{g_e{E^9gK4=$orbjGlK;5&SM8x!HGNkUH~0*8OzIY)*TuFb z;ruoA&X=v##dYo%9hDUS@_fe<9TTd zE@C;XHMOa5I1<4$d{(|Fk;lp=!X4mLADC8Ox%%`}s;=C78oG~vY-N!`5>2xv5 zx=2*LP-EV%#TalPkk4-&=ay+vUHn+TKHL}0@cTEs+$2=;kjc~0oMCf(=7cgS~^)9dnsD7Mm8Im06g2$+5H zw<&(M8++M`1fcJJk;LUc_1vB?IpdLzL^2h!`(T};jnR!O0fSPT2| zN@=}r?%1IkV60TbP)OCu|%-{vuZpKcDcfG~i%f14} z=XzV*PQ%AwGHto1PeNnxiC8jY(lN8f7Z}mC59jMQa(_HmW-xl%g`mBE1NstJcX>~$ zP0iw+q@k&o`g@bqErN7dH}J<4G7|AbdS+U<^+XclY*krZz54StU@3|9a%(X7p5bCj z0uSJmAgiE2E^N1xDoSF^f}A@4&;~F=tLx?p|CkYzYhJ+%|1P)WWe?=ICm4JS*eA(b z=lNPY_Qov{1+f1VX{h`cbOu{5xs%iR=gKSV#J{-`t&??F%SuYTR|`%Z-?^82496BT z?b5a=f^LF?0`B0QRG#?KnFQ8Ipcp?se!^K#n4@Gr)M1x_O}OCkJrE$O}MXu zLh9`Vw~at!5j0t4C1I%{m4ec$C(NbRpLO|!8EJ(WitC^951UU#3;t~0+TRxa_Q@6k z(RU+xa_E0`MF)}{>!-%wiF`#|_)`|`>5FyRSuy!uP9r1llvk-hK`*?@9MO*H=P(ix z%AvtQJ%nZ(q7(BlQ#`;6Rg$|?TiQpH3 zMUpJaGjwfq1mkX;j=0T>h-Hd&pzs+-R#b`sHVYHAhlbC+d+_}rWICdmPJZ@k4}3vw(iMW+f5Sqk6c^5mw6Lr z2>UvC*kl?>9|9JUsDVCATtT#q^}f6w{CMXq=ebmciX}p*KO3&lRqLpt;_iLFCauZc z(QJvxf=EHMzPJj@O5+j)Klj@N=OZ> zd7MAqF-zQU)RxCEvh1_eyP;Psx=gFihU~5IZgyJr+&eH9{qQCro=)lizUmanhPY)p z1~Wh@R2x_3R&}BAMt}!wxdF?A1a@97knH||q3NF1?Or02k_QMwS+Q_<^nKFaLT0}L zrKfpF-RNA&nP6P#el+G2S|T}iNbn^Ym&|S3WIPE;JOK#9ut2MeIe~dB_r*!X_O(ufOnWZigujS8xcbqpa z3)nZ8RaD4oDoc1`!ITYXT>iTn+}Q8hQ8xu=O)0A|LzI1qjS0)gWKWxVCD2%cQ^c%L zU+>+Q`5~T_I`pRbeeeq>-jPBjQE%pMzKYdkLGO3Gq#;@3kU{G$-lFY`Yv#+i^y{+K zn^cww(cVUg>s-q&np%eSQSYa~lA>$_o34~KJLkI^)U3@|7Tr!8Ae18Md|`C#nw2`> zQ0%@S>zXC;%f;<6Ex$>I)yUU->r?)PLYJgk_mt&rlf`saiSNFA1?-zEwTn`;E7i<| zFDN`22hxVSC1NTjiVEtiroDM93k_z5?f$@KV!9M%eACQl?<9f&b@|3(pI;i$Bu&iCzmF*wb85H(qzwl-?c;*Itu`kjH@- zJer=?Cg;_SY9`Gm>X*?REw7A9+Ucy5FIua-non_o;gD=9`{&p0wesy<@mZ?Uunhg9 z#4x`-jTot)nElk&i&v%(nM(WY&CL!IRkl+>n`cw{i zFk{s5aA{+W^RJex#<*c=th!F#^v+*n+oDbS%fBAIjwkAFxz3-V<8o$U=Iw~sOuouF z^Djx{SWNu7A>Ou=*}=Bxex)+NVoB`D=iOlv(ih-UhRv;Po)$!c+re|`WD;)Un1w%vUE0zj$RNJOn?<#GK zd?ummhL4nB>7=-O`AGzSQoToCtzqklhrMg(MygZSFL7w9Ro?vWuK!%hGaOJ-e+6)| z>w6dLLajqziZb}OjMwZ-7K=s#hTXPy+o2QmfyIhtH~^8U&mO7^!iXUX@^1a4+_EZD z@-TgNPncS|AEuRILrx2At~NFcnhV#gzWvIZ`}F3zxw^BU4m_E9fn0+r9x)a%2U~WG z3C9B^`JEPodT8&7!z^k&4=&usCJE2I^*sqNqerlXJl8u-*MUFPFnX zmSZ=1G>e$qOK^$Z&T{U1OXocaWa51ubartrR;s8 z#g_S4T#E5x*$o3U zIv7`f_VR{wne>&u#gI8~jI3sdRaX>y1mm;N@_vqSHDjB_$Uj@8^;QkL{^%i?c9p7j zoxH4Wx+F!VoE)uh)n)TuAmI%6pdbyzc^8z+PU(Ok`9z$EhNZ8s+~yBDKIW;5O5u>w zfX$wIjA=o>Je+Ksn!W?Bs1=v0oe1Q$U90R;jw>zG+hHx+I49+Nx7pgqpeQ;6)z_Xn zKs2X0#v2Ib_!VsKNF5l8Hwp_1^Rt{kEGTSqmq4nNxw!h?ITOFehO1OnaOIC-P*=^D zdJtI(uXb^E@E=-1zj1LZzdyswieT-3bjyE}XJV5zc7&39_57|?3B$vBzY9keOUuv+rw|!WAo8m=>$(rZ~sz@QP&TZrQx1-qSTaH#DOm1+1dDu>($`JTMN-k8|UOo zyF}aZ^HkN!7S(|t}CS26GOpIx-I9gb#j8ss)5?#Bmz*pr>gp>a0eEuV zmEPXUSPIF(wK6?Uh2=Y)6N|x!4?{x@z*_hF?bihQFO{>HAO6_xy1dIJj3Z=NthX<3 z%8AMHL3%2>fmf=cV~(GnD(mZ4GjNMl<~CN*UANorMs9K`Q)=^V&#HWT#UpWeQ0BCZ z+2F>s$-m!X(1{;PBa-vrPyQUIe8z*9o}c5o{m?Qp6n=AlzlqXEa*1=a!C5=n((_!& zdO8sp3khuRM22eHcgBrTQUG~4mQozZ^u?nz*S{y>$Z*2l)1LNs}v zDfX6!p@Ax*y1H_8EK=^}5-|mvv&tjcY5)SO?`_L#eXq?e-d{e-B(INI9PpLy8!z*9 z-pkI;fJt6}#P0H2nZc=U+w&A`n?X`N9~3_MZFti>^zOw7RZ$yTD71dMywqlMdbaBJK2EIJn z#ukX_Ra=J+jERY6C@$^UC0n+pdxSf}&dxHcKJ|B*=(jxNoZ3<2GCaTOBEI5Q~t-y`u}mSLWz% z$RK8JQ-DJXIrGIa*acz%CPzvgm$G@Lc|VrOQ&u>lCNj6AslLT_dda}k+9Cukq@k*r zIA?o6xi}uz&Gdd)w$uO|MNO8@+{`7^c;BC{7FB~lck4RJ1Xd>YzbEXm3|(l^K;L<` z>zGdE^Y;zstMjnRT16q3l-4)dk`Vt&B3Cl=SOj(K{hm|Yl^h8D5w}$CGmx;>KG?ss z<%ahOx&#C?vhv58g`ZNsC|Z`1kz&rXtQT4*6-M$A-PMw__K7WuzT-g@SdaQ4%sYj- zkVQUZ_Hu5!X(|HUO4G>xxn`gS%F&GmT=~|yKj?f>VfN$T*JL;vYsQQWYIUl_L$u%$ zG@7`3PoJRr&=5w|*KjwNuT_Hn(=&^wG5pSbRTk;|9kKp9*hmkhuZp*(=A=8K1y-V5YU|+hT(#{=z4!~=#Qt*^Eav$%^2}a^~ zm9{3{BD+6<$TUep-nM=)w5WWZCbP#O+6#C*39tttCulphOTh~GhLMaaA(oWpApYpp z97hk!Zfx<)^l2M1E4gc;5kWVM101!qPe1qZsQA&l(%$aZ-rlqqSExSc^+J*Nl?V*} zjQ+3@@s=<%%1{Y#_}oJeW%fz302ht(T3lIreEDKA!*llqnWryyzFPcbV3TWcb6gDB z!e^p>H}Vsr60NK)AM;a)V`J}EGYNOG4v2{if`-(&yt{2By-`sD75pM)X-FKndJo7| zoai6(RnumET?h0MX}jR*Ei@V)VGOZ%QC!E*xC{jc8uS-_#$3i)K=r$uXLbB8K+jB* z_y{^%c1dr@H@q$yRWiT{Dps)Qy01pZ0r!-dVCGF0dCUGxtS%yMy|A-spFq7Gq}Qwp z;IKaht}k}TX;U%DN8!vly{Sravs+D1vB@kyV$nMtKoAB^UOe2~j!>|d-MD)TNx7V* zUqW3@ilt@jg#~URC}yg|%0l0zy(IObI@7bESk`^UmO&%z;j>LPT4MjGJqJwTbE$~? zdN`z|kb60#>j_=if1!ucW+^F-E-^>dGsK>KekME`S0#1S|DiT&@Uimi$O+pf3q}3_ zrA4{IoAp6sF$&|$ty9ui0#-Zn0eS_7D4)E>}jPP^1kpVDr$@8>8=y6Q*tZ z@Cj2t({6uyxg@y;gB)Ou%7yH;w#kXfm%cynp*z#9!VY#*zLrdZo!3m-7vv#?j;Am! z4ZEFH$wdVG@cmaKyRLNFtO9ObMeK~m*hDM`>%|9_9yB!Fw=%VvJ#R1eEPAK5C+Avr zW@{IwfEz@)2!V>zubA=})G%ERj@7kQeI@Zf%*?$_WG(j!zVQVmvLmx4X2Aip!cpBD zgloSu=k2&!T4wO`NDEwmEvew>L`R!$Us;1GvB+M+b2@g9&B>g%y7Vh6;qVwH&7G7T zo-7_=XDa%l%ds$dEcL;CojP`ryt0{yDwz)1WM@(Tm@hmn$hJ=v zM*wyXS%(87NCQI*NDiOuycQ$8>6NqX`}QD3|a z6QJl12yKa7NhvEW)V{DKLt;vTZa^e;LI9|l68}SYE*&qMYIK5l8vXIeQe{=iE%dHe zVF2gm#xEOE6tRlCw+dSW=_Zn}#A)W{CGr{csHJA4b=lv?O*A?cZgpI!1#PE7IF z)J#y-VNfev?0*l>@a;>0i@8Q8;gOILX@BhaVamTj&!Bx-$)&C^!mlnT4r!kC@QV)t zB{Ve1b;Sqc`&PGf<%IX2bTv_l{aLMmiu2+IZPM_VPz& zo_LEBa=ilJoTD}&t!Gasw<2X%uMQH$$=l{Kd3ZNBTKGL_T==rQTjWL=LmGqnT-VGi z323>wxA)0%U)W^$PiX~F>&IS8uhot(2u?C?tQbiH5BH5&$Ih(uelE6m4IxaLtkS%q z;XzN#Ly>l0LQ%QdYkodR1z>pNFW<%Xvu43v@HF<2Vf>HWsr_z5DO=p@2Z5huh-F}YXaS*J*t)RBU+ivMX?Bw zld64fgYc`4&KA!g-g>gf(MZ!vzPpobKfM^uf-XzbHzovFU;_tUWC@ zJ1!H*kd4CcE?#()K|N7?lD;&P3ev*;Gy^G&(zRZR;Lg&YV%K|V@OAxwRn5jUCz|HG z$c|L6))Sr*Ha5nLG}i5%teeslJ268(lj^JMsAO5&%x2k@hnf=KSg9KIaL0fy{^e^) zh`nhkj+B+58z152ak)t6bP3m#yvnR&(NROLym}vTTi@f~_$u_Q^d<^-hyG3f8)IhU za%mRVNNoE$JZGMr9pJP+@2OE4?BroWClF!$1fsVS8crUpOm3b6S#?j)Aorw|gboF~ zrA%-KjoHvLxP`nzlCNR5hVtVSBBIj^YRcw2LZ3%Dt55nrhMXDwj_6L82?wrxdNW#g zOe$U)rdEB=J?s zAXux&xh$favs9*vFSqb;@txLxRkIZI7}!??;GuPt-9M{;&D^s77!Mc*iBQC3G+6@7 zZQroL#qJv$&UO}urV7fHGi@$}YH*eIrrpKhk$9k2#~oK7#al1b;1`#6qfGD`%iHa> zuLS_o~*qT9JF#5$CK%mUKc3 z&8#OJK@0swW+iU<_l;NtN`dc5-Ud`ejU8?>3wv<#d`nVx$!UZb&0Wqj#p3JDA?DPh zzwOw>gg2dilGicW9H|ENpR&(?bu~hf82qQT53r_e-R(CFUh{0-GarQ4QwjlKn6LEz z(w*!}jYI%*lv*xECUE#f4PeQzZTjzCPv21fNtpc8=G$j26_ zjFP^SCB{-R{DI^7)FLghSvVpCfr@@nTUQtFLVYCmJxZA-07;|rU>UOvBaU4~goQ2L zv{4Q*k@74VrRfC{i_fy~!29X6)co`a_vje;*#Cdz=6}*&ea8^n1ApqO{EsI6Wi^an zF}!`N`Twj_PAF>|4 z21wYv1A&n=29k~l&DP74Ofac-;6mE?q4J@~Gk~k@&rH;x_xPAjGB2<+RC1rZzdF8# zI`BoyNtV2vr94Us#aSNo!&N!U;)u?~_QY_CEPFXRfPDWe&xp0UROzjpS}S&CR>S zfhLQaz#h?2gRTPmb?V=WR5sZau`oDXj{5=+`|m8*S!%g9E{mj|h%IKSv6S1REK&IG zY5|r=N7IfTy(;;7K7Bia0U!j59}N1p?^DH_uRkp-pEd;!J<1g+B3h5&v1i}&l!@sM9}P|D{m1WBXU{Yy-UdV7@`z*3rdaUc0%+IM1yhksYCV zaKFe46e>18c?M{Djx++6Y!x;d2r#paV$sQX??tn%2tW(t7bQ)IBg z1E@$>pG-@nKK0mRQ`*`?!LPsAfe}fC51XO@Z}pj(lF&R}X9KG(7SM8W0Opu~pFuV> z@ABPx`PjPPBv-L^GJkK;?!(I4Y59WX@L#LPZ$KET6)zsF;yCTcf>=HyYq`=RYnl6* z349*pfybR^4lKG}*(<2Ytw2w+ST;Rs)aO^Lw-K`({iiB0(o;8|jhcv7nYdN~N>sqn zi_#$!z|d0a3;jmK8>`C)asISf9Z8FAGW`aHE4O)-f{pU;M2@8VmRINHQ#Kd&5AEs% zC60i$KBNcQc1rjTEHkt%)Yu??+}~v_D0+~r$gEWDoR-r0!3c1qge3g_p_`G)~Cyu@@u5{U}o15CwElc)biW9AlW vzJBU+`Rtzr;s2=p{!4Kp|F8aa`y&bjXGH8+20!4hM*JYH^bVQ6-tWHw;_NQC literal 0 HcmV?d00001 diff --git a/content/posts/0xfat_2/index.md b/content/posts/0xfat_2/index.md new file mode 100644 index 0000000..bb3ea8f --- /dev/null +++ b/content/posts/0xfat_2/index.md @@ -0,0 +1,110 @@ ++++ +draft = true +date = 2023-03-14T23:55:16+01:00 +title = "Solving 0xf.at - Part 2" +description = "A little collection of the approaches and stuff I used to solve 0xf.at challenges" +slug = "" +authors = ["_N0x"] +tags = ["hackit", "challenges", "riddles", "0xf.at"] +categories = [] +externalLink = "" +series = [] ++++ + +# Solving 0xf.at's funny little challenges - Part 2 Level 11 to 20 + +## WARNING! +**THE FOLLOWING PAGE CONTAINS SPOILERS FOR THE PASSWORD-RIDDLE SITE 0XF.AT!** +_Only continue reading if you are okay with seeing spoilers or need some help with the riddles ;)_ + +``` + ___ __ _ + / _ \__ __/ _| __ _| |_ +| | | \ \/ / |_ / _` | __| +| |_| |> <| _| (_| | |_ + \___//_/\_\_|(_)__,_|\__| +``` + +To keep things a little more organized I've split up the solutions and approaches into ten challenge segments so not everything is crammed into a single post. In here we will look at levels 11 to 20. For Level 1 to 10 take a look at [the first post]({{< ref "0xfat_1" >}}). + +## Level 11 - Understand the algorithm + +The next challenges are more focused on PHP, programming and logic. +Level 11 shows us the PHP function with which the password is calculates: + +```php +function pwCheck($password) +{ + if($password==date("d.m.Y")) //GMT +1 + return true; + else return false; +} +``` + +Even without much PHP knowledge we can assume that the `date` function might give us the current date in the specified format of `d.m.Y`. +PHP has a [very good documentation](https://www.php.net/docs.php) so we can just take a look a the [`date` function](https://www.php.net/manual/en/function.date) there. +It shows that it is used to format a UNIX timestamp into the specified format. +The meaning of the [format](https://www.php.net/manual/en/datetime.format.php) string is also easily found in the documentation and shows us that `d.m.Y` stands for + - d = Day of month (with leading zero!) e.g. `15` + - m = Month (with leading zero as well) e.g. `03` + - Y = Full year e.g. `2023` +Since no further parameter is specified for `date` it just defaults to the current timestamp so the solution will be the current date written as for example "*15.03.2023*" + +## Level 12 - Sums + +This level requires us to enter the sum of all (integer) numbers from 1 to (in my case) 465. +We could either write a little program that loops through all those number and sums them up but it's way easier to use the Gaussian summation formula of `( n ( n+1 ) ) / 2` so in this case `( 465 ( 465+1 )) / 2 = 108345`. +So "*108345*" is our solution for this level! + +## Level 13 - Understand the algorithm II + +Another PHP challenge! + +```php +function pwCheck($username,$password) +{ + if(!$username || !$password) return false; + if(strlen($username)==$password) + return true; + else return false; +} +``` + +} +``` + +This time we have two fields to fill - `Username` and `Password`. +First we see that Username and Password can't be the same so we have to type something different for each of them. +it seems the only condition we need to meet to pass this is that the password as a numeric value has to be the length of the username! +Not that hard either and we can freely choose what to try so let's for for something like `tooeasy` for the username and `7` for the password. + +## Level 14 - Understand the algorithm IV + +Strangely enough the fourth algorithm comes before the third (Level 16) but oh well. +This time we need to enter a GUID - so a sort of long, standardized identifier - as well as a password and the code displayed is: + +```php +function pwCheck($guid,$password) +{ + if(!$guid || !$password) return false; + $users = implode(file('/data/login_info.json')); + $json = json_decode($users,true); + + foreach($json['result'] as $data) + if($data['guid']==$guid && $data['password'] == $password && $data['account_status']=='active') + return true; + return false; +} +``` + +For this challenge a little more PHP knowledge is required. +The first check makes sure both the `guid` field and the `password` field are actually filled with a value. +Next a JSON file `/data/login_info.json` is loaded as an array using the `file` method as well as `implode` to turn a string into an array. +`json_decode` is used on that array to turn the content of the file into a JSON object to further process. +Next each `result` object in the JSON file is checked if the `guid` and `password` match and if the account is still active. +Now we know what the method is checking for so we just need to take a look a the file which is located at https[]()://0xf.at/data/login_info.json. +Only one account is marked as active so we grab the guid "*bc3c1364-4b24-4f60-8fe4-7628e72391ed*" and the password "*Vencom*" aaaand success! + +## Level 15 - The 0xf.at Enigma + +{{< figure src="images/lvl15_1.png" alt="0xf.at Enigma" >}} \ No newline at end of file diff --git a/content/posts/0xfat_3/index.md b/content/posts/0xfat_3/index.md new file mode 100644 index 0000000..16315e1 --- /dev/null +++ b/content/posts/0xfat_3/index.md @@ -0,0 +1,26 @@ ++++ +draft = true +date = 2023-03-14T23:56:16+01:00 +title = "Solving 0xf.at - Part 3" +description = "A little collection of the approaches and stuff I used to solve 0xf.at challenges" +slug = "" +authors = ["_N0x"] +tags = ["hackit", "challenges", "riddles", "0xf.at"] +categories = [] +externalLink = "" +series = [] ++++ + +# Solving 0xf.at's funny little challenges - Part 3 Level 21 to 30 + +## WARNING! +**THE FOLLOWING PAGE CONTAINS SPOILERS FOR THE PASSWORD-RIDDLE SITE 0XF.AT!** +_Only continue reading if you are okay with seeing spoilers or need some help with the riddles ;)_ + +``` + ___ __ _ + / _ \__ __/ _| __ _| |_ +| | | \ \/ / |_ / _` | __| +| |_| |> <| _| (_| | |_ + \___//_/\_\_|(_)__,_|\__| +```