From 03c7eb3866cad259e129c64daacf31f9a9dc9e85 Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Fri, 21 Oct 2022 16:50:48 +0200 Subject: [PATCH] Fix ToC layout --- bof.pdf | Bin 138427 -> 140691 bytes bof.tex | 49 +++++++++++------------------- linux_intro.pdf | Bin 831511 -> 833993 bytes linux_intro.tex | 77 +++++++++++++++++------------------------------- 4 files changed, 44 insertions(+), 82 deletions(-) diff --git a/bof.pdf b/bof.pdf index db9e1a81c635455e5154cfaa77218e59668f5909..c22d63c18a95bd99733be05cc007a40ba67fe7d1 100644 GIT binary patch delta 15581 zcmai*1yEeyw&p|Q?gV#-;O_43F2M;F+?(JQ+}+(9cXxN!K!OK%7?S_J@4cD1HB;4f zdhJuY`gB#VZ?E)r}?qrJF% z9(ke)#(XjxG6Vwh#hEy`* zc{rC6zj_H8f{M@0M+j#$FRbAj0YZIv-wKSOY$r#+c}R$8F40;yl{|G~EIZ=uNp0K~z`7qs(Pj9X6lDkW^S zJzcaH%1!3fO&;4R!}R18*v{*DPRNj2{tieQXLVFxrS?Zmh>7&$^M9=YxfzMZ1om?K z?<{ao1XnNOU@L65)75^YK5RAgdIlY#y37H`$g}Pkf`=G8d9u4=nljGTIT9P6E}VT> zzsF}{s~66IY}m3e#~Aas4k@3MY;J)!2`7Vl@*MIXA&-fr?Y9ovp?af;*JsYs40)6>Z_&GY%<^szY#cN9T3eSUj4yz9}n57g*v6CBY)wSqQ+x;Vhk z7(s1b(r@vJJ(*d`cX$VkmvcWGr}tl=gl6-;w`Wg21o^>c6JD7;Nc^Puxz<8K{0*du zP+<+XI9D@hG!qnMwc&V$KJi)^1oM4$azy5(_DmmI4X>Oht!EhaCtjLpsR*&N%*TPd zN(+6rg#HK{oz9n6>-v=S%9F-(S1CQP9T5Ro?F$U`KUOB^)~7NOQ1M|JE=$a zwHHHNZyN?zs4PPQTbo6oIG4>5;bY3K2${O+jpbKqz}G`+sF>F zJbm$nl$79{tjzypv8*BDZm?m=dTh?W zgbJ3&Tp73m<0-Fxd%Cx}{9>y9-S3MXK`!< z7V)OhXKL)tPi*N2WakYpJu?&;iXiWRN$JIN%5ym&v^Gw!Rp-j4MM$6Bp-EhS?Ycg@ zr($)6U|E~|gv4X-R%avPr)(_cNd)HFIdnaJ)s*d18lFvd_#y6UFTo%ThRx~ga_PKO zYFvb1Evv7#t4UqTC0p2`VOTd6%3*J%;2cow(dzob@yja5Y5o*)QrrD->g4-omNxbY zlo8%QoyFEaSzQpVBckcHL_R(^NLz%R%jM(nIq)p40A}{}^Ni{|JqK5R3dh;&0Ujo) zHfG9{FF74w`HAt1>vmP9^?)+`mB$hoAuEXAF%qWsbpn^WI_>ug{gfRoJl8&7Wb<0M zzoQbpT!-aMS7cx%X>X|5mEIB4v8^Fgpf!-}*#&giWx%-J1b&4!x%nN9hsNbW&RLpw{?-4eAL)?+*3w zHGv&`vdNXVa;h${9>c&sI5Rs_Cuc`9W7|KG{by@9W+rB0CgML4A0Hf}oEd14QUn6P z%o)!-iVk37`IjW@ao;6zMRzbPqd#Qt(cEWZSA-L>gUkJKOIDCpdRna6l==z9E;yZRsp-k<8{#WCIcylK7`f@MBBxJdFoZYgQ28Y%NCTp==lVC+yz@o+%ki%U zqTPe)WQdl|q0exOH1Io^faf~hWah4tQ8*-v+1eyO&C)wk%nogFz=|`VN!(OZzeHVr zE3HI*nTW4Z7Q>Fk24=PKj6W_X6NogR`nF^}1U**&!j!ad0?$@0FsrHbJ4j}`L+8Lx z%*Yinei4}@A1Dt1Iz+8oQQqAv{Ei|;!>M{{K7pa=0$aKa=>HGuU|}U@if0`~1pz;)fdg3o$N~e5?SB@EpPJ*$v8{uI)kJH$ z`2c^lJXB@I1W~CZG_!b$k)ryyPLuQaAi$1t88wa<-`>MPERNGX7(NnjyEvq>u(LQm zQf{1F5SkJVWnhpCLUQH~L7`jzIQ6#NTrjH|QwWEJL$rdFBwA*mrlk#Zb(GTdej}55 zH8k%P@Vq5i05HvhV=a`oikm{uLr0t|`aAANMP!9Pp2LYsh^U_k3xPD1BI=w>EWu#J z`RR-4jEY2gD%;|r1~nIzvKpl|L#8_M%TGN~1nb7JkF>vT;_2x*KSih%R| zWB%mkH&|ify+zVUhH^hEnf3*yv|eq^8Ux}W;HmHF%v5X0vOHs)`wTA;fgm>tqf_rb zIk~Y+u4Eu&o-f~;-qh|7_1yaJBfZO399iR6`^gvQ&gnkGoKIbzD$aW&9O;E)87?se zoP=|DLAg?L!!i&~(8g_>-t;*J1JW$g#TUE>QtI1P@yx@8%lWb|CZ>t7U#y%OlC^yGJXhcL%LA43=HC5gv9 z&wb>ht~`qqf=>wE3N-Y6A-I+X1udC5#wC$B%osO}A6av;XNmA>Ty+B9e7U^%P$Lkm z4SfbgX^Hh{(YUkn_ZPTE2-`bn%F~5K3*v+>ToHdF<7`J&{|7a&as79#0O_-O0|0DH z@!LjB@$ej?0Cr}O62~Rw`}@CcamF)bBgMDq=f)Ei(I7GZsV;UF&X&Z?T&vG4#| z;F{gqBAU;;f^=;&T%EQUzbVg`ns5ruHftbFJAD=$W{E9PCjXW<`{TSV*wj+ik$x!2 zuMx%Qlw@K@Z*e>eM@B7EAG>?>ESVCGNPL;MV zlfjxLsr@qt9IfAX|L>+~;>9D@;muRHKp7NEehQ0WC>a`Iv}>G15A2+rEzx{17p^8W zjGstJT#}&Meg;x1%DQklBUG13^^PQ0NP|?8oAHej@yG@GNG;2~Y4F^jpkfYFA1j^`4JKtMP--`%s)5 zY}_Y|NM@;$s^UjgM?ZXlHkxQERO=wsQR~eqiqVr#UNhtUfeFxugzoLH1KH#+27?I* zw_K(FK$M@7jEwF1!HgmV0Y*D10@w{T^Z=eMA{0(tpj1*R?3@?4Aj6AK{44{`=$A+X zPTUZbD#3`9~Eg ztEm!*W;V+`*m0xaY32o9?oArq?EHtQGGu8KJ!m{qe>;whg(mwaBR?5_EYb|(KefZZ zWZ5%Y&0PE_;U>jaj^@>_)_(1Q^ZPO@*~yAx?&C(oR3`e>S<$(Doxt9{s>O&=tjqF- zK&QvtS7<4p(<$EZrt$;Ba&O?46&H2z~@2z zve&7xUF&5a&x4qK^SO>ipy3G!A1$G7?XmePhgxr!k0ZGGWtJ9KmHcRY7lOg(_^as~0#Yn zxY=4=id->~yN}LH!bd1W<;vpnh16&4blnOfZ7p7?$wxH>uMaP6z1;!F`FeA%>iFz- z_Z}>rYrz(mYpj7<=~!H_ZN_XgUURQG#B=LkSF6kN@Kxh$mU0UzV?oc@cqOjCxwPb1 zPVE9r$ARACZ98|G$v`Hh@!Mx`bJ7)kkppB;NT$HDe3MbbkJ)9%K3|U&5b1c?e@&dL z8Ga$@uchoH$tC%o-g&{qwh7VDTuhXyt`U*LT_la&&!!FRxr#!vwEA*2x-M7#T|2Km z274$DEybO=G=lgAS9F~NL75sBw~yv$%^nS-1gg4@iOh01&0s!{F@lSXyYFQkwW9fH zqvl!-MXrIhFW~nuiZ3p#h)&aFLS;et+_Gn@#K7+W{Lwhwk3I%YfG>G`}Oq`hl>FFW&u=EJ>6ZK zW7pqHrQ@5sSOSK?rDmxDmkrUE+H6EkY%>41q;P-NxRVavDN*gFH@&(C!omU_D;29N zd0O_{;+mbTt7~x&5(*U5hRa z@XhYVXcPFurf@=LXx18@Ko)o?b!fa?(%-MAQf8~MqbCw&8&VB;rLJTPTaBVPwn0G45V$dd zQSZK#>pzc@T4;xa&JfGd=ZdR%nZ@7>9oCOfUllAxNKKmflFohMuRE?}nq>aC>V#MTIk z5u7NpcT0CTrK~r88GMBAV<1NS54D+t8Kh_64*;;Uy_a7n00$dL-PnOYUS|S5{)C+< z9>tgw#E=aO7B5$Y0g}xz1P5^a)68=G)68zXBOU_qXZ3F~sWvtR2BM~>+y?cr0wm1S z!ej8D<8ZEKz)5QDU zA>~weD}!e+CR>L+zlp5@UpDizT@*v@JY)MKHXnZ7&%k=5qBBsDz^cOWlPVJ*4S^++BN2w+R`-P2Gb9CULBGFo~hTB+yP@mk76X(fEZn?wj6u@~}P`sX6N46-Sc*^o| zpIlk-9qsyTEW_T>E}OdU9qr`CtQV;l-j=|=gdB~HwpMGKwz!yWu_Tbdm=}%`?MG+T zZhS=pGJ>>~8y=4@9Mjfm@om>^lYg-<8sv%$T0NqSOKrGHGw15S-`8`LZmZ?dHMI5L23F%Z(lQNnEm9v=6MG|36Ju`ju5ZVs zTA5tKQ*Xf`B%yu)Y*p1igIhR+{wM2$oBiMIEJ&jY7ZSk29M3e0`ER`Yw<3ngsJ^qg z{=XIRQt)nOhnWlsuJtq;b)^`E5X|HWVT4wNl4+HYYv!7kU_jT{5P-%ee@D%>DcfP7 z>&;0xsM$=eX7up$kPt{aqZ#DZ61*FM|H8Ye1K^euqmN(iKFd5pnDv)s(;01MG#*of zxQxVD^^;(3*HSVqWMRku;yZ@$fAd|-U%m?@{x{#veEIG5DRto6r5WyqN<}Al{DSavkUh`|5+^ki*s>7*Y>FBdd++Tjqpf5$r@!C$eufd!_A!m9rxErD>9XZ|hmOi{Y#KFTb4cYo5FWnEV#+7)FB!dLP93ceH zUrEZ7D`T)F(EOege?-wO`bQKsn?~=dfdAh`QBzG5WOlCvHbG=%SG>feHW-N=ev}-6 zgQ&3`Y#W{#>@c*^j~C%?s^n#oU?2u4Y7QrEa`~%=fF{l(2Ug7bC|aod{2LHp711cs4%@;W`cHZk(>#At1?35tO+2{$nX(N zbf}O8Aq>}I#eGwo#dPD1-St5#|)Xlc(j_dXEORe(` zk3!s6o-j9Tg$_u!_;;%>LGtv|PCa7U>~^tsBgx&~4LH?1-Rn1gf-qw#S~+;wJV#zD zM8>!?=+I|>%y#AOP<1;_lYbWPe5|&$^yrc!)w1)cnd9z4u@NaB!nmKN_y6I&_5>-r zyaJ!*d-IRmH1uuWR5xGcO&7X?pp3KpsB>o%_Ty;h9xeIUk zSgxLkqUzJ3xut$VIXDG)XV|oTh$VOBTP^xi9pdOGv*LHb-QNyYMU8L&Zuv;M+0Xwl zw?RR4gE`mKdi^lc7uxYR``=gkZzSj-#I{6m0LMSc|8HyW&raq)hPN5ZZTr6r@BAEt zS$r59-2PrDt+d;%B@nVJNIL$2f)*m{VtH@s)=0O8NUo+Y%2JsaPAs_}RnBUpAr7J8 z;6qg9XV(Spj^cXO(MofFyj7T}v~fSUR@G08U95=N3Boh2tL30}y## zmdNN=vsy5T@*X|j6tAp=NCl{3UKiIiPC!X*ZCKKsf}-t*>0^v_Rb z&cU+B{%2T0DCFU*j|VK48fYC*T}yEuv>FLgtKU}4D{2YY=rMACNrMF`1!Y)Cus(sG}`5_zLzVaFYzH09upBp2?{Uz$W%61LdXp=0RW}ePNd)jsv zaykng?p3{6h5Mq|l(AX*ci|@$d|BeCZ#SewrEd~gKFlzL;mDmck0Zr!tSdXiJIi#)J>f-CVg8|T zw0q$bQE?m<2Xv2>AA4W;zhlM!m@NP6>s8m@!m&9B&p|uV$*)mNgxv*7-YEw(vHhR9 zzxu!BzT5vJ_bG&WR^j_yg$0jhznJ$*V1oHuT|L0+ojup}0fTB;-n*d(;TOYk94|?y zF@a)?Y+}cEUyU4l!fs8B?x7w z(_AL6`es6kmHZ}78An#O&|u!cyK*|<2MM9j%>RH7?C(bRzqf(nX^RMuxw-#`VaLJo zk6~wPk1mPwdS=K>GzNX^YH^DxUef-tv@mo!oMShDxj2U7p7crOSJye~Pk9<&Db!)XakuiB>F{bc<75hSz3D?PLq1*ZT+yB2(=Xs;q=*`wY2N`sw3%B)*G6*h1+ zTqt+q!t~0;BQ=r41$oM~TVZcTSxd|96({VCg;pzMCEdPc#lj;_96>IH+k!tm(rULZ zt*}Ky?$K;Aq8q)BMLC7#7(vF^N3f7=4VZh(Df5#fszDjF5%A#c6&e1B{JbaoB2jQA&}01d7Z(-U!mnCgLXmim?D+n$pY^0t#0we{`N6(Y+ebP&pijIG@F^4D5k9 zHN$?MJ)|Y(sQK_HgB6u>(oUruj?OnAzAQI}lz9sAp%6V;pR|!G0M`fw;(G%$Cy~&$H-Cu>sWLVa z!tIrGp!}AYCQJ$=9Jhx*Db#Urr})lQB8!X!JHSI_jYd7sE!YnK7NBbacC_~!$UP3v z&fQ#R9e`hfd}?BS?N3$#nTa+ZGUF5{>E)GwAV9#?9A0QK-+sTZ$<>G|C}%|+UQ|3Z z#3dcwL>Zj;Bw%yBgrvUEO>E_%wh5dk(4_Bi5 ztw+gZQW@WiufR40*fB@lp;|&2)Ccpm-8=!?E=jy|Rw3HR!Nf(s_4TWufXud2xdemJ zX)kk{FAgs+GuL;@PEF|@b{62YPjwGf9<%FxkVWpL$9}y?Mk?_g*5g_(VS15q2?4NS z%twH51p|TL!t^Wwtf>%*B}48g2$rM8#(X$$ zU!A$mqFYPXsF95AKjXsK0O3S}?`E{VtJGMB)8!NZMU+{@+OTjKSX?9e!FEuYIOH?x za4wQm=w2fwH#*yJt3(cl^{5aRuqQ{)+OXF0Yb$h4W) z6y?ZsiBhj4&gJgYd2Kcoky{Gh?HXBk20JMFVr)0VlQVlo#AZiG3asvfoXYxztp<^u zdvC2#ZRDgNYcpw#XQPlfK(o+T$DJsiZfmP=+tS$CSZBQG#i8?*%fJE{!?N!NF0ZB4 z%+8tRXZZ&A_w>}FQ%_p%4-SyGjZXD(_~qDewBiWCMh*A1@-wd_Mkv{tD3Pa?EZ8_u z=AB4#!|hifh}q$30paQ(z8Dkikl+@@3tM%;jcVvYhSB`W0@Fb~Q783R)iNV$A}|zo zV1R!zt$_)mEKWR-ewzpk3gkaw@d+u z16G#1e3-*gqpGEJeqGI4f%Xi(<(E@B+g@1fl?zSFT8e1UU`ZA!_!nNOI_tatviZR+fKS(y%`Mf@hs>jpt@|TxGM7 zSlL#0Q!cLwX%)`+khyOnC=54Cl(s0ZnN0L#Pp`X@SeUUti{+T~I?nNfP}3O4`qbg|+L ze}bv~xw_f5Ci#omNaBE=_IN|xk5Tg~OiD(KoGxp|sqN(LmA)a$=MS;uGm^SN;#b0;ESO zA*Ez)+oi=uKaCEUE^A|>>LAnU*bAtZFz$?S4JOT8p&f0Bq+B-HE|Gk zc?eNclF~9r>`sGIZ<0w=g;9l`^xlj*oSMC$w5uH~(+zG%PwCpQlMe06i>;4RlFrME zm86GyBFRO6XIRB8Jw6nzl0ERW{N87WUb`lC!hzZ*->>;X_oel^y5i>)^ij)G!`y7) zknccSXxE2Gf_m3~K#Y?agxYftNT$^XLkHpa9|DryZox1>I767=;H*rnAm&l(_kfw@ z&$$ec-~!A0fQ1$0yu8Qx9?xyAduw8ZlD{Hdi z0vJ|PT?<$`9ylv2Yt#EQD}wiky{Y{Yto8lVSUH+JZoz8*M4U~Z9>GfgL|jcPFJOg# zBJQSdV1U{8h>fX90}>zy0nWn78c$qAiNejq`d^&_E9d(uDq{{Bpsv2tI!BVvx#2g- zauw1};m@PIZAqrwo3-eYj%=yT*VER@XjGMUg>Cy>SI2jH9}1>Vq7zNM&=gx_0KzB` zNR#|`02}`@3^}HK`uM8;8Rk#)QJAcQ+gdETum@~(m}QCKiBaMFO7Q% zjo|9)a@Ijmv;zf+z=T-K6&X{d;_C#O)QWmDiES-U=l%lCaGC)4%^ChQ8WKKLLY%|0 zZ?xa!Rp|(Ez9{LbG+By!n6?9`>njTjB8|E~G;gw0@|!Wy=YNHjw-jyKt!tD)bf9A~ zULH<>Ac%2L4MH1=#Aqf!NKsNw5Q;#xO2E}bBiyc5st7V31g5i0TeK&GoAH7CQPSXW ztktE=3uhtXwezG*Vz3cqrn4Jz)MY1ZXsAtMYS~mG5C%V0`ZGu3Thhdo8nGM%LVa}> zn&QIFNQA->N@|{gwV%ddiIX6gHFYQ|w5Tfh)?GIFMQ|GKJLGeXn3a{-c70i>+J1^= zk__zu-S#YQB@ljx>4P(45W5)LIJFFIJj%D<(}79CA9WDPg+`2gBO+?*^4C(-(3-TP z5x$Zd%fhy@G30eR{+iCEOCb_ZD^s5?kNbroLp+v)pn(c*>%a>I=dk?&x1Y%m4u^$M zpG@1I!a0=ri}h4@K{#$rfmPW_z3B09f|0DsejOUPbRv+h1{o0*L7EgGK$fE@-+>)h z!GWE?Y$~Qw_chqja!75SY_b58*g({)h9W^YJV`@yVf%0n4EXdUKXISFW5&PzG&ho$ zMSoCJ6bK|lyjSMW-kg-U;d3{n_SDbj?CUs$zK!x;*3yTVs%ea=;~~fySaD#nP|RlW z9lu9?ItCg-TlxmOf(PY(w}>CX*l33*`9MJe(QlF%WyY0-s7%DAs^BUIs(H#(jGJFM|~@bsgVV|WcLFI>nh@K zjb;z}WW<3j{nd<%Xv)eyF_Fj6|As%$ z38T0_B&1CO$)HRP&5c3fTvb7bfUpa{v!Fx0g}B9;+$YYOIjk5ink-~QgT2;EN-i=L zL|pCHDs%THtiAi=1AfTLe&|K^>ji6pUQERFa*iTL3qiCZk#cem_u$;h#e{~f3t!M<=- z+3sRb{*3e-g0@UVb4Jk8CC3OSP_WcyCkQBbI*-*qn9c8l%d*jyN`FE{`}oiHl}P-vF756vpqk=x;xF(OelmQBAoeDp`M2Ry(&rd3>4i zQr0S2n=Z}kX$H(~6GgnrB7Kx7%PWA)XNIiIBgA6x7SvNac-`5ZaVgi*{KorMS`Hjl z!PLt48TD(Rk=O|@E}XLn*W9e=r>ho_Z4W<&*I5ZMN!?Adk7gklC=N4Jz(AWK)&D@Z z!#nHyisFY^@Ctz{hpP<((>shN=}AisUlHDg{fyKJf!TDOY_>De1@65+J`}+DW20k)OsJ?HM>-uuYfWxh`#t_gEb-f){h>w($h@IJC4OKvPlv zl+8+0FGyh??~jpftdc`CX7amQ;DRykEq65e^3~ecd85Fb5x(%{<%rgBdJLEX47d~& zIdy|Ic|N$@HFxzG+;qvg7k=r)S&(GBRVXcWD?07e&bXZ_KmkBUh>!Wau~VXZBJQ`% zkCw&AmWmQ2sQ=9!${|QoOkK;9C|0ql;{0GC7*<0)_SlVKuCdX04h5R~p2h zWDV5_Fe+kHWHJX<4{g;$%d%NI@;*Vit)nRLT8-R>kj>Y5D!X-` zY`Hj_NuES?+%B<^hi(~ZYn2G;Hx_Cb(8H-Ni7}rWaQ>W&`?7?aeIp#&pg#YZex{Z6v)rd~64lLQGW7A_ z653Rp!!4UJluwefrq4gEsvh~|eP>oatI`IMwW=ta2eVV6UQ2LMd8;1LwbJ2`atbFM zO_mszkDExDthv5}G z-^Hb@??AP0S4$aH`;Lk41eN!!oVCEdY60hSaF*rJ%>e0v`OYm)_LaxgH^%#2YmFuE zi?xKU%dLCpSKc>G{`5032_!rOk@EYt<5{Nz^F~9$_Ej(7mF?gyWzvpcTkx$V_i7=P zerm1F1lri_r&_&FAo{bu3sCnZn7aVP+?N0G+v)Nvq4!&NboYa9&Fh|r>eP`3EA$&M z1TuKz0Y@+$QL<}3LdarNQpA{&PedWczz~_0cVX#g-vefsUr*e`VC4$K@yd;Zqc2C+ z)tL5o$uVu9-H4&l*jN5+Mx1)lx`BGmn~Kz|tMrT04AH%--vL|IO>^Skt3>v1$>T*{ z2s7h|4@~^q=p)vu*4Ct*nyDawTQX+fwN6C)9UYu6kBVR9=&Ot456?E8y*mxq2V=f? ziq=Nn{w|ecE!4Y}tDRuwouDS+v<_~Mmh%AXi?Npn8iD710aMw$0)C2a^B!(SzKcdS z$i5!z@Eu;%z-BpUW;wB8vzBFwlNG&<#%6&eh2!nxzFr;&?({*95XwZ463;AUJ|9!( zhIkEBH}x@B3q}t19dF|iVU9P_3LHMQhDmW)dpjCT9poQYbfVvd*T0C$J?|E01Kppl zIG?J4(QhOJo^yFU`ii=8s4qE&>Ci&4x{K;Opo;4v!HJZ`Mv3**#TY^s_9^qZEuAJq z+>|6_oaN1(a-v)0P7j~wlbhgg!Zm|4<_p^eB3s|bJQAbFR>!3Wpjzy3&`dcBMvbMe zE*>sR7UguOsK_8@MkqXO85mF&D6b6EWgLAqkX%GhArz=en|Le|nWVxIwhylS;5xhbOQvoA;#(Q4DmS9)?w+B z{1cNt5oIMmZ-&t^QnAWi&mm!y({Wh|a`O@R?LJy9E!krAhbj%QWMt@eEAF|zGI65v zMOiH;$9F|>Z&Q{0(Vk%qukck@4NJLa|^r6tvd~n#Bb%CsH zapiqI1tq@8R`ii*VN;__(Mtx;sU#)Wro=|3`R zV_i>L2iDHg@4l?wzq&FHLa;050lW24k;D8Owm&0xwt;#Q`sCo0rc$Ku3Yb&(DU2%C zeGB{ID$Ze~G&jeO?&u*S0|%DzBPMEx_YdN)RIXfguV8<O)VRug7e!n?PnZLsgArK;Eov|2gX_UhHFc$36*O7_fl#nqPG=Kz}*+{-))@oCscC{3Jl3}JTesT9G zUCpiL)C^~*rDFV1opx+K(^sc=S0ByOX6?0oM3Z-{ zp@|r}%SzT)1IDvZM;OL+Zg8Rk<%bMN1?j2{WibgEIgsuKf(|;0#xK=4KU2 zzS6ywMJ3@dQM=Bw8XJW@{d&~^f$3!EcT z9G3U*+kfv}n*YK$6=fT6ozQR2N55}g^XDY-M%r=|umCag~DlNj^?8!CCZ$;-vD$=2zW(FebMf!@R zPTHnNY;<9^e>90J}rWwT0Bykot)t3rkR11xC42LQ3dZFHcbc z!ZZqPQg)8!-ab@OF&Rpvjp8 zo3)%b*Z|VJ-NZ_HO9J1k`8Dr`90Odyehve=%dgAYiwtfmuL^XK4bykag|A#zmQg$K zfP4tt``*;`7^LfC86Dm>B&nKbn09wCJ`Mg|A+ZAOYHvXu`h2zQx6Rq$AN9A_?q=dl z_1FfgRwaNVtW`aPmgtfr&+{jvqO$j?8OUQV+Nb5mz%mXFkLuIHmY})axw9jBS@U9_ zj-317d|KgZJBbW5h4hn7SV~a|&}zg%egG9rr7$&UH4=6(dHrCfG*>P;V|*kNCb#^m zqQ@_%1+85N2WCZG2So?kNRG5uPgjIr7f{B$ySd>LnT!8rhKLzpqLH{}$&GmkG z`r9WOAjQI%YLqed(8aMQZ)b;d489DlxOjmIZQ(G9$bN!o87J0YwvpLT@3NtZv9ZZ` z3NsdzNlK4a3bRQ{?eOvirxqL8-Cgm3#o3eZ*-uZTrRtyTpx(qt4|U{|Zw9P%I?@=T zun8hqt+VE1scXH+CIzev%#Op|TwgxoU<#3p1M6JBDWhUg5MP(3fk!OnMG6Lc>jC>7bS}vrHalG!_Cw&t-n*cj5K>J8Z00S2sJicYf zDX<2d$B630Utv3P-R@TqM^n;Ts}k~cpTRP;k6q=Iv-1Zij}%yJ3m$|gV+e_z5BP!1 zTnHiC*a$5y7$t;v8FOFK{G_?g7P(9Esdg~r0(kP1N|UYYTC26FMd2neQyht0(4+?@L(wbOG89a~)#u%le z1oHCZ58ATzEN_(#d7)naK*$}q&sY#Nxa(OAUx>a%RO(%F<#P~=3J3cmK;po$V3-1_ zr4&#Kmcc9Srts9u(rN4IABCcYEd8YhP_A1$GUgA2iH(K5{qG?zV0Y2`sX`TFGKepQ zV?;Q)Pi}Q^;6$)ZsfT5M?LyEL`AxsixkN*^vu|_86%Gfj+hNv=;{B4%*OaXCmwNvq zFJ1b<+QjC}$WA%!8E#%p1(zOWTtL$t6u2A+l^6k_QdKy=s;^|ez%rt?7W{DzYGXI; za1SoE%hRRA&nhUNrBNd^j$Wu`gax}T11nIcic8Matf$hQt`Tp6jrUvO#99t!S`Ln@ z2z1E??|Kq#y~jsq5kdT5uy+!+I|(3>B6#M`pSx{aLiobA+j-wLU-Fds1jHq906NL$ z2b{_B<9=^>^DsIa1BE5ZT*)1{d@}@JLH8w)fykVf3G`du+2ZoGW<&rvkJa{NHPUle4j-v%902IUF-9H#-*_90i5A Jq68S+{{jacpb!86 delta 13262 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 diff --git a/bof.tex b/bof.tex index e7803ab..4f5c315 100644 --- a/bof.tex +++ b/bof.tex @@ -43,12 +43,11 @@ \AtBeginSection[] {% - \begin{frame} - \frametitle{Inhalt} + \begin{frame}[shrink]{Inhalt} \tableofcontents[ currentsection, hideothersubsections, - sectionstyle=show/hide, + sectionstyle=show/shaded, subsectionstyle=show/shaded/hide, ] \end{frame} @@ -89,24 +88,22 @@ \maketitle -\frame{% - \frametitle{Inhalt} +\begin{frame}[shrink]{Inhalt} \tableofcontents[ sectionstyle=show/show, subsectionstyle=hide/hide, ] -} +\end{frame} \section{Problem} -\begin{frame} -\frametitle{Problem} -\begin{itemize} - \item Maschinennahe Programmiersprachen ohne Memorysafety (z.B. C, C++, Assembly, FORTRAN) erlauben es, Speicher beliebig zu beschreiben (\mintinline{c}{arr[i] == arr + sizeof(int) * i}) +\begin{frame}{Problem} + \begin{itemize} + \item Maschinennahe Programmiersprachen ohne Memorysafety (z.B. C, C++, Assembly, FORTRAN) erlauben es, Speicher beliebig zu beschreiben (\mintinline{c}{arr[i] == arr + sizeof(int) * i}) - \item Bei fehlender Validierung kann ein Programm mehr Speicher schreiben, als eigentlich reserviert wurde und dabei andere Daten im RAM überschreiben + \item Bei fehlender Validierung kann ein Programm mehr Speicher schreiben, als eigentlich reserviert wurde und dabei andere Daten im RAM überschreiben - \item Entsprechend präparierter Input kann dazu führen, dass ein Angreifer den Ablauf der Programmausführung übernehmen kann -\end{itemize} + \item Entsprechend präparierter Input kann dazu führen, dass ein Angreifer den Ablauf der Programmausführung übernehmen kann + \end{itemize} \end{frame} \section{Beispiel} @@ -114,13 +111,8 @@ \inputminted[firstline=4,lastline=13]{c}{assets/bof/logic/logic.c} \end{frame} -% \begin{frame} -% \inputminted[firstline=3,lastline=7]{c}{assets/bof/vuln.c} -% \end{frame} - \section{Stack Layout, Execution Flow} -\begin{frame} - \frametitle{Stack Layout} +\begin{frame}{Stack Layout} \begin{figure} \centering \includegraphics[width=.25\textwidth]{stack.png} @@ -128,8 +120,7 @@ \end{figure} \end{frame} -\begin{frame} - \frametitle{Stack Layout} +\begin{frame}{Stack Layout} \begin{figure} \centering \includegraphics[width=.60\textwidth]{stack_overflow.png} @@ -137,8 +128,7 @@ \end{figure} \end{frame} -\begin{frame} - \frametitle{Execution Flow} +\begin{frame}{Execution Flow} \begin{itemize} \item Beim Aufruf einer Funktion, aktuelle Adresse auf Stack \item \emph{\Ac{ip}} auf Adresse der aufgerufenen Funktion @@ -164,8 +154,7 @@ \end{frame} \section{Exploitation} -\begin{frame} - \frametitle{Code Execution} +\begin{frame}{Code Execution} \begin{itemize} \item Shellcode im Speicher plazieren \item Buffer überschreiben @@ -175,8 +164,7 @@ \end{frame} \section{Aktuelles Beispiel} -\begin{frame} - \frametitle{Beispiel in freier Wildbahn} +\begin{frame}{Beispiel in freier Wildbahn} \begin{description} \item[\emph{Chromium}] Heap Buffer Overflown WebGPU: \emph{CVE-2022-1483}~\cite{CVE-2022-1483} \item[\emph{Linux Kernel}] Heap Buffer Overflow durch Integer Overflow: \emph{CVE-2022-39842}~\cite{CVE-2022-39842} @@ -186,8 +174,7 @@ \end{frame} \section{Aktuelle Situation} -\begin{frame} - \frametitle{Migrationen} +\begin{frame}{Migrationen} \begin{itemize} \item \Ac{aslr} \item \emph{w\^{}x} Memory @@ -200,9 +187,7 @@ \appendix % \nocite{*} \section*{Quellen} -\begin{frame}[allowframebreaks] - \frametitle{Quellen} - +\begin{frame}[allowframebreaks]{Quellen} \printbibliography[heading=none]{} \end{frame} diff --git a/linux_intro.pdf b/linux_intro.pdf index 8293087d53c526f69fca10be59dfa8d17d728eee..68f1015d3a7829120fc8782d19c4193c264239ad 100644 GIT binary patch delta 16327 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 diff --git a/linux_intro.tex b/linux_intro.tex index 2e86747..12cc45e 100644 --- a/linux_intro.tex +++ b/linux_intro.tex @@ -43,21 +43,21 @@ \AtBeginSection[] {% - \begin{frame} - \frametitle{Inhalt} + \begin{frame}[shrink]{Inhalt} \tableofcontents[ currentsection, hideothersubsections, - sectionstyle=show/hide, + sectionstyle=show/shaded, subsectionstyle=show/hide/hide, ] \end{frame} \addtocounter{framenumber}{-1}% If you don't want them to affect the slide number } -\begin{document} \newcommand{\genemail}[1]{\href{mailto:#1}{\textless\nolinkurl{#1}\textgreater}}% +\begin{document} + \title{Linux Einführung} \author{Magdalena Reif \inst{1} \and Valentin Brandl \inst{2}} @@ -68,17 +68,15 @@ \maketitle -\frame{% - \frametitle{Inhalt} +\begin{frame}[shrink]{Inhalt} \tableofcontents[ sectionstyle=show/show, subsectionstyle=hide/hide, ] -} +\end{frame} \section{Linux} -\begin{frame} - \frametitle{Ganz kurze Geschichte} +\begin{frame}{Ganz kurze Geschichte} \begin{itemize} \item ab 1991 von dem Finnen Linux Torvalds entwickelt \item organisiert Kernelentwicklung bis heute @@ -96,8 +94,7 @@ \end{frame} \section{Navigation im Terminal} -\begin{frame} - \frametitle{whoami? whereami? whenami?} +\begin{frame}{whoami? whereami? whenami?} \begin{itemize} \item \mintinline{bash}{whoami} \item \mintinline{bash}{pwd} (print working directory) @@ -106,8 +103,7 @@ \end{itemize} \end{frame} -\begin{frame} - \frametitle{looking around} +\begin{frame}{looking around} \begin{itemize} \item \mintinline{bash}{tree} \item \mintinline{bash}{ls} (list) @@ -115,8 +111,7 @@ \end{itemize} \end{frame} -\begin{frame} - \frametitle{Change directories} +\begin{frame}{Change directories} \begin{itemize} \item \mintinline{bash}{cd} \mintinline{bash}{cd ..} \mintinline{bash}{cd ../../..} \item absolute path @@ -138,43 +133,36 @@ \section{Unix Stuff} -\begin{frame} - \frametitle{Aktueller Benutzer --- \emph{id}} +\begin{frame}{Aktueller Benutzer --- \emph{id}} \includegraphics[width=\textwidth]{id.png} \end{frame} -\begin{frame} - \frametitle{Aktuell aktive Benutzer --- \emph{w}} +\begin{frame}{Aktuell aktive Benutzer --- \emph{w}} \includegraphics[width=\textwidth]{w.png} \end{frame} -\begin{frame} - \frametitle{\emph{man}, where is my car} +\begin{frame}{\emph{man}, where is my car} \includegraphics[width=\textwidth]{man.png} \end{frame} \section{Dateien Analysieren} -\begin{frame} - \frametitle{Dateiinhalt einsehen} +\begin{frame}{Dateiinhalt einsehen} \begin{description} \item[\emph{cat}] Für Textdateien \item[\emph{xxd}] Für Binärdateien \end{description} \end{frame} -\begin{frame} - \frametitle{Dateiinhalt einsehen --- \emph{cat}} +\begin{frame}{Dateiinhalt einsehen --- \emph{cat}} \includegraphics[width=.7\textwidth]{cat.png} \end{frame} -\begin{frame} - \frametitle{Dateiinhalt einsehen --- \emph{xxd}} +\begin{frame}{Dateiinhalt einsehen --- \emph{xxd}} \includegraphics[width=\textwidth]{xxd.png} \end{frame} -\begin{frame} - \frametitle{In Dateien Suchen --- \emph{grep}} +\begin{frame}{In Dateien Suchen --- \emph{grep}} \begin{itemize} \item \mintinline{bash}{grep regex datainame} \item \mintinline{bash}{grep --ignore-case regex datainame} @@ -182,8 +170,7 @@ \end{itemize} \end{frame} -\begin{frame} - \frametitle{In Dateien Suchen --- \emph{grep}} +\begin{frame}{In Dateien Suchen --- \emph{grep}} \centering \begin{tabular}{@{}c@{}} \begin{tabular}{c} @@ -195,8 +182,7 @@ \end{tabular} \end{frame} -\begin{frame} - \frametitle{Ausgaben Umleiten und Wiederverwenden} +\begin{frame}{Ausgaben Umleiten und Wiederverwenden} \begin{itemize} \item Ausgabe in Datei umleiten: \mintinline{bash}{>} \item Verketten durch pipes: \mintinline{bash}{|} @@ -204,19 +190,16 @@ \end{itemize} \end{frame} -\begin{frame} - \frametitle{Ausgaben Umleiten und Wiederverwenden} +\begin{frame}{Ausgaben Umleiten und Wiederverwenden} \includegraphics[width=\linewidth]{redirect_pipe.png} \end{frame} -\begin{frame} - \frametitle{Ausgabe als temporäre Datei} +\begin{frame}{Ausgabe als temporäre Datei} \includegraphics[width=\textwidth]{temp_file.png} \end{frame} -\begin{frame} - \frametitle{Strings in Binärdateien finden --- \emph{strings}} +\begin{frame}{Strings in Binärdateien finden --- \emph{strings}} \includegraphics[width=\textwidth]{strings.png} \end{frame} @@ -224,32 +207,26 @@ \section{Networking} -\begin{frame} - \frametitle{Dateien Herunterladen --- \emph{wget}} +\begin{frame}{Dateien Herunterladen --- \emph{wget}} \includegraphics[width=\textwidth]{wget.png} \end{frame} -\begin{frame} - \frametitle{Dateien Herunterladen --- \emph{curl}} +\begin{frame}{Dateien Herunterladen --- \emph{curl}} \includegraphics[width=\textwidth]{curl.png} \end{frame} -\begin{frame} - \frametitle{Portscan --- \emph{nmap}} +\begin{frame}{Portscan --- \emph{nmap}} \includegraphics[width=\textwidth]{nmap.png} \end{frame} -\begin{frame} - \frametitle{DNS Lookups --- \emph{dig}} +\begin{frame}{DNS Lookups --- \emph{dig}} \includegraphics[width=.9\textwidth]{dig.png} \end{frame} \appendix % \nocite{*} \section*{Quellen} -\begin{frame}[allowframebreaks] - \frametitle{Quellen} - +\begin{frame}[allowframebreaks]{Quellen} \printbibliography[heading=none]{} \end{frame}