From 62458ba7b159ecbbbe7681d513bb64c7284244d8 Mon Sep 17 00:00:00 2001 From: chapinb Date: Thu, 15 Oct 2020 12:09:28 +0000 Subject: [PATCH] deploy: c56f748ca508f4f8c8ca0775acce66c649012855 --- .buildinfo | 4 + .doctrees/environment.pickle | Bin 0 -> 43848 bytes .doctrees/index.doctree | Bin 0 -> 31526 bytes .doctrees/section1.doctree | Bin 0 -> 59544 bytes .doctrees/section2.doctree | Bin 0 -> 36128 bytes .doctrees/section3.doctree | Bin 0 -> 38681 bytes .doctrees/section6.doctree | Bin 0 -> 10311 bytes _sources/index.rst.txt | 2 +- _sources/section1.rst.txt | 10 +- _sources/section2.rst.txt | 4 +- _sources/section3.rst.txt | 14 +-- _sources/section6.rst.txt | 2 +- _static/documentation_options.js | 2 +- genindex.html | 194 +++++++++++++++---------------- index.html | 8 +- objects.inv | Bin 673 -> 685 bytes py-modindex.html | 30 ++--- search.html | 4 +- searchindex.js | 2 +- section1.html | 59 +++++----- section2.html | 40 +++---- section3.html | 38 +++--- section6.html | 10 +- 23 files changed, 203 insertions(+), 220 deletions(-) create mode 100644 .buildinfo create mode 100644 .doctrees/environment.pickle create mode 100644 .doctrees/index.doctree create mode 100644 .doctrees/section1.doctree create mode 100644 .doctrees/section2.doctree create mode 100644 .doctrees/section3.doctree create mode 100644 .doctrees/section6.doctree diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..587c6f0 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 68742d456087727ed42422957f408af7 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..f63970f43bad45639f2444f9d37b443f2e6fbdd9 GIT binary patch literal 43848 zcmd6QYmgk*bsmVvVzDnQ-Tq{{6iP9$5h9m|r+Rf(${$0@m@yc|~S*h!^IiV`J`Rg$AhsiKsU zR1&AG%6HDW{hFTHnQrW&h#%PLzW1Jc?m6e4*S&r3Pwn`Hr@p*}|M`2}wrRC)RE*X& ztK+nqM#~HQ*=M>|qkb;&>gR)FKOMXt%=_E)c00J}Pt={7*D;K`)d~Ds)pVLhwbO02 zj865s)45u0uX?7_Dla=7qvcvPw`}UI`jX?UR|1fl+o@HxCF;Fudd)_)qWWhQQw!5*jaCdfRCjPAf3{o$Zce8#NI9$cs#~(z7AWO3y2r1^%v@(_ZaZ zD<*=0Vi@KiG>vgT^)VmEsYw1l; zd(EFQ+TA6s=DOOl)xaBIIKypIucrBxov1YJI^9mq(A@6wvUMZyCu>fl0eUmD{K-q5 zy3sM}XDx65Y!R2Lg9F!}Zgraw6b(|{)IFXKJ6(YVdR>-Z zrTa-%Q4I}2?Psl(3cuRn=}Qf~8Go7n@~erOQ#Z;>4X1V$?ay1TXSG(Sr0b7e(;Hn3 z6I0GSWFGdnVSWY|-w4b*%sb8J=*JQBc7Hn!mtWswmgMza=H2|m-vPPPR|9`bAkVw_ zSzB&;!9{s9-q2esU46v}UrYiM9W=)*V*>A#XE)HL!C@Jd7Pezn5Q75$;AU*N8yO0`+|G)bOv%24GqjGe49RGb=(KfAF;#2IHJ$64%r?lSG@WU$u8`(*HP>6^u0H@4`Fl;w z*apqoh-8omg`^tPp16+F7O4!!b+37!$#8auGf`WD@?n1Q`{}EO(blf(ofZfdA+yKr zw%d?iH!iuNIy;C-#njhoPP6H>G}NP6fpP{o0nyitw$*S}Lh|t|=%~c2y-X-l%$OqD zazjVoLQ8+94I1j5RdBkgThK9E+pDVYsTQmS2*lhpD!pkS)0x7v_Q zSL=2l;6ml`mgTjr+SS!yjVsNlXU$q^k+!)aZO3GmhP>IQCM_l^era{14gI!woACZg z^SuIlHzu^Hp~4cxRBtrG)_eH9@ha#PPJ4yTWY_|eA{_pN*KjrHS8I7Sd^Jh0Y7n4~ z=Y|8B=t6!q3=g(8gyw>5-m6_mUPR2jiFcaL@*DWuUOj6litbOAEB(wG!`~IoLY~H3 zZ5ra_4>QO-EcGY3zA|o5eOyrx4aW!}Gg^U^h?M{W z4a+r+P7tkZ+X_Tg$Dl4ZtH5xxgG+P{@ofIF!PV4)i}56TJ->L zNExf4*2p~wjwN5Mpq3H7QrLBj$c8E5V|Z|9-}+sjK(eb*oNuXN$Cw(XcwiBqgI~ zwHj6nV3|o$3`y5S-@hrZXBj3us9MKjeMdCp22ujw3+iPFUK6;dO7?J@>m7^iBRK{z zI1})8tdF6x-jEK>W9EZOU9uCvau>Q3Qm{8skPtpmeNx84=a&b%VkP#XN>F}XQuuIN z;7JMeS%v_5bUe+w2{__1r3}d~1`QSLKwmJrQ~YLGzh;48>ZN(yT;Njkgn3eaJY+sB z^>=f9DB6ymrpW;T4g0Kh+jV$=FqZ5hh=t)&7c#sAqe~W-UrQqxR&c~==?#D+u?dU! zaVs$a#C@yAN{yRJ8QJ8v0WS&ya}}bq^`HEG1zMcCq}XsXMcj77@{~NS2`W-R?y)BB z0c4$9>=)F@T1x?S6&4_RTtn~F%)q>q?3ZR@*j8~y z5K0171pu1uD#uG+ z#dhBh{=f@(>Sg1@<Pj=dB-|$DH`+ zvA~ewMUCs0i!g1KP59Q2euOGr2`fc_1e;J(>|QYtvEA^<2>S8Szc!*X)= zX*vgQ+O^xZY$3BY6_$0$*sVqH_lEB&x>YftGBLMDMX`49^bX#V;~|#gP*|ryY6mK* z<${(Jy&ie?mGkFI7f)X}S9xNgMW6Nit%-|E6td4bMzVM6*7mCkQwnqsQpH_ z*;1ac!k((!fW8eKx9J!eHbpDlwxre?T?f6CHfId9?u&tQ{+lnc`i^G zfRiSOuyw8OcH4HJMp?hE-0Ov$w?ZE`GTFVZF{Ol=( zGio4S@c8ev{}}-I_grcjB@EjrCEUc4vs{W&Wz!cdw`MdD0f4w}G^zH6on|M|Y*>_$ z%&?&EB#4F)kKZ2;Qv@Pd2SNZX4A$^;s{zUHs_8)Oy>Q;uO!A@poew@${=|I`{e)76 z(_E!xT&EGEczd^nh+GuqJ}x6?DKgekbV&U&Xce@kjJO0PH;{TmgztG#G`hQ{S#=F5 zJa)0sU8s`xQuYm|vtQXvjUrwRT&awQRb9 z5!}NS`r@;niUwjdOQrA#x+_`(Ib{SmYw$5hGsOkWF-lQ~Wk-?mnN&(J-z5`26VI0=GaNOa zjRB)MCt#wo1n7>@q&!)={7~Fh5>25tTZ=#(iK{fN7L0eNsWo7hp?hOeB`E2_enDH- z-N1Y&0+PT{l9b89-Ej{p5W9P@&U+s0j){6l+?0Gy5*ExDN)KQX#poqi6jhT%*p(R8 z!59|P0-mZAyWuW!R>&J}bNP=7SiIw6)vT|V@qQZ>b zufn*~R2+_|*qm9_fR_w7XR9DhsRHpY{2eXCtk=RwCs~$p&i9am%YFn@7-BG59NQs& zg=pygQ~{&ang*v1A*YBk{3*TBHuWU~ej4Q`Slb;6tA<(X*rSmOcSIGO8tE$JIwEBi zW^m&EuxNlFs*P+zti>5!!p2)|8(7vuk-sa3A>AAdyHSZ_3(3e1obS+q4~wl9GH3|5 z0Z*`rOwW;U{YqPL9C!h7l@Q3`s0OSPLh}elSmExdg4L3RB@5YHWSEeJMdeT<-0?QM^ePb%@Jh(f(ActHvs+%&;(K7%VjG0rD{}%SeRI zfv7nFg+aG4>!O5p%+6XD>bMztG+~8qcgdfYuoEjFu&(3^!x(c|tlp4H>gdo4{uqK0 z63vU|A%8}#ibk&8&KK2sXt?NVj+?t^naCf9T*zwRTL_WWDw030f|`>E>D12?@y~_$ z=c(ZB?vi;A7SzIZNUSZ>A_e08U~#K|SYZ;qM68FTmf_J*4)qpVD)oo5aJ4sThz0V+ zZT|kACTs!-){&k9Tfe4DHk8l^mx)7YlpUb=2YOnG;-!+_{%QHL&uiDKQ}1H}Cs=&E z>+e^71!)@aO0s!aYu%fAkE{U}SJq$*gj|TIh}0e>V<{K{JxTY$N2Rqdq}@TXHU9vT zDEd{+0EHWvWOZ7QfHWvgNtcU;oz3Uo3z1C+(k%o<8GL%>Jq9=~sXMb6p>6q?BMl(vSjH^HG0NnIq&JXbD`_iNIT!j%_6UKOcNDcuDn7 z6YnEc*e&e9z=Cd_=#8~4)2NDnRXtgGymG2~YbR@%6~rUlz?G-Hj+2JnW>)jOi%dHCye zpsKduFc=-Kys~Kn??vnVMS7wIGD_(&uA4V~Gjw^Il{yiA9br0&5Rr70SW(Tm=G|aC zH&2xg>T$6MZ4(=_dTaujFdBP#u+W`Cj|Odn(cD+DMkoww6hUL8S=6t)w_&kWFjEig z-vG|`m+>E2Pk$Ngd)pyo{fD$^ItZV2FQ$KmJ{p)h@h+Qn_>v zE+;ZKdZToicN@5HWs)OXzpniq0JQ%H{==y3Kf_;g!@i5Z=SJU^s?T7{g^&8l@j8UC?WnE>|x&OIX;i zKGVUtXptr*HhCJ#XzseX(RBTZhJ*Yl?J0@X0nay?5+tK+nQh`dn+lsK$iBbLy<@8v z(l}8dA^Ko)sf)d^vN<5qBI#K*FEw}3{s9eowK=Gszgq>Ui1n0u+7oU*fQHalI(pk2 z&{*{mg=mAS$qXM|ciG=2!tgXcotp)u%q544U~UY!bvsrdig-ej+N_(*OKQHqp9s!< zy*GDX3d9o;h*J#0K8`t6B+>8J69!TI^tVIi|Ag zNtgVDTf&C(v(LWpQhGwPSK0*R<*+dND4`nMk25Zt*8X=Q*tgwlw$?aBt#~@nhJX z{R_ZFap5)mM4F5Db_M>2HuPhWDrfQJ3xVylU>ht>i9FvR1d8|xRWuY3A~Z&RSL2Zg z#D{Jk3sF5cg~bA6VQ;vS+7s?TE-BmHW10Ju3uXUNZnBK3Y!1xHcPdaWiJVqer+g(h z1{t05yF%4LHer4sy^Gp}$Ybm0OP9`tTYOT^(THt?E&n+;QATCU(K%P*fbv3_63-k3 zD9vAvwt!?b|9{MlP=-tYz9@)z5`SG7J!twAW#`e*;Z21Z&s*0Fw?u1Xr5`)}(u--! zK3WrD=JxG*72v4MoQs%wqD*@xC_E~ggm;pTGJL7K4jZcP`KYZ8n@?gkI3c#Yk zt4AFUswDiH&rP3E`E?-T*U2(3^_7vr#Yb%t7sr0`{kbv7aOl3GAU1ur9SAw}2slJ} zml6{pr7Q>35&oRdJ+x8zvp?d`BW2n|Hh?`ZNZeS|@!k7^d{9xsaSA2= z3ctru>Q_O8<-55_JF2kkn?ovrKJzF8tFpo>BOTw#-G4?pzEu=NFJB6bZHUub6z*1-59jzJmXy}A3!uyr?s7?@$iej(7lZ|=BA zT9F5pNGoQNgUK}D)|erv{*P~L=FgRc!U8A%?9ZWx#ciS_ z9uigziq{Lv@!g>rT&Pe6=Cs;)Q#vPmRMVmQu*!n!#oU6|U!P@!++XOM2&*WnVb@iq zcVA65AY9CiU1nN5FTBXDY>L{JgArF`vun2_-%zH!lR=e)Cr<8BkIIunb0N*kY3vl) z;!wPi8;1<#t)d`eJF{FAMC^qK{|lI^7>muC&aqjlPzDYQ<+P))|7;#oR|MymbCYXS z!8ty3G9#Ih+z*+Z%b&@OTt=dPkwL6u;s$BlqLcYR$dmMJNzLT}b%Y~d%{}N*IdX7L zQGD1;{=M8NWa$16i-L&f(C-NAHkv{E&xYTkV4sXSo~g%|?_WjO^X=RN8IcYXa6)e1{v=Br=lQwxl=$%#(GxfW&sc}7MrDK565m3WydLhP6ZiuE350&gUcr6zptgX3RH(a|L- z&J3+B40<#-Ax53er8#0inemk+Cc(EH;hW*giQLF!xKb?&BA!wY3uE79YWK%-4{TIM zZJ)F13t8XegSk7*FynGj5WUPOpdw=}D-*QFmt1o>zyIX_|tKt zj+0MtR99b~tzT7`_D8t~Ix5rdikPM_EiqfQYf!ERz`R5m>0uu7a}`zU{-Q zW~+!*)%T`p6+A+Hk(T>*ZdNFAVyKDCe4m(=t$T8#myxYI8N@9#l(VdLb=XP8q%>=? z#lnd*xraLHyxk+(Rfk0kF;Y~Dv$Rj=?ma{3r;37zr_U3@tIe^4367MM=;2$0)iig+ z4i2g+oLb2}&`~+1>|laZNcr#tXG}9(tLMff!!^Aqh+eK0(3`R9l}TCvM2y7{)mt=i z+iw9sWsCb&5IOl9xk)>!oQ$@@ALQ;oBORYE3Zj=U1y~zPhb%}J01;y`RW!9pSYV$4 ze`}e0>96qm?D`*LCgsl_r&VeGIP72NW>$ZBqp=R#X7I0a_mz>Yf5{-$G0Ypf&435> z?%ihae~B2kW}Cr@>^6fx6IKkeyBi?Jyv=}8wX`m&m*~@g9>W_ZeNObNDgwR>7Xjq^ z5NbpL_a7YMte&Vu2Tx?3)Un)XW#+;*2C>du7{r>QX6;bSi|DiPEK>&75`H|Gd*Gw; z<1nYmAuDA){ar?u`VZtrB18S7MM1>&KUexzPVdRi`PXtImXWF(4B{4Q+-H zIAn*M7qXJ2%Y24v-`TZZMPb@M%{|CbnRdq<9R);YQ#i(0meqZ4ir8_^=c~E#$nfj; zih{Vs{CdX1de!O({7P38e*Kr+gDl7|9NP>m2lDINx$(&G>rab<*mQpNcVkjIv40ie z(d4ep3JnHq1Q^fVVTKtyih}56MggxRc5K8D761`rF~qSc8l&{ftfd5^Uj-3|Cv%f_ z)G0e!>h1B|{b!`((V`%F`BH$jv2;k1rT~Z-i+@oxRisjHd}!FMOT9(MOpJa2nSC(I z!Fjp4)?e^w(8F?YujcM6BV;WGv5ptKp*c7n)Vnta_gNywt;xZi%;w;JMp!Y(Z!MgI zyC+Pno#e#YD=s;)>bxpC$FnEy7*<>K>u=^3y%ELSAGU0KvXVK8G#iP0DK~nVnehc- z#~{74@kip^O&PiDiHB}!{@e#&{_wFhn}$^uF8xt%GK|WlyJQ>dbvd6gaTEuBLZlQm z<51%da$}NV$U8+r#Fprv3r`14v7&y;+zU9&52yE*=#ExeTE-@((uXgc=d&LAvTvjo z!owfr9`>j_yl)N%8xY=Q!kZSFfp-}fJMozh0~q=J+~{N&`MshbHl2}2v6mktAq6Sa zkkgBBG9jNeM$$gZAZ}Hh$%A_L#+iRe#JDwa z=BaF)`Mbi3K~8YtI5XO^bSkxhLykXBM=$GF74`bf+(I{^fcw=Udp%B7=o39Sf$F}8 zY&7$Y+_+^X#MguigLKZuhnIJT8$Q%|^y_?wzJ66<&tK#w!Kmz!(2~}$)Ujo0Ocf>L z(DKi7W0GOU|1Jt5wm|<=_&I1+74=VeJ2J&1eB`xTO4B0csjOdBxOVU4#zY_)tKrMe zW#XEgH#O`mfxB~KlHuANMM3m(t$^zhdoMDP3xJ5R7^0Dj%1%GmH6=0qDu|r?Xl~Mu zI=e^nZ7=5TKO-HBMM3oPr2uPV=@7rC0Eifizg1K@iErEWcjGPq4M*SO0zo;tKfLm9 zagvWuTinCDn-?eec8|rKe6`2oj;=pL4PB!q$L7-wAM$D$Hy3y5N?Lw3tF9WrReOBf zYJ3w2t_bLRu0QvRi*9I3F8)wD1Aj=T(A7M%{B1lg7skDcOI=(u#5ar3{Q$V9i7&}` zn=cB8pXkPb`01_WQ`euSdjSBgM)!5|^+*YUiA?|Q}$+=__n ziqv6F7wPUxzIzlUyDj%6BU!rU@6r-iE&0=$jthp*#FsDOa@3v9l8ukSi0tM)i(9(> zE?fq$t{0^d>{O3Y`FJh7VHCyG1TEAXX6SVIL>F7qo36hNcb^kE?9X6U*`EXz?9bv? zngaIc@#>=eEA+p=i${B@bE%DS&ERsEb_1D4Y)#XfxSiFX3g6(2D?Ho3#!deY|Nraw zf6e{^{)be2k^f)=K3#{TMrd9M5s!R)!j0~yxPk$1Z|k^v!#^OW=Rb+Hj^y$A{{FtF z>f=UfFVK}_&d=MwkAD4yz97~;c+5ZE5B$1KxNFs;YTbi$vU%_6NPcx#hrKPNKU`x0 zVQmA9cH6i|l#gASKUSJY!c%~zX}1m<#{&OUiq7lQMNy(Zy35-G_n6=h4JA0a z=IZzo|G{A+PgGXD{2OBHlhOMT2OHIQG0yaL49RiE)i{D+G*iQSc#`(xVekSTwdU^_n%XChl!Jl*A5;VA{5DgZp6GN%4 zzOkb_cGdZZ;nW{Y`)r#e2c9D|Kz!7q&vZu|c?Krf@ScHe$keW+I~5`r%FKp3O--7C z8YcOrgMV!O8J4V@9Q_mFCk4;oF6PoaU(QGOI}I300t^P6z9=`IUx`|kB>a%qEOK|@ zYG~IWawn^la3P}U)B*g_;V7hlR~TN{1&hxw`IXD(UK*Kv z(jmt9(E4LkH=+vkaAZupqr9?aB&>Y)?X|#IlOUx_L%F!&6db0I`fYI-rjYuz zNlMeAED+-6Rzv}=Mo0UPq?G!=g@`>hfEj&iSF#jvuSOqSBGtgoyy4Ol$%Zr9&xOU(9VI7f)_ zb_$$0pxEBT#p3M#s~Xd$?rO%XT|SRi+LH6V#_sbP8=N(k`8AH}*18;+m_I{ax`3GX zr&A&XcU|4_C}Eh3+l8UBTY*1$iNl+7h+S84n;m=k_B-UpjR~H?8@PDYKb8U)Ta7+v z1KV>`h+pWKVfzmO$3BWjhA}@7Mz0H<0P)8u5JjEf1i*hwV;f)Yw)m7K8Qt7K%wnH2 zNWl173aPtEO{!@|z|1UGh z4e)6axc@K%zX0+n?3auw{oNm6$0LwF<$TcX$ZQXi8S zoO-umgtk*sWNbXmOXj6D4~ElzfNFmn|INoHF)n?ur_A+4 zrl*wDW?cG#xHQsUap@~Pr8M{BQZp`%BrYz!9+yT$j7r5(@watcFX8V)4Mv~q764(`@M(ru6Saz}5u zNQ&Yp#TPry4RUUfUqx+yx7N@PWCQJfNN^C0jmtg QvWB%?x-t)?-KEO^2feX+q5uE@ literal 0 HcmV?d00001 diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9ff4c485d356f40aa3e32638eda8b66ba1c894aa GIT binary patch literal 31526 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 z znsBp__Z}2SII4k=ceE?Z`X?6N#o72JaCmXT)-U4nz`E>0$@7{x2nt z0Jl`K+{G^3_BAZY74%hi-3YB+QEdd3lVx|Q;x)<$Pk=9pIKs2>Mz?vY3n4AuCOCmh z^l>q5383q!EF?*W_!4vks))c4fg417h21mYRf(q@>_m^z+JgSEg{Z&A#kbN!@psAJ zfc5GB02`qHAu-2Fa{k)w%zDFPbfR9eRogj`@TENzs zu7G)#;hkkzXBo~}hH=(k#E1kmvkb{BLov$`%yRFu-198=I?FxIa&NPpx=;n(S}m*}H`QK|UD z6hgQ_A)I{ZJmLh=Ig7M44vmsjMTrrghAxppYr%h#J}x3kf06$B1buvxK6o8mOE2!G zk3oo{0)-Iu?(>K!efu7KrbWrd)KTc60Za7o^8YN2{r@7TrT;zp>q`1-4}CC8prdC# zohuuN9x6}>J?}k_=&=$u6~~WNNg+s`wnKad^TIFD=$RMNeO&(Ah*Q$>KA#fw`jo`i zr#vM-kzkvPGzXM$P$cFIex{r{M z$Xf!!pF_yZ)Nu*h+3s)!0TfGR`Pk@DYFpD5hWN+s@3a~ouCjI=57MEBF*sr~RFB7^i7r`mBy;#qm#>>=R_=?2h zH*>I~u=tlb<(OIZV$uI|)H67wGsOyr_gXkK_d4if$FNz%mulTg(I&5z9r`hg#v?US M_oQYd_M55y2TEuBVE_OC literal 0 HcmV?d00001 diff --git a/.doctrees/section2.doctree b/.doctrees/section2.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3a2957e7e28acf6ca283cc16eb736bac3c18ecda GIT binary patch literal 36128 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

h-w*h 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 literal 0 HcmV?d00001 diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt index d944272..b64b138 100644 --- a/_sources/index.rst.txt +++ b/_sources/index.rst.txt @@ -20,7 +20,7 @@ A guide for developing Python scripts in DFIR Handbook Sections ============================== -.. automodule:: sections +.. automodule:: pyforhandbook :members: Indices and tables diff --git a/_sources/section1.rst.txt b/_sources/section1.rst.txt index 20cc8ca..93a1adb 100644 --- a/_sources/section1.rst.txt +++ b/_sources/section1.rst.txt @@ -6,27 +6,27 @@ Section 1 - Essential Scripts Section 1.1 - Argparse Example -------------------------------- -.. automodule:: sections.section_01.argparse_example +.. automodule:: pyforhandbook.section_01.argparse_example :members: Section 1.2 - Logging Example -------------------------------- -.. automodule:: sections.section_01.logging_example +.. automodule:: pyforhandbook.section_01.logging_example :members: Section 1.3 - Open Files ------------------------ -.. automodule:: sections.section_01.open_files +.. automodule:: pyforhandbook.section_01.open_files :members: Section 1.4 - CSV Example -------------------------------- -.. automodule:: sections.section_01.csv_example +.. automodule:: pyforhandbook.section_01.csv_example :members: Section 1.5 - Directory Recursion --------------------------------- -.. automodule:: sections.section_01.recursion_example +.. automodule:: pyforhandbook.section_01.recursion_example :members: Indices and tables diff --git a/_sources/section2.rst.txt b/_sources/section2.rst.txt index 2ddabfa..44b55f1 100644 --- a/_sources/section2.rst.txt +++ b/_sources/section2.rst.txt @@ -6,12 +6,12 @@ Section 2 - Registry Parsing Section 2.1 - Opening a Hive -------------------------------- -.. automodule:: sections.section_02.yarp_base +.. automodule:: pyforhandbook.section_02.yarp_base :members: Section 2.2 - Parsing Hive Values ---------------------------------- -.. automodule:: sections.section_02.yarp_ntuser +.. automodule:: pyforhandbook.section_02.yarp_ntuser :members: Indices and tables diff --git a/_sources/section3.rst.txt b/_sources/section3.rst.txt index 022268c..5e2ff50 100644 --- a/_sources/section3.rst.txt +++ b/_sources/section3.rst.txt @@ -4,19 +4,9 @@ Section 3 - Windows Event Log Parsing :maxdepth: 2 :caption: Contents: -Section 3.1 - Opening an Event Log +Section 3.1 - Using python-evtx ---------------------------------- -.. automodule:: sections.section_03.open_evtx - :members: - -Section 3.2 - Iterate over events ---------------------------------- -.. automodule:: sections.section_03.get_events - :members: - -Section 3.3 - Filter event data -------------------------------- -.. automodule:: sections.section_03.filter_events_json +.. automodule:: pyforhandbook.section_03.using_python_evtx :members: Indices and tables diff --git a/_sources/section6.rst.txt b/_sources/section6.rst.txt index f1f81ae..24ee294 100644 --- a/_sources/section6.rst.txt +++ b/_sources/section6.rst.txt @@ -6,7 +6,7 @@ Section 6 - Sqlite & MacOS/Mobile/Browsers Section 6.1 - Opening Sqlite -------------------------------- -.. automodule:: sections.section_06.opening_sqlite +.. automodule:: pyforhandbook.section_06.opening_sqlite :members: Indices and tables diff --git a/_static/documentation_options.js b/_static/documentation_options.js index aa3a84b..87d8188 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '20201015', + VERSION: '0.1.0', LANGUAGE: 'None', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/genindex.html b/genindex.html index c4bb0df..c3cdf9a 100644 --- a/genindex.html +++ b/genindex.html @@ -7,7 +7,7 @@ - Index — Python Forensics Handbook 20201015 documentation + Index — Python Forensics Handbook 0.1.0 documentation @@ -184,7 +184,7 @@

C

@@ -192,7 +192,7 @@

F

@@ -200,7 +200,7 @@

G

@@ -208,7 +208,7 @@

L

@@ -220,25 +220,25 @@ module
@@ -247,7 +247,7 @@

N

@@ -255,11 +255,11 @@

O

@@ -267,21 +267,91 @@

P

R

@@ -289,79 +359,7 @@

S

-
    -
  • - sections - -
  • -
  • - sections.section_01.argparse_example - -
  • -
  • - sections.section_01.csv_example - -
  • -
  • - sections.section_01.logging_example - -
  • -
  • - sections.section_01.open_files - -
  • -
@@ -369,11 +367,11 @@

W

@@ -391,7 +389,7 @@

- © Copyright 2019, Chapin Bryce + © Copyright 2020, Chapin Bryce

diff --git a/index.html b/index.html index d25c1a3..130f423 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ - The Python Forensics Handbook — Python Forensics Handbook 20201015 documentation + The Python Forensics Handbook — Python Forensics Handbook 0.1.0 documentation @@ -182,8 +182,8 @@ -
-

Handbook Sections

+
+

Handbook Sections

IN DEVELOPMENT - More sections will release over the coming weeks/months/as time permits. Feel free to contribute as you have an idea or time to assist, otherwise stay tuned!

@@ -402,7 +402,7 @@ needed with minimal effort.

- © Copyright 2019, Chapin Bryce + © Copyright 2020, Chapin Bryce

diff --git a/objects.inv b/objects.inv index d4880c14a3edc2535a09300cd8bb9a9c0e0a125e..f1080f592639e04bf6158f51edb98639521cce73 100644 GIT binary patch delta 551 zcmV+?0@(eb1+4{;k$+8(n=lZD@B9i&t$K@h0}_Wlu9T{kns&9>sz>CQ32{rX>oM8z z?>pv0fh^LdgqyMFef*Bcj7_!Eb}x!_tMwmds)vJ4%N*D}Q$-3VzITWGLo>Jd$QFU= z$8!YflrEC{B^Nd`!XhMa5(h(sKC6veUXPP_oS(#Bt#Xj~nSWGChn~DEi#n7oFW3{H zxx!nZxy~|GWHaS`L8B#CnxvhbZc-a4lAX!{Z}fKtorlwHS&*eg|1r<$z2R|RT)H;2 z;Iyr#It_UxtVy;4M;(UOI_z=yGi2n=R*x-I<^u6-D*PW)0~nXNZheB=>vRIMa3zAB zBh`k)zrXz4tbd+wNpk?=P18E)vT#PL!eKZ=zC*a)?UaP%2=#@++4;_vR56g+rW4^2 zFVXi3Q<0Lc{L!7pN)}yPvJoDq|J#A3G0-6=zmfi%(SInK;+ALNTJ)UMx-oU9F$Ege z2#>|TIXx3&ry9RG)yzxi^=0VNhg@tSXNx84X6tbF)qf9zb6BdS59&p{?14Si$*|Ab zLV-#m`_ftrXuFX;Ott718pyga+w9g`eMi>rJ5VDCEB8ZTGuLP~&H9tbAn5vOKea)R zrRc603${X}$}2&$(kkPy(}yGaaHtPS-}OA&+xk1u$)gc@G?Ygq|3!)GS7a-H|JXO3 pU2@_PP9Qww#KhS&SL7303;APnx7J&F67L=@v8isz>CQiQ|^o)MK*Y z?K{MvKo+Tl?9Ghl|NM`~HVD#dYmgPy!`^0P4(y(3lfjYi{67B>V)Kt|KEo!JH-q#( z;=-vyID{0AVqcKBi)r$rQ6!0ncZKj*r#+-~B-7HL3fz|Flz+;i3+#2gT;oJuZk5tT z-CpPgh^Bm5q)l{^HCup5w>k%$?&{1q4=0&%AWMh!$IUzS2F2_4(V3tLZ(TLPU(74v zigY7z&{sUdR|mnLL6IX@JvKa<3&gXPc%+pchs)eH?!fPCb{)?662aYATY&KIFF)7I z=ZSUo7(Bc*dw*LRUs!EC#$yp|OK|YVp^hXY zI?_RKx|1Fpje#~W{f%_$2X8N7AJN6BI4hi-sz#8TD;jQRZHks z$IxdFx!6F?<`HY7r*!tU9?s5bnU!@?C*x%Y?5U!T8h`fLIxwguvM<798*Bf}Xt{wk zifZ0Y1js6w4Xbr#|08SG?Wqxjle@k!#DZoW=AVRub|<55X}u?qvfDn)*%FcZtOZ4- z(}l-Y9}no`zCI>>`$Ey$bjgfr<;j3N>B|$6|DwX}E3##M+SoU%E;)+<&Z5s*5N92Z d$S1ZE@)XDVZe=(0pSpW=#HPzX`v;7QKk5@u8gBpq diff --git a/py-modindex.html b/py-modindex.html index 8c4cf1a..29fedfc 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -7,7 +7,7 @@ - Python Module Index — Python Forensics Handbook 20201015 documentation + Python Module Index — Python Forensics Handbook 0.1.0 documentation @@ -169,63 +169,63 @@

Python Module Index

- s + p
- +
 
- s
+ p
- sections + pyforhandbook
    - sections.section_01.argparse_example + pyforhandbook.section_01.argparse_example
    - sections.section_01.csv_example + pyforhandbook.section_01.csv_example
    - sections.section_01.logging_example + pyforhandbook.section_01.logging_example
    - sections.section_01.open_files + pyforhandbook.section_01.open_files
    - sections.section_01.recursion_example + pyforhandbook.section_01.recursion_example
    - sections.section_02.yarp_base + pyforhandbook.section_02.yarp_base
    - sections.section_02.yarp_ntuser + pyforhandbook.section_02.yarp_ntuser
    - sections.section_03.open_evtx + pyforhandbook.section_03.using_python_evtx
    - sections.section_06.opening_sqlite + pyforhandbook.section_06.opening_sqlite
@@ -241,7 +241,7 @@

- © Copyright 2019, Chapin Bryce + © Copyright 2020, Chapin Bryce

diff --git a/search.html b/search.html index 7fa363a..1a499dd 100644 --- a/search.html +++ b/search.html @@ -7,7 +7,7 @@ - Search — Python Forensics Handbook 20201015 documentation + Search — Python Forensics Handbook 0.1.0 documentation @@ -190,7 +190,7 @@

- © Copyright 2019, Chapin Bryce + © Copyright 2020, Chapin Bryce

diff --git a/searchindex.js b/searchindex.js index c1595a1..13bb718 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","section1","section2","section3","section6"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","section1.rst","section2.rst","section3.rst","section6.rst"],objects:{"":{sections:[0,0,0,"-"]},"sections.section_01":{argparse_example:[1,0,0,"-"],csv_example:[1,0,0,"-"],logging_example:[1,0,0,"-"],open_files:[1,0,0,"-"],recursion_example:[1,0,0,"-"]},"sections.section_01.csv_example":{write_csv_dicts:[1,1,1,""],write_csv_lists:[1,1,1,""]},"sections.section_01.logging_example":{setup_logging:[1,1,1,""]},"sections.section_01.open_files":{open_file:[1,1,1,""]},"sections.section_01.recursion_example":{list_directory:[1,1,1,""]},"sections.section_02":{yarp_base:[2,0,0,"-"],yarp_ntuser:[2,0,0,"-"]},"sections.section_02.yarp_base":{RegistryBase:[2,2,1,""]},"sections.section_02.yarp_base.RegistryBase":{close:[2,3,1,""]},"sections.section_02.yarp_ntuser":{NTUSER:[2,2,1,""]},"sections.section_02.yarp_ntuser.NTUSER":{parse_mountpoints2:[2,3,1,""],parse_office_versions:[2,3,1,""],parse_trustrecords:[2,3,1,""]},"sections.section_03":{open_evtx:[3,0,0,"-"]},"sections.section_03.open_evtx":{filter_events_json:[3,1,1,""],get_events:[3,1,1,""],open_evtx:[3,1,1,""]},"sections.section_06":{opening_sqlite:[4,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"10549":3,"1601":2,"2147483647":2,"4624":[0,3],"4625":3,"4672":0,"boolean":1,"byte":1,"case":2,"class":[0,2],"default":1,"function":[0,1,2,3,4],"new":[0,1],"return":[1,2,3,4],"short":0,"super":2,"true":3,"while":1,Adding:0,For:[0,1,2],IIS:0,NOT:1,SMS:0,The:1,These:2,Use:1,Uses:0,Using:[0,2],Will:2,With:2,__author__:1,__date__:1,__file__:1,__init__:2,__name__:1,_open_h:2,_recover_h:2,abil:1,about:[1,2,3],abspath:1,accept:1,access:[0,2,3],across:0,action:1,activ:0,add:[0,1,3],add_argu:1,addhandl:1,adding:1,addit:[0,1,2,4],addition:[1,2,3],adjust:1,advanc:1,after:1,all:[1,3],allow:[0,1,2],alreadi:0,also:2,analysi:3,andriod:0,ani:2,anyth:0,anywai:1,append:[2,4],appl:1,arg:1,argpars:[0,4],argument:[1,3],argumentdefaultshelpformatt:1,argumentpars:1,artifact:[0,2],asctim:1,assign:3,assist:0,associ:2,attempt:2,attrib:3,attribut:2,avail:[0,2,4],base64:3,base:[2,3],basic:3,begin:[2,3],below:1,best:1,better:0,binari:0,block:0,bom:1,bool:3,both:[1,2],build:[0,1,2],built:1,calcul:3,call:[1,3],caller:2,can:[0,1,2,3,4],cannot:1,chang:1,chapinb:0,chapter:0,check:1,child:3,chome:0,close:2,code:[0,2],collect:[1,3],column:1,com:[0,2,3],come:0,command:[0,1],common:[0,1,2,3],commonli:0,compris:1,conn:4,connect:4,consid:0,consist:1,consol:[0,1],contain:[0,1,2,3],content:[0,1],continu:[1,2],contribut:0,correct:0,could:[1,2],count:1,cover:0,creat:1,critic:1,csv:0,csv_exampl:1,csvfile:1,cur:4,current:1,currentvers:2,cursor:4,cursori:2,custom:0,dat:[0,2],data:[1,2],databas:4,dataset:1,date_v:2,datetim:2,debug:1,decod:3,def:[1,2,3,4],defin:1,demonstr:[1,2,3],descript:1,detail:[2,3],determin:1,dict:3,dictionari:3,dictwrit:1,differ:1,dir:1,directori:0,discoverlogfil:2,displai:[1,2,3],distinct:2,ditri:3,doc:[1,2,4],document:[1,2],doe:1,don:[1,2,3],drop:0,dt_date:2,dump:3,durat:3,e01:0,each:[0,1,2,3],easi:1,easili:[1,3],effect:1,effort:0,elect:2,element:[1,3],elif:1,els:3,empti:1,enabl:3,encod:0,end:1,entir:0,entri:1,enumer:[1,3],epilog:1,error:[0,1],etc:2,etre:3,even:[0,3],event_data:3,event_id:3,event_log:3,event_xml:3,eventdata:3,eventid:3,evt:3,evtx:0,exampl:[0,2,3,4],execut:4,exist:[0,3],expand:1,explor:[0,2,4],expos:[0,1,3],extend:[0,3],extract:[2,3],extrasact:1,fals:3,featur:1,feel:[0,1],feff:1,fentri:1,fetchal:4,few:2,fffe:1,field:[0,1,3],file:[0,2,3],file_encod:1,file_entri:1,file_handl:1,file_object:2,filehandl:1,filenam:1,filter:1,filter_events_json:3,filtered_login:3,find:[0,3],find_kei:2,first:1,fix:2,flexibl:[0,2],focu:1,folder:[0,1],fopen:1,form:1,format:[0,1,2,3,4],formatt:1,formatter_class:1,found:[1,2,3],free:[0,1],from:[0,1,2,3,4],full:[1,3],func:3,funcnam:1,further:[1,2,3],gener:[0,1,3],genertor:3,geoip:0,get:[2,3],get_ev:3,get_file_head:3,getattr:[2,3],getchildren:3,getlogg:1,github:[0,2,3],global:1,googl:0,hand:1,handl:[0,1,2],handler:1,has:[0,1],hash:0,have:[0,2,3],header:[1,3],help:1,here:[1,2],histori:0,history_db:4,hive_path:2,hive_typ:2,host:0,how:[1,2,3],html:[1,2,4],http:[0,1,2,3,4],hybridanalysi:0,idea:0,ident:1,identifi:[1,3],ids:3,ignor:1,impact:3,implement:0,includ:[0,1,2,3],indent:3,index:[0,1,2,3,4],individu:[1,3],info:1,inform:[1,2,3,4],input:1,input_fil:[1,3],inputdb:4,inspect:2,instal:3,instanc:1,instead:[1,2],instruct:1,integ:[2,3],integr:0,intend:0,interact:[1,3],interest:1,invent:0,investig:0,ipaddress:3,ipport:3,is_dirti:3,is_ful:3,isoformat:2,item:[1,3],iter:[0,1,2],iterate_fil:1,its:1,join:1,json:3,json_data:3,just:1,keep:1,kei:[0,1,2,3],key_path:2,knowledgec:0,known:2,last_written:2,last_written_timestamp:2,later:1,latter:1,launch:0,let:1,level:[0,1,3],levelnam:1,leverag:[2,3],libewf:0,librari:[1,2,3,4],like:3,line:[0,1],lineno:1,list:[0,3],list_directori:1,list_tabl:4,listdir:1,locat:[1,2],log1_path:2,log2_path:2,log:2,log_format:1,log_obj:2,log_path:2,logger:1,logging_exampl:1,logic:1,login:[0,3],logoff:3,look:0,low:[1,3],lxml:3,macro:2,macro_en:2,macro_enabled_v:2,magic:1,mai:1,main:0,major:3,major_vers:3,make:3,mani:1,manipul:0,manner:0,mark:[1,2],mbr:0,messag:[0,1],metadata:[2,3],method:[0,1,2,3],microsecond:2,microsoft:2,minim:0,minor:3,minor_vers:3,modifi:1,modul:[0,1,2,3,4],month:0,more:[0,1,2],most:1,mountpoints2:2,mp_data:2,msuhanov:2,multipl:1,multiprocess:0,multithread:0,must:[1,2],name:[1,2,3,4],need:[0,1,2],nest:[0,1],newli:3,newlin:1,next:3,next_record_numb:3,none:[1,2,3],now:3,nsmap:3,ntuser:[0,2],number:[1,2,3],object:[1,2,3],off:[0,1],offic:2,office_vers:2,offlin:2,onc:1,onli:[1,2,3],onlin:0,open_evtx:3,open_fil:1,open_log:3,open_sqlit:4,opening_sqlit:4,oper:3,option:1,orang:1,order:0,ordereddict:3,org:[1,2,4],other:[1,2,3],otherwis:[0,1,2,3],our:[0,1,2],out:[0,3],outfil:1,outlin:0,output:[1,3],output_fold:1,over:0,own:0,page:[0,1,2,3,4],parallel:0,paramet:[0,1,3],parent:1,pars:[0,1],parse_arg:1,parse_mountpoints2:2,parse_office_vers:2,parse_trustrecord:2,parse_xml:3,parser:1,path:[1,2,3],pathlib:1,pattern:0,per:3,perform:[0,2,3],permiss:2,permit:0,pip:3,pleas:0,point:0,portabl:[0,2],powershel:3,practic:0,prefer:[1,3],present:2,primari:2,print:[1,3,4],prior:[0,2],priv:0,process:[0,1,3],processnam:3,produc:1,project:0,properli:2,properti:3,provid:[0,1,2,3,4],pull:0,purepath:1,python:[1,2,3,4],pytsk:0,q12xi:2,quantiti:1,quick:[0,1],quickli:0,rare:1,raw:[0,3],raw_lin:1,read:[0,1,3],reason:1,rec:2,recognit:0,record:2,recov:[0,2],recover_auto:2,recoveri:2,recurs:[0,2],recursion_exampl:1,redirect:1,refer:[0,4],reg_fil:2,reg_path:2,regard:4,regardless:1,registry_fil:2,registrybas:2,registryh:2,registryhelp:2,releas:0,replac:2,report:0,request:0,requir:[1,3],reserv:1,resourc:3,respect:2,respons:2,result:3,retriev:2,root:1,row:1,rsplit:1,run:3,same:2,sampl:1,sample_funct:1,search:[0,1,2,3,4],secur:2,see:1,seen:4,select:4,self:2,sens:2,separ:1,session:3,set:[1,2],setformatt:1,setlevel:1,setup:1,setup_argpars:1,setup_log:1,sever:[0,3],share:1,shellcod:3,should:[1,3],show:[1,3,4],showcas:3,sig:0,signatur:1,similar:0,similarli:2,simpl:0,simplest:1,sinc:[1,2],singl:[0,1,2],snippet:[0,3],softwar:2,solid:0,some:3,sourc:1,specif:[0,1],specifi:[1,2,3],sqlite3:4,sqlite_mast:4,stai:0,statu:0,stderr:1,stderr_handl:1,stdout:1,store:[1,2],store_tru:1,str:[1,2,3],stream:1,streamhandl:1,string:[0,3],strip:1,strong:2,struct:2,structur:2,subdirectori:1,subjectdomainnam:3,subjectusernam:3,subjectusersid:3,subkei:2,submit:0,support:[1,3],sys:1,syslog:0,system:[2,3],system_tag:3,table_list:4,tailor:2,target:0,targetdomainnam:3,targetusernam:3,targetusersid:3,task:0,tech:1,test:1,test_encod:1,text:[1,3],thei:[1,2],them:[1,3],thi:[0,1,2,3,4],those:[2,3],though:[1,2,3],three:1,through:[0,1,2],time:0,timedelta:2,timestamp:2,tool:2,top:3,transact:[0,2],trust:2,trust_rec_kei:2,trust_record_path:2,trustrecord:2,tune:0,tweak:0,two:1,tx_log:2,tx_log_fil:2,tx_path:2,type:[0,2],uniform:0,uninterrupt:1,unlik:1,unpack:2,usag:[1,2,3,4],use:[0,1,3],usecas:1,used:[1,2],useful:[0,2],uses:1,using:2,utf:[0,1],util:1,valu:[0,1,3],vari:0,variabl:1,verbos:1,veri:[0,1,2],version:[2,3],virustot:0,wai:0,walk:1,warn:1,week:0,welcom:3,well:0,what:[1,2],wheel:0,where:3,whether:2,which:[1,3],williballenthin:3,window:[0,2],wish:[0,2],within:[1,2],without:0,word:[1,2],work:0,workstationnam:3,worri:1,wors:0,would:3,write:[0,1],write_csv_dict:1,write_csv_list:1,writehead:1,writer:1,writerow:1,written:1,yarp:2,yarp_bas:2,yarp_ntus:2,yield:[1,2,3],you:[0,1,3],your:[0,1]},titles:["The Python Forensics Handbook","Section 1 - Essential Scripts","Section 2 - Registry Parsing","Section 3 - Windows Event Log Parsing","Section 6 - Sqlite & MacOS/Mobile/Browsers"],titleterms:{The:0,api:0,argpars:1,binari:2,browser:[0,4],call:0,configur:[1,4],creat:2,csv:1,data:[0,3],develop:0,dfir:0,dictionari:1,directori:1,docstr:[1,2,3],element:0,encod:1,essenti:[0,1],event:[0,3],evtx:3,exampl:1,file:1,filter:3,forens:0,guid:0,handbook:0,hive:[0,2],imag:0,indic:[0,1,2,3,4],iter:3,json:0,list:[1,4],log:[0,1,3],maco:[0,4],mobil:[0,4],open:[0,1,2,3,4],order:1,over:3,pars:[2,3],parser:2,proper:1,python:0,read:2,record:3,recurs:1,refer:[1,2,3],registri:[0,2],script:[0,1],section:[0,1,2,3,4],specif:2,sqlite:[0,4],string:2,tabl:[0,1,2,3,4],text:0,valu:2,window:3,within:3,xml:3,yarp:0}}) \ No newline at end of file +Search.setIndex({docnames:["index","section1","section2","section3","section6"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","section1.rst","section2.rst","section3.rst","section6.rst"],objects:{"":{pyforhandbook:[0,0,0,"-"]},"pyforhandbook.section_01":{argparse_example:[1,0,0,"-"],csv_example:[1,0,0,"-"],logging_example:[1,0,0,"-"],open_files:[1,0,0,"-"],recursion_example:[1,0,0,"-"]},"pyforhandbook.section_01.csv_example":{write_csv_dicts:[1,1,1,""],write_csv_lists:[1,1,1,""]},"pyforhandbook.section_01.logging_example":{setup_logging:[1,1,1,""]},"pyforhandbook.section_01.open_files":{open_file:[1,1,1,""]},"pyforhandbook.section_01.recursion_example":{list_directory:[1,1,1,""]},"pyforhandbook.section_02":{yarp_base:[2,0,0,"-"],yarp_ntuser:[2,0,0,"-"]},"pyforhandbook.section_02.yarp_base":{RegistryBase:[2,2,1,""]},"pyforhandbook.section_02.yarp_base.RegistryBase":{close:[2,3,1,""]},"pyforhandbook.section_02.yarp_ntuser":{NTUSER:[2,2,1,""]},"pyforhandbook.section_02.yarp_ntuser.NTUSER":{parse_mountpoints2:[2,3,1,""],parse_office_versions:[2,3,1,""],parse_trustrecords:[2,3,1,""]},"pyforhandbook.section_03":{using_python_evtx:[3,0,0,"-"]},"pyforhandbook.section_03.using_python_evtx":{filter_events_json:[3,1,1,""],get_events:[3,1,1,""],open_evtx:[3,1,1,""]},"pyforhandbook.section_06":{opening_sqlite:[4,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"10549":3,"1601":2,"2147483647":2,"4624":[0,3],"4625":3,"4672":0,"boolean":1,"byte":1,"case":2,"class":[0,2],"default":1,"function":[0,1,2,3,4],"new":[0,1],"return":[1,2,3,4],"short":0,"super":2,"true":3,"while":1,Adding:0,For:[0,1,2],IIS:0,NOT:1,SMS:0,The:1,These:2,Use:1,Uses:0,Using:[0,2],Will:2,With:2,__author__:1,__date__:1,__file__:1,__init__:2,__name__:1,_open_h:2,_recover_h:2,abil:1,about:[1,2,3],abspath:1,accept:1,access:[0,2,3],across:0,action:1,activ:0,add:[0,1,3],add_argu:1,addhandl:1,adding:1,addit:[0,1,2,4],addition:[1,2,3],adjust:1,advanc:1,after:1,all:[1,3],allow:[0,1,2],alreadi:0,also:2,analysi:3,andriod:0,ani:2,anyth:0,anywai:1,append:[2,4],appl:1,arg:1,argpars:[0,4],argument:[1,3],argumentdefaultshelpformatt:1,argumentpars:1,artifact:[0,2],asctim:1,assign:3,assist:0,associ:2,attempt:2,attrib:3,attribut:2,avail:[0,2,4],base64:3,base:[2,3],basic:3,begin:[2,3],below:1,best:1,better:0,binari:0,block:0,bom:1,bool:3,both:[1,2],build:[0,1,2],built:1,calcul:3,call:[1,3],caller:2,can:[0,1,2,3,4],cannot:1,chang:1,chapinb:0,chapter:0,check:1,child:3,chome:0,close:2,code:[0,2],collect:[1,3],column:1,com:[0,2,3],come:0,command:[0,1],common:[0,1,2,3],commonli:0,compris:1,conn:4,connect:4,consid:0,consist:1,consol:[0,1],contain:[0,1,2,3],content:[0,1],continu:[1,2],contribut:0,correct:0,could:[1,2],count:1,cover:0,creat:1,critic:1,csv:0,csv_exampl:1,csvfile:1,cur:4,current:1,currentvers:2,cursor:4,cursori:2,custom:0,dat:[0,2],data:[1,2],databas:4,dataset:1,date_v:2,datetim:2,debug:1,decod:3,def:[1,2,3,4],defin:1,demonstr:[1,2,3],descript:1,detail:[2,3],determin:1,dict:3,dictionari:3,dictwrit:1,differ:1,dir:1,directori:0,discoverlogfil:2,displai:[1,2,3],distinct:2,ditri:3,doc:[1,2,4],document:[1,2],doe:1,don:[1,2,3],drop:0,dt_date:2,dump:3,durat:3,e01:0,each:[0,1,2,3],easi:1,easili:[1,3],effect:1,effort:0,elect:2,element:[1,3],elif:1,els:3,empti:1,enabl:3,encod:0,end:1,entir:0,entri:1,enumer:[1,3],epilog:1,error:[0,1],etc:2,etre:3,even:[0,3],event_data:3,event_id:3,event_log:3,event_xml:3,eventdata:3,eventid:3,evt:3,evtx:0,exampl:[0,2,3,4],execut:4,exist:[0,3],expand:1,explor:[0,2,4],expos:[0,1,3],extend:[0,3],extract:[2,3],extrasact:1,fals:3,featur:1,feel:[0,1],feff:1,fentri:1,fetchal:4,few:2,fffe:1,field:[0,1,3],file:[0,2,3],file_encod:1,file_entri:1,file_handl:1,file_object:2,filehandl:1,filenam:1,filter:1,filter_events_json:3,filtered_login:3,find:[0,3],find_kei:2,first:1,fix:2,flexibl:[0,2],focu:1,folder:[0,1],fopen:1,form:1,format:[0,1,2,3,4],formatt:1,formatter_class:1,found:[1,2,3],free:[0,1],from:[0,1,2,3,4],full:[1,3],func:3,funcnam:1,further:[1,2,3],gener:[0,1,3],genertor:3,geoip:0,get:[2,3],get_ev:3,get_file_head:3,getattr:[2,3],getchildren:3,getlogg:1,github:[0,2,3],global:1,googl:0,hand:1,handl:[0,1,2],handler:1,has:[0,1],hash:0,have:[0,2,3],header:[1,3],help:1,here:[1,2],histori:0,history_db:4,hive_path:2,hive_typ:2,host:0,how:[1,2,3],html:[1,2,4],http:[0,1,2,3,4],hybridanalysi:0,idea:0,ident:1,identifi:[1,3],ids:3,ignor:1,impact:3,implement:0,includ:[0,1,2,3],indent:3,index:[0,1,2,3,4],individu:[1,3],info:1,inform:[1,2,3,4],input:1,input_fil:[1,3],inputdb:4,inspect:2,instal:3,instanc:1,instead:[1,2],instruct:1,integ:[2,3],integr:0,intend:0,interact:[1,3],interest:1,invent:0,investig:0,ipaddress:3,ipport:3,is_dirti:3,is_ful:3,isoformat:2,item:[1,3],iter:[0,1,2],iterate_fil:1,its:1,join:1,json:3,json_data:3,just:1,keep:1,kei:[0,1,2,3],key_path:2,knowledgec:0,known:2,last_written:2,last_written_timestamp:2,later:1,latter:1,launch:0,let:1,level:[0,1,3],levelnam:1,leverag:[2,3],libewf:0,librari:[1,2,3,4],like:3,line:[0,1],lineno:1,list:[0,3],list_directori:1,list_tabl:4,listdir:1,locat:[1,2],log1_path:2,log2_path:2,log:2,log_format:1,log_obj:2,log_path:2,logger:1,logging_exampl:1,logic:1,login:[0,3],logoff:3,look:0,low:[1,3],lxml:3,macro:2,macro_en:2,macro_enabled_v:2,magic:1,mai:1,main:0,major:3,major_vers:3,make:3,mani:1,manipul:0,manner:0,mark:[1,2],mbr:0,messag:[0,1],metadata:[2,3],method:[0,1,2,3],microsecond:2,microsoft:2,minim:0,minor:3,minor_vers:3,modifi:1,modul:[0,1,2,3,4],month:0,more:[0,1,2],most:1,mountpoints2:2,mp_data:2,msuhanov:2,multipl:1,multiprocess:0,multithread:0,must:[1,2],name:[1,2,3,4],need:[0,1,2],nest:[0,1],newli:3,newlin:1,next:3,next_record_numb:3,none:[1,2,3],now:3,nsmap:3,ntuser:[0,2],number:[1,2,3],object:[1,2,3],off:[0,1],offic:2,office_vers:2,offlin:2,onc:1,onli:[1,2,3],onlin:0,open_evtx:3,open_fil:1,open_log:3,open_sqlit:4,opening_sqlit:4,oper:3,option:1,orang:1,order:0,ordereddict:3,org:[1,2,4],other:[1,2,3],otherwis:[0,1,2,3],our:[0,1,2],out:[0,3],outfil:1,outlin:0,output:[1,3],output_fold:1,over:0,own:0,page:[0,1,2,3,4],parallel:0,paramet:[0,1,3],parent:1,pars:[0,1],parse_arg:1,parse_mountpoints2:2,parse_office_vers:2,parse_trustrecord:2,parse_xml:3,parser:1,path:[1,2,3],pathlib:1,pattern:0,per:3,perform:[0,2,3],permiss:2,permit:0,pip:3,pleas:0,point:0,portabl:[0,2],powershel:3,practic:0,prefer:[1,3],present:2,primari:2,print:[1,3,4],prior:[0,2],priv:0,process:[0,1,3],processnam:3,produc:1,project:0,properli:2,properti:3,provid:[0,1,2,3,4],pull:0,purepath:1,python:[1,2,4],pytsk:0,q12xi:2,quantiti:1,quick:[0,1],quickli:0,rare:1,raw:[0,3],raw_lin:1,read:[0,1,3],reason:1,rec:2,recognit:0,record:2,recov:[0,2],recover_auto:2,recoveri:2,recurs:[0,2],recursion_exampl:1,redirect:1,refer:[0,4],reg_fil:2,reg_path:2,regard:4,regardless:1,registry_fil:2,registrybas:2,registryh:2,registryhelp:2,releas:0,replac:2,report:0,request:0,requir:[1,3],reserv:1,resourc:3,respect:2,respons:2,result:3,retriev:2,root:1,row:1,rsplit:1,run:3,same:2,sampl:1,sample_funct:1,search:[0,1,2,3,4],secur:2,see:1,seen:4,select:4,self:2,sens:2,separ:1,session:3,set:[1,2],setformatt:1,setlevel:1,setup:1,setup_argpars:1,setup_log:1,sever:[0,3],share:1,shellcod:3,should:[1,3],show:[1,3,4],showcas:3,sig:0,signatur:1,similar:0,similarli:2,simpl:0,simplest:1,sinc:[1,2],singl:[0,1,2],snippet:[0,3],softwar:2,solid:0,some:3,sourc:1,specif:[0,1],specifi:[1,2,3],sqlite3:4,sqlite_mast:4,stai:0,statu:0,stderr:1,stderr_handl:1,stdout:1,store:[1,2],store_tru:1,str:[1,2,3],stream:1,streamhandl:1,string:[0,3],strip:1,strong:2,struct:2,structur:2,subdirectori:1,subjectdomainnam:3,subjectusernam:3,subjectusersid:3,subkei:2,submit:0,support:[1,3],sys:1,syslog:0,system:[2,3],system_tag:3,table_list:4,tailor:2,target:0,targetdomainnam:3,targetusernam:3,targetusersid:3,task:0,tech:1,test:1,test_encod:1,text:[1,3],thei:[1,2],them:[1,3],thi:[0,1,2,3,4],those:[2,3],though:[1,2,3],three:1,through:[0,1,2],time:0,timedelta:2,timestamp:2,tool:2,top:3,transact:[0,2],trust:2,trust_rec_kei:2,trust_record_path:2,trustrecord:2,tune:0,tweak:0,two:1,tx_log:2,tx_log_fil:2,tx_path:2,type:[0,2],uniform:0,uninterrupt:1,unlik:1,unpack:2,usag:[1,2,3,4],use:[0,1,3],usecas:1,used:[1,2],useful:[0,2],uses:1,using:2,using_python_evtx:3,utf:[0,1],util:1,valu:[0,1,3],vari:0,variabl:1,verbos:1,veri:[0,1,2],version:[2,3],virustot:0,wai:0,walk:1,warn:1,week:0,welcom:3,well:0,what:[1,2],wheel:0,where:3,whether:2,which:[1,3],williballenthin:3,window:[0,2],wish:[0,2],within:[1,2],without:0,word:[1,2],work:0,workstationnam:3,worri:1,wors:0,would:3,write:[0,1],write_csv_dict:1,write_csv_list:1,writehead:1,writer:1,writerow:1,written:1,yarp:2,yarp_bas:2,yarp_ntus:2,yield:[1,2,3],you:[0,1,3],your:[0,1]},titles:["The Python Forensics Handbook","Section 1 - Essential Scripts","Section 2 - Registry Parsing","Section 3 - Windows Event Log Parsing","Section 6 - Sqlite & MacOS/Mobile/Browsers"],titleterms:{The:0,Using:3,api:0,argpars:1,binari:2,browser:[0,4],call:0,configur:[1,4],creat:2,csv:1,data:[0,3],develop:0,dfir:0,dictionari:1,directori:1,docstr:[1,2,3],element:0,encod:1,essenti:[0,1],event:[0,3],evtx:3,exampl:1,file:1,filter:3,forens:0,guid:0,handbook:0,hive:[0,2],imag:0,indic:[0,1,2,3,4],iter:3,json:0,list:[1,4],log:[0,1,3],maco:[0,4],mobil:[0,4],open:[0,1,2,3,4],order:1,over:3,pars:[2,3],parser:2,proper:1,python:[0,3],read:2,record:3,recurs:1,refer:[1,2,3],registri:[0,2],script:[0,1],section:[0,1,2,3,4],specif:2,sqlite:[0,4],string:2,tabl:[0,1,2,3,4],text:0,valu:2,window:3,within:3,xml:3,yarp:0}}) \ No newline at end of file diff --git a/section1.html b/section1.html index 0aff9f3..ef6249e 100644 --- a/section1.html +++ b/section1.html @@ -7,7 +7,7 @@ - Section 1 - Essential Scripts — Python Forensics Handbook 20201015 documentation + Section 1 - Essential Scripts — Python Forensics Handbook 0.1.0 documentation @@ -100,27 +100,27 @@

Table of Contents:

-
-

Section 1.2 - Logging Example

+
+

Section 1.2 - Logging Example

Example for writing logging information to the console and a log file.

Example Usage:

@@ -329,15 +329,15 @@ critical messages to the console in STDERR.

Docstring References

-
-setup_logging()
+
+setup_logging()

Function to setup logging configuration and test it.

-
-

Section 1.3 - Open Files

+
+

Section 1.3 - Open Files

Example for reading data from encoded text files.

Demonstrates how to handle setting the proper encoding for UTF-8, UTF-16-LE, and UTF-16-BE with the ability to easily @@ -383,8 +383,8 @@ common text file encodings. Feel free to build and share on this.

Docstring References

-
-open_file(input_file)
+
+open_file(input_file)

Opens an encoded text file and prints the contents

Parameters
@@ -395,8 +395,8 @@ common text file encodings. Feel free to build and share on this.

-
-

Section 1.4 - CSV Example

+
+

Section 1.4 - CSV Example

Example for writing datasets into CSV files.

Demonstrates source datasets comprised of lists of dictionaries and lists of lists as separate functions. Example data is @@ -480,11 +480,10 @@ columns to the CSV.

# Write only provided headers, ignore others csvfile = csv.writer(open_file) for count, entry in enumerate(data): - if count == 0: + if count == 0 and headers: # If headers are defined, write them, otherwise # continue as they will be written anyways - if headers: - csvfile.writerow(headers) + csvfile.writerow(headers) csvfile.writerow(entry)
@@ -492,8 +491,8 @@ columns to the CSV.

Docstring References

-
-write_csv_dicts(outfile, data, headers=None)
+
+write_csv_dicts(outfile, data, headers=None)

Writes a list of dictionaries to a CSV file.

Parameters
@@ -508,8 +507,8 @@ first dictionary in the data list.

-
-write_csv_lists(outfile, data, headers=None)
+
+write_csv_lists(outfile, data, headers=None)

Writes a list of lists to a CSV file.

Parameters
@@ -525,8 +524,8 @@ first list in the data list.

-
-

Section 1.5 - Directory Recursion

+
+

Section 1.5 - Directory Recursion

File recursion example.

Demonstration of iterating through a directory to interact with files.

@@ -583,8 +582,8 @@ counting the number of files, subdirectories, and files ending in
-
-list_directory(path)
+
+list_directory(path)

List all file and folder entries in path.

@@ -621,7 +620,7 @@ counting the number of files, subdirectories, and files ending in

- © Copyright 2019, Chapin Bryce + © Copyright 2020, Chapin Bryce

diff --git a/section2.html b/section2.html index c37d842..7cdd205 100644 --- a/section2.html +++ b/section2.html @@ -7,7 +7,7 @@ - Section 2 - Registry Parsing — Python Forensics Handbook 20201015 documentation + Section 2 - Registry Parsing — Python Forensics Handbook 0.1.0 documentation @@ -101,12 +101,12 @@
  • Section 1 - Essential Scripts
  • Section 2 - Registry Parsing
      -
    • Section 2.1 - Opening a Hive
        +
      • Section 2.1 - Opening a Hive
      • -
      • Section 2.2 - Parsing Hive Values
          +
        • Section 2.2 - Parsing Hive Values
          • Creating a Hive Specific Parser
          • Reading Hive String Values
          • Reading Hive Binary Values
          • @@ -187,8 +187,8 @@

            Section 2 - Registry Parsing

            -
            -

            Section 2.1 - Opening a Hive

            +
            +

            Section 2.1 - Opening a Hive

            Using the yarp library to open Windows registry hives using a class structure that is very portable and flexible.

            Example Usage:

            @@ -251,13 +251,13 @@ of the primary hive and attempted recovery of the transaction logs.

            Docstring References

            -
            -class RegistryBase(reg_file)
            +
            +class RegistryBase(reg_file)

            Base class containing common registry parsing code. Will open a hive and attempt recovery using available transaction logs

            -
            -close()
            +
            +close()

            Properly close a hive.

            @@ -265,8 +265,8 @@ and attempt recovery using available transaction logs

            -
            -

            Section 2.2 - Parsing Hive Values

            +
            +

            Section 2.2 - Parsing Hive Values

            Using the yarp library to parse NTUSER.DAT Windows registry hives using a class structure that is very portable and flexible. Parses the MountPoints2 and TrustRecords keys for with string and binary values.

            @@ -352,18 +352,18 @@ to be displayed.

            Docstring References

            -
            -class NTUSER(reg_path)
            +
            +class NTUSER(reg_path)

            Class to handle the parsing of the NTUSER.DAT hive.

            -
            -parse_mountpoints2()
            +
            +parse_mountpoints2()

            Demonstration of parsing values from a key by path.

            -
            -parse_office_versions()
            +
            +parse_office_versions()

            Get Office versions within an open Registry hive.

            Yields
            @@ -373,8 +373,8 @@ to be displayed.

            -
            -parse_trustrecords()
            +
            +parse_trustrecords()

            Demonstration of parsing binary values within a key.

            @@ -413,7 +413,7 @@ to be displayed.

            - © Copyright 2019, Chapin Bryce + © Copyright 2020, Chapin Bryce

            diff --git a/section3.html b/section3.html index c9ef769..780acfb 100644 --- a/section3.html +++ b/section3.html @@ -7,7 +7,7 @@ - Section 3 - Windows Event Log Parsing — Python Forensics Handbook 20201015 documentation + Section 3 - Windows Event Log Parsing — Python Forensics Handbook 0.1.0 documentation @@ -102,15 +102,13 @@
          • Section 1 - Essential Scripts
          • Section 2 - Registry Parsing
          • Section 3 - Windows Event Log Parsing
              -
            • Section 3.1 - Opening an Event Log
            • @@ -184,9 +182,9 @@

              Section 3 - Windows Event Log Parsing

              -
              -

              Section 3.1 - Opening an Event Log

              -

              Example for opening EVTX files.

              +
              +

              Section 3.1 - Using python-evtx

              +

              Example for opening EVTX files, iterating over events, and filtering events.

              Demonstrates how to open an EVTX file and get basic details about the event log. This section makes use of python-evtx, a python library for reading event log files. To install, run pip install python-evtx.

              @@ -194,7 +192,7 @@ files. To install, run $ python open_evtx.py System.evtx

              +

              $ python using_python_evtx.py System.evtx

              References:

                @@ -272,7 +270,7 @@ object that you can interact with.

              Filtering records within events logs

              -

              Now that we have get_events(), we can begin to perform operations on +

              Now that we have get_events(), we can begin to perform operations on the newly accessible data. In this function, we extract information from the LXML object, and use that to filter results based on Event ID and other fields within the results. You can easily extend this to support other fields, @@ -334,8 +332,8 @@ then calculating the session durations

              Docstring References

              -
              -filter_events_json(event_data, event_ids, fields=None)
              +
              +filter_events_json(event_data, event_ids, fields=None)

              Provide events where the event id is found within the provided list of event ids. If found, it will return a JSON formatted object per event.

              If a list of fields are provided, it will filter the resulting JSON event @@ -344,7 +342,7 @@ object to contain only those fields.

              Parameters
              • event_data (genertor) – Iterable containing event data as XML. Preferably -the result of the get_events() method.

              • +the result of the get_events() method.

              • event_ids (list) – A list of event identifiers. Each element should be a string value, even though the identifier is an integer.

              • fields (list) – Collection of fields from the XML data to include in the @@ -371,8 +369,8 @@ JSON output. Only supports top-level fields.

              -
              -get_events(input_file, parse_xml=False)
              +
              +get_events(input_file, parse_xml=False)

              Opens a Windows Event Log and returns XML information from the event record.

              @@ -394,8 +392,8 @@ the event record.

              -
              -open_evtx(input_file)
              +
              +open_evtx(input_file)

              Opens a Windows Event Log and displays common log parameters.

              Parameters
              @@ -415,12 +413,6 @@ the event record.

              -
              -

              Section 3.2 - Iterate over events

              -
              -
              -

              Section 3.3 - Filter event data

              -

              Indices and tables