<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Praktikum Archive - Maximilian Krieg</title>
	<atom:link href="https://maximiliankrieg.de/tag/praktikum/feed/" rel="self" type="application/rss+xml" />
	<link>https://maximiliankrieg.de/tag/praktikum/</link>
	<description>Wissen, Technik &#38; Erfahrungen</description>
	<lastBuildDate>Sun, 13 Sep 2026 20:47:17 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.1</generator>

<image>
	<url>https://maximiliankrieg.de/wp-content/uploads/2026/05/cropped-20260524_logo_2_512-2-32x32.png</url>
	<title>Praktikum Archive - Maximilian Krieg</title>
	<link>https://maximiliankrieg.de/tag/praktikum/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Computer Forensik (Praktikum 4)</title>
		<link>https://maximiliankrieg.de/2015/07/computer-forensik-praktikum-4/</link>
					<comments>https://maximiliankrieg.de/2015/07/computer-forensik-praktikum-4/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Sat, 11 Jul 2015 17:50:00 +0000</pubDate>
				<category><![CDATA[Computer Forensik]]></category>
		<category><![CDATA[1. Semester (M.Sc.)]]></category>
		<category><![CDATA[Master of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2859</guid>

					<description><![CDATA[<p>Im vierten Praktikum üben wir uns an der Analyse von NTFS-Dateisystemen und der Untersuchung der Windows-Registry. Skript-Anfang Praktikum 4 &#8211; Seite 1 Skript-Ende Praktikum 4 &#8211; Seite 1 NTFS-Analyse Sie untersuchen hierfür das in Praktikum 2 erstellte Image partition_1.dd. Bestätigen Sie zunächst die Unverändertheit der Partition. Wir bestimmen die Unverändertheit der Partition, indem wir die [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/07/computer-forensik-praktikum-4/">Computer Forensik (Praktikum 4)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Im vierten Praktikum üben wir uns an der Analyse von NTFS-Dateisystemen und der Untersuchung der Windows-Registry.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>Praktikum 4 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>Praktikum 4 &#8211; Seite 1</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">NTFS-Analyse</h3>



<p class="wp-block-paragraph">Sie untersuchen hierfür das in Praktikum 2 erstellte Image partition_1.dd. Bestätigen Sie zunächst die Unverändertheit der Partition.</p>



<p class="wp-block-paragraph">Wir bestimmen die Unverändertheit der Partition, indem wir die Hashsumme berechnen und mit unseren Notizen abgleichen.</p>



<pre class="wp-block-code"><code>$ sha256sum partition_1.dd 
cc224419f690065a653efa9cb58dbf546b72e7db752fe71229bfb4d11dd8e685  partition_1.dd</code></pre>



<p class="wp-block-paragraph">Die Hashsummen stimmen überein. An partition_1.dd ist somit keine Veränderung vorgenommen worden.</p>



<p class="wp-block-paragraph">Schreiben Sie anschließend den ersten Block der Partition nach partition_1_boot.dd und vermerken Sie dessen Hashwert.</p>



<pre class="wp-block-code"><code>$ dd if=partition_1.dd of=partition_1_boot.dd bs=512 count=1
1+0 Datensätze ein
1+0 Datensätze aus
512 Bytes (512 B) kopiert, 4,2755e-05 s, 12,0 MB/s

$ sha256sum partition_1_boot.dd 
3465621fa66dfbebd42a10e53473eeee45ed10916de4980dc4799c2b08c043f6  partition_1_boot.dd</code></pre>



<p class="wp-block-paragraph">Da wir in den folgenden Aufgaben den Hexdump benötigen, geben wir ihn an dieser Stelle gleich vollständig aus.</p>



<pre class="wp-block-code"><code>$ xxd partition_1_boot.dd 
0000000: eb52 904e 5446 5320 2020 2000 0208 0000  .R.NTFS    .....
0000010: 0000 0000 00f8 0000 3f00 ff00 0008 0000  ........?.......
0000020: 0000 0000 8000 8000 ff17 9c00 0000 0000  ................
0000030: 0000 0400 0000 0000 0200 0000 0000 0000  ................
0000040: f600 0000 0100 0000 4e70 500e 9b50 0e5c  ........NpP..P.\
0000050: 0000 0000 fa33 c08e d0bc 007c fbb8 c007  .....3.....|....
0000060: 8ed8 e816 00b8 000d 8ec0 33db c606 0e00  ..........3.....
0000070: 10e8 5300 6800 0d68 6a02 cb8a 1624 00b4  ..S.h..hj....$..
0000080: 08cd 1373 05b9 ffff 8af1 660f b6c6 4066  ...s......f...@f
0000090: 0fb6 d180 e23f f7e2 86cd c0ed 0641 660f  .....?.......Af.
00000a0: b7c9 66f7 e166 a320 00c3 b441 bbaa 558a  ..f..f. ...A..U.
00000b0: 1624 00cd 1372 0f81 fb55 aa75 09f6 c101  .$...r...U.u....
00000c0: 7404 fe06 1400 c366 601e 0666 a110 0066  t......f`..f...f
00000d0: 0306 1c00 663b 0620 000f 823a 001e 666a  ....f;. ...:..fj
00000e0: 0066 5006 5366 6810 0001 0080 3e14 0000  .fP.Sfh.....&gt;...
00000f0: 0f85 0c00 e8b3 ff80 3e14 0000 0f84 6100  ........&gt;.....a.
0000100: b442 8a16 2400 161f 8bf4 cd13 6658 5b07  .B..$.......fX&#91;.
0000110: 6658 6658 1feb 2d66 33d2 660f b70e 1800  fXfX..-f3.f.....
0000120: 66f7 f1fe c28a ca66 8bd0 66c1 ea10 f736  f......f..f....6
0000130: 1a00 86d6 8a16 2400 8ae8 c0e4 060a ccb8  ......$.........
0000140: 0102 cd13 0f82 1900 8cc0 0520 008e c066  ........... ...f
0000150: ff06 1000 ff0e 0e00 0f85 6fff 071f 6661  ..........o...fa
0000160: c3a0 f801 e809 00a0 fb01 e803 00fb ebfe  ................
0000170: b401 8bf0 ac3c 0074 09b4 0ebb 0700 cd10  .....&lt;.t........
0000180: ebf2 c30d 0a41 2064 6973 6b20 7265 6164  .....A disk read
0000190: 2065 7272 6f72 206f 6363 7572 7265 6400   error occurred.
00001a0: 0d0a 4e54 4c44 5220 6973 206d 6973 7369  ..NTLDR is missi
00001b0: 6e67 000d 0a4e 544c 4452 2069 7320 636f  ng...NTLDR is co
00001c0: 6d70 7265 7373 6564 000d 0a50 7265 7373  mpressed...Press
00001d0: 2043 7472 6c2b 416c 742b 4465 6c20 746f   Ctrl+Alt+Del to
00001e0: 2072 6573 7461 7274 0d0a 0000 0000 0000   restart........
00001f0: 0000 0000 0000 0000 83a0 b3c9 0000 55aa  ..............U.</code></pre>



<p class="wp-block-paragraph">Ermitteln Sie Sektor- und Clustergröße.</p>



<ul class="wp-block-list">
<li>Sektorgröße (<em>Offset 11-12</em>): 0002 = 0x0200 = 512 Byte pro Sektor</li>



<li>Clustergröße (<em>Offset: 13</em>): 08 = 0x08 = 8 Sektoren pro Cluster</li>
</ul>



<p class="wp-block-paragraph">Wir verfizieren unsere Berechnung durch&nbsp;<code>fsstat</code>.</p>



<pre class="wp-block-code"><code>$ fsstat partition_1.dd

&#91;...]

METADATA INFORMATION
--------------------------------------------
First Cluster of MFT: 262144
First Cluster of MFT Mirror: 2
Size of MFT Entries: 1024 bytes
Size of Index Records: 4096 bytes
Range: 0 - 16832
Root Directory: 5

&#91;...]</code></pre>



<p class="wp-block-paragraph">Wie ist die Größe des Dateisystems in Byte?</p>



<ul class="wp-block-list">
<li>Dateisystemgröße (<em>Offset 40-47</em>): ff17 9c00 0000 0000 = 0x9c17ff = 10.229.759 HDD-Blöcke</li>



<li>10.229.759 HDD-Blöcke = 5.237.636.608 Byte</li>



<li>5.237.636.608 Byte ≈ 5.114.879 KiB ≈ 4.995 MiB ≈ 4,9 GiB</li>
</ul>



<p class="wp-block-paragraph">Wir verfizieren unsere Berechnung durch&nbsp;<code>fsstat</code>.</p>



<pre class="wp-block-code"><code>$ fsstat partition_1.dd

&#91;...]

CONTENT INFORMATION
--------------------------------------------
Sector Size: 512
Cluster Size: 4096
Total Cluster Range: 0 - 1278718
Total Sector Range: 0 - 10229758

&#91;...]</code></pre>



<p class="wp-block-paragraph">In welchem Cluster liegt der Beginn der MFT?</p>



<ul class="wp-block-list">
<li>Clusterbeginn (<em>Offset 48-55</em>): 0000 0400 0000 0000 = 0x40000 = 262.144</li>
</ul>



<p class="wp-block-paragraph">Wir verifizieren unsere Berechnung durch&nbsp;<code>fsstat</code>.</p>



<pre class="wp-block-code"><code>$ fsstat partition_1.dd

&#91;...]

METADATA INFORMATION
--------------------------------------------
First Cluster of MFT: 262144
First Cluster of MFT Mirror: 2
Size of MFT Entries: 1024 bytes
Size of Index Records: 4096 bytes
Range: 0 - 16832
Root Directory: 5

&#91;...]</code></pre>



<p class="wp-block-paragraph">Wie lässt sich mittels&nbsp;<code>dd</code>&nbsp;ein 10 Byte langes Passwort in den letzten 10 Byte des MFT-Eintrags der $MFT verstecken? Wie lautet dieser Befehl fur $MFTMirr?</p>



<p class="wp-block-paragraph">Zunächst schauen wir uns die letzten Bytes des MFT-Eintrags an, um später die Ergebnisse nachvollziehen zu können.</p>



<pre class="wp-block-code"><code>$ xxd  -skip 1073741824 -l 1024 partition_1.dd 

&#91;...]

400003e0:0000 0000 0000 0000 0000 0000 0000 0000  ................
400003f0:0000 0000 0000 0000 0000 0000 0000 6600  ..............f.</code></pre>



<p class="wp-block-paragraph">Die letzten beiden Bytes des MFT-Eintrags sind bereits belegt. Diese dürfen wir nicht verändern, daher überspringen wir nun 1073742836 Bytes (<em>262144*4096+1012</em>).</p>



<pre class="wp-block-code"><code>$ dd if=passwort.txt of=partition_1.dd seek=1073742836 bs=1 count=10 conv=notrunc
10+0 Datensätze ein
10+0 Datensätze aus
10 Bytes (10 B) kopiert, 6,3537e-05 s, 157 kB/s</code></pre>



<p class="wp-block-paragraph">Wir überprüfen nun unsere Arbeit, indem wir uns den Hexdump am Ende nochmals anschauen.</p>



<pre class="wp-block-code"><code>$ xxd  -skip 1073741824 -l 1024 partition_1.dd 

&#91;...]

400003e0:0000 0000 0000 0000 0000 0000 0000 0000  ................
400003f0:0000 0000 3150 4153 5357 4f52 4431 6600  ....1PASSWORD1f.</code></pre>



<p class="wp-block-paragraph">Das Kopieren war also erfolgreich. Für $MFTMirr müssten wir den Offset lediglich weitere 1024 Byte weiterschieben, um die Änderung dort ebenfalls vorzunehmen.</p>



<p class="wp-block-paragraph">Wie lassen sich die ersten 100 MFT-Einträge herausschreiben?</p>



<p class="wp-block-paragraph">Hierfür müssen wir zunächst bestimmen, wie groß ein MFT-Eintrag ist. Die Information dazu steht am Offset 64 im MFT.</p>



<pre class="wp-block-code"><code>$ xxd -skip 64 -l 1 partition_1.dd 
0000040: f6</code></pre>



<p class="wp-block-paragraph">Als Dezimalzahl würde dies 246 bedeuten. Das macht auf den ersten Blick keinen großen Sinn. Nach einer kurzen Recherche hat sich ergeben, dass diese Zahl vorzeichenbehafted (<em>signed</em>) ist und daher erstmal umgewandelt werden muss. Hierfür invertieren wir alle Bits und addieren 1 darauf. Danach verwenden wir das Resultat als Exponent für 2<sup>n</sup>, um die Eintragsgröße zu ermitteln.</p>



<ol class="wp-block-list">
<li>11110110 → 00001001</li>



<li>00001001 + 1 = 00001010</li>



<li>00001010 = 10</li>



<li>2<sup>10</sup> = 1024 Byte</li>
</ol>



<p class="wp-block-paragraph">Wir wissen nun, dass ein Record 1024 Byte groß sein muss. Für&nbsp;<code>dd</code>&nbsp;bedeutet dies, dass wir 102400 Byte herausschreiben müssen für 100 Records.</p>



<pre class="wp-block-code"><code># icat partition_1.dd 0 | dd of=einhundert.dd bs=1024 count=100
100+0 Datensätze ein
100+0 Datensätze aus
102400 Bytes (102 kB) kopiert, 0,00724432 s, 14,1 MB/s</code></pre>



<p class="wp-block-paragraph">Was ist ein ADS?</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">NTFS ermöglicht sogenannte Alternate Data Streams (ADS). Mit dieser Funktion können Daten vom Benutzer unsichtbar fest an eine Datei gebunden gespeichert werden. An jede Datei können beliebig viele andere Dateien angehängt werden, die nicht sichtbar sind, aber – solange der Vorgang innerhalb von NTFS-Laufwerken stattfindet – zusammen mit der Datei verschoben und kopiert werden. Der Zugriff auf die versteckten Dateifragmente findet mit einem Doppelpunkt statt: beispiel.txt:meinedatei.txt kennzeichnet einen zu der Datei beispiel.txt gehörigen Datenstrom namens meinedatei.txt. Neben Dateien können auch Ordner zusätzliche Datenströme enthalten..https://de.wikipedia.org/wiki/Alternativer_Datenstrom</p>
</blockquote>



<p class="wp-block-paragraph">Wie lasst sich unter Zuhilfenahme des Sleuthkit herausfinden, ob eine Datei einen ADS verwendet?</p>



<p class="wp-block-paragraph">Mit&nbsp;<code>fls</code>&nbsp;können wir uns alle Dateien auf dem Dateisystem anzeigen lassen. Ein ADS ist am Doppelpunkt zwischen den Dateinamen zu erkennen. Beispielhaft suchen wir nun nach einer Datei, die auf g endet und einen ADS besitzt.</p>



<pre class="wp-block-code"><code>$ fls -f ntfs -r partition_1.dd | grep g:
+ r/r 7821-128-5:	Edoofy.jpeg:PasswortSteganos</code></pre>



<p class="wp-block-paragraph">Wollen wir uns den Inhalt des ADS ansehen, müssen wir diesen über die Metadata Address ansprechen. Die 7821 steht für die Inode, die 128 für den Attribute Type und die 5 für eine einzigartige ID.</p>



<pre class="wp-block-code"><code>$ icat -f ntfs partition_1.dd 7821-128-5
"W)5S_DXitLN" </code></pre>



<p class="wp-block-paragraph">Welche Informationen über die Datei mit der Inode-Nummer 3727 können Sie aus der MFT gewinnen?</p>



<pre class="wp-block-code"><code>$ icat partition_1.dd 0 | xxd -l 1024 -skip 3816448
03a3c00: 4649 4c45 3000 0300 ada3 a002 0000 0000  FILE0...........
03a3c10: 0300 0200 3800 0100 2002 0000 0004 0000  ....8... .......
03a3c20: 0000 0000 0000 0000 0500 0000 8f0e 0000  ................
03a3c30: 0200 0000 0000 0000 1000 0000 6000 0000  ............`...
03a3c40: 0000 0000 0000 0000 4800 0000 1800 0000  ........H.......
03a3c50: 06f7 5f0e 5a4b cf01 00fd d9ba f507 c901  .._.ZK..........
03a3c60: 06f7 5f0e 5a4b cf01 06f7 5f0e 5a4b cf01  .._.ZK...._.ZK..
03a3c70: 2000 0000 0000 0000 0000 0000 0000 0000   ...............
03a3c80: 0000 0000 9901 0000 0000 0000 0000 0000  ................
03a3c90: 0000 0000 0000 0000 3000 0000 7800 0000  ........0...x...
03a3ca0: 0000 0000 0000 0300 5a00 0000 1800 0100  ........Z.......
03a3cb0: 8e0e 0000 0000 0300 06f7 5f0e 5a4b cf01  .........._.ZK..
03a3cc0: 06f7 5f0e 5a4b cf01 06f7 5f0e 5a4b cf01  .._.ZK...._.ZK..
03a3cd0: 06f7 5f0e 5a4b cf01 0000 0000 0000 0000  .._.ZK..........
03a3ce0: 0000 0000 0000 0000 2000 0000 0000 0000  ........ .......
03a3cf0: 0c02 5700 4900 4e00 4400 4f00 5700 7e00  ..W.I.N.D.O.W.~.
03a3d00: 3100 2e00 4a00 5000 4700 6900 7200 6100  1...J.P.G.i.r.a.
03a3d10: 3000 0000 c000 0000 0000 0000 0000 0200  0...............
03a3d20: a600 0000 1800 0100 8e0e 0000 0000 0300  ................
03a3d30: 06f7 5f0e 5a4b cf01 06f7 5f0e 5a4b cf01  .._.ZK...._.ZK..
03a3d40: 06f7 5f0e 5a4b cf01 06f7 5f0e 5a4b cf01  .._.ZK...._.ZK..
03a3d50: 0000 0000 0000 0000 0000 0000 0000 0000  ................
03a3d60: 2000 0000 0000 0000 3201 5700 6900 6e00   .......2.W.i.n.
03a3d70: 6400 6f00 7700 7300 2000 5800 5000 2000  d.o.w.s. .X.P. .
03a3d80: 5000 6900 7200 6100 7400 6500 6400 2000  P.i.r.a.t.e.d. .
03a3d90: 4500 6400 6900 7400 6900 6f00 6e00 2000  E.d.i.t.i.o.n. .
03a3da0: 2d00 2000 3400 3b00 3300 2000 5300 6300  -. .4.;.3. .S.c.
03a3db0: 7200 6500 6500 6e00 2000 4600 6f00 7200  r.e.e.n. .F.o.r.
03a3dc0: 6d00 6100 7400 2e00 6a00 7000 6700 0000  m.a.t...j.p.g...
03a3dd0: 8000 0000 4800 0000 0100 0000 0000 0400  ....H...........
03a3de0: 0000 0000 0000 0000 3000 0000 0000 0000  ........0.......
03a3df0: 4000 0000 0000 0000 0010 0300 0000 0200  @...............
03a3e00: 8603 0300 0000 0000 8603 0300 0000 0000  ................
03a3e10: 3131 f452 0200 0100 ffff ffff 8279 4711  11.R.........yG.
03a3e20: 0000 0000 0000 0000 0000 0000 0000 0000  ................
&#91;...]
03a3ff0: 0000 0000 0000 0000 0000 0000 0000 0200  ................</code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Offset</th><th>Zweck</th><th>Auswertung</th></tr></thead><tbody><tr><td>0-3</td><td>Signature: either FILE or BAAD, which denotes a bad entry</td><td>4649 4c45 = 0x454c4946 =&#8220;FILE&#8220;</td></tr><tr><td>4-5</td><td>Offset to fixup array</td><td>3000 = 0x0030 = Fixup array beginnt ab Byte 0x30 (<em>=0400</em>)</td></tr><tr><td>6-7</td><td>Number of entries in fixup array</td><td>0300 = 0x0003 = 3 Einträge</td></tr><tr><td>8-15</td><td>$LogFile sequence number</td><td>ada3 a002 0000 0000 = 0x02a0a3ad = Sequenznummer 44082093</td></tr><tr><td>16-17</td><td>Sequence number</td><td>0300 = 0x0003 = Sequemznummer 3</td></tr><tr><td>18-19</td><td>Link count</td><td>0200 = 0x0002 = 2 Links</td></tr><tr><td>20-21</td><td>Offset to first attribute</td><td>3800 = 0x0038 = 56</td></tr><tr><td>22-23</td><td>Flags</td><td>0100 = 0x0001 = 0x01 (<em>0x01: record in use, 0x02 directory</em>)</td></tr><tr><td>24-27</td><td>Used size of MFT entry</td><td>2002 0000 = 0x0220 = 533 (<em>0x</em><em>03a3c00 + 0x220 = 0x3a3e20</em>)</td></tr><tr><td>28-31</td><td>Allocated size of MFT entry</td><td>0004 0000 = 0x0400 = 1024</td></tr><tr><td>32-39</td><td>File reference to base record</td><td>0000 0000 0000 0000 = 0x0= 0</td></tr><tr><td>40-41</td><td>Next attribute identifier</td><td>0500 = 0x0005 = 5</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Welche Bedeutung hat das Resident-Flag?</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">When a file&#8217;s attributes can fit within the MFT file record, they are called resident attributes. For example, information such as filename and time stamp are always included in the MFT file record. When all of the information for a file is too large to fit in the MFT file record, some of its attributes are nonresident. The nonresident attributes are allocated one or more clusters of disk space elsewhere in the volume.http://ntfs.com/ntfs-files-types.htm</p>
</blockquote>



<p class="wp-block-paragraph">Wenn die Attribute einer Datei kleiner als 700KiB sind, werden sie im MFT Record abgelegt. Sollten sie nicht mehr in den Record passen, werden sie als nonresident gekennzeichnet und werden anderweitig abgelegt. Zugriffe auf solche Attribute erzeugen folglich Performanzverluste.</p>



<p class="wp-block-paragraph">Welche Bedeutung hat das Attribut $LOGGED_UTILITY_STREAM?</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The $LOGGED_UTILITY_STREAM Attribute: Type 0x100 &#8212; layout and treatment is similar to $DATA attribute. Every EFS encrypted file will have this attribute to store the file encryption key used during encryption/de.http://www.c-jump.com/bcc/t256t/Week04NtfsReview/W01_0500_the_loggedutilitys.htm</p>
</blockquote>



<p class="wp-block-paragraph">Dieses Attribut wird scheinbar von einem Encrypting File System (EFS) genutzt, um darin die verwendeten Schlüssel während der Verschlüsselung abzulegen. Folglich besitzt jede verschlüsselte Datei dieses Attribut.</p>



<p class="wp-block-paragraph">Ist Cluster 45904 alloziert?</p>



<p class="wp-block-paragraph">Die Informationen zu den allozierten Clustern können wir $Bitmap entnehmen. Dafür brauchen wir aber noch etwas mehr Hintergrundwissen.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">This file keeps track of all of the used and unused clusters on an NTFS volume. Each bit in the Bitmap represents 1 cluster, if that bit is “1” then the cluster is in use. For example if a byte in the BitMap is “F”, this means that 4 clusters are in use as F (hex) = 1111 in binary.https://whereismydata.wordpress.com/2009/06/01/forensics-what-is-the-bitmap/</p>
</blockquote>



<p class="wp-block-paragraph">Dank dieser Information wissen wir nun, dass jedes Bit ein Cluster repräsentiert. In der Binärdarstellung eines Bytes steht ganz rechts das kleinste Cluster und links das größte Cluster.</p>



<pre class="wp-block-code"><code>$ icat partition_1.dd 6 | xxd -skip 5738 -l 1
000166a: fe</code></pre>



<p class="wp-block-paragraph">0xfe entspricht wird binär als 11111110 dargestellt. Gemäß unserer Definition steht rechts das kleinste Cluster. Cluster 45904 ist daher nicht alloziert.</p>



<h3 class="wp-block-heading">Anwendungsforensik</h3>



<p class="wp-block-paragraph">In dieser Aufgabe sollen Sie ein paar Fragen zur Windows Registry beantworten. Bitte verwenden Sie im Folgenden partition_1.dd.</p>



<p class="wp-block-paragraph">Welche Anwendungen werden beim Start des Systems aufgerufen?</p>



<p class="wp-block-paragraph">Microsoft beschreibt, dass Informationen zum Autostart an den folgenden Stellen in der Registry gefunden werden kann.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">List of common autorun locations: HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components HKLM\SOFTWARE\Wow6432Node\Classes\*\ShellEx\ContextMenuHandlers HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects HKLM\System\CurrentControlSet\Services HKLM\System\CurrentControlSet\Control\Terminal Server HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce.https://support.microsoft.com/de-de/kb/2647300/de</p>
</blockquote>



<p class="wp-block-paragraph">Mithilfe von&nbsp;<code>regripper</code>&nbsp;werten wir die Registry aus.</p>



<pre class="wp-block-code"><code>user_run v.20130329

(NTUSER.DAT) &#91;Autostart] Get autostart key contents from NTUSER.DAT hive

  Software\Microsoft\Windows\CurrentVersion\Run
    CTFMON.EXE: C:\WINDOWS\system32\ctfmon.exe
    Skype: "C:\Program Files\Skype\Phone\Skype.exe" /minimized /regrun
    SSS15 Browser Monitor: "C:\Program Files\Steganos Privacy Suite 15\SteganosBrowserMonitor.exe"
</code></pre>



<pre class="wp-block-code"><code>soft_run v.20130329
(Software) &#91;Autostart] Get autostart key contents from Software hive

  Microsoft\Windows\CurrentVersion\Run
  LastWrite Time Tue Apr  1 01:24:26 2014 (UTC)
    DWQueuedReporting - "C:\PROGRA~1\COMMON~1\MICROS~1\DW\dwtrig20.exe" -t
    BluetoothAuthenticationAgent - rundll32.exe bthprops.cpl,,BluetoothAuthenticationAgent
    Steganos HotKeys - "C:\Program Files\Steganos Privacy Suite 15\SteganosHotKeyService.exe"
    PHIME2002ASync - C:\WINDOWS\system32\IME\TINTLGNT\TINTSETP.EXE /SYNC
    CoolSwitch - C:\WINDOWS\system32\taskswitch.exe
    PHIME2002A - C:\WINDOWS\system32\IME\TINTLGNT\TINTSETP.EXE /IMEName
    SSS15 Chrome Autofill Relay - "C:\Program Files\Steganos Privacy Suite 15\passwordmanagercom.exe"
    SSS15 File Redirection Starter - "C:\Program Files\Steganos Privacy Suite 15\fredirstarter.exe"
    IMJPMIG8.1 - "C:\WINDOWS\IME\imjp8_1\IMJPMIG.EXE" /Spoil /RemAdvDef /Migration32</code></pre>



<p class="wp-block-paragraph">Welche Dateien wurden zuletzt verwendet?</p>



<pre class="wp-block-code"><code>recentdocs v.20100405
(NTUSER.DAT) Gets contents of user's RecentDocs key

  RecentDocs
  **All values printed in MRUList\MRUListEx order.
  Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
  LastWrite Time Sun Mar 30 17:38:32 2014 (UTC)
    1 = Startup
    0 = Microsoft .NET Framework v4 - Slow Windows XP Boot Fix.vbs
    3 = My Pictures
    9 = 4.jpeg
    8 = 3.jpeg
    7 = 2.jpeg
    5 = index.jpeg
    6 = Edoofy.jpeg
    4 = images.jpeg
    2 = imgres.htm

  Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.htm
  LastWrite Time Sun Mar 30 17:08:51 2014 (UTC)
  MRUListEx = 0
    0 = imgres.htm

  Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.jpeg
  LastWrite Time Sun Mar 30 17:15:37 2014 (UTC)
  MRUListEx = 5,4,1,3,2,0
    5 = 4.jpeg
    4 = 3.jpeg
    1 = 2.jpeg
    3 = index.jpeg
    2 = Edoofy.jpeg
    0 = images.jpeg

  Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.vbs
  LastWrite Time Tue Apr  1 02:58:37 2014 (UTC)
  MRUListEx = 0
    0 = Microsoft .NET Framework v4 - Slow Windows XP Boot Fix.vbs

  Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\Folder
  LastWrite Time Tue Apr  1 02:58:37 2014 (UTC)
  MRUListEx = 0,2
    0 = Startup
    2 = My Pictures</code></pre>



<p class="wp-block-paragraph">Welche Anwendungen wurden zuletzt über den Common-Dialog aufgerufen?</p>



<pre class="wp-block-code"><code>comdlg32 v.20121008

  Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32
  LastWrite Time Sun Mar 30 16:53:10 2014 (UTC)
  LastVisitedMRU
  LastWrite: Sun Mar 30 17:14:43 2014
    MRUList = bca
    b -&gt; EXE: firefox.exe
      -&gt; Last Dir: C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures
    c -&gt; EXE: Skype.exe
      -&gt; Last Dir: C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures
    a -&gt; EXE: IEXPLORE.EXE
      -&gt; Last Dir: C:\Documents and Settings\Owner\Local Settings\My Documents

  OpenSaveMRU\*
  LastWrite Time: Sun Mar 30 17:15:37 2014 Z
    MRUList = ihgefdcba
    i -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\4.jpeg
    h -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\3.jpeg
    g -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\2.jpeg
    e -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\index.jpeg
    f -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\Edoofy.jpeg
    d -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\images.jpeg
    c -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\imgres.htm
    b -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\SkypeSetup.exe
    a -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\Firefox Setup Stub 28.0.exe

  OpenSaveMRU\exe
  LastWrite Time: Sun Mar 30 16:54:29 2014 Z
    MRUList = ba
    b -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\SkypeSetup.exe
    a -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\Firefox Setup Stub 28.0.exe

  OpenSaveMRU\htm
  LastWrite Time: Sun Mar 30 17:08:51 2014 Z
    MRUList = a
    a -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\imgres.htm

  OpenSaveMRU\jpeg
  LastWrite Time: Sun Mar 30 17:15:37 2014 Z
    MRUList = fedbca
    f -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\4.jpeg
    e -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\3.jpeg
    d -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\2.jpeg
    b -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\index.jpeg
    c -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\Edoofy.jpeg
    a -&gt; C:\Documents and Settings\Owner\Local Settings\My Documents\My Pictures\images.jpeg</code></pre>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/07/computer-forensik-praktikum-4/">Computer Forensik (Praktikum 4)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/07/computer-forensik-praktikum-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Diskrete Strukturen (Praktikum 3)</title>
		<link>https://maximiliankrieg.de/2015/06/diskrete-strukturen-praktikum-3/</link>
					<comments>https://maximiliankrieg.de/2015/06/diskrete-strukturen-praktikum-3/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Mon, 29 Jun 2015 10:03:00 +0000</pubDate>
				<category><![CDATA[Diskrete Strukturen]]></category>
		<category><![CDATA[1. Semester (M.Sc.)]]></category>
		<category><![CDATA[Master of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2007</guid>

					<description><![CDATA[<p>Das dritte Praktikum baut auf den Erkenntnissen des zweiten Praktikums auf und behandelt nun die Erzeugung von Bahnen. Zur Validierung der Korrektheit gibt es in der zweiten Aufgabe Testparameter, die erreicht werden müssen. Der hier beschriebene Quellcode stellt nur den für die Abgabe präsentierten Code dar. Weitere Resultate und Funktionen sind im Original-Code zu finden. [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/06/diskrete-strukturen-praktikum-3/">Diskrete Strukturen (Praktikum 3)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Das dritte Praktikum baut auf den Erkenntnissen des zweiten Praktikums auf und behandelt nun die Erzeugung von Bahnen. Zur Validierung der Korrektheit gibt es in der zweiten Aufgabe Testparameter, die erreicht werden müssen. Der hier beschriebene Quellcode stellt nur den für die Abgabe präsentierten Code dar. Weitere Resultate und Funktionen sind im Original-Code zu finden.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>Praktikum 3 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>Praktikum 3 &#8211; Seite 2</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Erzeugung von Bahnen und Transversale</h3>



<p class="wp-block-paragraph">Schreiben Sie ein Programm, welches bei Eingabe einer Permutationsgruppe (über die Erzeuger) \(G=\left \langle \gamma_0,\cdots ,\gamma_{l-1} \right \rangle \leq S_n\) die Bahnen G\\X auf der Menge X der k-Teilmengen der n elementigen Menge {0, &#8230; , n &#8211; 1} berechnet. Das Programm soll für jede Bahn einen Repräsentanten angeben.</p>



<h4 class="wp-block-heading">Includes und Deklarationen</h4>



<pre class="wp-block-code"><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;math.h&gt;
#include &lt;assert.h&gt;
#include &lt;algorithm&gt;
using namespace std;
 
void multiply_subset_permutation(vector&lt;unsigned int&gt;&amp; vSubset, vector&lt;unsigned int&gt;&amp; vPermutation, vector&lt;unsigned int&gt;&amp; vResult);
bool inResult(vector&lt;unsigned int&gt;&amp; v1, vector&lt;unsigned int&gt;&amp; v2);
int binkoeff(int n, int k);
int kSubsetRevDoorRank(vector&lt;unsigned int&gt;&amp; vVec, int k);
vector&lt;unsigned int&gt; kSubsetRevDoorUnrank(int r, int k, int n);
void generate_orbits_new(vector&lt;vector&lt;unsigned int&gt; &gt;&amp; vErzeuger, int n, int k);
vector&lt;unsigned int&gt; bit_to_list(vector&lt;unsigned int&gt;&amp; vBitlist);
string output_list(vector&lt;unsigned int&gt;&amp; vVector, int iOffset);</code></pre>



<h4 class="wp-block-heading">Main()</h4>



<pre class="wp-block-code"><code>int main() {

     // Set 1
     vector&lt;vector&lt;unsigned int&gt; &gt; vErzeuger;
     static const int arr1&#91;] = { 0, 3, 4, 1, 2, 5 };
     static const int arr2&#91;] = { 3, 4, 0, 5, 1, 2 };
     vector&lt;unsigned int&gt; vTmp1(arr1, arr1 + sizeof(arr1) / sizeof(arr1&#91;0]));
     vector&lt;unsigned int&gt; vTmp2(arr2, arr2 + sizeof(arr2) / sizeof(arr2&#91;0]));
     vErzeuger.push_back(vTmp1);
     vErzeuger.push_back(vTmp2);
     generate_orbits_new(vErzeuger, 6, 3);

     // Set 2
     vector&lt;vector&lt;unsigned int&gt; &gt; vErzeuger;
     static const int arr1&#91;] = { 5, 4, 3, 2, 1, 0, 7, 6 };
     static const int arr2&#91;] = { 1, 0, 7, 6, 5, 4, 3, 2 };
     vector&lt;unsigned int&gt; vTmp1(arr1, arr1 + sizeof(arr1) / sizeof(arr1&#91;0]));
     vector&lt;unsigned int&gt; vTmp2(arr2, arr2 + sizeof(arr2) / sizeof(arr2&#91;0]));
     vErzeuger.push_back(vTmp1);
     vErzeuger.push_back(vTmp2);
     generate_orbits_new(vErzeuger, 8, 4); 
 
     // Set 3
     vector&lt;vector&lt;unsigned int&gt; &gt; vErzeuger;
     static const int arr1&#91;] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0 };
     static const int arr2&#91;] = { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
     vector&lt;unsigned int&gt; vTmp1(arr1, arr1 + sizeof(arr1) / sizeof(arr1&#91;0]));
     vector&lt;unsigned int&gt; vTmp2(arr2, arr2 + sizeof(arr2) / sizeof(arr2&#91;0]));
     vErzeuger.push_back(vTmp1);
     vErzeuger.push_back(vTmp2);
     generate_orbits_new(vErzeuger, 14, 5);

    // Set 4
    vector&lt;vector&lt;unsigned int&gt; &gt; vErzeuger;
    static const int arr1&#91;] = { 19, 0, 20, 1, 21, 2, 22, 3, 15, 4, 16, 5, 17, 6, 18, 7, 27, 8, 28, 9, 29, 10, 30, 11, 23, 12, 24, 13, 25, 14, 26, 31 };
    static const int arr2&#91;] = { 21, 9, 27, 0, 22, 10, 28, 3, 17, 13, 23, 4, 18, 14, 24, 15, 5, 25, 11, 16, 6, 26, 12, 19, 1, 29, 7, 20, 2, 30, 8, 31 };
    vector&lt;unsigned int&gt; vTmp1(arr1, arr1 + sizeof(arr1) / sizeof(arr1&#91;0]));
    vector&lt;unsigned int&gt; vTmp2(arr2, arr2 + sizeof(arr2) / sizeof(arr2&#91;0]));
    vErzeuger.push_back(vTmp1);
    vErzeuger.push_back(vTmp2);
    generate_orbits_new(vErzeuger, 31, 5);
   
    return 0;
}</code></pre>



<h4 class="wp-block-heading">Bahnerzeugung</h4>



<pre class="wp-block-code"><code>void generate_orbits_new(vector&lt;vector&lt;unsigned int&gt; &gt;&amp; vErzeuger, int n, int k) {
    vector&lt;vector&lt;vector&lt;unsigned int&gt; &gt; &gt; vOrbits;
 
    // Erzeugung der Menge
    cout &lt;&lt; "n: " &lt;&lt; n &lt;&lt; endl;
    cout &lt;&lt; "k: " &lt;&lt; k &lt;&lt; endl;
    cout &lt;&lt; "Subset size: " &lt;&lt; binkoeff(n, k) &lt;&lt; endl;
 
    // Erzeugung des Vergleichsarrays
    int iElements = binkoeff(n, k);
    vector&lt;bool&gt; isUsed(iElements, false);
 
    for (int i = 0; i &lt; iElements; i++) {
        // Ist die Teilmenge bereits genutzt?
        if (isUsed.at(i) == true)
            continue;
 
        // Noch nicht genutzt
        isUsed.at(i) == true;
 
        // Neue Bahn anlegen
        vector&lt;vector&lt;unsigned int&gt; &gt; vResult;
        vOrbits.push_back(vResult);
 
        // Schlange erzeugen
        vector&lt;vector&lt;unsigned int&gt; &gt; vSchlange;
        vector&lt;unsigned int&gt; vNoName = kSubsetRevDoorUnrank(i, n, k);
        vNoName = bit_to_list(vNoName);
        vSchlange.push_back(vNoName);

        // Laufe solange noch Elemente in der Schlange sind
        while (vSchlange.size() &gt; 0) {
 
            // Durchlaufe alle Erzeuger
            for (unsigned int j = 0; j &lt; vErzeuger.size(); j++) {
 
                // Temporärer Vektor
                vector&lt;unsigned int&gt; vTmp;
 
                multiply_subset_permutation(vSchlange.at(0), vErzeuger.at(j), vTmp);
                sort(vTmp.begin(), vTmp.end());
 
                // Neues Element?
                bool bNew = true;
 
                // Element schon in irgendeiner Bahn?
                for (unsigned int l = 0;
                        l &lt; vOrbits.at(vOrbits.size() - 1).size(); l++) {
                    if (inResult(vTmp, vOrbits.at(vOrbits.size() - 1).at(l))) { // Bereits bekannte Permutation?
                        bNew = false;
                        break;
                    }
                }
 
                if (bNew == true) { 
                    // Nicht bekannt -&gt; Hinzufuegen
                    vSchlange.push_back(vTmp);
                    vOrbits.at(vOrbits.size() - 1).push_back(vTmp);
                    
                    // "Benutzt" setzen --&gt; rank holen
                    int iPos = kSubsetRevDoorRank(vTmp, k);
                    isUsed.at(iPos) = true;
                }
 
            } // for
            vSchlange.erase(vSchlange.begin());
        } // while
    } // for
    
    // Ausgabe
    for (unsigned int m = 0; m &lt; vOrbits.size(); m++) {
        cout &lt;&lt; "Bahn " &lt;&lt; m + 1 &lt;&lt; ": " &lt;&lt; vOrbits.at(m).size() 
                &lt;&lt; " Elemente, Repraesentant: "
                &lt;&lt; output_list(vOrbits.at(m).at(0), 0) &lt;&lt; endl;
    }
}

int kSubsetRevDoorRank(vector&lt;unsigned int&gt;&amp; vVec, int k) {
    int i, r, s;
    r = 0;
    if ((k % 2) == 1)
        r = r - 1;
    s = 1;
    for (i = k; i &gt;= 1; i = i - 1) {
        //cout &lt;&lt; "i= " &lt;&lt; i &lt;&lt; endl;
        r = r +binkoeff(vVec.at(i - 1) + 1, i) * s;
        s = -s;
    }
    return (r);
}
 
vector&lt;unsigned int&gt; kSubsetRevDoorUnrank(int r, int n, int k)
{
    vector&lt;unsigned int&gt; vResult(n);
    //cout &lt;&lt; "Size: " &lt;&lt; vResult.size() &lt;&lt; endl;
    int x, i, y;
    x = n;
    for (i = k; i &gt;= 1; i = i - 1) {
        y = binkoeff(x, i);
        while (y &gt; r) {
            x = x - 1;
            y = binkoeff(x, i);
        }
        vResult.at(x) = 1;
        r = binkoeff(x + 1, i) - r - 1;
    }
    return vResult;
}</code></pre>



<h4 class="wp-block-heading">Hilfsfunktionen</h4>



<pre class="wp-block-code"><code>int binkoeff(int n, int r) {
    int i, b;
    if ((r &lt; 0) || (n &lt; r))
        return (0);
    if ((2 * r) &gt; n)
        r = n - r;
    b = 1;
    if (r &gt; 0)
        for (i = 0; i &lt;= (r - 1); i = i + 1)
            b = (b * (n - i)) / (i + 1);
    return (b);
}
 
bool inResult(vector&lt;unsigned int&gt;&amp; v1, vector&lt;unsigned int&gt;&amp; v2) {
    if (v1.size() != v2.size())
        return false;
 
    for (unsigned int i = 0; i &lt; v1.size(); i++) {
        if (v1.at(i) != v2.at(i))
            return false;
    }
    return true;
}

vector&lt;unsigned int&gt; bit_to_list(vector&lt;unsigned int&gt;&amp; vBitlist) {
    vector&lt;unsigned int&gt; vList;
    for (unsigned int i = 0; i &lt; vBitlist.size(); i++) {
        if (vBitlist.at(i) == 1) {
            vList.push_back(i);
        }
    }
 
    return vList;
}
 
void multiply_subset_permutation(vector&lt;unsigned int&gt;&amp; vSubset,
        vector&lt;unsigned int&gt;&amp; vPermutation, vector&lt;unsigned int&gt;&amp; vResult) {
    for (unsigned int i = 0; i &lt; vSubset.size(); i++) {
        vResult.push_back(vPermutation&#91;vSubset&#91;i]]);
    }
}

bool isId(vector&lt;unsigned int&gt;&amp; vTmp) {
    for (unsigned int i = 0; i &lt; vTmp.size(); i++) {
        if (i != vTmp&#91;i]) {
            return false;
        }
    }
    return true;
}
 
string output_list(vector&lt;unsigned int&gt;&amp; vVector, int iOffset) {
    stringstream ss;
 
    if (isId(vVector) == true) {
        ss &lt;&lt; "id" &lt;&lt; vVector.size();
    } else {
        ss &lt;&lt; "&#91;";
        for (unsigned int i = 0; i &lt; vVector.size(); i++) {
            ss &lt;&lt; vVector&#91;i] + iOffset;
            if (i &lt; vVector.size() - 1) {
                ss &lt;&lt; ",";
            }
        }
        ss &lt;&lt; "]";
    }
    return ss.str();
}</code></pre>



<h3 class="wp-block-heading">Eingabe von Testparametern</h3>



<p class="wp-block-paragraph">Testen Sie das Programm für folgende Parameter.</p>



<p class="wp-block-paragraph">Set 1</p>



<p class="wp-block-paragraph">n=6</p>



<p class="wp-block-paragraph">k=3</p>



<p class="wp-block-paragraph">γ<sub>0</sub>&nbsp;= (1, 3)(2, 4)</p>



<p class="wp-block-paragraph">γ<sub>1</sub>&nbsp;= (0, 3, 5, 2)(1, 4)</p>



<pre class="wp-block-code"><code>n: 6 
k: 3 
Subset size: 20  
Bahn 1: 4 Elemente, Repraesentant: &#91;0,3,4] 
Bahn 2: 12 Elemente, Repraesentant: &#91;0,1,4]  
Bahn 3: 4 Elemente, Repraesentant: &#91;0,1,3]</code></pre>



<p class="wp-block-paragraph">Set 2</p>



<p class="wp-block-paragraph">n=8</p>



<p class="wp-block-paragraph">k=4</p>



<p class="wp-block-paragraph">γ<sub>0</sub>&nbsp;= (0, 5)(1, 4)(2, 3)(7, 6)</p>



<p class="wp-block-paragraph">γ<sub>1</sub>&nbsp;= (0, 1)(2, 7)(3, 6)(4, 5)</p>



<pre class="wp-block-code"><code>n: 8  
k: 4  
Subset size: 70 
Bahn 1: 4 Elemente, Repraesentant: &#91;2,3,4,5]  
Bahn 2: 4 Elemente, Repraesentant: &#91;1,2,4,5]  
Bahn 3: 2 Elemente, Repraesentant: &#91;1,2,3,4]  
Bahn 4: 4 Elemente, Repraesentant: &#91;1,2,3,5]  
Bahn 5: 4 Elemente, Repraesentant: &#91;1,3,4,5]  
Bahn 6: 1 Elemente, Repraesentant: &#91;0,1,4,5]  
Bahn 7: 4 Elemente, Repraesentant: &#91;0,1,3,5]  
Bahn 8: 4 Elemente, Repraesentant: &#91;0,1,2,5]  
Bahn 9: 2 Elemente, Repraesentant: &#91;0,2,3,5]  
Bahn 10: 2 Elemente, Repraesentant: &#91;0,3,4,7] 
Bahn 11: 4 Elemente, Repraesentant: &#91;0,3,5,7] 
Bahn 12: 4 Elemente, Repraesentant: &#91;0,2,3,7] 
Bahn 13: 4 Elemente, Repraesentant: &#91;0,2,4,7] 
Bahn 14: 4 Elemente, Repraesentant: &#91;0,2,5,7] 
Bahn 15: 2 Elemente, Repraesentant: &#91;0,1,2,7] 
Bahn 16: 4 Elemente, Repraesentant: &#91;0,1,3,7] 
Bahn 17: 2 Elemente, Repraesentant: &#91;1,3,5,7] 
Bahn 18: 4 Elemente, Repraesentant: &#91;1,2,3,7] 
Bahn 19: 2 Elemente, Repraesentant: &#91;2,4,5,7] 
Bahn 20: 4 Elemente, Repraesentant: &#91;2,3,4,7] 
Bahn 21: 4 Elemente, Repraesentant: &#91;2,3,5,7]
Bahn 22: 1 Elemente, Repraesentant: &#91;2,3,6,7]</code></pre>



<p class="wp-block-paragraph">Set 3</p>



<p class="wp-block-paragraph">n=14</p>



<p class="wp-block-paragraph">k=5</p>



<p class="wp-block-paragraph">γ<sub>0</sub>&nbsp;= (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)</p>



<p class="wp-block-paragraph">γ<sub>1</sub>&nbsp;= (0, 13)(1, 12)(2, 11)(3, 10)(4, 9)(5, 8)(6, 7)</p>



<pre class="wp-block-code"><code>n: 14 
k: 5  
Subset size: 2002 
Bahn 1: 14 Elemente, Repraesentant: &#91;1,2,3,4,5] 
Bahn 2: 28 Elemente, Repraesentant: &#91;1,2,3,5,6] 
Bahn 3: 28 Elemente, Repraesentant: &#91;1,3,4,5,6] 
Bahn 4: 28 Elemente, Repraesentant: &#91;1,2,3,6,7] 
Bahn 5: 28 Elemente, Repraesentant: &#91;1,3,4,6,7] 
Bahn 6: 14 Elemente, Repraesentant: &#91;1,2,4,6,7] 
Bahn 7: 28 Elemente, Repraesentant: &#91;1,4,5,6,7] 
Bahn 8: 28 Elemente, Repraesentant: &#91;1,3,5,6,7] 
Bahn 9: 14 Elemente, Repraesentant: &#91;1,3,4,5,7] 
Bahn 10: 28 Elemente, Repraesentant: &#91;1,2,3,7,8] 
Bahn 11: 28 Elemente, Repraesentant: &#91;1,3,4,7,8]  
Bahn 12: 28 Elemente, Repraesentant: &#91;1,2,4,7,8]  
Bahn 13: 28 Elemente, Repraesentant: &#91;1,4,5,7,8]  
Bahn 14: 28 Elemente, Repraesentant: &#91;1,3,5,7,8]  
Bahn 15: 28 Elemente, Repraesentant: &#91;1,5,6,7,8]  
Bahn 16: 28 Elemente, Repraesentant: &#91;1,4,6,7,8]  
Bahn 17: 28 Elemente, Repraesentant: &#91;1,3,6,7,8]  
Bahn 18: 28 Elemente, Repraesentant: &#91;1,3,4,6,8]  
Bahn 19: 28 Elemente, Repraesentant: &#91;1,4,5,6,8]  
Bahn 20: 28 Elemente, Repraesentant: &#91;1,2,3,8,9]  
Bahn 21: 28 Elemente, Repraesentant: &#91;1,3,4,8,9]  
Bahn 22: 28 Elemente, Repraesentant: &#91;1,2,4,8,9]  
Bahn 23: 28 Elemente, Repraesentant: &#91;1,4,5,8,9]  
Bahn 24: 28 Elemente, Repraesentant: &#91;1,3,5,8,9]  
Bahn 25: 14 Elemente, Repraesentant: &#91;1,2,5,8,9] 
Bahn 26: 28 Elemente, Repraesentant: &#91;1,5,6,8,9]  
Bahn 27: 28 Elemente, Repraesentant: &#91;1,4,6,8,9]  
Bahn 28: 28 Elemente, Repraesentant: &#91;1,3,6,8,9]  
Bahn 29: 28 Elemente, Repraesentant: &#91;1,6,7,8,9]  
Bahn 30: 28 Elemente, Repraesentant: &#91;1,5,7,8,9]  
Bahn 31: 28 Elemente, Repraesentant: &#91;1,4,7,8,9]  
Bahn 32: 28 Elemente, Repraesentant: &#91;1,3,7,8,9]  
Bahn 33: 28 Elemente, Repraesentant: &#91;1,3,4,7,9]  
Bahn 34: 28 Elemente, Repraesentant: &#91;1,4,5,7,9]  
Bahn 35: 14 Elemente, Repraesentant: &#91;1,3,5,7,9]  
Bahn 36: 28 Elemente, Repraesentant: &#91;1,5,6,7,9]  
Bahn 37: 28 Elemente, Repraesentant: &#91;1,4,6,7,9]  
Bahn 38: 14 Elemente, Repraesentant: &#91;1,4,5,6,9]  
Bahn 39: 28 Elemente, Repraesentant: &#91;1,3,4,9,10] 
Bahn 40: 28 Elemente, Repraesentant: &#91;1,4,5,9,10] 
Bahn 41: 28 Elemente, Repraesentant: &#91;1,3,5,9,10] 
Bahn 42: 28 Elemente, Repraesentant: &#91;1,2,5,9,10] 
Bahn 43: 28 Elemente, Repraesentant: &#91;1,5,6,9,10] 
Bahn 44: 28 Elemente, Repraesentant: &#91;1,4,6,9,10] 
Bahn 45: 28 Elemente, Repraesentant: &#91;1,3,6,9,10] 
Bahn 46: 14 Elemente, Repraesentant: &#91;1,6,7,9,10] 
Bahn 47: 28 Elemente, Repraesentant: &#91;1,5,7,9,10] 
Bahn 48: 28 Elemente, Repraesentant: &#91;1,4,7,9,10] 
Bahn 49: 28 Elemente, Repraesentant: &#91;1,3,7,9,10] 
Bahn 50: 28 Elemente, Repraesentant: &#91;1,6,8,9,10] 
Bahn 51: 28 Elemente, Repraesentant: &#91;1,5,8,9,10] 
Bahn 52: 28 Elemente, Repraesentant: &#91;1,4,8,9,10] 
Bahn 53: 14 Elemente, Repraesentant: &#91;1,3,8,9,10] 
Bahn 54: 28 Elemente, Repraesentant: &#91;1,3,4,8,10] 
Bahn 55: 28 Elemente, Repraesentant: &#91;1,4,5,8,10] 
Bahn 56: 28 Elemente, Repraesentant: &#91;1,3,5,8,10] 
Bahn 57: 28 Elemente, Repraesentant: &#91;1,5,6,8,10] 
Bahn 58: 28 Elemente, Repraesentant: &#91;1,4,6,8,10] 
Bahn 59: 28 Elemente, Repraesentant: &#91;1,5,7,8,10] 
Bahn 60: 28 Elemente, Repraesentant: &#91;1,4,7,8,10] 
Bahn 61: 28 Elemente, Repraesentant: &#91;1,4,5,7,10] 
Bahn 62: 28 Elemente, Repraesentant: &#91;1,5,6,7,10] 
Bahn 63: 14 Elemente, Repraesentant: &#91;1,5,6,10,11]  
Bahn 64: 28 Elemente, Repraesentant: &#91;1,4,6,10,11]  
Bahn 65: 28 Elemente, Repraesentant: &#91;1,5,7,10,11]  
Bahn 66: 28 Elemente, Repraesentant: &#91;1,4,7,10,11]  
Bahn 67: 28 Elemente, Repraesentant: &#91;1,3,7,10,11]  
Bahn 68: 28 Elemente, Repraesentant: &#91;1,5,8,10,11]  
Bahn 69: 28 Elemente, Repraesentant: &#91;1,4,8,10,11]
Bahn 70: 14 Elemente, Repraesentant: &#91;1,5,9,10,11]  
Bahn 71: 14 Elemente, Repraesentant: &#91;1,3,5,9,11] 
Bahn 72: 28 Elemente, Repraesentant: &#91;1,4,6,9,11] 
Bahn 73: 14 Elemente, Repraesentant: &#91;1,3,6,9,11] 
Bahn 74: 14 Elemente, Repraesentant: &#91;1,5,7,9,11] 
Bahn 75: 28 Elemente, Repraesentant: &#91;1,4,7,9,11] 
Bahn 76: 28 Elemente, Repraesentant: &#91;1,5,8,9,11] 
Bahn 77: 28 Elemente, Repraesentant: &#91;1,4,5,8,11] 
Bahn 78: 14 Elemente, Repraesentant: &#91;1,4,6,8,11] 
Bahn 79: 14 Elemente, Repraesentant: &#91;1,4,7,10,12]  
</code></pre>



<p class="wp-block-paragraph">Set 4</p>



<p class="wp-block-paragraph">n=31</p>



<p class="wp-block-paragraph">k=5</p>



<p class="wp-block-paragraph">γ<sub>0</sub>&nbsp;= (0, 19, 9, 4, 21, 10, 16, 27, 13, 6, 22, 30, 26, 24, 23, 11, 5, 2, 20, 29, 14, 18, 28, 25, 12, 17, 8, 15, 7, 3, 1)</p>



<p class="wp-block-paragraph">γ<sub>1</sub>&nbsp;= (0, 21, 26, 7, 3)(1, 9, 13, 14, 24)(2, 27, 20, 6, 28)(4, 22, 12, 18, 11)(5, 10, 23, 19, 16)(8, 17, 25, 29, 30)</p>



<pre class="wp-block-code"><code>n: 31
k: 5
Subset size: 169911  
Bahn 1: 155 Elemente, Repraesentant: &#91;0,1,19,20,21]
Bahn 2: 155 Elemente, Repraesentant: &#91;0,2,19,20,21]

...

Bahn 1098: 155 Elemente, Repraesentant: &#91;1,4,7,8,20]
Bahn 1099: 155 Elemente, Repraesentant: &#91;6,7,8,20,22]
Bahn 1100: 155 Elemente, Repraesentant: &#91;2,6,8,20,22]
Bahn 1101: 31 Elemente, Repraesentant: &#91;0,5,8,15,20] </code></pre>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/06/diskrete-strukturen-praktikum-3/">Diskrete Strukturen (Praktikum 3)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/06/diskrete-strukturen-praktikum-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Computer Forensik (Praktikum 5)</title>
		<link>https://maximiliankrieg.de/2015/06/computer-forensik-praktikum-5/</link>
					<comments>https://maximiliankrieg.de/2015/06/computer-forensik-praktikum-5/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 25 Jun 2015 17:53:00 +0000</pubDate>
				<category><![CDATA[Computer Forensik]]></category>
		<category><![CDATA[1. Semester (M.Sc.)]]></category>
		<category><![CDATA[Master of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2863</guid>

					<description><![CDATA[<p>Im letzten Praktikum fahren wir mit der Analyse der Windows-Installation aus dem vierten Praktikum fort. Wir extrahieren in diesem Kontext Informationen aus den Anwendungsdatenbanken von&#160;Mozilla Firefox&#160;und&#160;Microsoft Skype. Weiterhin suchen wir nach versteckten Dateien auf der Partition und wenden kryptographische Werkzeuge zur Entschlüsselung von geschützten Dateien an. Skript-Anfang Praktikum 5 &#8211; Seite 1 Skript-Ende Praktikum 5 [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/06/computer-forensik-praktikum-5/">Computer Forensik (Praktikum 5)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Im letzten Praktikum fahren wir mit der Analyse der Windows-Installation aus dem vierten Praktikum fort. Wir extrahieren in diesem Kontext Informationen aus den Anwendungsdatenbanken von&nbsp;<em>Mozilla Firefox</em>&nbsp;und&nbsp;<em>Microsoft Skype</em>. Weiterhin suchen wir nach versteckten Dateien auf der Partition und wenden kryptographische Werkzeuge zur Entschlüsselung von geschützten Dateien an.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>Praktikum 5 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>Praktikum 5 &#8211; Seite 1</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Anwendungsforensik</h3>



<p class="wp-block-paragraph">Zur Lösung folgender Aufgaben verwenden Sie&nbsp;<em>partition_1.dd</em>.</p>



<p class="wp-block-paragraph">Sicherstellung der Integrität</p>



<p class="wp-block-paragraph">Wir bestimmten zunächst die Hashshumme des Images und gleichen dieses mit dem vorherigen Praktikum ab, um die Unverändertheit unserer Arbeitskopie zu ermitteln.</p>



<pre class="wp-block-code"><code>$ sha256sum partition_1.dd 
cc224419f690065a653efa9cb58dbf546b72e7db752fe71229bfb4d11dd8e685  partition_1.dd</code></pre>



<h4 class="wp-block-heading">Firefox</h4>



<p class="wp-block-paragraph">Wo befinden sich die Firefox-Dateien und wie können Sie diese sichern?</p>



<p class="wp-block-paragraph">Es gibt einige Standardpfade unter denen Dateien des Firefox-Browsers abgelegt werden. Wir schauen uns zunächst die Installationsinformationen diesbezüglich über&nbsp;<code>regripper</code>&nbsp;an, um zu erfahren, wo die Firefox-Instanz installiert wurde.</p>



<pre class="wp-block-code"><code>&#91;...]

App Paths
Microsoft\Windows\CurrentVersion\App Paths

	Sun Mar 30 16:55:51 2014 (UTC)
	firefox.exe - C:\Program Files\Mozilla Firefox\firefox.exe
	
&#91;...]</code></pre>



<p class="wp-block-paragraph">Laut der Registry liegt die Installation des Firefox somit unter&nbsp;<em>C:\Program Files\Mozilla Firefox\firefox.exe</em>. Interessanter sind jedoch die Profile und damit verbunden der Browser-Verlauf und die Favoriten. Da wir nun auf Anwendungsebene arbeiten, ist das Mounten des Images und das Durchsuchen auf Dateisystemebene absolut legitim. Um keine Daten zu verändern, mounten wir mit&nbsp;<em>readonly</em>&nbsp;als Parameter.</p>



<pre class="wp-block-code"><code>$ sudo mount -o ro partition_1.dd /mnt</code></pre>



<p class="wp-block-paragraph">Mittels&nbsp;<code>find</code>&nbsp;können wir nun nach Dateien mit vielversprechenden Zeichenketten im Namen suchen.</p>



<pre class="wp-block-code"><code>$ find /mnt/ -name "*Moz*"
/mnt/Documents and Settings/All Users/Application Data/Mozilla
/mnt/Documents and Settings/All Users/Desktop/Mozilla Firefox.lnk
/mnt/Documents and Settings/All Users/Start Menu/Programs/Mozilla Firefox.lnk
/mnt/Documents and Settings/Owner/Application Data/Microsoft/Internet Explorer/Quick Launch/Mozilla Firefox.lnk
/mnt/Documents and Settings/Owner/Application Data/Mozilla
/mnt/Documents and Settings/Owner/Favorites/Downloads/Programs/Mozilla Thunderbird - Free eMail Program.url
/mnt/Documents and Settings/Owner/Local Settings/Application Data/Mozilla
/mnt/Documents and Settings/Owner/Local Settings/Application Data/Mozilla/Firefox/Mozilla Firefox
/mnt/Program Files/Mozilla Firefox
/mnt/Program Files/Mozilla Maintenance Service</code></pre>



<p class="wp-block-paragraph">Da wir uns konkret für den Anwender&nbsp;<em>Owner</em>&nbsp;interessieren, sind nur die Pfade&nbsp;<em>/mnt/Documents and Settings/Owner/Application Data/Mozilla</em>&nbsp;und&nbsp;<em>/mnt/Documents and Settings/Owner/Local Settings/Application Data/Mozilla</em>&nbsp;für uns von Interesse. Üblicherweise sind unter&nbsp;<em>Application Data</em>&nbsp;die Profile des Firefox abgelegt. Wir packen das vorhandene Profil in ein Archiv und berechnen eine Hashsumme, um die Dateien wie gefordert zu sichern.</p>



<pre class="wp-block-code"><code>$ zip -r /home/mkr/Downloads/profile.zip fq5mn4su.default/
  adding: fq5mn4su.default/ (stored 0%)
  adding: fq5mn4su.default/extensions/ (stored 0%)
  adding: fq5mn4su.default/extensions/savedpasswordeditor@daniel.dawson.xpi (deflated 9%)
  adding: fq5mn4su.default/minidumps/ (stored 0%)
  adding: fq5mn4su.default/secmod.db (deflated 97%)
  adding: fq5mn4su.default/addons.json (deflated 67%)
  adding: fq5mn4su.default/blocklist.xml (deflated 89%)
  adding: fq5mn4su.default/bookmarkbackups/ (stored 0%)
  adding: fq5mn4su.default/bookmarkbackups/bookmarks-2014-03-30_8.json (deflated 73%)
  adding: fq5mn4su.default/bookmarkbackups/bookmarks-2014-03-31_5.json (deflated 67%)
  adding: fq5mn4su.default/cert8.db (deflated 78%)
  adding: fq5mn4su.default/compatibility.ini (deflated 29%)
  adding: fq5mn4su.default/content-prefs.sqlite (deflated 100%)
  adding: fq5mn4su.default/cookies.sqlite (deflated 83%)
  adding: fq5mn4su.default/parent.lock (stored 0%)
  adding: fq5mn4su.default/permissions.sqlite (deflated 98%)
  adding: fq5mn4su.default/places.sqlite (deflated 97%)
  adding: fq5mn4su.default/pluginreg.dat (deflated 61%)
  adding: fq5mn4su.default/prefs.js (deflated 67%)
  adding: fq5mn4su.default/search.json (deflated 70%)
  adding: fq5mn4su.default/sessionstore.bak (deflated 63%)
  adding: fq5mn4su.default/sessionstore.js (deflated 74%)
  adding: fq5mn4su.default/signons.sqlite (deflated 100%)
  adding: fq5mn4su.default/storage/ (stored 0%)
  adding: fq5mn4su.default/storage/persistent/ (stored 0%)
  adding: fq5mn4su.default/storage/persistent/moz-safe-about+home/ (stored 0%)
  adding: fq5mn4su.default/storage/persistent/moz-safe-about+home/.metadata (stored 0%)
  adding: fq5mn4su.default/storage/persistent/moz-safe-about+home/idb/ (stored 0%)
  adding: fq5mn4su.default/storage/persistent/moz-safe-about+home/idb/818200132aebmoouht/ (stored 0%)
  adding: fq5mn4su.default/storage/persistent/moz-safe-about+home/idb/818200132aebmoouht.sqlite (deflated 96%)
  adding: fq5mn4su.default/times.json (stored 0%)
  adding: fq5mn4su.default/urlclassifierkey3.txt (deflated 5%)
  adding: fq5mn4su.default/webapps/ (stored 0%)
  adding: fq5mn4su.default/webapps/webapps.json (stored 0%)
  adding: fq5mn4su.default/webappsstore.sqlite (deflated 98%)
  adding: fq5mn4su.default/extensions.ini (deflated 27%)
  adding: fq5mn4su.default/extensions.json (deflated 70%)
  adding: fq5mn4su.default/formhistory.sqlite (deflated 99%)
  adding: fq5mn4su.default/healthreport/ (stored 0%)
  adding: fq5mn4su.default/healthreport.sqlite (deflated 99%)
  adding: fq5mn4su.default/key3.db (deflated 97%)
  adding: fq5mn4su.default/localstore.rdf (deflated 78%)
  adding: fq5mn4su.default/mimeTypes.rdf (deflated 82%)

$ sha256sum /home/mkr/Downloads/profile.zip 
5b977147f030fc55e02cfabdf363884b75d844cd7586aad177a007e25945b2ee  /home/mkr/Downloads/profile.zip</code></pre>



<p class="wp-block-paragraph">Welche Websites wurden besucht?</p>



<p class="wp-block-paragraph">Wir verwenden die Datenbankdatei&nbsp;<em>places.sqlite</em>&nbsp;für alle folgenden Aufgaben als bevorzugte Datenquelle. Wir untersuchen die Datenbankstruktur mittels&nbsp;<code>sqlitebrowser</code>&nbsp;und entwerfen entsprechende SQL-Anfragen, um in den folgenden Schritten die Daten zu extrahieren. Zunächst betrachten wir jedoch die History im Browser.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1249" height="788" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-history.png" alt="" class="wp-image-2864" title="Zugriff auf den Firefox-Verlauf im Browser" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-history.png 1249w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-history-350x221.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-history-768x485.png 768w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-history-1024x646.png 1024w" sizes="(max-width: 1249px) 100vw, 1249px" /><figcaption class="wp-element-caption">Zugriff auf den Firefox-Verlauf im Browser</figcaption></figure>



<p class="wp-block-paragraph">Über das Kontextmenü kann die komplette Verlaufstabelle kopiert und ins unseren Bericht eingefügt werden. Der folgende Block enthält alle Seiten, die in der History des Browsers aufgeführt werden.</p>



<pre class="wp-block-code"><code>https:&#47;&#47;login.live.com/login.srf?wa=wsignin1.0&amp;ct=1396258049&amp;rver=6.1.6206.0&amp;sa=1&amp;ntprob=-1&amp;wp=MBI_SSL_SHARED&amp;wreply=https:%2F%2Fmail.live.com%2F%3Fowa%3D1%26owasuffix%3Dowa%252f&amp;id=64855&amp;snsc=1&amp;cbcxt=mail
http://www.truecrypt.org/download/transient/5b5a677a9e150db8de7b/TrueCrypt%20Setup%207.1a.exe
http://www.truecrypt.org/downloads
http://www.truecrypt.org/
http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDAQFjAA&url=http%3A%2F%2Fwww.truecrypt.org%2F&ei=0TQ5U_DpCsrLsgaTo4CACA&usg=AFQjCNH8UXHuTTPFsxxhk9LfQtfx7CG5Pg&bvm=bv.63808443,d.Yms
https://www.google.de/search?q=truecrypt&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a&channel=np&source=hp&gfe_rd=cr&ei=0DQ5U8OsM8mK8QfxjIBg
https://login.live.com/login.srf?wa=wsignin1.0&ct=1396257104&rver=6.1.6206.0&sa=1&ntprob=-1&wp=MBI_SSL_SHARED&wreply=https:%2F%2Fmail.live.com%2F%3Fowa%3D1%26owasuffix%3Dowa%252f&id=64855&snsc=1&cbcxt=mail
http://goldesel.to/
https://www.steganos.com/scripts/thankyou/?utm_campaign=sss15&utm_medium=trial&utm_source=steganos&g=3e8f62eb-ee32-4207-a885-bc4da661037c&p=sss15&l=en&v=15.2.1
https://file.steganos.com/software/downloader/steganos/sss15intdle.exe
https://www.steganos.com/de/produkte/datensicherheit/privacy-suite/download/
https://www.steganos.com/de/produkte/datensicherheit/privacy-suite/features/
https://www.steganos.com/de/
http://www.pc-magazin.de/testbericht/sicherheitsprogramme-hide-and-seek-90063.html
http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDAQFjAA&url=http%3A%2F%2Fwww.pc-magazin.de%2Ftestbericht%2Fsicherheitsprogramme-hide-and-seek-90063.html&ei=3gQ4U8XiM4XLtQblmYCoCw&usg=AFQjCNE3AANamxm8wrAfT738ORhzlUI1xA&bvm=bv.63808443,d.Yms
https://www.google.de/search?q=steganos+hide+seek&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a&channel=sb&gfe_rd=cr&ei=3gQ4U46NIsiK8QfLuYEo
http://de.msn.com/?ocid=mailsignout
https://signout.live.com/content/dam/imp/surfaces/mail_signout/v7/mail/de-de.html
https://login.live.com/logout.srf?ct=1396180070&rver=6.4.6456.0&lc=1031&id=64855&ru=http:%2F%2Fbay181.mail.live.com%2Fhandlers%2FSignout.mvc%3Fservice%3DLive.Mail%26mkt%3Dde-de&mkt=de-de
https://bay181.mail.live.com/default.aspx?id=64855
https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=12&ct=1396179979&rver=6.4.6456.0&wp=MBI_SSL_SHARED&wreply=https:%2F%2Fbay181.mail.live.com%2Fdefault.aspx%3Fid%3D64855&lc=1031&id=64855&mkt=de-DE&cbcxt=mai
https://addons.mozilla.org/de/firefox/addon/saved-password-editor/
https://www.google.de/search?q=firefox+saved+passort+editor&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a&channel=fflb&gfe_rd=cr&ei=5AM4U6_WKMOK8QerxIEg
https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=12&ct=1396179732&rver=6.4.6456.0&wp=MBI&wreply=http%3a%2f%2fmail.live.com%2fdefault.aspx&lc=1031&id=286568&mkt=de-DE&cbcxt=mai&snsc=1
https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTuNPgl_f4uOpcRjYd1WdaAYIq4fpZr2IFRE-EO6dUWuppnbwocow
https://www.google.de/search?q=phantom&client=firefox-a&hs=HxZ&rls=org.mozilla:de:official&channel=np&source=lnms&tbm=isch&sa=X&ei=J_s3U7bqF4zEsgax6YDAAQ&ved=0CAgQ_AUoAQ&biw=800&bih=457#channel=np&q=cheerleader&rls=org.mozilla:de:official&tbm=isch
https://www.google.de/search?q=phantom&client=firefox-a&hs=HxZ&rls=org.mozilla:de:official&channel=np&source=lnms&tbm=isch&sa=X&ei=J_s3U7bqF4zEsgax6YDAAQ&ved=0CAgQ_AUoAQ&biw=800&bih=457#channel=np&q=v+vendetta&rls=org.mozilla:de:official&tbm=isch
https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRhyWHcxF5G_4NtHB8GPS3dC2NIEYwmMWVzVWZ8t0rAoXMAbRUPow
http://www.google.de/imgres?imgurl=http%3A%2F%2Fimage.karneval-megastore.de%2Fbig%2F114915_phantom_big.jpg&imgrefurl=http%3A%2F%2Fwww.karneval-megastore.de%2Fhtml%2Fproduct_info.php%3Fproducts_id%3D18164&h=300&w=275&tbnid=JlWSbpToLvoPKM%3A&zoom=1&docid=xPSS4iC5LYlaJM&ei=Mfs3U9ybHJDMsgbw1IHIDQ&tbm=isch&iact=rc&dur=655&page=12&start=109&ndsp=11&ved=0CCQQrQMwCjhk
https://www.google.de/search?q=phantom&client=firefox-a&hs=HxZ&rls=org.mozilla:de:official&channel=np&source=lnms&tbm=isch&sa=X&ei=J_s3U7bqF4zEsgax6YDAAQ&ved=0CAgQ_AUoAQ&biw=800&bih=457
https://www.google.de/search?q=phantom&ie=utf-8&oe=utf-8&rls=org.mozilla:de:official&client=firefox-a&channel=np&source=hp&gfe_rd=ctrl&ei=J_s3U_3jAsGK8QfwloEg&gws_rd=cr
https://www.google.de/search?q=porn&ie=utf-8&oe=utf-8&rls=org.mozilla:de:official&client=firefox-a&channel=sb&gfe_rd=ctrl&ei=tPo3U8fZMsqK8QfopoFQ&gws_rd=cr
https://www.google.de/search?q=warez&ie=utf-8&oe=utf-8&rls=org.mozilla:de:official&client=firefox-a&channel=sb&gfe_rd=ctrl&ei=r_o3U9H1CMqK8QfopoFQ&gws_rd=cr
https://www.google.de/search?q=boerse&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a&channel=sb&gfe_rd=cr&ei=qfo3U-_GK8qK8QfopoFQ
http://3dl.tv/
http://www.stern.de/
http://www.bka.de/DE/Home/homepage__node.html?__nnn=true
https://www.google.de/
http://www.boerse.bz/toplist/warez-13/
http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&sqi=2&ved=0CDQQFjAB&url=http%3A%2F%2Fwww.boerse.bz%2Ftoplist%2Fwarez-13%2F&ei=Tfo3U7aaOoXAtQbrmoHoBQ&usg=AFQjCNEgOQb9XaLhc9UTGTe5u0oKoThLXg&bvm=bv.63808443,d.Yms
https://www.google.de/search?q=warey&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a&channel=sb&gfe_rd=cr&ei=Rvo3U-64NsqK8QfopoFQ#channel=sb&q=warez&rls=org.mozilla:de:official
https://www.google.de/search?q=warey&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a&channel=sb&gfe_rd=cr&ei=Rvo3U-64NsqK8QfopoFQ
https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=12&ct=1396177445&rver=6.4.6456.0&wp=MBI&wreply=http%3a%2f%2fmail.live.com%2fdefault.aspx&lc=1031&id=286568&mkt=de-DE&cbcxt=mai&snsc=1
https://login.live.com/logout.srf?ct=1396177341&rver=6.4.6456.0&lc=1031&id=64855&ru=http:%2F%2Fbay181.mail.live.com%2Fhandlers%2FSignout.mvc%3Fservice%3DLive.Mail%26mkt%3Dde-de&mkt=de-de
https://bay181.mail.live.com/default.aspx?id=64855&owa=1&owasuffix=owa%2f
https://login.live.com/login.srf?wa=wsignin1.0&ct=1396177140&rver=6.1.6206.0&sa=1&ntprob=-1&wp=MBI_SSL_SHARED&wreply=https:%2F%2Fmail.live.com%2F%3Fowa%3D1%26owasuffix%3Dowa%252f&id=64855&snsc=1&cbcxt=mail
https://www.mozilla.org/de/firefox/28.0/firstrun/</code></pre>



<p class="wp-block-paragraph">Für detailliertere Verlaufsinformationen greifen wir auf die Tabellen in der&nbsp;<em>places.sqlite</em>-Datei zu. Wir bilden dafür einen&nbsp;<code>INNER JOIN</code>&nbsp;über die beiden Tabellen&nbsp;<code>moz_places</code>&nbsp;und&nbsp;<code>moz_historyvisits</code>. Wir lassen uns neben der URL auch die Spalte der Aufrufhäufigkeit in absteigender Reihenfolge ausgeben, um die nächste Teilaufgabe zu erledigen.</p>



<pre class="wp-block-code"><code>sqlite&gt; select distinct  p.visit_count,p.url from moz_historyvisits as h, moz_places as p where h.place_id = p.id order by visit_count DESC;
4|https://bay181.mail.live.com/default.aspx?id=64855
4|http://goldesel.to/
3|http://outlook.com/
3|https://www.outlook.com/owa
2|http://bay181.mail.live.com/handlers/Signout.mvc?service=Live.Mail&amp;mkt=de-de&amp;lc=1031
2|http://g.live.com/9ep9nmso/so-DE-DE
2|https://signout.live.com/content/dam/imp/surfaces/mail_signout/v7/mail/de-de.html
2|http://de.msn.com/?ocid=mailsignout
2|http://outlook.de/
2|https://mail.live.com/?id=64855
2|http://3dl.tv/
2|http://google.de/
2|http://www.google.de/
2|https://www.google.de/
1|https://www.mozilla.org/de/firefox/28.0/firstrun/
1|https://login.live.com/login.srf?wa=wsignin1.0&amp;ct=1396177140&amp;rver=6.1.6206.0&amp;sa=1&amp;ntprob=-1&amp;wp=MBI_SSL_SHARED&amp;wreply=https:%2F%2Fmail.live.com%2F%3Fowa%3D1%26owasuffix%3Dowa%252f&amp;id=64855&amp;snsc=1&amp;cbcxt=mail
1|https://mail.live.com/?id=64855&amp;owa=1&amp;owasuffix=owa%2f
1|https://bay181.mail.live.com/default.aspx?id=64855&amp;owa=1&amp;owasuffix=owa%2f
1|https://login.live.com/logout.srf?ct=1396177341&amp;rver=6.4.6456.0&amp;lc=1031&amp;id=64855&amp;ru=http:%2F%2Fbay181.mail.live.com%2Fhandlers%2FSignout.mvc%3Fservice%3DLive.Mail%26mkt%3Dde-de&amp;mkt=de-de
1|https://login.live.com/login.srf?wa=wsignin1.0&amp;rpsnv=12&amp;ct=1396177445&amp;rver=6.4.6456.0&amp;wp=MBI&amp;wreply=http%3a%2f%2fmail.live.com%2fdefault.aspx&amp;lc=1031&amp;id=286568&amp;mkt=de-DE&amp;cbcxt=mai&amp;snsc=1
1|https://www.google.com/search?q=warey&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb
1|https://www.google.de/search?q=warey&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb&amp;gfe_rd=cr&amp;ei=Rvo3U-64NsqK8QfopoFQ
1|https://www.google.de/search?q=warey&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb&amp;gfe_rd=cr&amp;ei=Rvo3U-64NsqK8QfopoFQ#channel=sb&amp;q=warez&amp;rls=org.mozilla:de:official
1|http://www.google.de/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;sqi=2&amp;ved=0CDQQFjAB&amp;url=http%3A%2F%2Fwww.boerse.bz%2Ftoplist%2Fwarez-13%2F&amp;ei=Tfo3U7aaOoXAtQbrmoHoBQ&amp;usg=AFQjCNEgOQb9XaLhc9UTGTe5u0oKoThLXg&amp;bvm=bv.63808443,d.Yms
1|http://www.boerse.bz/toplist/warez-13/
1|http://bka.de/
1|http://www.bka.de/DE/Home/homepage__node.html?__nnn=true
1|http://stern.de/
1|http://www.stern.de/
1|https://www.google.com/search?q=boerse&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb
1|https://www.google.de/search?q=boerse&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb&amp;gfe_rd=cr&amp;ei=qfo3U-_GK8qK8QfopoFQ
1|https://www.google.com/search?q=warez&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb
1|https://www.google.de/search?q=warez&amp;ie=utf-8&amp;oe=utf-8&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb&amp;gfe_rd=ctrl&amp;ei=r_o3U9H1CMqK8QfopoFQ&amp;gws_rd=cr
1|https://www.google.com/search?q=porn&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb
1|https://www.google.de/search?q=porn&amp;ie=utf-8&amp;oe=utf-8&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb&amp;gfe_rd=ctrl&amp;ei=tPo3U8fZMsqK8QfopoFQ&amp;gws_rd=cr
1|https://www.google.com/search?q=phantom&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=np&amp;source=hp
1|https://www.google.de/search?q=phantom&amp;ie=utf-8&amp;oe=utf-8&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=np&amp;source=hp&amp;gfe_rd=ctrl&amp;ei=J_s3U_3jAsGK8QfwloEg&amp;gws_rd=cr
1|https://www.google.de/search?q=phantom&amp;client=firefox-a&amp;hs=HxZ&amp;rls=org.mozilla:de:official&amp;channel=np&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ei=J_s3U7bqF4zEsgax6YDAAQ&amp;ved=0CAgQ_AUoAQ&amp;biw=800&amp;bih=457
1|https://www.google.de/search?q=phantom&amp;client=firefox-a&amp;hs=HxZ&amp;rls=org.mozilla:de:official&amp;channel=np&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ei=J_s3U7bqF4zEsgax6YDAAQ&amp;ved=0CAgQ_AUoAQ&amp;biw=800&amp;bih=457#channel=np&amp;q=v+vendetta&amp;rls=org.mozilla:de:official&amp;tbm=isch
1|https://www.google.de/search?q=phantom&amp;client=firefox-a&amp;hs=HxZ&amp;rls=org.mozilla:de:official&amp;channel=np&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ei=J_s3U7bqF4zEsgax6YDAAQ&amp;ved=0CAgQ_AUoAQ&amp;biw=800&amp;bih=457#channel=np&amp;q=cheerleader&amp;rls=org.mozilla:de:official&amp;tbm=isch
1|https://login.live.com/login.srf?wa=wsignin1.0&amp;rpsnv=12&amp;ct=1396179732&amp;rver=6.4.6456.0&amp;wp=MBI&amp;wreply=http%3a%2f%2fmail.live.com%2fdefault.aspx&amp;lc=1031&amp;id=286568&amp;mkt=de-DE&amp;cbcxt=mai&amp;snsc=1
1|https://www.google.com/search?q=firefox+saved+passort+editor&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=fflb
1|https://www.google.de/search?q=firefox+saved+passort+editor&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=fflb&amp;gfe_rd=cr&amp;ei=5AM4U6_WKMOK8QerxIEg
1|https://addons.mozilla.org/de/firefox/addon/saved-password-editor/
1|https://login.live.com/login.srf?wa=wsignin1.0&amp;rpsnv=12&amp;ct=1396179979&amp;rver=6.4.6456.0&amp;wp=MBI_SSL_SHARED&amp;wreply=https:%2F%2Fbay181.mail.live.com%2Fdefault.aspx%3Fid%3D64855&amp;lc=1031&amp;id=64855&amp;mkt=de-DE&amp;cbcxt=mai
1|https://login.live.com/logout.srf?ct=1396180070&amp;rver=6.4.6456.0&amp;lc=1031&amp;id=64855&amp;ru=http:%2F%2Fbay181.mail.live.com%2Fhandlers%2FSignout.mvc%3Fservice%3DLive.Mail%26mkt%3Dde-de&amp;mkt=de-de
1|https://www.google.com/search?q=steganos+hide+seek&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb
1|https://www.google.de/search?q=steganos+hide+seek&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=sb&amp;gfe_rd=cr&amp;ei=3gQ4U46NIsiK8QfLuYEo
1|http://www.google.de/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0CDAQFjAA&amp;url=http%3A%2F%2Fwww.pc-magazin.de%2Ftestbericht%2Fsicherheitsprogramme-hide-and-seek-90063.html&amp;ei=3gQ4U8XiM4XLtQblmYCoCw&amp;usg=AFQjCNE3AANamxm8wrAfT738ORhzlUI1xA&amp;bvm=bv.63808443,d.Yms
1|http://www.pc-magazin.de/testbericht/sicherheitsprogramme-hide-and-seek-90063.html
1|http://www.steganos.de/
1|https://www.steganos.com/de/
1|https://www.steganos.com/de/produkte/datensicherheit/privacy-suite/features/
1|https://www.steganos.com/de/produkte/datensicherheit/privacy-suite/download/
1|https://www.steganos.com/scripts/thankyou/?utm_campaign=sss15&amp;utm_medium=trial&amp;utm_source=steganos&amp;g=3e8f62eb-ee32-4207-a885-bc4da661037c&amp;p=sss15&amp;l=en&amp;v=15.2.1
1|https://login.live.com/login.srf?wa=wsignin1.0&amp;ct=1396257104&amp;rver=6.1.6206.0&amp;sa=1&amp;ntprob=-1&amp;wp=MBI_SSL_SHARED&amp;wreply=https:%2F%2Fmail.live.com%2F%3Fowa%3D1%26owasuffix%3Dowa%252f&amp;id=64855&amp;snsc=1&amp;cbcxt=mail
1|https://www.google.com/search?q=truecrypt&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=np&amp;source=hp
1|https://www.google.de/search?q=truecrypt&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;channel=np&amp;source=hp&amp;gfe_rd=cr&amp;ei=0DQ5U8OsM8mK8QfxjIBg
1|http://www.google.de/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0CDAQFjAA&amp;url=http%3A%2F%2Fwww.truecrypt.org%2F&amp;ei=0TQ5U_DpCsrLsgaTo4CACA&amp;usg=AFQjCNH8UXHuTTPFsxxhk9LfQtfx7CG5Pg&amp;bvm=bv.63808443,d.Yms
1|http://www.truecrypt.org/
1|http://www.truecrypt.org/downloads
1|https://login.live.com/login.srf?wa=wsignin1.0&amp;ct=1396258049&amp;rver=6.1.6206.0&amp;sa=1&amp;ntprob=-1&amp;wp=MBI_SSL_SHARED&amp;wreply=https:%2F%2Fmail.live.com%2F%3Fowa%3D1%26owasuffix%3Dowa%252f&amp;id=64855&amp;snsc=1&amp;cbcxt=mail
0|http://www.google.de/imgres?imgurl=http%3A%2F%2Fimage.karneval-megastore.de%2Fbig%2F114915_phantom_big.jpg&amp;imgrefurl=http%3A%2F%2Fwww.karneval-megastore.de%2Fhtml%2Fproduct_info.php%3Fproducts_id%3D18164&amp;h=300&amp;w=275&amp;tbnid=JlWSbpToLvoPKM%3A&amp;zoom=1&amp;docid=xPSS4iC5LYlaJM&amp;ei=Mfs3U9ybHJDMsgbw1IHIDQ&amp;tbm=isch&amp;iact=rc&amp;dur=655&amp;page=12&amp;start=109&amp;ndsp=11&amp;ved=0CCQQrQMwCjhk
0|https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRhyWHcxF5G_4NtHB8GPS3dC2NIEYwmMWVzVWZ8t0rAoXMAbRUPow
0|https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTuNPgl_f4uOpcRjYd1WdaAYIq4fpZr2IFRE-EO6dUWuppnbwocow
0|https://file.steganos.com/software/downloader/steganos/sss15intdle.exe
0|http://www.truecrypt.org/download/transient/5b5a677a9e150db8de7b/TrueCrypt%20Setup%207.1a.exe</code></pre>



<p class="wp-block-paragraph">Offensichtlich werden somit mehr History-Einträge aufgeführt, als der Browser selbst anzeigt. Dies ist dem Umstand geschuldet, dass der Browser keine Einträge aufführt, die den Wert 1 im&nbsp;<code>hidden</code>-Feld eingetragen haben. Eine ergänzende Liste von aufgerufenen Seiten erhalten wir aus den Cookie-Einträge in der Datenbank.</p>



<pre class="wp-block-code"><code>sqlite&gt; select DISTINCT baseDomain from moz_cookies;
360yield.com
3dl.tv
abmr.net
ad-srv.net
ad6media.fr
adaos-ads.net
adform.net
adition.com
admized.com
adnet.de
adnxs.com
adscale.de
adspirit.de
adwelt.com
atdmt.com
bing.com
bluekai.com
boerse.bz
creative-serving.com
criteo.com
crwdcntrl.net
demdex.net
doubleclick.net
ebay.com
flashtalking.com
gbseite.de
gmads.net
goldesel.to
google.com
google.de
hurra.com
intellitxt.com
ioam.de
ivwbox.de
krxd.net
levexis.com
live.com
mathtag.com
meetic-partners.com
metaffiliation.com
metrigo.com
microsoft.com
mozilla.org
msn.com
mydirtyhobby.com
myspace.com
nuggad.net
o2online.de
openx.net
outbrain.com
pc-magazin.de
popads.net
privatamateure.com
pubmatic.com
qservz.com
revsci.net
scorecardresearch.com
sensic.net
serving-sys.com
stargames.com
steganos.com
stern.de
t4ft.de
truecrypt.org
turn.com
twitter.com
vindicosuite.com
vtracy.de
w55c.net
yahoo.com
yieldlab.net
your-pics.net</code></pre>



<p class="wp-block-paragraph">Auch hier zeigen sich deutlich mehr Einträge. Die einfach zugänglichen Informationen im Firefox Browser selbst sind somit eine unvollständige Quelle. Erst die Auswertung über die Datenbank hat uns alle Informationen geliefert.</p>



<p class="wp-block-paragraph">Welche Websites wurden am häufigsten besucht?</p>



<p class="wp-block-paragraph">Diese Fragestellung wurde oben bereits implizit beantwortet. Die am Häufigsten aufgerufene Seiten sind&nbsp;<em>https://bay181.mail.live.com/default.aspx?id=64855</em>&nbsp;und&nbsp;<em>http://goldesel.to/</em>.</p>



<p class="wp-block-paragraph">Welche URLs wurden in der Adressleiste eingegeben?</p>



<p class="wp-block-paragraph">Wir betrachten zunächst die Ausgabe der Adressleiste. Im folgenden Schritt beziehen wir diese Informationen aus der Datenbank und gleichen sie miteinander ab.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="834" height="396" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bar.png" alt="" class="wp-image-2865" title="Zugriff auf die Eingaben in der Adressleiste" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bar.png 834w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bar-350x166.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bar-768x365.png 768w" sizes="(max-width: 834px) 100vw, 834px" /><figcaption class="wp-element-caption">Zugriff auf die Eingaben in der Adressleiste</figcaption></figure>



<p class="wp-block-paragraph">Wir erhalten die gleichen Informationen, wenn wir die entsprechende SQL-Anfrage an die&nbsp;<em>main.db</em>&nbsp;stellen. Der Parameter&nbsp;<code>typed=1</code>&nbsp;definiert, dass die Einträge in der Adressleiste eingegeben wurden.</p>



<pre class="wp-block-code"><code>sqlite&gt; select url from moz_places as p where typed=1;
http:&#47;&#47;outlook.com/
http://outlook.de/
http://goldesel.to/
http://3dl.tv/
http://google.de/
http://bka.de/
http://stern.de/</code></pre>



<p class="wp-block-paragraph">Für welche Webseits wurden vom Benutzer Lesezeichen gesetzt?</p>



<p class="wp-block-paragraph">In der Bibliothek des Firefox werden uns direkt einige Einträge unter dem Lesezeichenordner&nbsp;<em>Meistbesucht</em>&nbsp;angezeigt.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="809" height="328" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bibliothek.png" alt="" class="wp-image-2866" title="Lesezeichen in der Bibliothek" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bibliothek.png 809w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bibliothek-350x142.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bibliothek-768x311.png 768w" sizes="(max-width: 809px) 100vw, 809px" /><figcaption class="wp-element-caption">Lesezeichen in der Bibliothek</figcaption></figure>



<pre class="wp-block-code"><code>Meistbesucht (31.03.2014)
	file:///usr/share/kali-defaults/web/homepage.html
	http:&#47;&#47;goldesel.to/
	https://bay181.mail.live.com/default.aspx?id=64855
	http://de.msn.com/?ocid=mailsignout
	https://signout.live.com/content/dam/imp/surfaces/mail_signout/v7/mail/de-de.html
	http://3dl.tv/
	https://www.google.de/
	https://login.live.com/
	https://login.live.com/login.srf?wa=wsignin1.0&ct=1396258049&rver=6.1.6206.0&sa=1&ntprob=-1&wp=MBI_SSL_SHARED&wreply=https:%2F%2Fmail.live.com%2F%3Fowa%3D1%26owasuffix%3Dowa%252f&id=64855&snsc=1&cbcxt=mail
	http://www.truecrypt.org/downloads
Bookmarks Menu (31.03.2014)
	http://goldesel.to/
Bookmarks Toolbar (31.03.2014)
	https://www.mozilla.org/de/firefox/central/</code></pre>



<p class="wp-block-paragraph">Ein Blick in die Backups zeigt, dass es eine ältere Sicherungskopie gibt. Wenn wir diese exportieren, werden alle aktuellen Bookmarks durch das Backup vollständig entfernt und ersetzt.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="534" height="192" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-restore.png" alt="" class="wp-image-2867" title="Wiederherstellung von Lesezeichen aus dem Backup" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-restore.png 534w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-restore-350x126.png 350w" sizes="auto, (max-width: 534px) 100vw, 534px" /><figcaption class="wp-element-caption">Wiederherstellung von Lesezeichen aus dem Backup</figcaption></figure>



<p class="wp-block-paragraph">Neu hinzugekommen bzw. wiederhergestellt wurde der Lesezeichenordner&nbsp;<em>Mozilla Firefox</em>. Die restlichen Lesezeichen sind identisch.</p>



<pre class="wp-block-code"><code>Mozilla Firefox (30.03.2014)
	https:&#47;&#47;www.mozilla.org/de/firefox/help/
	https://www.mozilla.org/de/firefox/customize/
	https://www.mozilla.org/de/contribute/
	https://www.mozilla.org/de/about/</code></pre>



<p class="wp-block-paragraph">Wir könnten diese Lesezeichen ganz komfortabel kopieren und einfügen. Es ist jedoch Vorsicht an dieser Stelle geboten, da es sich bei den Einträgen unter&nbsp;<em>Meistbesucht</em>&nbsp;um keine Lesezeichen im eigentlichen Sinne handelt. Es sind nur Verweise auf Einträge in der History. Eine sehr präzise Ausgabe der tatsächlichen Lesezeichen erhalten wir über die&nbsp;<em>places.sqlite</em>-Datenbank.</p>



<pre class="wp-block-code"><code>sqlite&gt; select p.url from moz_places as p, moz_bookmarks as b where b.fk=p.id;
https:&#47;&#47;www.mozilla.org/de/firefox/central/
place:sort=8&amp;maxResults=10
place:folder=BOOKMARKS_MENU&amp;folder=UNFILED_BOOKMARKS&amp;folder=TOOLBAR&amp;queryType=1&amp;sort=12&amp;maxResults=10&amp;excludeQueries=1
place:type=6&amp;sort=14&amp;maxResults=10
http://goldesel.to/</code></pre>



<p class="wp-block-paragraph">Es gibt daher nur die zwei Lesezeichen&nbsp;<em>mozilla.org</em>&nbsp;und&nbsp;<em>goldesel.to</em>.</p>



<p class="wp-block-paragraph">Welche Website wurde zuletzt besucht?</p>



<p class="wp-block-paragraph">Wir holen uns diese Information zunächst aus der Bibliothek des Browsers. Wir sortieren dafür absteigend nach dem&nbsp;<em>Most Recent Visit</em>-Feld.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="474" height="49" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150526-cofo-mostrecent.png" alt="" class="wp-image-2868" title="Die zuletzt besuchte Website" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150526-cofo-mostrecent.png 474w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150526-cofo-mostrecent-350x36.png 350w" sizes="auto, (max-width: 474px) 100vw, 474px" /><figcaption class="wp-element-caption">Die zuletzt besuchte Website</figcaption></figure>



<p class="wp-block-paragraph">Wollen wir die Information wieder aus der Datenbank beziehen, führen wir den folgenden Befehl aus. Die Tabellen müssen an den Feldern&nbsp;<code>h.place_id</code>&nbsp;und&nbsp;<code>p.id</code>&nbsp;verbunden werden, da die Informationen in der Tabelle&nbsp;<code>moz_historyvisits</code>&nbsp;keine Informationen über die URLs enthalten.</p>



<pre class="wp-block-code"><code>sqlite&gt; select distinct  h.visit_date,p.url from moz_historyvisits as h, moz_places as p where h.place_id = p.id order by visit_date desc;
1396279643062000|https://login.live.com/login.srf?wa=wsignin1.0&amp;ct=1396258049&amp;rver=6.1.6206.0&amp;sa=1&amp;ntprob=-1&amp;wp=MBI_SSL_SHARED&amp;wreply=https:%2F%2Fmail.live.com%2F%3Fowa%3D1%26owasuffix%3Dowa%252f&amp;id=64855&amp;snsc=1&amp;cbcxt=mail</code></pre>



<p class="wp-block-paragraph">Die Zahl ist ein dezimaler Unix-Zeitstempel. Wir lassen uns diesen auf&nbsp;<em>epochconverter.com</em>&nbsp;(<a href="http://www.epochconverter.com/">Link</a>) in einen lesbaren Datumswert konvertieren.</p>



<pre class="wp-block-code"><code>1396279643062000:
GMT: Mon, 31 Mar 2014 15:27:23 GMT
Your time zone: Mo 31 Mär 2014 17:27:23 CEST GMT+2:00 DST</code></pre>



<p class="wp-block-paragraph">Die Ausgabe enthält im Gegensatz zum Browser einen Sekundenwert und ist dadurch noch präziser. An dieser Stelle ist spätestens zu sehen, dass für forensische Untersuchungen primär die Datenbank als Informationsquelle genutzt werden sollte.</p>



<p class="wp-block-paragraph">Wurden Zugangsdaten im Browser gespeichert?</p>



<p class="wp-block-paragraph">Wir können die Zugangsdaten komfortabel im Firefox ablesen. Dadurch vermeiden wir den Einsatz von Werkzeugen bzw. Skripten von Drittanbietern.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="455" height="49" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-login.png" alt="" class="wp-image-2869" title="Gespeicherte Zugangsdaten im Firefox" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-login.png 455w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-login-350x38.png 350w" sizes="auto, (max-width: 455px) 100vw, 455px" /><figcaption class="wp-element-caption">Gespeicherte Zugangsdaten im Firefox</figcaption></figure>



<p class="wp-block-paragraph">Da wir die Zugangsdaten an späterer Stelle nochmals benötigen, halten wir sie nun tabellarisch als Text fest.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>URL</th><th>Login</th><th>Passwort</th></tr></thead><tbody><tr><td>https://login.live.com/</td><td>fbi_forensik@outlook.de</td><td>_1a[M6Qa</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">Skype</h4>



<p class="wp-block-paragraph">Wo müssen wir nach Dateien suchen?</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">On a Windows PC, most of these artifacts can be found in the main.db file located at&nbsp;<code>ROOT\Users\%userprofile%\AppData\Roaming\Skype\%SkypeName%\main.db</code>&nbsp;or&nbsp;<code>ROOT\Documents and Settings\%userprofile%\Application Data\Skype\%SkypeName%\</code>&nbsp;for Windows XP installations.http://www.magnetforensics.com/wp-content/uploads/2014/04/Skype-Forensics-Analyzing-Call-and-Chat-Data-From-Computers-and-Mobile-Magnet-Forensics.pdf</p>
</blockquote>



<p class="wp-block-paragraph">Skype speichert seine Daten in der Datenbank&nbsp;<em>main.db</em>&nbsp;ab. Wir werten für die folgenden Aufgaben ausschließlich diese Datei aus.</p>



<p class="wp-block-paragraph">Welcher Account wird vom Anwender genutzt?</p>



<pre class="wp-block-code"><code>sqlite&gt; select id, liveid_membername, skypename, fullname,emails from accounts;
1|dasec@outlook.de|live:dasec_1|dasec hda|dasec@outlook.de
</code></pre>



<p class="wp-block-paragraph">Es gibt nur einen eingerichteten Benutzer, dessen Benutzername lautet&nbsp;<em>dasec_1</em>.</p>



<p class="wp-block-paragraph">Welche Kontakte sind gespeichert?</p>



<pre class="wp-block-code"><code>sqlite&gt; select skypename, fullname,lastonline_timestamp from contacts;
echo123|Echo / Sound Test Service|
brion.weg|Franz Müller|1396200382
live:dasec_1|dasec hda|
</code></pre>



<p class="wp-block-paragraph">Der Benutzer hat einen externen Kontakt namens&nbsp;<em>Franz Müller</em>&nbsp;mit dem Benutzernamen&nbsp;<em>brion.weg</em>. Der Benutzer&nbsp;<em>echo123</em>&nbsp;ist ein Service Account von Skype und dient als Kontakt für Testanrufe. Lediglich der Kontakt&nbsp;<em>brion.weg</em>&nbsp;besitzt einen auswertbaren Zeitstempel in der Datenbank bezüglich der letzten Aktivität.</p>



<p class="wp-block-paragraph">Sind Profilbilder gespeichert?</p>



<pre class="wp-block-code"><code>sqlite&gt; select skypename,hex(avatar_image),hex(profile_attachments) from Contacts;
echo123|FFD8FFE000104A46494600010101006000600000FFE1005A4578696600004D4D002A00000008000401310002000000140000003E511000010000000101000000511100040000000100000B12511200040000000100000B120000000041646F62652046697265776F726B732043533600FFDB0043000201010201010202020202020202030503030303030604040305070607070706070708090B0908080A0807070A0D0A0A0B0C0C0C0C07090E0F0D0C0E0B0C0C0CFFDB004301020202030303060303060C0807080C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFFC000110800A000A003012200021101031101FFC4001F0000010501010101010100000000000000000102030405060708090A0BFFC400B5100002010303020403050504040000017D01020300041105122131410613516107227114328191A1082342B1C11552D1F02433627282090A161718191A25262728292A3435363738393A434445464748494A535455565758595A636465666768696A737475767778797A838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F0100030101010101010101010000000000000102030405060708090A0BFFC400B51100020102040403040705040400010277000102031104052131061241510761711322328108144291A1B1C109233352F0156272D10A162434E125F11718191A262728292A35363738393A434445464748494A535455565758595A636465666768696A737475767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00FD3CA28A2BEF0FC6C28A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A9AC6C66D4EF23B7B78DE69A660888832CC4F615ECDF0EFF670B7B28A3BAD7BFD26E0E185AA37EEE3FF00788FBC7D871F5AE7C462A9D0579BF9753BF0396D7C5CB9692D3AB7B23C7F47F0EDFF008866F2EC6CEEAF187511465B6FD71D3F1AE96D3E0278AAEE3DDFD9A2307A7993C6A4FE1BB3F9D7D1565630E9B6CB0DBC31DBC318C2A46A1557E8053E59D201991D5074CB1C578B533AA8DFB915F3D4FAAA3C2B452FDF4DB7E564BF53E72BBF80BE2AB48F77F66F983BF973C6C47E1BB3F95735ABF87EFBC3F37977D677368C7A096329BBE99EB5F5945324EBBA36575CE32A7351DF5841AA5AB43730C5710C9C347220656FA83453CEAA27EFC57CB40ADC2B45AFDCCDA7E767FE47C8B457B57C45FD9C2DEF2292EB40FF0047B81F31B476FDDC9FEE93F74FB1E3E95E357B65369B7725BDC47243342C55D1D76B291D88AF6B0F8AA75D5E0FE5D4F94C765B5F092E5AAB4E8FA322A28A2BA0E10A28A2800A28A2800A28A2800A28A2800A5552EC15412C4E001DE92BBEFD9E7C18BE25F191BC99375B69604B83D1A43F707E1827FE022B2AD555383A92E8746130F2C4568D18EED9E91F057E14C7E07D296F2EE30DAB5D202F91FF001EEA7F807BFA9FC3B73D278C7C6BA7F81B496BBD426D8BD1235E6498FA28EFFC877ABDAAEA70E8BA6DC5E5C3F9705B466491BD001935F3178FFC7175E3EF114B7D704AC7F7608B3C429D87D7B93DCD7CE61B0F3C655752A3D3AFF923EEF1F8CA595E1E34682F7BA7EAD9D0F8D3F681D6BC4B2B476727F65DA740B09FDE30F77EBFF7CE2B87BABC9AFA6324D2C9348DD59D8B31FC4D47457D1D2A34E9AB4158F84C462EB5797355937FD7624B5BC9AC6612432C90C8BD1918AB0FC45771E0BFDA075AF0D4AB1DE49FDA969D0ACC7F78A3D9FAFF00DF59AE0E8A2AD1A7515A6AE187C5D6A12E6A526BFAEC7D55E0EF1AE9FE39D256EF4F9B7AF478DB89213E8C3B7F23DAB99F8D5F09A3F1B696F7D67185D5AD972368FF008F951FC07DFD0FE1F4F16F0078E2EBC03E2286FADC968F3B678B3C4C9DC7D7B83D8D7D3BA56A70EB5A6DBDE5BBF9905CC6248DBD411915F3989A13C1D55529BD3A7F933EEF018CA59A61E546BAF796FF00A347C8EC0A9C1E08E083DA8AEFBF685F05AF867C65F6C8576DAEAA0CA001C2C83EF8FC720FFC08D7035F4746AAA90538F53E131787961EB4A8CF74FF00AFBC28A28AD4E70A28A2800A28A2800A28A2800AFA03F66DD1D74FF8762E76FCF7F70F213ECA7601F9A9FCEBE7FAFA5BE0971F0B748FFAE6FF00FA31ABC9CE24D504BBBFF33E9385E09E2DB7D22FF348C1FDA6BC40DA6F832DEC51B6B6A33FCFEE89F311FF007D15AF07AFABBC43E0FD33C5661FED1B386F3ECFBBCBF333F26719C7D703F2AF33F8D1F0434FD33409B56D1E236AD6BF34F0062C8EB9E5867A11D71D31FAF3E5B8DA508AA2F76F7E973BF3FCA71156A4B15169A4B6EB65BFEACF1DA28A2BDE3E3028A28A002BDE3F665F10B6A5E0DB8B176DCDA74FF2FB23F23FF1E0F593F063E08586A7A043AB6B119B96BA1BA080B15545CF0C71D49EB8E98FD3D33C3DE0ED33C28663A759C367F68C799E5E7E7C6719FA64FE75E0E658DA538BA2B74F7E973ECF20CA7114A71C549A516B6EB67B7E8CE47F692D1D750F8766E76FCF613A480FB31D847E6C3F2AF9FEBE96F8DBCFC2DD5FFEB9A7FE8C5AF9A6BA32793741A7D1FF0091C1C514D4716A4BAC57E6D0514515EB1F3614514500145145001451450015F457ECF9A88BEF85F6499CB5AC9244DFF7D961FA30AF9D6BD6FF0065CF132C575A86912363CE02E611EE3E57FD36FE46BCDCD69B9E1DB5D353DEE1BAEA9E3527F6935FAFE87B2D55D6B4F5D5F47BBB561B96EA178883DC3023FAD5AA86FEF174FB19AE1FEE411B48D93D80C9AF978DEFA1FA24ACE2D4B63E45A28A2BEE8FC7428A28A00FADB45D3D748D1ED2D546D5B5852200760A00FE956AA1B0BC5D42C61B84FB93C6B22E0F62322A6AF8495EFA9FB146DCAB976389FDA17535D3FE185DC79DAD792470AFB9DC18FE8A6BE75AF5DFDA9F5DDD71A5E98ADF755AE641F5F957F93FE75E455F5394D3E5C3A7DDDFF4FD0FCEF892B7B4C6B8AFB292FD7F50A28A2BD23C10A28A2800A28A2800A28A2800AD0F0B78866F0A7882D350B7FF00596B20703FBC3A107EA091F8D67D14A514D599509B8C94A3BA3EA8D07E2068FE23D363BAB7D42D76C80128F2AABC67D1813906B91F8D7F15B4DB1F08DDE9F65790DD5F5F2180AC2E1C4687862C4703E5C8C75E6BC168AF2A9E514E3539EEDA5D0FA4AFC4D5AA5174D4526D59BFF241451457AC7CC851451401EF5F04FE2B69B77E10B4D3EFAF61B5BEB15F2409DC209107DD2A4F1C2E063AF15E891C8B346ACACACAC32AC0E411EA2BE4AD1B4C7D6B57B5B38FFD65D4C90AF1D0B103FAD7D51A9DE43E14F0CCF3EDDB069D6CCC17FD945E07E98AF99CCB0B1A751386F2E87E839066352BD16AAAD2092BF7FF008648F9E3E35EBBFDBDF12B5270D98EDDFECC9EDB383FF8F6E3F8D72B4FB89DAEA779246DD248C5989EE4F26995F454A9A841417447C2622B3AB56555F56DFDE1451456862145145001451450014514500145145001451450069783FC39278BBC4F65A6C6DB1AEA40A5B1F757AB1FC0026BE9AF0B782F4DF06D8AC1A7DAC70ED1869319924F766EA6BE6FF871E278FC1DE36D3F529959A1B773E605196DACA54E3F035EF93FC68F0C4160B70756B7656190AA19A4FF00BE40C8FC457879B46B4A518C136BCBB9F61C332C2C29CE751A53BF5B6D6E97F3B8DF891F0AB4FF001E6953620861D4B69305C01B4EEEC1C8192A4F5E0E3B73589A0FECD1A169D86BC92EF507EE19FCA8CFE0BCFF00E3D5435EFDA8EC6DF2BA6E9D7174DD37CEC225FC8649FD2B89D7BF681F126B5B963B98AC236FE1B68F69FF00BE8E5BF222B1C3E1B1BC9C89F2AF5FE99D38CCC329553DACA3CF2F25A7E364FF0013DCACF41D0BC0F6DE6C56FA6E9B1AF59582C7F9B1E7F335E7FF001BFE316977FE179F49D2EE45E4F7442CB247FEAE340413F37424E31C71826BC7B50D4EE7569FCDBAB89EE643D5E590BB1FC4D415D9432B519AA9524E4D1E562F88A53A4E8D0828C5E9FD6C90514515EB1F36145145001451450014514500145145001451450014514500145145001451450014514500145145001451450014514500145145001451450014514500145145001451450014514500145145001451450014514500145145007FFFD9|
brion.weg||
live:dasec_1|00FFD8FFE000104A46494600010100000100010000FFDB0043000302020302020303030304030304050805050404050A070706080C0A0C0C0B0A0B0B0D0E12100D0E110E0B0B1016101113141515150C0F171816141812141514FFDB00430103040405040509050509140D0B0D1414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414FFC00011080060006003012200021101031101FFC4001F0000010501010101010100000000000000000102030405060708090A0BFFC400B5100002010303020403050504040000017D01020300041105122131410613516107227114328191A1082342B1C11552D1F02433627282090A161718191A25262728292A3435363738393A434445464748494A535455565758595A636465666768696A737475767778797A838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F0100030101010101010101010000000000000102030405060708090A0BFFC400B51100020102040403040705040400010277000102031104052131061241510761711322328108144291A1B1C109233352F0156272D10A162434E125F11718191A262728292A35363738393A434445464748494A535455565758595A636465666768696A737475767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00F3EB8D35D18EE5FC7D6A8CB6786E4607AD775716418608ACABEB08921691BE50A3249E8315FA2CA3A1F9F2A97D0F963F682D7C26A56DA4062B1449E6C98EE4FF00F5BF9D78EB5D1B8B765B484C8A38181C8AE9BE326B83C45E25BEBF8D8985A4D917BA8E01FC719FC6B4FE0BF876DF51B6BBBCBC6096B0BE64663D07F8935F0F5E6EAD5958FB6A2BD9D189E73762EA354492268D7764061D6AAB798ED9C671ED5F465E788B46D36390AE90186324CF63976FA6E53FD2B43C05E34F01789F515B1BAD26C3CF6F97C8BC816D64739E88C09427D8904F6A9F65CAF563F6ADEA91F34B48C3CC93FBC815BF13516CE578238C735FA2367F00FE1F6A3A6AC90E830B40C72F0B028CA7D187518F4A66ADF087C05A45ABDD4BE1DD32348572D3DCC7958D7BF19C66B6F612B5EE737D723B599F06787FC3979AEF98D15A4B381F2EE4524673505D68D3E953B43716EF11C8037A953D7DEBEC8D3FE34FC33F0524B61A2E86DAAC45F12FD8220413FF007D22FA7426AE6A975F0BBE3269A2D6F740BAF0C5EB0D96F7B22796A1BB6583B2FF00DF58F6269AA29ABA96A2789927AC5D8F89ECC34328CA9183915F65FC30D5CEB1E07D3266606548FCA7FAAF1FCABE5AF885E139FC01E35B9D16EC7CF0E0865E8C39C1FA11CD7B67ECFBAD9B9D3B50B266FF0056C9322FB1183FC87E75D3809B856E57D48C64554A3CFD8FA9A7B7CF406BCD3E38F883FE115F005FCA8765C5CFFA3C473CE5BA91F866BD7E5B72173D6BE5CFDAE75823FB234D0DC16798807A63007F335F498DA9ECB0F2923E67050F6B5E313E5ED7A51341276DA41EB5EFFF00B2ADB692341BCB8D44AB3A4DBE38DF90719E7F0FEB5F3B6A12F9EB7240039181F415F49FEC99F0C6EFE246857510BE6D32D526282E1230EC5BA9001AF8AC3A93A89455D9F655ECA9BBBB23D535ED6741BEDEB70B69E5636FEF36FF005AF12F899F0AAC3528DF51D1CC65540626160DB7FF00AD5D1FC47FD8EB5CD3F5693C8D56EF5125B3E68911C01DB2B9523F2AC5D07F665F1869F3A94D62680E70148DBFD4D74D5F6ADF2CA1A9CD4BD9C527199ECFFB3378C6EF55F028D3354BC5B9D52CE530A1049630E06C0C48E48E40CE78C7354BF695F00F88BC711E89A7DBEA8BA6E94EECD756B86DF3B71B5B03A8033D48009AEEFE0D7C374F0EDC9F3547DA02E64603F8B806BD57E29782EE75CD11EF34E23FB560B7DB6CD226E5CFFB42BA9D19C68D99C12AB08D7E689F3E7C2AF831E1FF00085AC22745B895482D25C10493FC87D062BDF2C7C33E19D73476B2B9D2ECEE6DA55C1531A90057C71E25FD9FBE29788AF84BA8F882E666CF0B16E541FF007CB577DF07FF0067CF897E10D445E278ACB5A632F69748CEADF425B22B0A559C74502ABD253F7BDA6A7847ED7DE1B4F08FC5882CE29DAE204B28BCA776DCDB32DB549EE428033F4A83E066A874EF13AC7D05C5B98CFA70723F9552FDAA3FB657E2B4D16B7B0DE471A8DD167632F6C67B566F806E1ACF5BB5993AA85207E3CD611972D6E7B5B53D28C5CB0EA2DDF43F47A58F0AC31C81DEBE21FDAB2FFCCF882900E561B5033E849FFEB7EB5F775F2072BC7D6BE05FDA8D7FE2E6DDFA0887F5AFA6CD35C3E9D5A3E5F2AFF78F933C0CB8226DC7A0E7EBCD7D71FB2178E62F0E7C3BBD8A3745BA8AE99B19E7040E6BE45560C9360753FA5761F0B357BDB696EEDACE52B2B2F9BB33F7C0EA3F2AF93A5374A7CC8FB09C14E3667DAC3E2ADCEB3AB48F2E5431E4935DDE91E25B269ADD490F21230ABC926BE38F08F8DEFF00C41AC43A4DB2C715E3A798867E0328EA463AF7E3D8FA57D0DE15D3F52F0C593EAC0AEA7ABC51930C6E76C7BB1DBD3EB5E9E1AB54949BDD1C78F549C5724796C7D05A1D8AC6F7133A2C6EC3941DB2457731471DD58AF992A449B71BD8F15F0C5E7ED5DACE877D6F6BE23D3E0D32E25933B239480573C124F4FC78AFA5FC1BF16356F1ADA582F87FC3B16B908654BB921BC50D092A4A9DB821C119E41C70457A9F58855F755EFE87CF54C3548479E4755A959C36E73F6A8064641C9C5645A6AB6516A2219753551B4E3CB52C377A76C55FF1FF00C3DBF16AD79A248B05C6DDD2D95D12B1B9FF0061BF84FD78FA57CD5A97C638747D66FB4C6B66FED8B490C12C40860921C8C6E1C763DF3C57256AAE8E92563AF0AA328376B9E19FB6BBC173F1A03C2CAE3ECA81997D735C0785098AE607CF400FE19AAFF15B58B9D7FE21EA12DDBEF9E3C2B107807AE3F51F954FE178D9E78D0F42847EB5E2CA5CD272EE7D0D08DA0A27E991759031CE715F0B7ED6B69F65F1EC8E7F8A1CFEA6BEF496DC22B718C900D7C41FB655B85F168917A18F611DC1EBFD6BEC333A76C37A1F1994CEF8AF91F2D5AA931C87B66AC786F576D075EB4BB5C8113FCD8EEA782292D57F70E074CD67CABB581CF3DEBE19BEA7DD1F41AF855B597B28B47BB4B0D6A16FB668F7AEC15250DCBC2CDD8E7A67D71DEB62EBE317C5BF06C4D6BAA68966AC995135C401493EBD403F5C572BF082F93C4BA5AE852CBB2EE33E6D8CC7AEE00E573F8D7B9F87F53F15DA5908ECB547431655ED6E137ED61D473835DD45BB7BADA386A72B769AB9E0FE05B0D2BC63E39B9D6FE24EB11F9272C2024B995C8E33B3202AFA71D076CD773F0EBE2EDFFC06F1C4C7C39AAA6ADA34608B49E160EDE5B11FBA9232416031D38E80822BA3F177C52F117C3C582FF58B786EAD6697CA0F6D6B921B19C105C75C1C7D2BD93E0F78A357F889A145AC41E1F82D2CDA42B1B6A569B1A4DA70594073C678C9C74AD29B9A9D9377EE4D654DD3BCB6EC739AEFED2BF1AFE2BE8DF62F0DF84E3B233298C6B290B44235FEF2B3BED56C771923B735C66A1E11B3F07688963E625DB690A6FB53BF007EFEF1C6D0ABEC06401D862BE88F15DF6A50D88B35F244F31F2D2DED936024FE671EB5F33FC6ED72DFC31A4DCE9692AC9E466E2F26040F367C7CA9F8123F4AD31177772773828F2DF969AB1F2EEA17526A3E20D46E1CEE696762C7F1AEBBC331B3DED9C638679027F2AE2347CCCCCEDD5DF71AF49F03C224D7F4C0D8DBF698F24F4FBC2B822AF647B97E53EFA87E22FC812EADC1FF006938CFE15F23FED5FAC5BEB9AF492C048DAFB707FDD19FE62BD3B4CF8B5E1CD6982ADDF9121E36CAB8E6BC0BE35EA96DA9EB328B7984DB657248FA003F957D6E615E12C3B5CDB9F219661E74EBF338D8F1FB48808D876C8E6B3AFA311C9F89CD6E416E42051D5BFA5636ADC5CB01CD7C6B5647D975347C21E2497C3DAADB4EB218C472070C3F84FAD7DBFF000CFC4F65E368EDAF55D3ED322059947F110300FD6BE010706BB5F873F13F53F87FA92CD0334D6D9F9E127F97A56946AAA52BF430AD4BDA474DCFA57F6BC5FEC5D2346D3A35F323BE91DCBFA32A8DA3FF001E3F957D4DFB21E96927C10D32DB53B9F3EEB4CF3ADC4910FBC836BA839EA419197FE035F05FC62F8DDA7FC4FF0009E9AAAA62D46CA7DE11B824152A47EB5EEDF0CFF6BAF0AFC28F821A6E94B7CF77ABFD9DBED16B0212EF23BB3952DD060B004FA0AF629E22946A39B3C7AD87AAE82825ADCF50F8D5E39D3BC016977A95CCEB1DD942A8EC7FD5FD07AFF5C57E76FC44F88173E36D5A59773A59072D1C4C7963FDE6F7356FE2BFC5CD6BE2BEBF2DFEA527970EE3E55AA1F95076FA9F7AE10F3ED5E457ADED65E47A586C3AA3157DCDFD05FE51EB9AF47F06BEDD52D49C82B2AB01F8822BCC7432415FF7ABD13439CC1751BE71B4A9C9F6C7F85383B1D52D4DABFF001633A94B0B7B78DFFBD1A640FC6B8CBEF34BB3CEDBA490924FAD58BAD7755BD1E544B0DB93918817E639AAF7C86D218D5F2D205C1C9C9CD124D6E3524D59188CFE4C99EA54573D76FE64CE7DEB5AF6629BB233D6B1DA301739CD60FB1488A80714118A2A063E22A1C16FBB44A46E25791EB4CA280027228A5E9494580D2D1E42B27D48AEF2CAE80B6DDD80C67D0D79CD95C7932827A575F637625B0930724AE715BAB35626DA9FFFD9|</code></pre>



<p class="wp-block-paragraph">Die Ausgabe zeigt uns, dass tatsächlich zwei Bilder für Profile in der Datenbank vorhanden sind. Wir kopieren die hexadezimalen Ausgabewerte in den folgenden&nbsp;<code>echo</code>-Befehl hinein und schreiben diese Information mittels&nbsp;<code>xxd</code>&nbsp;in neue Dateien hinein, um die Avatare zu erzeugen.</p>



<pre class="wp-block-code"><code>echo !!Platzhalter!! | xxd -r -p &gt; bild1.jpg
echo !!Platzhalter!! | xxd -r -p &gt; bild2.jpg</code></pre>



<p class="wp-block-paragraph">Werfen wir danach einen Blick auf das Dateisystem, finden wir nun die folgenden Bilder vor.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><img loading="lazy" decoding="async" width="150" height="150" class="wp-image-2870" style="width: 150px;" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bild1.jpg" alt="" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bild1.jpg 160w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bild1-150x150.jpg 150w" sizes="auto, (max-width: 150px) 100vw, 150px" /><br>Avatar von echo123</td><td><img loading="lazy" decoding="async" width="96" height="96" class="wp-image-2871" style="width: 96px;" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150624-cofo-bild2.jpg" alt=""><br>Avatar von dasec_1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Es ist uns gelungen alle gespeicherten Avatare aus der Datenbank erfolgreich zu rekonstruieren.</p>



<p class="wp-block-paragraph">Wann waren diese Konakte zuletzt online?</p>



<p class="wp-block-paragraph">Bei dem zuvor erhobenen Datumswert handelt es sich erneut um einen Unix-Zeitstempel. Wir konvertieren ihn wie zuvor über&nbsp;<em>epochconverter.com</em>.</p>



<pre class="wp-block-code"><code>1396200382:
GMT: Sun, 30 Mar 2014 17:26:22 GMT
Your time zone: 30.3.2014, 19:26:22 GMT+2:00 DST</code></pre>



<p class="wp-block-paragraph">Der Kontakt&nbsp;<em>brion.weg</em>&nbsp;war somit zuletzt am 30.03.2014 um 19:16:22 Uhr online.</p>



<p class="wp-block-paragraph">Wurden Anrufe getätigt? Wenn ja, mit wem und wie lange?</p>



<pre class="wp-block-code"><code>sqlite&gt; select id, duration, current_video_audience from calls;
38|24|brion.weg </code></pre>



<p class="wp-block-paragraph">Ja es wurde ein Anruf mit&nbsp;<em>brion.weg</em>&nbsp;getätigt. Die Anrufdauer ist in Sekunden gespeichert und beträgt somit 24 Sekunden. Die Dauer des Anrufs wird ebenfalls im Chatverlauf abgelegt, wie in der nächsten Teilaufgabe zu sehen ist.</p>



<p class="wp-block-paragraph">Wurde der Chat verwendet? Welche Informationen können Sie hieraus ermitteln?</p>



<pre class="wp-block-code"><code>sqlite&gt; select convo_id, author, body_xml from messages;
24|brion.weg|Hallo dasec hda, ich möchte Sie als Kontakt aufnehmen. Franz Müller
24|live:dasec_1|
24|live:dasec_1|Hallo Franzel. Hast du was fuer mich?
24|brion.weg|Was möchtest Du denn  haben?
24|live:dasec_1|Das uebliche
24|brion.weg|Das besprechen wir lieber per Sprachchat
24|live:dasec_1|ok
24|live:dasec_1|&lt;partlist alt=""&gt;
  &lt;part identity="live:dasec_1"&gt;
    &lt;name&gt;dasec hda&lt;/name&gt;
    &lt;duration&gt;24&lt;/duration&gt;
  &lt;/part&gt;
  &lt;part identity="brion.weg"&gt;
    &lt;name&gt;Franz Müller&lt;/name&gt;
    &lt;duration&gt;24&lt;/duration&gt;
  &lt;/part&gt;
&lt;/partlist&gt;
24|live:dasec_1|&lt;partlist alt=""&gt;
  &lt;part identity="live:dasec_1"&gt;
    &lt;name&gt;dasec hda&lt;/name&gt;
    &lt;duration&gt;24&lt;/duration&gt;
  &lt;/part&gt;
  &lt;part identity="brion.weg"&gt;
    &lt;name&gt;Franz Müller&lt;/name&gt;
    &lt;duration&gt;24&lt;/duration&gt;
  &lt;/part&gt;
&lt;/partlist&gt;
24|brion.weg|Alles abgemacht. ich sende Dir das Paket auf deine emailadresse. Wie immer versteckt. Ein Gruß von Steganos Hide
24|live:dasec_1|Danke Dir Bye</code></pre>



<p class="wp-block-paragraph">Der vorhandene Chat zeigt auf, dass in dem zuvor sichergestellten E-Mail-Postfach vermutlich weitere relevante Informationen zu finden sind.</p>



<h3 class="wp-block-heading">Freie Suche</h3>



<p class="wp-block-paragraph">Suchen Sie nach versteckten Informationen. Folgen Sie auch Spuren, die das Image verlassen.</p>



<p class="wp-block-paragraph">Zugriff auf das E-Mail-Postfach</p>



<p class="wp-block-paragraph">Wir rufen die Seite der gespeicherten Zugangsdaten auf und loggen uns ein. Wir untersuchen die E-Mails anhand der Absender und der Inhalte, ob sie das angesprochene&nbsp;<em>Paket</em>&nbsp;aus dem Chatverlauf enthalten.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1032" height="670" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-email.png" alt="" class="wp-image-2872" title="E-Mail" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-email.png 1032w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-email-350x227.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-email-768x499.png 768w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-email-1024x665.png 1024w" sizes="auto, (max-width: 1032px) 100vw, 1032px" /><figcaption class="wp-element-caption">E-Mail</figcaption></figure>



<p class="wp-block-paragraph">An dieser Stelle finden wir eine Bilddatei, die uns zunächst keine verwertbaren Informationen liefert. Im Posteingang sind jedoch weitere E-Mails bezüglich einer Software von Steganos zu finden, die es erlaubt Informationen verschlüsselt in Bilder einzubetten. Ein Zugriff auf diese Informationen ist nur mithilfe eines Passworts möglich. Wir suchen also im nächsten Schritt das geheime Passwort für die Ent- bzw. Verschlüsselung. Zum Einsatz kommt dabei&nbsp;<code>fls</code>&nbsp;mit dem wir das Abbild der Partition nach einer Datei mit einem passenden Namen durchsuchen.</p>



<pre class="wp-block-code"><code>$ fls -f ntfs -r partition_1.dd | grep Steg
++++ d/d 13015-144-6:	Steganos Privacy Suite 15
+++++ r/r 13016-128-4:	Steganos Privacy Suite 15 Help.lnk
+++++ r/r 13017-128-4:	Uninstall Steganos Privacy Suite 15.lnk
+++ d/d 12919-144-5:	Steganos
++ d/d 12979-144-1:	Steganos
+ d/d 12955-144-7:	Steganos Privacy Suite 15
++ r/r 13070-128-4:	SteganosUpdater.exe
++ r/r 13009-128-4:	SteganosUpdater.res
++ r/r 13601-128-4:	SteganosBrowserMonitor.exe
++ r/r 3832-128-4:	SteganosHotKeyService.exe
++ r/r 12962-128-4:	SteganosUI.res
+ r/r 7821-128-5:	Edoofy.jpeg:PasswortSteganos</code></pre>



<p class="wp-block-paragraph">Wir finden einen&nbsp;<em>Alternativen Datenstrom (ADS)</em>&nbsp;an der Datei&nbsp;<em>Edoofy.jpeg</em>, den wir uns genauer ansehen.</p>



<pre class="wp-block-code"><code>$ icat partition_1.dd 7821-128-5
"W)5S_DXitLN"</code></pre>



<p class="wp-block-paragraph">Das Passwort nutzen wir zusammen mit der installierten Steganos Software, die wir über die Laufzeitumgebung&nbsp;<code>Wine</code>&nbsp;starten. In der folgenden Abbildung sind die gefundenen Dateien abgebildet.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1504" height="590" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-steganos.png" alt="" class="wp-image-2873" title="Dateien im Steganos-Safe" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-steganos.png 1504w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-steganos-350x137.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-steganos-768x301.png 768w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-steganos-1024x402.png 1024w" sizes="auto, (max-width: 1504px) 100vw, 1504px" /><figcaption class="wp-element-caption">Dateien im Steganos-Safe</figcaption></figure>



<p class="wp-block-paragraph">Wir haben somit drei Bilder und eine Textdatei in dem Steganos-Safe gefunden.</p>



<p class="wp-block-paragraph">Gefundenes TrueCrypt-Passwort</p>



<p class="wp-block-paragraph">Im dritten Praktikum hatten wir ein TrueCrypt-Passwort in einem nicht-allozierten Bereich gefunden.</p>



<pre class="wp-block-code"><code>$ strings unallocated_2.dd 
Truecrypt Passwort: 7kE5v-&lt;Y_qYF:7Y</code></pre>



<p class="wp-block-paragraph">Wir suchen nun nach dem passendem Container mittels&nbsp;<code>find</code>. Zunächst suchen wir nach Dateien, welche die Zeichenkette &#8222;true&#8220; in ihrem Dateinamen verwenden.</p>



<pre class="wp-block-code"><code>$ find -iname *true*
./Documents and Settings/All Users/Desktop/TrueCrypt.lnk
./Documents and Settings/All Users/Start Menu/Programs/TrueCrypt
./Documents and Settings/All Users/Start Menu/Programs/TrueCrypt/TrueCrypt Website.url
./Documents and Settings/All Users/Start Menu/Programs/TrueCrypt/TrueCrypt.lnk
./Documents and Settings/All Users/Start Menu/Programs/TrueCrypt/Uninstall TrueCrypt.lnk
./Documents and Settings/Owner/Favorites/Downloads/Programs/TrueCrypt - Free Open-Source Disk Encryption.url
./Documents and Settings/Owner/Local Settings/My Documents/Downloads/TrueCrypt Setup 7.1a.exe
./Documents and Settings/Owner/Local Settings/My Documents/truecrypt-container
./Program Files/TrueCrypt
./Program Files/TrueCrypt/TrueCrypt Format.exe
./Program Files/TrueCrypt/TrueCrypt Setup.exe
./Program Files/TrueCrypt/TrueCrypt User Guide.pdf
./Program Files/TrueCrypt/truecrypt-x64.sys
./Program Files/TrueCrypt/TrueCrypt.exe
./Program Files/TrueCrypt/truecrypt.sys
./WINDOWS/system32/drivers/truecrypt.sys</code></pre>



<p class="wp-block-paragraph">Wir haben den gesuchten Container bereits mit diesem Verfahren gefunden. Ein ebenfalls praktikabler Ansatz ist eine Suche über die Dateigröße. Wir suchen nun nach allen Dateien, die größer als 20 Megabyte sind.</p>



<pre class="wp-block-code"><code>$ find  -size +20M
./Documents and Settings/All Users/Application Data/Skype/{7A3C7E05-EE37-47D6-99E1-2EB05A3DA3F7}/Skype.msi
./Documents and Settings/Owner/Local Settings/My Documents/Downloads/sss15int.exe
./Documents and Settings/Owner/Local Settings/My Documents/truecrypt-container
./Documents and Settings/Owner/Local Settings/Temp/Skype.msi
./pagefile.sys
./Program Files/Mozilla Firefox/xul.dll
./WINDOWS/Driver Cache/i386/driver.cab
./WINDOWS/SoftwareDistribution/Download/0de4390649d19bd073825763d839441a37dda551
./WINDOWS/Installer/4442e.msp
./WINDOWS/Installer/MSIEE.tmp</code></pre>



<p class="wp-block-paragraph">Wir mounten die Datei&nbsp;<em>truecrypt-container</em>&nbsp;in TrueCrypt und entschlüsseln diese mit dem gefundenen Passwort. In der folgenden Abbildung sind die gefundenen Dateien abgebildet.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1285" height="659" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-truecrypt.png" alt="" class="wp-image-2874" title="Dateien im TrueCrypt-Container" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-truecrypt.png 1285w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-truecrypt-350x179.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-truecrypt-768x394.png 768w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150625-cofo-truecrypt-1024x525.png 1024w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /><figcaption class="wp-element-caption">Dateien im TrueCrypt-Container</figcaption></figure>



<p class="wp-block-paragraph">Wir haben somit drei Bilder und ein Video in dem TrueCrypt-Container gefunden.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/06/computer-forensik-praktikum-5/">Computer Forensik (Praktikum 5)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/06/computer-forensik-praktikum-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Diskrete Strukturen (Praktikum 2)</title>
		<link>https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-2/</link>
					<comments>https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-2/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Fri, 29 May 2015 19:09:00 +0000</pubDate>
				<category><![CDATA[Diskrete Strukturen]]></category>
		<category><![CDATA[1. Semester (M.Sc.)]]></category>
		<category><![CDATA[Master of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2010</guid>

					<description><![CDATA[<p>Das zweite Praktikum beschäftigt sich mit Operationen und Darstellungen von Permutationen sowie der Erzeugung von Gruppenelementen. Weiterhin sollen Erzeuger und Gruppenordnungen für geometrische Objekte definiert werden. Skript-Anfang Praktikum 2 &#8211; Seite 1 Skript-Ende Praktikum 2 &#8211; Seite 2 Operationen und Darstellungen von Permutationen Implementieren Sie die Multiplikation und die Inversion von Permutationen in Sn. Verwenden [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-2/">Diskrete Strukturen (Praktikum 2)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Das zweite Praktikum beschäftigt sich mit Operationen und Darstellungen von Permutationen sowie der Erzeugung von Gruppenelementen. Weiterhin sollen Erzeuger und Gruppenordnungen für geometrische Objekte definiert werden.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>Praktikum 2 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>Praktikum 2 &#8211; Seite 2</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Operationen und Darstellungen von Permutationen</h3>



<p class="wp-block-paragraph">Implementieren Sie die Multiplikation und die Inversion von Permutationen in S<sub>n</sub>. Verwenden Sie die Listennotation als Darstellung im Rechner und beachten Sie die Laufzeit von O(n) für beide Routinen. Implementieren Sie die Zyklennotation als Ausgabe von Permutationen. Beachten Sie dabei die drei Konventionen: Sortieren nach dem kleinsten Element innerhalb eines Zykels, Weglassen von Einerzyklen und die gesonderte Darstellung der Identität.</p>



<p class="wp-block-paragraph">Konsolenausgabe des folgenden Quellcodes</p>



<pre class="wp-block-code"><code>Ausgaben Zykel (Offset 1):
vA &#91;5,4,3,2,1] = (1,5)(2,4) 
vB &#91;2,4,1,3,5] = (1,2,4,3) 
vC &#91;2,5,4,3,1] = (1,2,5)(3,4) 
vD &#91;3,2,6,9,5,7,1,8,4] = (1,3,6,7)(4,9) 
id &#91;1,2,3,4,5] = id5

Multiplikation von: 
(1,5)(2,4) * (1,2,4,3) -&gt; (1,4,3,5)

Inversion:
(1,2,5)(3,4) -&gt; (1,5,2)(3,4)</code></pre>



<h4 class="wp-block-heading">Includes und Deklarationen</h4>



<pre class="wp-block-code"><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;math.h&gt;
#include &lt;assert.h&gt;
#include &lt;algorithm&gt;
using namespace std;
  
string list_to_cycle(vector&lt;unsigned int&gt;&amp; vVector, int iOffset);
string output_list(vector&lt;unsigned int&gt;&amp; vVector, int iOffset);
bool isId(vector&lt;unsigned int&gt;&amp; vTmp);
vector&lt;unsigned int&gt; invertieren(vector&lt;unsigned int&gt;&amp; vVector);
vector&lt;unsigned int&gt; multiplizieren(vector&lt;unsigned int&gt;&amp; vLinks, vector&lt;unsigned int&gt;&amp; vRechts);</code></pre>



<h4 class="wp-block-heading">Main()</h4>



<pre class="wp-block-code"><code>int main() {
    int iTmp&#91;] = {0,1,2,3,4};
    vector&lt;unsigned int&gt; vID(iTmp, iTmp + sizeof iTmp / sizeof iTmp&#91;0]);
     
    int iTmp2&#91;] = {4,3,2,1,0};
    vector&lt;unsigned int&gt; vA(iTmp2, iTmp2 + sizeof iTmp2 / sizeof iTmp2&#91;0]);

    int iTmp3&#91;] = {1,3,0,2,4};
    vector&lt;unsigned int&gt; vB(iTmp3, iTmp3 + sizeof iTmp3 / sizeof iTmp3&#91;0]);
     
    int iTmp4&#91;] = {1,4,3,2,0};
    vector&lt;unsigned int&gt; vC(iTmp4, iTmp4 + sizeof iTmp4 / sizeof iTmp4&#91;0]);
     
    // 3,2,6,9,5,7,1,8,4 //  http://cims.nyu.edu/~kiryl/teaching/aa/les100103.pdf (1367)(49)
    int iTmp5&#91;] = {2,1,5,8,4,6,0,7,3};
    vector&lt;unsigned int&gt; vD(iTmp5, iTmp5 + sizeof iTmp5 / sizeof iTmp5&#91;0]);
     
    // Umwandlung in Zykelnotation (Offset 1)
    cout &lt;&lt; "Ausgaben Zykel (Offset 1):\n";
    cout &lt;&lt; "vA &#91;5,4,3,2,1] = " &lt;&lt; list_to_cycle(vA,1) &lt;&lt; "\n";
    cout &lt;&lt; "vB &#91;2,4,1,3,5] = " &lt;&lt; list_to_cycle(vB,1) &lt;&lt; "\n";
    cout &lt;&lt; "vC &#91;2,5,4,3,1] = " &lt;&lt; list_to_cycle(vC,1) &lt;&lt; "\n";
    cout &lt;&lt; "vD &#91;3,2,6,9,5,7,1,8,4] = " &lt;&lt; list_to_cycle(vD,1) &lt;&lt; "\n";
    cout &lt;&lt; "id &#91;1,2,3,4,5] = " &lt;&lt; list_to_cycle(vID,1)&lt;&lt; "\n\n";  
     
    //Multiplizieren (Offset 1)
    vector&lt;unsigned int&gt; vTmp=multiplizieren(vA,vB);
    cout    &lt;&lt; "Multiplikation von: \n"
            &lt;&lt; list_to_cycle(vA,1)
            &lt;&lt; " * "
            &lt;&lt; list_to_cycle(vB,1)
            &lt;&lt; " -&gt; "
            &lt;&lt; list_to_cycle(vTmp,1)
            &lt;&lt; "\n\n";
   
    // Invertieren (Offset 1)
    vTmp = invertieren(vC);
    cout &lt;&lt; "Inversion: \n";
    cout &lt;&lt; list_to_cycle(vC,1) &lt;&lt; " -&gt; " &lt;&lt; list_to_cycle(vTmp,1);
    cout &lt;&lt; "\n\n";
}</code></pre>



<h4 class="wp-block-heading">Multiplikation</h4>



<pre class="wp-block-code"><code>vector&lt;unsigned int&gt; multiplizieren(vector&lt;unsigned int&gt;&amp; vLinks, vector&lt;unsigned int&gt;&amp; vRechts)
{   
    vector&lt;unsigned int&gt; tmp(vRechts.size(),0);
    for (unsigned int i=0;i&lt;vRechts.size();i++)
    {
        tmp&#91;i]=vLinks&#91;vRechts&#91;i]];
    }
    return tmp;
}</code></pre>



<h4 class="wp-block-heading">Inversion</h4>



<pre class="wp-block-code"><code>vector&lt;unsigned int&gt; invertieren(vector&lt;unsigned int&gt;&amp; vVector)
{
    vector&lt;unsigned int&gt; tmp(vVector.size(),0);
    for (unsigned int i=0;i&lt;vVector.size();i++)
    {
        tmp&#91;vVector&#91;i]]=i;
    }
    return tmp;
}</code></pre>



<h4 class="wp-block-heading">Ausgabe in Zykelnotation</h4>



<pre class="wp-block-code"><code>string list_to_cycle(vector&lt;unsigned int&gt;&amp; vVector, int iOffset) {
    stringstream ss;
    if (isId(vVector)) {
        ss &lt;&lt; "id" &lt;&lt; vVector.size();
    } else {
        bool bAktiv&#91;vVector.size()];
        for (unsigned int i = 0; i &lt; vVector.size(); i++) {
            bAktiv&#91;i] = true;
        }
 
        for (unsigned int i = 0; i &lt; vVector.size(); i++) {
            if (bAktiv&#91;i]) {
                if (i == vVector&#91;i]) {
                    bAktiv&#91;i] = false;
                    continue;
                } else {
                    ss &lt;&lt; "(";
                    ss &lt;&lt; i + iOffset;
                    bAktiv&#91;i] = false;
                    int j = i;
 
                    while (bAktiv&#91;vVector&#91;j]]) {
                        j = vVector&#91;j];
                        ss &lt;&lt; "," &lt;&lt; j + iOffset;
                        bAktiv&#91;j] = false;
                    }
                    ss &lt;&lt; ")";
                }
            }
        }
    }
    return ss.str();
}</code></pre>



<h4 class="wp-block-heading">Hilfsfunktionen</h4>



<pre class="wp-block-code"><code>bool isId(vector&lt;unsigned int&gt;&amp; vTmp) {
    for (unsigned int i = 0; i &lt; vTmp.size(); i++) {
        if (i != vTmp&#91;i]) {
            return false;
        }
    }
    return true;
}

string output_list(vector&lt;unsigned int&gt;&amp; vVector, int iOffset)
{
    stringstream ss;
 
    if (isId(vVector)==true)
    {
        ss &lt;&lt; "id" &lt;&lt; vVector.size();
    }
    else
    {
        ss &lt;&lt; "&#91;";
        for (unsigned int i=0;i&lt;vVector.size();i++)
        {
            ss &lt;&lt; vVector&#91;i]+ iOffset;
            if (i&lt;vVector.size()-1)
            {
                ss &lt;&lt; ",";
            }
        }
        ss &lt;&lt; "]";
    }
    return ss.str();
}</code></pre>



<h3 class="wp-block-heading">Erzeugung von Gruppenelementen</h3>



<p class="wp-block-paragraph">Entwerfen und implementieren Sie einen Algorithmus, welche bei Eingabe einer Liste von Permutationen \(\pi_0, \cdots, \pi_{l-1} \in S_n\) alle Gruppenelemente der von diesen Permutationen erzeugten Gruppe \( G=\left \langle \pi_0 ,\cdots, \pi_{l-1} \right \rangle \) generiert. Dokumentieren und erläutern Sie alle Schritte nachvollziehbar.</p>



<p class="wp-block-paragraph">Konsolenausgabe des folgenden Quellcodes</p>



<pre class="wp-block-code"><code>Aufgabe 2:

Erzeuger:
(0,1,2,3)
(0,1)(2,3)

Gruppenelemente:
&#91;1,2,3,0] | (0,1,2,3)
&#91;1,0,3,2] | (0,1)(2,3)
&#91;2,3,0,1] | (0,2)(1,3)
&#91;0,3,2,1] | (1,3)
&#91;2,1,0,3] | (0,2)
id4 | id4
&#91;3,0,1,2] | (0,3,2,1)
&#91;3,2,1,0] | (0,3)(1,2)</code></pre>



<h4 class="wp-block-heading">Includes und Deklarationen</h4>



<p class="wp-block-paragraph">Für diese Aufgabe benötigen wir die Invertierung nicht mehr. Stattdessen deklarieren wir nun eine Funktion zur Überprüfung der Gleichheit von zwei Vektoren sowie die Funktion zur Erzeugung aller&nbsp;Gruppenelemente.</p>



<pre class="wp-block-code"><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;math.h&gt;
#include &lt;assert.h&gt;
#include &lt;algorithm&gt;
using namespace std;
  
string list_to_cycle(vector&lt;unsigned int&gt;&amp; vVector, int iOffset);
string output_list(vector&lt;unsigned int&gt;&amp; vVector, int iOffset);
bool isId(vector&lt;unsigned int&gt;&amp; vTmp);
vector&lt;unsigned int&gt; multiplizieren(vector&lt;unsigned int&gt;&amp; vLinks, vector&lt;unsigned int&gt;&amp; vRechts);<br>void create_group(vector&lt; vector&lt;unsigned int&gt; &gt;&amp; vErzeuger);
bool areEqual(vector&lt;unsigned int&gt;&amp; vA, vector&lt;unsigned int&gt;&amp; vB);</code></pre>



<h4 class="wp-block-heading">Main()</h4>



<pre class="wp-block-code"><code>int main() {
    cout &lt;&lt; "Aufgabe 2:\n\n";
    vector&lt; vector&lt;unsigned int&gt; &gt; vErzeuger;   
 
    vector&lt;unsigned int&gt; vErzeuger1;
    vErzeuger1.push_back(1);
    vErzeuger1.push_back(2);
    vErzeuger1.push_back(3);
    vErzeuger1.push_back(0);
 
    vector&lt;unsigned int&gt; vErzeuger2;
    vErzeuger2.push_back(1);
    vErzeuger2.push_back(0);
    vErzeuger2.push_back(3);
    vErzeuger2.push_back(2);    
    
    vErzeuger.push_back(vErzeuger1);
    vErzeuger.push_back(vErzeuger2);
    
    create_group(vErzeuger);
}</code></pre>



<h4 class="wp-block-heading">Erzeugung aller Gruppenelemente</h4>



<pre class="wp-block-code"><code>void create_group(vector&lt; vector&lt;unsigned int&gt; &gt;&amp; vErzeuger)
 {     
    vector&lt; vector&lt;unsigned int&gt; &gt; vSchlange;
    vector&lt; vector&lt;unsigned int&gt; &gt; vAblage;
    vector&lt;unsigned int&gt; tmp;
    
     cout &lt;&lt; "Erzeuger:\n";
    for (unsigned int i=0;i&lt;vErzeuger.size();i++)
    {
        vAblage.push_back(vErzeuger.at(i));
        vSchlange.push_back(vErzeuger.at(i));
       cout &lt;&lt; list_to_cycle(vErzeuger.at(i),0) &lt;&lt; "\n";
    }
    cout &lt;&lt; "\n";
    
    // Läuft solange die Qu nicht leer ist
    while (vSchlange.size()&gt;0)
    {
        // Laufe alle Erzeuger ab und wende sie auf das erste Element in Q an
        for (unsigned int j=0;j&lt;vErzeuger.size();j++)
        {
            // Erzeuge Element
            vector&lt;unsigned int&gt; vT = multiplizieren(vErzeuger.at(j),vSchlange.at(0));
         
            bool unknown=true;
         
            // Prüfe ob Element bekannt ist
            for (unsigned int x=0;x&lt;vAblage.size();x++)
            {
                tmp=vAblage.at(x);
             
                if (areEqual(vT, tmp)==true)
                {
                    unknown=false;
                    break;
                }
            }
         
            //wenn unbekannt, kommt es auf die Q
            if (unknown==true)
            {
                vSchlange.push_back(vT);
                vAblage.push_back(vT);
            }
        }
     
        // entferne erstes Element aus Q nachdem alle Erzeuger drόber sind
        tmp=vSchlange.at(0);
        vSchlange.erase(vSchlange.begin()); 
    }
 
    // Ausgabe der Ablage
    cout &lt;&lt; "Gruppenelemente:\n";
    for (unsigned int i=0;i&lt;vAblage.size();i++)
    {
        cout &lt;&lt; output_list(vAblage.at(i),0) &lt;&lt; " | " &lt;&lt; list_to_cycle(vAblage.at(i),0) &lt;&lt; "\n";
    }
}</code></pre>



<h4 class="wp-block-heading">Hilfsfunktionen</h4>



<p class="wp-block-paragraph">Hier ist die Vergleichsfunktion zweier Integer-Vektoren zu finden. Eine wesentlich effizientere Vergleichsmethode wäre es den Rang beider Vektoren zu bestimmen und diesen zu vergleichen. Für dieses Praktikum ist diese Lösung jedoch ausreichend.</p>



<pre class="wp-block-code"><code>bool areEqual(vector&lt;unsigned int&gt;&amp; vA, vector&lt;unsigned int&gt;&amp; vB)
{
    // Größe weicht ab / vermeidet Fehler
    if (vA.size()!=vB.size())
    {
        // Groessenabweichung
        return false;
    }
 
    // Vergleiche Stellenweise
    for (unsigned int i=0;i&lt;vA.size();i++)
    {
        if (vA&#91;i]!=vB&#91;i])
        {
            // Stellenweise Abweichung
            return false;
        }
    }
    // Sie sind gleich
    return true;
}</code></pre>



<h3 class="wp-block-heading">Erzeuger von geometrischen Objekten</h3>



<p class="wp-block-paragraph">Definieren Sie für folgende Gruppen Erzeuger und generieren Sie alle Gruppenelemente mit der Routine aus Aufgabe 2. Wie sind die Gruppenordnungen?</p>



<p class="wp-block-paragraph">Symmetriegruppe D<sub>3</sub>&nbsp;des regulären Dreiecks</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="400" height="362" src="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-dreieck.png" alt="" class="wp-image-2011" title="Dreieck" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-dreieck.png 400w, https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-dreieck-350x317.png 350w" sizes="auto, (max-width: 400px) 100vw, 400px" /><figcaption class="wp-element-caption">Dreieck</figcaption></figure>



<pre class="wp-block-code"><code>Erzeuger:
(0,1,2)
(0,1)

Gruppenelemente:
&#91;1,2,0] | (0,1,2)
&#91;1,0,2] | (0,1)
&#91;2,0,1] | (0,2,1)
&#91;0,2,1] | (1,2)
&#91;2,1,0] | (0,2)
id3 | id3</code></pre>



<p class="wp-block-paragraph">Die Ordnung der Gruppe beträgt 6.</p>



<p class="wp-block-paragraph">Symmetriegruppe V<sub>4</sub>&nbsp;eines Rechtecks mit unterschiedlicher Seitenlänge</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="400" height="273" src="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-rechteck.png" alt="" class="wp-image-2012" title="Rechteck" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-rechteck.png 400w, https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-rechteck-350x239.png 350w" sizes="auto, (max-width: 400px) 100vw, 400px" /><figcaption class="wp-element-caption">Rechteck</figcaption></figure>



<pre class="wp-block-code"><code>Erzeuger:
(0,1)(2,3)
(0,2)(1,3)

Gruppenelemente:
&#91;1,0,3,2] | (0,1)(2,3)
&#91;2,3,0,1] | (0,2)(1,3)
id4 | id4
&#91;3,2,1,0] | (0,3)(1,2)</code></pre>



<p class="wp-block-paragraph">Die Ordnung der Gruppe beträgt 4.</p>



<p class="wp-block-paragraph">Symmetriegruppe T des Tetraeders</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="400" height="337" src="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-tetraeder.png" alt="" class="wp-image-2013" title="Tetraeder" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-tetraeder.png 400w, https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-tetraeder-350x295.png 350w" sizes="auto, (max-width: 400px) 100vw, 400px" /><figcaption class="wp-element-caption">Tetraeder</figcaption></figure>



<pre class="wp-block-code"><code>Erzeuger:
(0,1,2)
(0,3)(1,2)

Gruppenelemente:
&#91;1,2,0,3] | (0,1,2)
&#91;3,2,1,0] | (0,3)(1,2)
&#91;2,0,1,3] | (0,2,1)
&#91;2,1,3,0] | (0,2,3)
&#91;3,0,2,1] | (0,3,1)
id4 | id4
&#91;1,3,2,0] | (0,1,3)
&#91;0,2,3,1] | (1,2,3)
&#91;3,1,0,2] | (0,3,2)
&#91;0,3,1,2] | (1,3,2)
&#91;2,3,0,1] | (0,2)(1,3)
&#91;1,0,3,2] | (0,1)(2,3)</code></pre>



<p class="wp-block-paragraph">Die Gruppenordnung beträgt 12.</p>



<p class="wp-block-paragraph">Symmetriegruppe Q des Würfels</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="400" height="398" src="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-wuerfel.png" alt="" class="wp-image-2014" title="Würfel" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-wuerfel.png 400w, https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-wuerfel-350x348.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-wuerfel-150x150.png 150w" sizes="auto, (max-width: 400px) 100vw, 400px" /><figcaption class="wp-element-caption">Würfel</figcaption></figure>



<pre class="wp-block-code"><code>Erzeuger:
(0,1,2,3)(4,5,6,7)
(0,3,7,4)(1,2,6,5)

Gruppenelemente:
&#91;1,2,3,0,5,6,7,4] | (0,1,2,3)(4,5,6,7)
&#91;3,2,6,7,0,1,5,4] | (0,3,7,4)(1,2,6,5)
&#91;2,3,0,1,6,7,4,5] | (0,2)(1,3)(4,6)(5,7)
&#91;2,6,7,3,1,5,4,0] | (0,2,7)(1,6,4)
&#91;0,3,7,4,1,2,6,5] | (1,3,4)(2,7,5)
&#91;7,6,5,4,3,2,1,0] | (0,7)(1,6)(2,5)(3,4)
&#91;3,0,1,2,7,4,5,6] | (0,3,2,1)(4,7,6,5)
&#91;6,7,3,2,5,4,0,1] | (0,6)(1,7)(2,3)(4,5)
&#91;3,7,4,0,2,6,5,1] | (0,3)(1,7)(2,4)(5,6)
&#91;6,5,4,7,2,1,0,3] | (0,6)(1,5)(2,4)(3,7)
&#91;1,0,4,5,2,3,7,6] | (0,1)(2,4)(3,5)(6,7)
&#91;4,7,6,5,0,3,2,1] | (0,4)(1,7)(2,6)(3,5)
&#91;4,5,1,0,7,6,2,3] | (0,4,7,3)(1,5,6,2)
id8 | id8
&#91;7,3,2,6,4,0,1,5] | (0,7,5)(1,3,6)
&#91;7,4,0,3,6,5,1,2] | (0,7,2)(1,4,6)
&#91;5,4,7,6,1,0,3,2] | (0,5)(1,4)(2,7)(3,6)
&#91;0,4,5,1,3,7,6,2] | (1,4,3)(2,5,7)
&#91;5,1,0,4,6,2,3,7] | (0,5,2)(3,4,6)
&#91;2,1,5,6,3,0,4,7] | (0,2,5)(3,6,4)
&#91;5,6,2,1,4,7,3,0] | (0,5,7)(1,6,3)
&#91;4,0,3,7,5,1,2,6] | (0,4,5,1)(2,3,7,6)
&#91;1,5,6,2,0,4,7,3] | (0,1,5,4)(2,6,7,3)
&#91;6,2,1,5,7,3,0,4] | (0,6)(1,2)(3,5)(4,7)</code></pre>



<p class="wp-block-paragraph">Die Gruppenordnung beträgt 24.</p>



<p class="wp-block-paragraph">Symmetriegruppe I des Ikosaeders</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="400" height="424" src="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-ikosaeder.png" alt="" class="wp-image-2015" title="Ikosaeder" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-ikosaeder.png 400w, https://maximiliankrieg.de/wp-content/uploads/2026/04/20150709-dist-ikosaeder-330x350.png 330w" sizes="auto, (max-width: 400px) 100vw, 400px" /><figcaption class="wp-element-caption">Ikosaeder</figcaption></figure>



<pre class="wp-block-code"><code>Erzeuger:
(1,2,3,4,5)(6,7,8,9,10)
(0,3,10,9,1)(4,6,11,8,5)

Gruppenelemente:
&#91;0,2,3,4,5,1,7,8,9,10,6,11] | (1,2,3,4,5)(6,7,8,9,10)
&#91;3,0,2,10,6,4,11,7,5,1,9,8] | (0,3,10,9,1)(4,6,11,8,5)
&#91;0,3,4,5,1,2,8,9,10,6,7,11] | (1,3,5,2,4)(6,8,10,7,9)
&#91;3,2,10,6,4,0,7,5,1,9,11,8] | (0,3,6,7,5)(1,2,10,11,8)
&#91;4,0,3,6,7,5,11,8,1,2,10,9] | (0,4,7,8,1)(2,3,6,11,9)
&#91;10,3,2,9,11,6,8,7,4,0,1,5] | (0,10,1,3,9)(4,11,5,6,8)
&#91;0,4,5,1,2,3,9,10,6,7,8,11] | (1,4,2,5,3)(6,9,7,10,8)
&#91;3,10,6,4,0,2,5,1,9,11,7,8] | (0,3,4)(1,10,7)(2,6,5)(8,9,11)
&#91;4,3,6,7,5,0,8,1,2,10,11,9] | (0,4,5)(1,3,7)(2,6,8)(9,10,11)
&#91;10,2,9,11,6,3,7,4,0,1,8,5] | (0,10,8)(1,2,9)(3,11,5)(4,6,7)
&#91;5,0,4,7,8,1,11,9,2,3,6,10] | (0,5,1)(2,4,8)(3,7,9)(6,11,10)
&#91;6,3,10,11,7,4,8,5,0,2,9,1] | (0,6,8)(1,3,11)(2,10,9)(4,7,5)
&#91;6,4,3,10,11,7,9,8,5,0,2,1] | (0,6,9)(1,4,11)(2,3,10)(5,7,8)
&#91;9,10,2,1,8,11,5,7,6,3,0,4] | (0,9,3,1,10)(4,8,6,5,11)
&#91;0,5,1,2,3,4,10,6,7,8,9,11] | (1,5,4,3,2)(6,10,9,8,7)
&#91;3,6,4,0,2,10,1,9,11,7,5,8] | (0,3)(1,6)(2,4)(5,10)(7,9)(8,11)
&#91;4,6,7,5,0,3,1,2,10,11,8,9] | (0,4)(1,6)(2,7)(3,5)(8,10)(9,11)
&#91;10,9,11,6,3,2,4,0,1,8,7,5] | (0,10,7)(1,9,8)(2,11,5)(3,6,4)
&#91;5,4,7,8,1,0,9,2,3,6,11,10] | (0,5)(1,4)(2,7)(3,8)(6,9)(10,11)
&#91;6,10,11,7,4,3,5,0,2,9,8,1] | (0,6,5,3,7)(1,10,8,2,11)
&#91;9,2,1,8,11,10,7,6,3,0,5,4] | (0,9)(1,2)(3,8)(4,11)(5,10)(6,7)
&#91;1,0,5,8,9,2,11,10,3,4,7,6] | (0,1)(2,5)(3,8)(4,9)(6,11)(7,10)
&#91;7,4,6,11,8,5,9,1,0,3,10,2] | (0,7,1,4,8)(2,6,9,3,11)
&#91;11,10,9,8,7,6,5,4,3,2,1,0] | (0,11)(1,10)(2,9)(3,8)(4,7)(5,6)
&#91;7,5,4,6,11,8,10,9,1,0,3,2] | (0,7,9)(1,5,8)(2,4,11)(3,6,10)
&#91;11,6,10,9,8,7,1,5,4,3,2,0] | (0,11)(1,6)(2,10)(3,9)(4,8)(5,7)
&#91;10,6,3,2,9,11,1,8,7,4,0,5] | (0,10)(1,6)(2,3)(4,9)(5,11)(7,8)
&#91;1,9,2,0,5,8,4,7,11,10,3,6] | (0,1,9,10,3)(4,5,8,11,6)
id12 | id12
&#91;3,4,0,2,10,6,9,11,7,5,1,8] | (0,3,2)(1,4,10)(5,6,9)(7,11,8)
&#91;4,7,5,0,3,6,2,10,11,8,1,9] | (0,4,3)(1,7,10)(2,5,6)(8,11,9)
&#91;10,11,6,3,2,9,0,1,8,7,4,5] | (0,10,4,2,6)(1,11,5,9,7)
&#91;5,7,8,1,0,4,2,3,6,11,9,10] | (0,5,4)(1,7,3)(2,8,6)(9,11,10)
&#91;6,11,7,4,3,10,0,2,9,8,5,1] | (0,6)(1,11)(2,7)(3,4)(5,10)(8,9)
&#91;9,1,8,11,10,2,6,3,0,5,7,4] | (0,9,5,2,8)(3,11,4,10,7)
&#91;1,5,8,9,2,0,10,3,4,7,11,6] | (0,1,5)(2,8,4)(3,9,7)(6,10,11)
&#91;7,6,11,8,5,4,1,0,3,10,9,2] | (0,7)(1,6)(2,11)(3,8)(4,5)(9,10)
&#91;11,9,8,7,6,10,4,3,2,1,5,0] | (0,11)(1,9)(2,8)(3,7)(4,6)(5,10)
&#91;1,2,0,5,8,9,7,11,10,3,4,6] | (0,1,2)(3,5,9)(4,8,10)(6,7,11)
&#91;2,0,1,9,10,3,11,6,4,5,8,7] | (0,2,1)(3,9,5)(4,10,8)(6,11,7)
&#91;8,5,7,11,9,1,10,2,0,4,6,3] | (0,8)(1,5)(2,7)(3,11)(4,9)(6,10)
&#91;8,9,1,5,7,11,4,6,10,2,0,3] | (0,8,10)(1,9,2)(3,5,11)(4,7,6)
&#91;8,1,5,7,11,9,6,10,2,0,4,3] | (0,8,2,5,9)(3,7,10,4,11)
&#91;11,7,6,10,9,8,2,1,5,4,3,0] | (0,11)(1,7)(2,6)(3,10)(4,9)(5,8)
&#91;8,11,9,1,5,7,0,4,6,10,2,3] | (0,8,6)(1,11,3)(2,9,10)(4,5,7)
&#91;6,7,4,3,10,11,2,9,8,5,0,1] | (0,6,2,4,10)(1,7,9,5,11)
&#91;9,11,10,2,1,8,0,5,7,6,3,4] | (0,9,6)(1,11,4)(2,10,3)(5,8,7)
&#91;2,10,3,0,1,9,5,8,11,6,4,7] | (0,2,3)(1,10,4)(5,9,6)(7,8,11)
&#91;4,5,0,3,6,7,10,11,8,1,2,9] | (0,4,6,10,2)(1,5,7,11,9)
&#91;5,8,1,0,4,7,3,6,11,9,2,10] | (0,5,7,6,3)(1,8,11,10,2)
&#91;9,8,11,10,2,1,3,0,5,7,6,4] | (0,9,7)(1,8,5)(2,11,4)(3,10,6)
&#91;1,8,9,2,0,5,3,4,7,11,10,6] | (0,1,8,7,4)(2,9,11,6,3)
&#91;7,11,8,5,4,6,0,3,10,9,1,2] | (0,7,3,5,6)(1,11,2,8,10)
&#91;11,8,7,6,10,9,3,2,1,5,4,0] | (0,11)(1,8)(2,7)(3,6)(4,10)(5,9)
&#91;2,1,9,10,3,0,6,4,5,8,11,7] | (0,2,9,8,5)(3,10,11,7,4)
&#91;8,7,11,9,1,5,2,0,4,6,10,3] | (0,8,4,1,7)(2,11,3,9,6)
&#91;2,3,0,1,9,10,8,11,6,4,5,7] | (0,2)(1,3)(4,9)(5,10)(6,8)(7,11)
&#91;5,1,0,4,7,8,6,11,9,2,3,10] | (0,5,8,9,2)(3,4,7,11,10)
&#91;7,8,5,4,6,11,3,10,9,1,0,2] | (0,7,10)(1,8,9)(2,5,11)(3,4,6)
&#91;2,9,10,3,0,1,4,5,8,11,6,7] | (0,2,10,6,4)(1,9,11,7,5)</code></pre>



<p class="wp-block-paragraph">Die Gruppenordnung beträgt 60. Es gilt verallgemeinert: \(|\text{Gruppenelemente}|=|\text{Knoten}|*|\text{Kanten pro Knoten}|\).</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-2/">Diskrete Strukturen (Praktikum 2)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Computer Forensik (Praktikum 3)</title>
		<link>https://maximiliankrieg.de/2015/05/computer-forensik-praktikum-3/</link>
					<comments>https://maximiliankrieg.de/2015/05/computer-forensik-praktikum-3/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 21 May 2015 17:49:00 +0000</pubDate>
				<category><![CDATA[Computer Forensik]]></category>
		<category><![CDATA[1. Semester (M.Sc.)]]></category>
		<category><![CDATA[Master of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2855</guid>

					<description><![CDATA[<p>Das dritte Praktikum beschäftigt sich mit der weiterführenden Analyse des sichergestellten Festplattenabbildes. In diesem Kontext werden auch gelöschte Dateien aus nicht-allozierten Bereichen wiederhgerstellt. Skript-Anfang Praktikum 3 &#8211; Seite 1 Skript-Ende Praktikum 3 &#8211; Seite 1 Datenträgeranalyse Analyse der Partitionen Vergewissern Sie sich, dass keine Veränderungen am Image der zweiten Partition durchgeführt wurden. Wir berechnen den [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/05/computer-forensik-praktikum-3/">Computer Forensik (Praktikum 3)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Das dritte Praktikum beschäftigt sich mit der weiterführenden Analyse des sichergestellten Festplattenabbildes. In diesem Kontext werden auch gelöschte Dateien aus nicht-allozierten Bereichen wiederhgerstellt.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>Praktikum 3 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>Praktikum 3 &#8211; Seite 1</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Datenträgeranalyse</h3>



<h4 class="wp-block-heading">Analyse der Partitionen</h4>



<p class="wp-block-paragraph">Vergewissern Sie sich, dass keine Veränderungen am Image der zweiten Partition durchgeführt wurden.</p>



<p class="wp-block-paragraph">Wir berechnen den Hashwert des Images und vergleichen diesen rückblickend mit den Ergebnissen aus dem zweiten Praktikum.</p>



<pre class="wp-block-code"><code># sha256sum partition_2.dd
af1b66fdf5ae27c07da0fb9915c4d7f6f6be2941484136698e73fa75cc6aab86  partition_2.dd</code></pre>



<p class="wp-block-paragraph">Welches Dateisystem befindet sich auf partition_2.dd?</p>



<p class="wp-block-paragraph">Da sich an dem Hashwert nichts geändert hat und wir somit noch auf dem gleichen Image arbeiten, handelt es sich um eine FAT16-Partition. Der Vollständigkeit halber lassen wir uns diese Information nochmals durch&nbsp;<code>fsstat</code>&nbsp;zeigen.</p>



<pre class="wp-block-code"><code># fsstat partition_2.dd 
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: FAT16

OEM Name: mkdosfs
Volume ID: 0x3ccb36b8
Volume Label (Boot Sector):            
Volume Label (Root Directory):
File System Type Label: FAT16   

...</code></pre>



<p class="wp-block-paragraph">Kopieren Sie den Bootsektor von partition_2.dd nach partition_2_boot.dd und berechnen Sie dessen Hashsumme.</p>



<p class="wp-block-paragraph">Da der Bootsektor von Partition 2 nur einen HDD-Block groß ist, setzen wir die Parameter&nbsp;<code>count=1</code>&nbsp;und&nbsp;<code>bs=512</code>.</p>



<pre class="wp-block-code"><code># dd if=partition_2.dd of=partition_2_boot.dd count=1 bs=512
1+0 records in
1+0 records out
512 bytes (512 B) copied, 3.9738e-05 s, 12.9 MB/s

# sha256sum partition_2_boot.dd 
5ab9eb35a368441b3c3a16da8945fe58a99cd224b7061382a92fa608bdec3732  partition_2_boot.dd</code></pre>



<h4 class="wp-block-heading">FAT-Analyse</h4>



<p class="wp-block-paragraph">Ermitteln Sie nur unter Zuhilfenahme eines Hexdump-Viewers aus dem Bootsektor die Größe der Reserverd Area, die Anzahl und Größe der FATs.</p>



<p class="wp-block-paragraph">Zunächst extrahieren wir die Informationen aus dem Bootsektor mittels&nbsp;<code>xxd</code>.</p>



<pre class="wp-block-code"><code># xxd partition_2_boot.dd 
0000000: eb3c 906d 6b64 6f73 6673 0000 0204 0100  .&lt;.mkdosfs......
0000010: 0200 0200 a0f8 2800 2000 4000 0000 0000  ......(. .@.....
0000020: 0000 0000 0000 29b8 36cb 3c20 2020 2020  ......).6.&lt;     
0000030: 2020 2020 2020 4641 5431 3620 2020 0e1f        FAT16   ..
0000040: be5b 7cac 22c0 740b 56b4 0ebb 0700 cd10  .&#91;|.".t.V.......
0000050: 5eeb f032 e4cd 16cd 19eb fe54 6869 7320  ^..2.......This 
0000060: 6973 206e 6f74 2061 2062 6f6f 7461 626c  is not a bootabl
0000070: 6520 6469 736b 2e20 2050 6c65 6173 6520  e disk.  Please 
0000080: 696e 7365 7274 2061 2062 6f6f 7461 626c  insert a bootabl
0000090: 6520 666c 6f70 7079 2061 6e64 0d0a 7072  e floppy and..pr
00000a0: 6573 7320 616e 7920 6b65 7920 746f 2074  ess any key to t
00000b0: 7279 2061 6761 696e 202e 2e2e 200d 0a00  ry again ... ...
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.</code></pre>



<p class="wp-block-paragraph">Die folgende Tabelle zeigt die Struktur einer FAT-Partition und wie die Informationen zu interpretieren sind.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Bytes</th><th>Länge in Byte</th><th>Inhalt</th></tr></thead><tbody><tr><td>0x000</td><td>3</td><td>Jump instruction</td></tr><tr><td>0x003</td><td>8</td><td>OEM Name</td></tr><tr><td>0x00B</td><td>2</td><td>Bytes per logical sector in powers of two (512)</td></tr><tr><td>0x00D</td><td>1</td><td>Logical sectors per cluster (1, 2, 4, 8, 16, 32, 64, and 128)</td></tr><tr><td>0x00E</td><td>2</td><td>Count of reserved logical sectors</td></tr><tr><td>0x010</td><td>1</td><td>Number of File Allocation Tables</td></tr><tr><td>0x011</td><td>2</td><td>Number of root directory entries (224) 0 for FAT32. 512 is recommended for FAT16.</td></tr><tr><td>0x013</td><td>2</td><td>Total logical sectors</td></tr><tr><td>0x015</td><td>1</td><td>Media descriptor</td></tr><tr><td>0x016</td><td>2</td><td>Logical sectors per File Allocation Table</td></tr><tr><td>0x018</td><td>2</td><td>Physical sectors per track for disks</td></tr><tr><td>0x01A</td><td>2</td><td>Number of heads for disks</td></tr><tr><td>0x01C</td><td>4</td><td>Count of hidden sectors preceding the partition that contains this FAT volume</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Wir übertragen die Ausgabe von&nbsp;<code>xxd</code>&nbsp;in dieses Schema, um die gesuchten Werte zu ermitteln.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Wert</th><th>Hexdump-Ausgabe</th><th>Wert</th></tr></thead><tbody><tr><td>Größe der Reserved Area</td><td>01 00</td><td>0x0001 = 1 Block</td></tr><tr><td>Anzahl der FATs</td><td>02</td><td>0x02 = 2 Stück</td></tr><tr><td>Größe der FATs</td><td>28 00</td><td>0x0028 = 40 HDD-Blöcke</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Welche HDD-Blöcke werden von der FAT belegt?</p>



<ul class="wp-block-list">
<li>HDD-Block 0 wird von der Reserved Area belegt</li>



<li>Folglich belegt FAT0 die HDD-Blöcke 1 bis 40</li>



<li>Die FAT1 belegt die HDD-Blöcke 41-80</li>



<li>Somit werden von der FAT die HDD-Blöcke 1 bis 80 belegt</li>
</ul>



<p class="wp-block-paragraph">Bestimmen Sie nur unter Zuhilfenahme eines Hexdump-Viewers, welche HDD-Blöcke von Cluster 2 und 178 belegt werden.</p>



<p class="wp-block-paragraph">Um den Offset und die Größe der Cluster zu bestimmen, verwenden wir die folgenden Angaben.</p>



<p class="wp-block-paragraph"><strong>Komponenten der Formel</strong></p>



<p class="wp-block-paragraph">\( \\ \text{Teil 1} = \text{Groesse d. Reserved Area } + \text{ FAT-Groesse }* \text{ FAT-Anzahl } \\ \text{Teil 2} = \frac{\text{ Max. Eintraege im Root Directory} * \text{ Byte pro Eintrag}}{\text{HDD-Blockgroesse}} \\ \text{Teil 3} = (n &#8211; 2) * \text{HDD-Bloecke pro Cluster} \)</p>



<p class="wp-block-paragraph">Start von Cluster n = Teil 1 + Teil 2 + Teil 3</p>



<p class="wp-block-paragraph"><strong>Variablen</strong></p>



<ul class="wp-block-list">
<li>Größe der Reserved Area (<em>Offset 14−15</em>): 01 00 = 00 01 = 1 HDD-Block</li>



<li>Größe einer FAT (<em>Offset 22−23</em>): 28 00 = 0x0028 = 40 HDD-Blöcke</li>



<li>Anzahl der FATs (<em>Offset 16</em>): 02 = 0x02 = 2 Stück</li>



<li>Verzeichniseinträge im Root Directory (<em>Offset 17-18</em>): 00 02 = 0x0200 = 512 Stück</li>



<li>Ein Eintrag im Root Directory ist immer 32 Byte groß</li>



<li>Größe eines HDD-Blocks in Bytes (<em>Offset 11−12</em>): 00 02 = 0x0200 = 512 Byte</li>



<li>Größe eines Clusters (<em>Offset 13</em>): 04 = 0x04 = 4 HDD-Blöcke pro Cluster</li>
</ul>



<p class="wp-block-paragraph">Setzt man die Variablen in die Formeln ein und addiert diese, unter Berücksichtigung, dass ein Cluster immer 4 HDD-Blöcke groß ist, so ergeben sich folgende Resultate.</p>



<p class="wp-block-paragraph"><strong>Ergebnis</strong></p>



<ul class="wp-block-list">
<li>Cluster 2: 113 + (0)*4 = 113-116</li>



<li>Cluster 178: 113 + (176)*4 = 817-820</li>
</ul>



<p class="wp-block-paragraph">Ist Cluster 25 alloziert? Welche Informationen können Sie aus dem Eintrag gewinnen?</p>



<p class="wp-block-paragraph">Zunächst extrahieren wir die Informationen aus der FAT0 mittels&nbsp;<code>blkcat</code>.</p>



<pre class="wp-block-code"><code># blkcat partition_2.dd 1 | xxd | less

0000000: f8ff ffff 9815 0400 0500 0600 0700 0800  ................
0000010: 0900 0a00 0b00 0c00 0d00 0e00 0f00 1000  ................
0000020: 1100 1200 1300 1400 1500 1600 1700 1800  ................
0000030: 1900 1a00 1b00 1c00 1d00 1e00 1f00 2000  .............. .
0000040: 2100 2200 2300 2400 2500 2600 2700 2800  !.".#.$.%.&amp;.'.(.
0000050: 2900 2a00 2b00 2c00 2d00 2e00 2f00 3000  ).*.+.,.-.../.0.
...</code></pre>



<p class="wp-block-paragraph">Wir wissen, dass jeder FAT-Eintrag 16 Bit bzw. 2 Byte groß ist. Somit handelt es sich bei Cluster 25 um&nbsp;<code>1a00</code>. Seine Information zeigt auf das nächste Cluster, was bedeutet, dass er alloziert ist. Wir überprüfen dies nochmals mit&nbsp;<code>istat</code>.</p>



<pre class="wp-block-code"><code># istat partition_2.dd 25 | head
Directory Entry: 25
Allocated
File Attributes: Long File Name
Size: 0
Name: pm090930_geis

Directory Entry Times:
Written:	0000-00-00 00:00:00 (UTC)
Accessed:	0000-00-00 00:00:00 (UTC)
Created:	0000-00-00 00:00:00 (UTC)</code></pre>



<p class="wp-block-paragraph">Was bedeutet der Wert 0xFFF7 als Clusterbelegung?</p>



<ul class="wp-block-list">
<li>Cluster unbelegt: 0x0000</li>



<li>Cluster beschädigt: 0xfff7</li>



<li>End-of-File-Label: 0xfff8 bis 0xffff</li>
</ul>



<p class="wp-block-paragraph">Geben Sie hexadezimal an, in welchem Speicherbereich (in Bytes) der Hexdump des Verzeichniseintrags (’Inode’) 6 im Image zu finden ist, wenn die Nummerierung der Verzeichniseinträge gemäß dem Vorschlag des Sleuthkits gewählt wurde.</p>



<p class="wp-block-paragraph">Zunächst extrahieren wir alle Verzeichniseinträge mittels&nbsp;<code>hexdump</code>&nbsp;und Gruppieren diese entsprechend ihrer Inodes.</p>



<pre class="wp-block-code"><code># hexdump -C partition_2.dd | less
0000a200  43 66 00 00 00 ff ff ff  ff ff ff 0f 00 71 ff ff  |Cf...........q..| // Inode 3
0000a210  ff ff ff ff ff ff ff ff  ff ff 00 00 ff ff ff ff  |................|

0000a220  02 63 00 2d 00 62 00 73  00 69 00 0f 00 71 2d 00  |.c.-.b.s.i...q-.| // Inode 4
0000a230  32 00 30 00 30 00 35 00  2e 00 00 00 70 00 64 00  |2.0.0.5.....p.d.|

0000a240  01 73 00 74 00 75 00 64  00 69 00 0f 00 71 65 00  |.s.t.u.d.i...qe.| // Inode 5
0000a250  2d 00 76 00 6f 00 69 00  70 00 00 00 73 00 65 00  |-.v.o.i.p...s.e.|

0000a260  53 54 55 44 49 45 7e 31  50 44 46 20 00 64 5b 50  |STUDIE~1PDF .d&#91;P| // Inode 6
0000a270  9d 3b 9d 3b 00 00 5b 50  9d 3b 03 00 4d a3 ac 00  |.;.;..&#91;P.;..M...|

0000a280  e5 6f 00 74 00 2e 00 6a  00 70 00 0f 00 9c 67 00  |.o.t...j.p....g.| // Inode 7
0000a290  00 00 ff ff ff ff ff ff  ff ff 00 00 ff ff ff ff  |................|

0000a2a0  e5 7a 00 65 00 69 00 63  00 68 00 0f 00 9c 6e 00  |.z.e.i.c.h....n.| // Inode 8
0000a2b0  75 00 6e 00 67 00 2d 00  64 00 00 00 65 00 70 00  |u.n.g.-.d...e.p.|

0000a2c0  e5 45 49 43 48 4e 7e 31  4a 50 47 20 00 00 07 6c  |.EICHN~1JPG ...l| // Inode 9
0000a2d0  9d 3b 9d 3b 00 00 07 6c  9d 3b 75 18 d0 db 00 00  |.;.;...l.;u.....|

0000a2e0  e5 7a 00 7a 00 7a 00 7a  00 7a 00 0f 00 44 7a 00  |.z.z.z.z.z...Dz.| // Inode 10
0000a2f0  00 00 ff ff ff ff ff ff  ff ff 00 00 ff ff ff ff  |................|

0000a300  e5 7a 00 7a 00 7a 00 7a  00 7a 00 0f 00 44 7a 00  |.z.z.z.z.z...Dz.| // Inode 11
0000a310  7a 00 7a 00 7a 00 7a 00  7a 00 00 00 7a 00 7a 00  |z.z.z.z.z...z.z.|

0000a320  e5 5a 5a 5a 5a 5a 7e 31  20 20 20 20 00 00 ed 50  |.ZZZZZ~1    ...P| // Inode 12
0000a330  9d 3b 81 44 00 00 ed 50  9d 3b 00 00 00 00 00 00  |.;.D...P.;......|

0000a340  e5 59 4d 41 4e 54 7e 31  50 53 20 20 00 64 6a 50  |.YMANT~1PS  .djP| // Inode 13
0000a350  9d 3b 9d 3b 00 00 6a 50  9d 3b da 16 aa 7b 12 00  |.;.;..jP.;...{..|

0000a360  41 74 00 72 00 6f 00 6a  00 61 00 0f 00 78 6e 00  |At.r.o.j.a...xn.| // Inode 14
0000a370  65 00 72 00 2e 00 70 00  6e 00 00 00 67 00 00 00  |e.r...p.n...g...|

0000a380  54 52 4f 4a 41 4e 45 52  50 4e 47 20 00 00 73 50  |TROJANERPNG ..sP| // Inode 15
0000a390  9d 3b 81 44 00 00 73 50  9d 3b 2a 19 dd 62 1d 00  |.;.D..sP.;*..b..|

0000a3a0  43 7a 00 74 00 61 00 67  00 2e 00 0f 00 b7 70 00  |Cz.t.a.g......p.| // Inode 16
0000a3b0  64 00 66 00 00 00 ff ff  ff ff 00 00 ff ff ff ff  |d.f.............|

0000a3c0  02 49 00 44 00 5f 00 47  00 72 00 0f 00 b7 75 00  |.I.D._.G.r....u.| // Inode 17
0000a3d0  6e 00 64 00 73 00 63 00  68 00 00 00 75 00 74 00  |n.d.s.c.h...u.t.|

0000a3e0  01 32 00 30 00 30 00 39  00 2d 00 0f 00 b7 30 00  |.2.0.0.9.-....0.| // Inode 18
0000a3f0  32 00 2d 00 31 00 32 00  5f 00 00 00 52 00 46 00  |2.-.1.2._...R.F.|

0000a400  32 30 30 39 2d 30 7e 31  50 44 46 20 00 64 a5 50  |2009-0~1PDF .d.P| // Inode 19
0000a410  9d 3b 9d 3b 00 00 a5 50  9d 3b 23 27 50 fd 1c 00  |.;.;...P.;#'P...|

0000a420  42 69 00 63 00 68 00 74  00 2d 00 0f 00 8f 32 00  |Bi.c.h.t.-....2.| // Inode 20
0000a430  30 00 30 00 37 00 2e 00  70 00 00 00 64 00 66 00  |0.0.7...p...d.f.|

0000a440  01 42 00 4b 00 41 00 2d  00 4a 00 0f 00 8f 61 00  |.B.K.A.-.J....a.| // Inode 21
0000a450  68 00 72 00 65 00 73 00  62 00 00 00 65 00 72 00  |h.r.e.s.b...e.r.|

0000a460  42 4b 41 2d 4a 41 7e 31  50 44 46 20 00 00 db 50  |BKA-JA~1PDF ...P| // Inode 22
0000a470  9d 3b 81 44 00 00 db 50  9d 3b d7 1c 23 1c 17 00  |.;.D...P.;..#...|

0000a480  24 52 45 43 59 43 4c 45  42 49 4e 16 00 0d d9 01  |$RECYCLEBIN.....| // Inode 23
0000a490  81 44 81 44 00 00 da 01  81 44 75 18 00 00 00 00  |.D.D.....Du.....|

0000a4a0  42 74 00 65 00 72 00 77  00 61 00 0f 00 31 6c 00  |Bt.e.r.w.a...1l.| // Inode 24
0000a4b0  64 00 2e 00 70 00 64 00  66 00 00 00 00 00 ff ff  |d...p.d.f.......|

0000a4c0  01 70 00 6d 00 30 00 39  00 30 00 0f 00 31 39 00  |.p.m.0.9.0...19.| // Inode 25
0000a4d0  33 00 30 00 5f 00 67 00  65 00 00 00 69 00 73 00  |3.0._.g.e...i.s.|

0000a4e0  50 4d 30 39 30 39 7e 31  50 44 46 20 00 a4 ec 01  |PM0909~1PDF ....| // Inode 26
0000a4f0  81 44 81 44 00 00 75 55  7f 44 77 18 62 83 00 00  |.D.D..uU.Dw.b...|

0000a500  e5 4c 2d 41 20 20 20 20  4a 50 47 20 18 89 ed 01  |.L-A    JPG ....| // Inode 27
0000a510  81 44 81 44 00 00 42 55  7f 44 88 18 28 2c 00 00  |.D.D..BU.D..(,..|</code></pre>



<p class="wp-block-paragraph">Der Eintrag für Inode 6 belegt den Speicherbereich 0xA260 bis 0xA27F. Die erste Cluster-Adresse ist 03 00 bzw. Cluster 3. Verwenden wir die Formel aus der vorherigen Teilaufgabe und bestimmten den Offset des HDD-Blocks, so ergibt sich 117. Diesen Wert können wir in&nbsp;<code>ifind</code>&nbsp;eintragen, um zu verifizieren, dass es sich um Inode 6 handelt.</p>



<pre class="wp-block-code"><code># ifind -f fat -d 117 partition_2.dd
6</code></pre>



<p class="wp-block-paragraph">Schauen wir uns Inode 6 mit&nbsp;<code>istat</code>&nbsp;an, erhalten wir bereits einige Informationen über die Sektoren und Attribute der dahinterliegenden Datei.</p>



<pre class="wp-block-code"><code># istat partition_2.dd 6
Directory Entry: 6
Allocated
File Attributes: File, Archive
Size: 11313997
Name: STUDIE~1.PDF

Directory Entry Times:
Written:	2009-12-29 10:02:54 (EST)
Accessed:	2009-12-29 00:00:00 (EST)
Created:	2009-12-29 10:02:54 (EST)

Sectors:
117 118 119 120 121 122 123 124 
...</code></pre>



<p class="wp-block-paragraph">Um welche Art von Verzeichniseintrag handelt es sich?</p>



<p class="wp-block-paragraph">An Byte 11 liegen die Attributinformationen, hier&nbsp;<code>0x20</code>. Intepretiert man dies als binärzahl, lässt sich das Archive-Flag&nbsp;<code>0010 0000</code>&nbsp;identifizieren.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Archive. (Since DOS 2.0) Typically set by the operating system as soon as the file is created or modified to mark the file as &#8222;dirty&#8220;, and reset by backup software once the file has been backed up to indicate &#8222;pure&#8220; state.http://en.wikipedia.org/wiki/Design_of_the_FAT_file_system</p>
</blockquote>



<p class="wp-block-paragraph">Bestimmen Sie die Größe des im Verzeichniseintrag referenzierten Objekts anhand der Informationen des Verzeichniseintrages</p>



<p class="wp-block-paragraph">Die letzten 4 Bytes (<em>28-31</em>) repräsentieren die Dateigröße in Bytes, hier 4d a3 ac 00 bzw. 0x00aca34d. Dies entspricht einer Dateigröße von 11.313.997 Byte. Bei Verzeichnisses ist der Wert Null.</p>



<p class="wp-block-paragraph">Beantworten Sie die gleichen Fragen fur den Verzeichniseintrag 23.</p>



<ul class="wp-block-list">
<li>Der Speicherbereich von Inode 23 liegt an A480 bis A49F</li>



<li>Es handelt sich um ein Hidden File (<em>0000 0010</em>), System File (<em>0000 0100</em>) und Verzeichnis (<em>0001 0000</em>)</li>



<li>Seine Dateigröße beträgt, trotz der vier allozierten Sektoren, 0 Byte, da es ein Verzeichnis ist</li>



<li>Der Name des Verzeichnisses lautet Name <code>$RECYCLE.BIN</code></li>
</ul>



<h4 class="wp-block-heading">Dateiwiederherstellung</h4>



<p class="wp-block-paragraph">Geben Sie den Namen aller fragmentierten, allozierten Dateien sowie deren belegte HDD-Blöcke in der richtigen Reihenfolge an.</p>



<p class="wp-block-paragraph">Mittels&nbsp;<code>fsstat</code>&nbsp;können wir uns die Fragmentierung der allozierten Dateien ansehen.</p>



<pre class="wp-block-code"><code># fsstat partition_2.dd 

...

FAT CONTENTS (in sectors)
--------------------------------------------
113-116 (4) -&gt; 22217
117-22216 (22100) -&gt; EOF
22217-25148 (2932) -&gt; EOF
25149-25152 (4) -&gt; EOF
25153-25156 (4) -&gt; EOF
25157-25224 (68) -&gt; EOF
25225-25248 (24) -&gt; EOF
25249-25252 (4) -&gt; EOF
25873-29636 (3764) -&gt; EOF
29637-32596 (2960) -&gt; EOF
40181-40956 (776) -&gt; 113</code></pre>



<p class="wp-block-paragraph">Offensichtlich gibt es eine Datei, die mit 40181 beginnt, dann später an 113 fortgesetzt wird und zuletzt an 22217 fortgeführt wird, bis zum EOF. Alle anderen Dateien enden direkt und sind somit nicht fragmentiert. Mittels&nbsp;<code>ifind</code>&nbsp;finden wir die Inode der dazugehörigen Datei heraus.</p>



<pre class="wp-block-code"><code># ifind -f fat -d 113 partition_2.dd
19</code></pre>



<p class="wp-block-paragraph">Weitere Informationen zu dieser Datei rufen wir über&nbsp;<code>istat</code>&nbsp;der Vollständigkeit halber ab.</p>



<pre class="wp-block-code"><code># istat partition_2.dd 19			
			
Directory Entry: 19
Allocated
File Attributes: File, Archive
Size: 1899856
Name: 2009-0~1.PDF

Directory Entry Times:
Written:        2009-12-29 10:05:10 (CET)
Accessed:       2009-12-29 00:00:00 (CET)
Created:        2009-12-29 10:05:10 (CET)

Sectors:
40181 40182 40183 40184 40185 40186 40187 40188 
...
40949 40950 40951 40952 40953 40954 40955 40956
113 114 115 116
22217 22218 22219 22220 22221 22222 22223 22224
...
25141 25142 25143 25144 25145 25146 25147 0</code></pre>



<p class="wp-block-paragraph">Speichern Sie die Datei mittels dd oder blkcat lokal ab.</p>



<p class="wp-block-paragraph">Wir fügen die fragmentierten Bereich schrittweise zusammen mit&nbsp;<code>blkcat</code>.</p>



<pre class="wp-block-code"><code># blkcat partition_2.dd 40181 776 &gt;&gt; file.pdf
# blkcat partition_2.dd 113 4 &gt;&gt; file.pdf
# blkcat partition_2.dd 22217 2932 &gt;&gt; file.pdf</code></pre>



<p class="wp-block-paragraph">Alternativ könnte man es auch komfortabel mit&nbsp;<code>icat</code>&nbsp;unter Angabe der Inode machen.</p>



<pre class="wp-block-code"><code># icat -r partition_2.dd 19 &gt; file.pdf</code></pre>



<p class="wp-block-paragraph">In beiden Fällen wird das folgende Dokument erzeugt.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="524" height="396" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150524-cofo-restore.png" alt="" class="wp-image-2857" style="width:523px;height:auto" title="Wiederhergestelltes Dokument" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150524-cofo-restore.png 524w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150524-cofo-restore-350x265.png 350w" sizes="auto, (max-width: 524px) 100vw, 524px" /></figure>



<p class="wp-block-paragraph">Finden Sie alle gelöschten Dateien auf der Partition.</p>



<p class="wp-block-paragraph">Wir könnten an dieser Stelle das Wurzelverzeichnis nach allen Einträgen durchsuchen, die mit 0x35 beginnen. Dies steht für eine gelöschte Datei.</p>



<pre class="wp-block-code"><code>0000a280  e5 6f 00 74 00 2e 00 6a  00 70 00 0f 00 9c 67 00  |.o.t...j.p....g.|
0000a290  00 00 ff ff ff ff ff ff  ff ff 00 00 ff ff ff ff  |................|

0000a2a0  e5 7a 00 65 00 69 00 63  00 68 00 0f 00 9c 6e 00  |.z.e.i.c.h....n.|
0000a2b0  75 00 6e 00 67 00 2d 00  64 00 00 00 65 00 70 00  |u.n.g.-.d...e.p.|

0000a2c0  e5 45 49 43 48 4e 7e 31  4a 50 47 20 00 00 07 6c  |.EICHN~1JPG ...l|
0000a2d0  9d 3b 9d 3b 00 00 07 6c  9d 3b 75 18 d0 db 00 00  |.;.;...l.;u.....|

0000a2e0  e5 7a 00 7a 00 7a 00 7a  00 7a 00 0f 00 44 7a 00  |.z.z.z.z.z...Dz.|
0000a2f0  00 00 ff ff ff ff ff ff  ff ff 00 00 ff ff ff ff  |................|

0000a300  e5 7a 00 7a 00 7a 00 7a  00 7a 00 0f 00 44 7a 00  |.z.z.z.z.z...Dz.|
0000a310  7a 00 7a 00 7a 00 7a 00  7a 00 00 00 7a 00 7a 00  |z.z.z.z.z...z.z.|

0000a320  e5 5a 5a 5a 5a 5a 7e 31  20 20 20 20 00 00 ed 50  |.ZZZZZ~1    ...P|
0000a330  9d 3b 81 44 00 00 ed 50  9d 3b 00 00 00 00 00 00  |.;.D...P.;......|

0000a340  e5 59 4d 41 4e 54 7e 31  50 53 20 20 00 64 6a 50  |.YMANT~1PS  .djP|
0000a350  9d 3b 9d 3b 00 00 6a 50  9d 3b da 16 aa 7b 12 00  |.;.;..jP.;...{..|

0000a500  e5 4c 2d 41 20 20 20 20  4a 50 47 20 18 89 ed 01  |.L-A    JPG ....|
0000a510  81 44 81 44 00 00 42 55  7f 44 88 18 28 2c 00 00  |.D.D..BU.D..(,..|</code></pre>



<p class="wp-block-paragraph">Dies ist jedoch zu aufwendig und skaliert schlecht mit großen Datenmengen. Stattdessen verwenden wir&nbsp;<code>fls</code>, um uns die gelöschten Dateien anzuzeigen.</p>



<pre class="wp-block-code"><code># fls -d partition_2.dd
r/r * 9:	zeichnung-depot.jpg
r/r * 12:	zzzzzzzzzzzzzzzzzzz
r/r * 13:	_YMANT~1.PS
r/r * 27:	_l-a.jpg</code></pre>



<p class="wp-block-paragraph">Da wir vorhin in Inode 23 den Papierkorb gefunden haben und diese Dateien im Wurzelverzeichnis liegen, schauen wir uns noch an, welche Dateien denn generell auf dieser Partition noch zu finden sind.</p>



<pre class="wp-block-code"><code># fls  -r partition_2.dd 
r/r 6:	studie-voipsec-bsi-2005.pdf
r/r * 9:	zeichnung-depot.jpg
r/r * 12:	zzzzzzzzzzzzzzzzzzz
r/r * 13:	_YMANT~1.PS
r/r 15:	trojaner.png
r/r 19:	2009-02-12_RFID_Grundschutztag.pdf
r/r 22:	BKA-Jahresbericht-2007.pdf
d/d 23:	$RECYCLE.BIN
+ r/r 401093:	desktop.ini
+ r/r 401094:	$IO93PF1.jpg
+ r/r 401095:	$RO93PF1.jpg
r/r 26:	pm090930_geisterwald.pdf
r/r * 27:	_l-a.jpg
v/v 654067:	$MBR
v/v 654068:	$FAT1
v/v 654069:	$FAT2
d/d 654070:	$OrphanFiles</code></pre>



<p class="wp-block-paragraph">Interessanterweie wurden die Dateien im Papierkorb nicht als gelöscht vermerkt. Somit liegt die Vermutung nahe, dass sie manuell dorthin geschoben wurden ohne wirklich gelöscht worden zu sein.</p>



<p class="wp-block-paragraph">Welche Informationen können Sie aus den gefundenen Dateien gewinnen?</p>



<p class="wp-block-paragraph">Wir verwenden&nbsp;<code>icat</code>&nbsp;zum Rekonstruieren der Dateien.</p>



<pre class="wp-block-code"><code># icat -r partition_2.dd 9 &gt; 9.jpg
# icat -r partition_2.dd 12 &gt; 12
# icat -r partition_2.dd 13 &gt; 13.PS
# icat -r partition_2.dd 27 &gt; 27.jpg
# icat -r partition_2.dd 401093 &gt; 401093.ini
# icat -r partition_2.dd 401094 &gt; 401093.jpg
# icat -r partition_2.dd 401095 &gt; 401093.jpg</code></pre>



<p class="wp-block-paragraph">Aus den Inodes 27 und 401093 ließen sich zwei Bilder wiederherstellen. Beispielhaft folgt das teilweise rekonstruierte Bild von Inode 9. Das Bild von Inode 27 stellt dieses in vollständiger Form dar.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="263" height="36" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150524-cofo-restore_1.png" alt="" class="wp-image-2856" title="Wiederhergestelltes Dokument"/></figure>



<p class="wp-block-paragraph">Schreiben Sie den zweiten nicht allozierten Bereich aus arbeitskopie.dd nach unallocated_2.dd.</p>



<pre class="wp-block-code"><code># mmls arbeitskopie.dd 
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

	 Slot    Start        End          Length       Description
01:  -----   0000000000   0000002047   0000002048   Unallocated
04:  -----   0010272768   0010295295   0000022528   Unallocated
08:  -----   0012138496   0012648613   0000510118   Unallocated

# dd if=arbeitskopie.dd of=unallocated_2.dd bs=512 skip=0010272768 count=22528
22528+0 Datensätze ein
22528+0 Datensätze aus
11534336 Bytes (12 MB) kopiert, 0,0609157 s, 189 MB/s</code></pre>



<p class="wp-block-paragraph">Vermerken Sie den Hashwert.</p>



<pre class="wp-block-code"><code># sha256sum unallocated_2.dd 
68a5487b1df9c081bfcf62bee3937dd0703c335fae04147084379536a8e9be1e  unallocated_2.dd</code></pre>



<p class="wp-block-paragraph">Untersuchen Sie das Image unallocated_2.dd.</p>



<p class="wp-block-paragraph">Wir verwenden zunächst&nbsp;<code>hexdump</code>&nbsp;um potenzielle Informationen zu extrahieren.</p>



<pre class="wp-block-code"><code># hexdump unallocated_2.dd 
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0a001b0 0000 0000 0000 0000 0000 0000 0000 d9 00
0a001c0 80 9a 95 07 f3 a2 08 00 00 00 20 00 00 1c 00 00
0a001d0 0000 0000 0000 0000 0000 0000 0000 0000
*
0a001f0 0000 0000 0000 0000 0000 0000 0000 aa55
0a00200 0000 0000 0000 0000 0000 0000 0000 0000
*
0abe000 7254 6575 7263 7079 2074 6150 7373 6f77
0abe010 7472 203a 6b37 3545 2d76 593c 715f 4659
0abe020 373a 0a59 0000 0000 0000 0000 0000 0000
0abe030 0000 0000 0000 0000 0000 0000 0000 0000
*
0b00000</code></pre>



<p class="wp-block-paragraph">Die Informationen zu Beginn des Dumps liefern uns keine brauchbaren Informationen. Vermutlich wurden sie schon durch Schreibzugriffe auf diesen Bereich beschädigt bzw. sind unvollständig. Der zweite Bereich scheint jedoch interessanter zu sein. Wir schauen uns mit&nbsp;<code>strings</code>&nbsp;an, ob wir etwas herausfinden können.</p>



<pre class="wp-block-code"><code># strings unallocated_2.dd 
Truecrypt Passwort: 7kE5v-&lt;Y_qYF:7Y</code></pre>



<p class="wp-block-paragraph">Scheinbar wurde ein Passwort für einen Truecrypt-Container an dieser Stelle gespeichert.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/05/computer-forensik-praktikum-3/">Computer Forensik (Praktikum 3)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/05/computer-forensik-praktikum-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Diskrete Strukturen (Praktikum 1)</title>
		<link>https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-1/</link>
					<comments>https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-1/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Mon, 04 May 2015 18:55:00 +0000</pubDate>
				<category><![CDATA[Diskrete Strukturen]]></category>
		<category><![CDATA[1. Semester (M.Sc.)]]></category>
		<category><![CDATA[Master of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=1993</guid>

					<description><![CDATA[<p>Im Rahmen des ersten Praktikums implementieren wir die Funktionen&#160;rank,&#160;unrank&#160;und&#160;successor&#160;für Gray-Code und entwickeln eine verallgemeinerte Form des Gray-Codes. Skript-Anfang Praktikum 1 &#8211; Seite 1 Skript-Ende Praktikum 1 &#8211; Seite 2 Algorithmen für den Gray-Code Entwickeln und beschreiben Sie Algorithmen zur Realisierung&#160;rank,&#160;unrank&#160;und&#160;successor&#160;für Gray-Code \( \Delta_n\), definiert durch: \( \\ \Delta_1 := 0,1 \\ \Delta_n := \Delta^R_{n-1}0,\Delta_{n-1}1, n [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-1/">Diskrete Strukturen (Praktikum 1)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Im Rahmen des ersten Praktikums implementieren wir die Funktionen&nbsp;<em>rank</em>,&nbsp;<em>unrank</em>&nbsp;und&nbsp;<em>successor</em>&nbsp;für Gray-Code und entwickeln eine verallgemeinerte Form des Gray-Codes.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>Praktikum 1 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>Praktikum 1 &#8211; Seite 2</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Algorithmen für den Gray-Code</h3>



<p class="wp-block-paragraph">Entwickeln und beschreiben Sie Algorithmen zur Realisierung&nbsp;<em>rank</em>,&nbsp;<em>unrank</em>&nbsp;und&nbsp;<em>successor</em>&nbsp;für Gray-Code \( \Delta_n\), definiert durch:</p>



<p class="wp-block-paragraph">\( \\ \Delta_1 := 0,1 \\ \Delta_n := \Delta^R_{n-1}0,\Delta_{n-1}1, n &gt; 1 \)</p>



<p class="wp-block-paragraph">Nutzen Sie dabei die rekursive Struktur aus. Implementieren Sie die Algorithmen in einer Programmierspache Ihrer Wahl.</p>



<p class="wp-block-paragraph">Konsolenausgabe des folgenden Quellcodes</p>



<pre class="wp-block-code"><code>rank("000") =&gt; 2
rank("001") =&gt; 5
rank("010") =&gt; 1
rank("011") =&gt; 6
rank("100") =&gt; 3
rank("101") =&gt; 4
rank("110") =&gt; 0
rank("111") =&gt; 7

unrank(0,3) =&gt; 110
unrank(1,3) =&gt; 010
unrank(2,3) =&gt; 000
unrank(3,3) =&gt; 100
unrank(4,3) =&gt; 101
unrank(5,3) =&gt; 001
unrank(6,3) =&gt; 011
unrank(7,3) =&gt; 111

succ("110") =&gt; 010
succ("010") =&gt; 000
succ("000") =&gt; 100
succ("100") =&gt; 101
succ("101") =&gt; 001
succ("001") =&gt; 011
succ("011") =&gt; 111
succ("111") =&gt; 110</code></pre>



<h4 class="wp-block-heading">Includes und Deklarationen</h4>



<pre class="wp-block-code"><code>#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;math.h&gt;

using std::cout;
using std::endl;
using std::vector;
using std::string;

int rank(string val);
string unrank(unsigned int i, unsigned int n);
string succ(string val);
vector&lt;string&gt; create_GrayCode2(int n, string q);
template&lt;typename T&gt; string toString(T Val);
unsigned int eval(string val);
char cFlip(char c);
vector&lt;string&gt; reverse(vector&lt;string&gt; v);</code></pre>



<h4 class="wp-block-heading">Main()</h4>



<pre class="wp-block-code"><code>int main() {

	cout &lt;&lt; "rank(\"000\") =&gt; " &lt;&lt; rank("000") &lt;&lt; endl;
	cout &lt;&lt; "rank(\"001\") =&gt; " &lt;&lt; rank("001") &lt;&lt; endl;
	cout &lt;&lt; "rank(\"010\") =&gt; " &lt;&lt; rank("010") &lt;&lt; endl;
	cout &lt;&lt; "rank(\"011\") =&gt; " &lt;&lt; rank("011") &lt;&lt; endl;
	cout &lt;&lt; "rank(\"100\") =&gt; " &lt;&lt; rank("100") &lt;&lt; endl;
	cout &lt;&lt; "rank(\"101\") =&gt; " &lt;&lt; rank("101") &lt;&lt; endl;
	cout &lt;&lt; "rank(\"110\") =&gt; " &lt;&lt; rank("110") &lt;&lt; endl;
	cout &lt;&lt; "rank(\"111\") =&gt; " &lt;&lt; rank("111") &lt;&lt; endl;
	cout &lt;&lt; endl;

	cout &lt;&lt; "unrank(0,3) =&gt; " &lt;&lt; unrank(0, 3) &lt;&lt; endl;
	cout &lt;&lt; "unrank(1,3) =&gt; " &lt;&lt; unrank(1, 3) &lt;&lt; endl;
	cout &lt;&lt; "unrank(2,3) =&gt; " &lt;&lt; unrank(2, 3) &lt;&lt; endl;
	cout &lt;&lt; "unrank(3,3) =&gt; " &lt;&lt; unrank(3, 3) &lt;&lt; endl;
	cout &lt;&lt; "unrank(4,3) =&gt; " &lt;&lt; unrank(4, 3) &lt;&lt; endl;
	cout &lt;&lt; "unrank(5,3) =&gt; " &lt;&lt; unrank(5, 3) &lt;&lt; endl;
	cout &lt;&lt; "unrank(6,3) =&gt; " &lt;&lt; unrank(6, 3) &lt;&lt; endl;
	cout &lt;&lt; "unrank(7,3) =&gt; " &lt;&lt; unrank(7, 3) &lt;&lt; endl;
	cout &lt;&lt; endl;

	cout &lt;&lt; "succ(\"110\") =&gt; " &lt;&lt; succ("110") &lt;&lt; endl;
	cout &lt;&lt; "succ(\"010\") =&gt; " &lt;&lt; succ("010") &lt;&lt; endl;
	cout &lt;&lt; "succ(\"000\") =&gt; " &lt;&lt; succ("000") &lt;&lt; endl;
	cout &lt;&lt; "succ(\"100\") =&gt; " &lt;&lt; succ("100") &lt;&lt; endl;
	cout &lt;&lt; "succ(\"101\") =&gt; " &lt;&lt; succ("101") &lt;&lt; endl;
	cout &lt;&lt; "succ(\"001\") =&gt; " &lt;&lt; succ("001") &lt;&lt; endl;
	cout &lt;&lt; "succ(\"011\") =&gt; " &lt;&lt; succ("011") &lt;&lt; endl;
	cout &lt;&lt; "succ(\"111\") =&gt; " &lt;&lt; succ("111") &lt;&lt; endl;
	cout &lt;&lt; endl;

	return 0;
}	// main</code></pre>



<h4 class="wp-block-heading">Rank</h4>



<pre class="wp-block-code"><code>int rank(string val) {
	/* Rank-Algorithmus fuer den Gray-Code */

	int r = 0;
	// Abbruchbedingung
	if (val.length() == 1) {
		//cout &lt;&lt; "Abbruchbedingung erfuellt!" &lt;&lt; endl;
		if (val&#91;val.length() - 1] == '1')
			return 1;
		else
			return 0;
	}

	if (val&#91;val.length() - 1] == '0') {
		// letztes Zeichen entfernen
		string tmp = val.substr(0, val.size() - 1);
		// neues letztes Zeichen drehen
		if (tmp&#91;tmp.length() - 1] == '0')
			tmp&#91;tmp.length() - 1] = '1';
		else
			tmp&#91;tmp.length() - 1] = '0';

		//cout &lt;&lt; "Rekursion: rank(" &lt;&lt; tmp &lt;&lt; ")" &lt;&lt; endl;
		return r + rank(tmp);
	} else {
		// letztes Zeichen ist eine 1
		return r + pow(2, val.size()) / 2 + rank(val.substr(0, val.size() - 1));
	}
}	// rank</code></pre>



<h4 class="wp-block-heading">Unrank</h4>



<pre class="wp-block-code"><code>string unrank(unsigned int i, unsigned int n) {
	/* Unrank-Algorithmus fuer den Gray-Code */

	string s = "";

	// Abbruchbedingung
	if (i &gt;= pow(2, n))
		return "Keine Berechnung moeglich.";

	if (n == 0)
		return "";

	// Wenn i &lt; Anzahl aller Teilmengen / 2 (2**n / 2)
	// 1. i befindet sich in der gespiegelten Haelfte
	// 2. Das letzte Zeichen ist eine "0"
	if (i &lt; pow(2, n) / 2) {
		// Bestimme naechste Stelle
		s = unrank(i, n - 1);
		// Da wir uns in der gespiegelten Haelfte befinden
		// -&gt; drehe das Bit der naechsten Stelle (also vor der "0") um
		s&#91;s.size() - 1] = cFlip(s&#91;s.size() - 1]);
		return s + "0";
	} else {
		// Wenn i &gt;= Anzahl aller Teilmengen / 2 (2**n / 2)
		// 1. i befindet sich in der nicht gespiegelten Haelfte
		// 2. Das letzte Zeichen ist eine "1"
		// -&gt; Subtrahiere den Offset (2** n / 2( von i und bestimme naechste Stelle
		return unrank(i - (pow(2, n) / 2), n - 1) + "1";
	}
}		// unrank</code></pre>



<h4 class="wp-block-heading">Successor</h4>



<pre class="wp-block-code"><code>string succ(string val) {
	/* Successor-Implementierung fuer den Gray-Code */

	if (eval(val) % 2 == 1) { // Anzahl 0 ungerade
		//cout &lt;&lt; "Anzahl ungerade" &lt;&lt; endl;
		val&#91;0] = cFlip(val&#91;0]);
	} else { // Anzahl 0 gerade
			 // Finde erste 0 von links
			 // oder letzte von rechts
		std::size_t found = val.find_first_of("0");
		if (found != std::string::npos)
			val&#91;found + 1] = cFlip(val&#91;found + 1]);
		else
			val&#91;val.size() - 1] = cFlip(val.size() - 1);
	}
	return val;
}			 // succ</code></pre>



<h4 class="wp-block-heading">Hilfsfunktionen</h4>



<pre class="wp-block-code"><code>template&lt;typename T&gt;
string toString(T Val) {
    std::stringstream ss;
    ss &lt;&lt; Val;
    return ss.str();
}

unsigned int eval(string val) {
    /* Hilfsfunktion Bestimmung der Anzahl aller Nullen eines Zeichenkette */
 
    // Abbruchbedingung
    if (val.size() == 0)
        return 0;
    if (val&#91;val.size() - 1] == '0')
        return eval(val.substr(0, val.size() - 1)) + 1;
    else
        return eval(val.substr(0, val.size() - 1)) + 0;
}       // eval
 
char cFlip(char c) {
    /* Hilfsfunktion: Invertierung eines 'Bits' */
 
    if (c == '0')
        return '1';
    else
        return '0';
}       // cFlip
 
vector&lt;string&gt; reverse(vector&lt;string&gt; v) {
    /* Hilfsfunktion: Invertierung von Vektoren */
 
    vector&lt;string&gt; vTmp;
    for (unsigned int i = 0; i &lt; v.size(); i++)
        vTmp.insert(vTmp.begin(), v&#91;i]);
    return vTmp;
}       // reverse</code></pre>



<h3 class="wp-block-heading">Verallgemeinerung des Gray-Codes</h3>



<p class="wp-block-paragraph">Entwickeln und implementieren Sie einen Algorithmus zum Erzeugen aller Vektoren der Länge n mit Vektoreinträgen aus {0, 1,&#8230;, q &#8211;&nbsp;1}, wobei sich zwei aufeinanderfolgende Vektoren an exakt einer Stelle unterscheiden sollen. Für q = 2 entspricht dies einem Gray-Code. Gehen Sie rekursiv wie für den Fall q = 2 vor.</p>



<p class="wp-block-paragraph">Konsolenausgabe des folgenden Quellcodes</p>



<pre class="wp-block-code"><code>create_GrayCode2(n=3 q='01') =&gt; 110 010 000 100 101 001 011 111 

create_GrayCode2(n=3 q='012') =&gt; 020 120 220 210 110 010 000 100 200 201 101 001 011 111 211 221 121 021 022 122 222 212 112 012 002 102 202 

create_GrayCode2(n=4 q='012') =&gt; 2020 1020 0020 0120 1120 2120 2220 1220 0220 0210 1210 2210 2110 1110 0110 0010 1010 2010 2000 1000 0000 0100 1100 2100 2200 1200 0200 0201 1201 2201 2101 1101 0101 0001 1001 2001 2011 1011 0011 0111 1111 2111 2211 1211 0211 0221 1221 2221 2121 1121 0121 0021 1021 2021 2022 1022 0022 0122 1122 2122 2222 1222 0222 0212 1212 2212 2112 1112 0112 0012 1012 2012 2002 1002 0002 0102 1102 2102 2202 1202 0202 

create_GrayCode2(n=3 q='AB') =&gt; BBA ABA AAA BAA BAB AAB ABB BBB </code></pre>



<h4 class="wp-block-heading">Main()</h4>



<pre class="wp-block-code"><code>int main() {

	vector&lt;string&gt; vOut;
	vOut = create_GrayCode2(3, "01");
	cout &lt;&lt; "create_GrayCode2(n=3 q='01') =&gt; ";
	for (unsigned int i = 0; i &lt; vOut.size(); i++) {
		cout &lt;&lt; vOut.at(i) &lt;&lt; " ";
	}
	cout &lt;&lt; endl &lt;&lt; endl;

	vOut = create_GrayCode2(3, "012");
	cout &lt;&lt; "create_GrayCode2(n=3 q='012') =&gt; ";
	for (unsigned int i = 0; i &lt; vOut.size(); i++) {
		cout &lt;&lt; vOut.at(i) &lt;&lt; " ";
	}
	cout &lt;&lt; endl &lt;&lt; endl;

	vOut = create_GrayCode2(4, "012");
	cout &lt;&lt; "create_GrayCode2(n=4 q='012') =&gt; ";
	for (unsigned int i = 0; i &lt; vOut.size(); i++) {
		cout &lt;&lt; vOut.at(i) &lt;&lt; " ";
	}
	cout &lt;&lt; endl &lt;&lt; endl;

	vOut = create_GrayCode2(3, "AB");
	cout &lt;&lt; "create_GrayCode2(n=3 q='AB') =&gt; ";
	for (unsigned int i = 0; i &lt; vOut.size(); i++) {
		cout &lt;&lt; vOut.at(i) &lt;&lt; " ";
	}
	cout &lt;&lt; endl &lt;&lt; endl;

	return 0;
}	// main</code></pre>



<h4 class="wp-block-heading">Gray-Code</h4>



<pre class="wp-block-code"><code>vector&lt;string> create_GrayCode2(int n, string q) {
	/* Verallgemeinerung des Gray-Code Algorithmus
	 * -> q kann beliebige Zeichen enthalten
	 */

	vector&lt;string> v;

	// Abbruchbedingung
	if (n == 0) { // Leere Menge
		v.push_back("");
		return v;
	}

	if (n == 1) { // Minimum
		for (unsigned int i = 0; i &lt; q.size(); i++)
			v.push_back(toString(q.at(i)));
		return v;
	}

	// Rekursion: Erzeuge "unteren" Vektor (n - 1)
	// -> Hinweis: Rekursion endet bei n=1!
	// -> Fuer q = 3 waere vNew = {0, 1, 2}
	vector&lt;string> vNew = create_GrayCode2(n - 1, q);

	// Baue Vektor n fuer jedes Zeichen in q zusammen
	for (unsigned int i = 0; i &lt; q.size(); i++) {
		vector&lt;string> vTmp;
		// Gray-Algorithmus beginnt immer mit invertiertem Vektor
		// -> Der dritte, fuenfte etc. Vektor muss wieder invertiert sein (q=2,4,...)
		// -> Alle restlos durch zwei teilbaren 'Positionen' sind zu invertieren!
		if (i % 2 == 0)
			vTmp = reverse(vNew);
		else
			vTmp = vNew;

		// Zeichen anhaengen
		for (unsigned int j = 0; j &lt; vTmp.size(); j++)
			vTmp.at(j) = vTmp.at(j) + toString(q.at(i));

		// In den Hauptvektor kopieren
		v.insert(v.end(), vTmp.begin(), vTmp.end());

	}
	// Vektor fuer das aktuelle n zurueckgeben
	return v;
}		// create_GrayCode2</code></pre>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-1/">Diskrete Strukturen (Praktikum 1)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/05/diskrete-strukturen-praktikum-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Computer Forensik (Praktikum 2)</title>
		<link>https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-2/</link>
					<comments>https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-2/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 30 Apr 2015 17:47:00 +0000</pubDate>
				<category><![CDATA[Computer Forensik]]></category>
		<category><![CDATA[1. Semester (M.Sc.)]]></category>
		<category><![CDATA[Master of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2852</guid>

					<description><![CDATA[<p>Im zweiten Praktikum beschäftigen wir uns mit der Analyse von Datenträgern, Partitionstabellen und Partitionen selbst. Weiterhin üben wir das Wiederherstellen von Dateien aus nicht-allozierten Speicherbereichen. Skript-Anfang Praktikum 2 &#8211; Seite 1 Skript-Ende Praktikum 2 &#8211; Seite 1 Datenträgeranalyse Analyse des Datenträgers Bestimmen Sie die Blockgröße des Datenträgers. Mit Hilfe der Werkzeuge&#160;mmls&#160;und&#160;fdisk&#160;können relevante Informationen zu der [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-2/">Computer Forensik (Praktikum 2)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Im zweiten Praktikum beschäftigen wir uns mit der Analyse von Datenträgern, Partitionstabellen und Partitionen selbst. Weiterhin üben wir das Wiederherstellen von Dateien aus nicht-allozierten Speicherbereichen.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>Praktikum 2 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>Praktikum 2 &#8211; Seite 1</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Datenträgeranalyse</h3>



<h4 class="wp-block-heading">Analyse des Datenträgers</h4>



<p class="wp-block-paragraph">Bestimmen Sie die Blockgröße des Datenträgers.</p>



<p class="wp-block-paragraph">Mit Hilfe der Werkzeuge&nbsp;<code>mmls</code>&nbsp;und&nbsp;<code>fdisk</code>&nbsp;können relevante Informationen zu der Festplattenpartitionierung und folglich auch der Block- bzw. Sektorgröße ermittelt werden. Zunächst wird eine Analyse mit&nbsp;<code>fdisk</code>&nbsp;durchgeführt.</p>



<pre class="wp-block-code"><code># fdisk arbeitskopie.dd 

Command (m for help): p

Disk arbeitskopie.dd: 6476 MB, 6476090368 bytes
255 heads, 63 sectors/track, 787 cylinders, total 12648614 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdbe43afc

	      Device   Boot    Start         End      Blocks   Id  System
arbeitskopie.dd1   *        2048    10231807     5114880    7  HPFS/NTFS/exFAT
arbeitskopie.dd2        10231808    10272767       20480    6  FAT16
arbeitskopie.dd3        10293248    12646399     1176576    f  W95 Ext'd (LBA)
arbeitskopie.dd5        10295296    12138495      921600    7  HPFS/NTFS/exFAT</code></pre>



<p class="wp-block-paragraph">Die Analyse zeigt uns, ob eine Partition bootfähig ist, an welcher Stelle eine Partition beginnt und endet sowie welches Dateisystem darauf zu finden ist. Die Analyse mit&nbsp;<code>mmls</code>&nbsp;liefert deutlich mehr Informationen dazu. Hier werden nicht-allokierte Bereiche und erweiterte Partitionen angezeigt. Anhand des Slot-Feldes kann man erkennen, in welcher Partitionstabelle eine Partition aufgeführt ist.</p>



<pre class="wp-block-code"><code># mmls arbeitskopie.dd 
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

     Slot    Start        End          Length       Description
00:  Meta    0000000000   0000000000   0000000001   Primary Table (#0)
01:  -----   0000000000   0000002047   0000002048   Unallocated
02:  00:00   0000002048   0010231807   0010229760   NTFS (0x07)
03:  00:01   0010231808   0010272767   0000040960   DOS FAT16 (0x06)
04:  -----   0010272768   0010295295   0000022528   Unallocated
05:  Meta    0010293248   0012646399   0002353152   Win95 Extended (0x0f)
06:  Meta    0010293248   0010293248   0000000001   Extended Table (#1)
07:  01:00   0010295296   0012138495   0001843200   NTFS (0x07)
08:  -----   0012138496   0012648613   0000510118   Unallocated</code></pre>



<p class="wp-block-paragraph">Anhand dieser Informationen lässt sich mit hoher Wahrscheinlichkeit sagen, dass vier Partitionen auf dem Festplattenabbild vorhanden sind.</p>



<h4 class="wp-block-heading">Analyse der Partitionstabelle</h4>



<p class="wp-block-paragraph">Schreiben Sie mittels&nbsp;<code>dd</code>&nbsp;den MBR in die Datei mbr.dd und vermerken Sie dessen Hashwert.</p>



<p class="wp-block-paragraph">Der Master Boot Record (MBR) einer Festplatte befindet stets an der Stelle des ersten Sektors und enthält eine Partitionstabelle, welche die Aufteilung des Datenträgers beschreibt. Indem wir mit dem Offset 0 beginnen und nur einen einzigen Block kopieren, fertigen wir eine exakte bit-genaue Kopie des MBR an, die wir für eine genauere Untersuchung verwenden können. Der Hashwert dient als Nachweis, dass wir die Daten nicht verändert haben bei diesem Prozess.</p>



<pre class="wp-block-code"><code># dd if=arbeitskopie.dd of=mbr.dd count=1 bs=512
1+0 records in
1+0 records out
512 bytes (512 B) copied, 3.2746e-05 s, 15.6 MB/s

# sha256sum mbr.dd 
b08385aaaf8db1bdc571d7190a728b02ec99990b571c614c8f3920dfedc39e74  mbr.dd</code></pre>



<p class="wp-block-paragraph">Beschreiben Sie die Aufteilung des Datenträgers in Partitionen.</p>



<p class="wp-block-paragraph">Mit der zuvor extrahierten Kopie des MBR arbeiten wir nun weiter. Wir lassen uns zunächst die Inhalte der Kopie&nbsp;<code>xxd</code>&nbsp;in hexadezimaler Darstellung anzeigen.</p>



<pre class="wp-block-code"><code># xxd mbr.dd 
0000000: 33c0 8ed0 bc00 7cfb 5007 501f fcbe 1b7c  3.....|.P.P....|
0000010: bf1b 0650 57b9 e501 f3a4 cbbd be07 b104  ...PW...........
0000020: 386e 007c 0975 1383 c510 e2f4 cd18 8bf5  8n.|.u..........
0000030: 83c6 1049 7419 382c 74f6 a0b5 07b4 078b  ...It.8,t.......
0000040: f0ac 3c00 74fc bb07 00b4 0ecd 10eb f288  ..&lt;.t...........
0000050: 4e10 e846 0073 2afe 4610 807e 040b 740b  N..F.s*.F..~..t.
0000060: 807e 040c 7405 a0b6 0775 d280 4602 0683  .~..t....u..F...
0000070: 4608 0683 560a 00e8 2100 7305 a0b6 07eb  F...V...!.s.....
0000080: bc81 3efe 7d55 aa74 0b80 7e10 0074 c8a0  ..&gt;.}U.t..~..t..
0000090: b707 eba9 8bfc 1e57 8bf5 cbbf 0500 8a56  .......W.......V
00000a0: 00b4 08cd 1372 238a c124 3f98 8ade 8afc  .....r#..$?.....
00000b0: 43f7 e38b d186 d6b1 06d2 ee42 f7e2 3956  C..........B..9V
00000c0: 0a77 2372 0539 4608 731c b801 02bb 007c  .w#r.9F.s......|
00000d0: 8b4e 028b 5600 cd13 7351 4f74 4e32 e48a  .N..V...sQOtN2..
00000e0: 5600 cd13 ebe4 8a56 0060 bbaa 55b4 41cd  V......V.`..U.A.
00000f0: 1372 3681 fb55 aa75 30f6 c101 742b 6160  .r6..U.u0...t+a`
0000100: 6a00 6a00 ff76 0aff 7608 6a00 6800 7c6a  j.j..v..v.j.h.|j
0000110: 016a 10b4 428b f4cd 1361 6173 0e4f 740b  .j..B....aas.Ot.
0000120: 32e4 8a56 00cd 13eb d661 f9c3 496e 7661  2..V.....a..Inva
0000130: 6c69 6420 7061 7274 6974 696f 6e20 7461  lid partition ta
0000140: 626c 6500 4572 726f 7220 6c6f 6164 696e  ble.Error loadin
0000150: 6720 6f70 6572 6174 696e 6720 7379 7374  g operating syst
0000160: 656d 004d 6973 7369 6e67 206f 7065 7261  em.Missing opera
0000170: 7469 6e67 2073 7973 7465 6d00 0000 0000  ting system.....
0000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001b0: 0000 0000 002c 4463 fc3a e4db 0000 8020  .....,Dc.:..... 
00001c0: 2100 07e5 a97c 0008 0000 0018 9c00 00e5  !....|..........
00001d0: aa7c 0672 b37f 0020 9c00 00a0 0000 00b8  .|.r... ........
00001e0: b980 0ffe ff12 0010 9d00 00e8 2300 0000  ............#...
00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.</code></pre>



<p class="wp-block-paragraph">Mit dieser Darstellung lässt sich jedoch noch nicht viel anfangen. Per Konvention liegt in dem Bereich zwischen 0x01BE und 0x1FD die 64 Byte große Partitionstabelle. Extrahiert man diese Informationen und ordnet sie in Gruppen an, so ergibt sich folgende Partitionierung der Festplatte.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Hex-Informationen</th></tr></thead><tbody><tr><td>1</td><td>8020 2100 07e5 a97c 0008 0000 0018 9c00</td></tr><tr><td>2</td><td>00e5 aa7c 0672 b37f 0020 9c00 00a0 0000</td></tr><tr><td>3</td><td>00b8 b980 0ffe ff12 0010 9d00 00e8 2300</td></tr><tr><td>4</td><td>0000 0000 0000 0000 0000 0000 0000 0000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">In der Partitionstabelle des MBR sind drei Partitionen vermerkt. Vergleicht man dies mit der Auswertung durch das Tool&nbsp;<code>mmls</code>, so lässt sich spätestens an dieser Stelle folgern, dass die Partition am Startblock 0010295296 durch eine erweiterte Partition mit eigener Partitionstabelle realisiert wurde. Da es sich bei erweiterten Partitionen um verkettete Listen handelt, muss die Partitionstabelle am Anfang der dritten Partition liegen. Dies wird in&nbsp;<code>mmls</code>&nbsp;anschaulich gezeigt. Dort wird eine erweiterte Tabelle an Block 0010293248 angezeigt.</p>



<p class="wp-block-paragraph">Bestimmen Sie anhand der mbr.dd unter anderem für alle Partitionen den CHS Eintrag, den Typ der Partition, den Startsektor, die Anzahl der Sektoren in der Partition und ob diese bootfähig ist.</p>



<p class="wp-block-paragraph">Als Voraussetzung für diesen Schritt muss die Übersetzung der hexadezimalen Darstellung der CHS-Adressierung in die reguläre Form erklärt werden.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="500" height="282" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150430-cofo-chs.png" alt="" class="wp-image-2853" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150430-cofo-chs.png 500w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150430-cofo-chs-350x197.png 350w" sizes="auto, (max-width: 500px) 100vw, 500px" /></figure>



<p class="wp-block-paragraph">Die folgende Tabelle bildet die zweite Wissensgrundlage und beschreibt, wie die Partitionstypen anhand ihrer Kennnummern identifiziert werden können.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Typbyte (hex)</th><th>Bezeichnung</th></tr></thead><tbody><tr><td>0x00</td><td>Leer/unbenutzt</td></tr><tr><td>0x01</td><td>FAT12</td></tr><tr><td>0x04</td><td>FAT16 ≤ 32</td></tr><tr><td>0x05</td><td>erweiterte Partition</td></tr><tr><td>0x06</td><td>FAT16 &gt; 32</td></tr><tr><td>0x07</td><td>NTFS, HPFS oder exFAT</td></tr><tr><td>0x0B</td><td>FAT32</td></tr><tr><td>0x0C</td><td>FAT32 mit BIOS-Extensions</td></tr><tr><td>0x0E</td><td>FAT16 &gt; 32</td></tr><tr><td>0x0F</td><td>Erweiterte Partition mit BIOS-Extensions</td></tr><tr><td>0x12</td><td>OEM-Partition</td></tr><tr><td>0x27</td><td>Windows RE versteckte Partition</td></tr><tr><td>0x42</td><td>Dynamischer Datenträger</td></tr><tr><td>0x82</td><td>Linux Swap / Solaris 2.6 X86 bis Solaris 9 X86</td></tr><tr><td>0x83</td><td>Linux Native</td></tr><tr><td>0x8E</td><td>Linux LVM</td></tr><tr><td>0xA5</td><td>FreeBSD</td></tr><tr><td>0xA6</td><td>OpenBSD</td></tr><tr><td>0xA9</td><td>NetBSD</td></tr><tr><td>0xEE</td><td>Legacy MBR mit folgendem EFI-Header</td></tr><tr><td>0xEF</td><td>EFI-Dateisystem</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Nun übertragen wir die hexadezimalen Daten aus der Partitionstabelle nach den genannten Schemata ein und analyisieren diese.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Bootbarkeit (0x00)</th><th>CHS-Start (0x01)</th><th>Dateisystem (0x04)</th><th>CHS-Ende (0x05)</th><th>LBA-Adressierung (0x08)</th><th>Sektoren (0x0C)</th></tr></thead><tbody><tr><td>0</td><td>80</td><td>20 21 00</td><td>07</td><td>e5 a9 7c</td><td>00 08 00 00</td><td>00 18 9c 00</td></tr><tr><td>0</td><td>Bootfähig</td><td>0,32,33</td><td>NTFS</td><td>636,229,41</td><td>2048</td><td>10229760</td></tr><tr><td>1</td><td>00</td><td>e5 aa 7c</td><td>06</td><td>72 b3 7f</td><td>00 20 9c 00</td><td>00 a0 00 00</td></tr><tr><td>1</td><td>Nicht bootfähig</td><td>636,229,42</td><td>FAT16 &gt; 32 MiB</td><td>639,114,51</td><td>10231808</td><td>40960</td></tr><tr><td>2</td><td>00</td><td>b8 b9 80</td><td>0f</td><td>fe ff 12</td><td>00 10 9d 00</td><td>00 e8 23 00</td></tr><tr><td>2</td><td>Nicht bootfähig</td><td>640,184,57</td><td>Erweiterte Partition mit BIOS-Extensions</td><td>895,254,63</td><td>10293248</td><td>2353152</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Bestimmen Sie diese Informationen zusätzlich fur die sekundären Partitionen.</p>



<p class="wp-block-paragraph">Wir gehen wie gehabt vor und extrahieren den 512 Byte großen Block, der die Partitionsinformationen enthalten soll. Für diesen wird der Hashwert erzeugt.</p>



<pre class="wp-block-code"><code># sha256sum mbr2.dd 
02e3892dca9ee74f4a2b9491696a1b4a2a0651a2408a636ad35bc70f77d97362  mbr2.dd
  
# dd if=arbeitskopie.dd of=mbr2.dd skip=0010293248 count=1  bs=512
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000205835 s, 2.5 MB/s</code></pre>



<p class="wp-block-paragraph">Wie bei der vorherigen Aufgabe betrachten wir die hexadezimale Darstellung, um Informationen zu sammeln.</p>



<pre class="wp-block-code"><code># xxd mbr2.dd 
0000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001b0: 0000 0000 0000 0000 0000 0000 0000 00d9  ................
00001c0: 9a80 0795 a2f3 0008 0000 0020 1c00 0000  ........... ....
00001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.</code></pre>



<p class="wp-block-paragraph">In diesem Bereich sind die Boot Record Signature (<em>0x55aa</em>) und eine Partition (<em>00d9 9a80 0795 a2f3 0008 0000 0020 1c00</em>) zu finden. Wie zuvor werden die Informationen analysiert und notiert.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Bootbarkeit (0x00)</th><th>CHS-Start (0x01)</th><th>Dateisystem (0x04)</th><th>CHS-Ende (0x05)</th><th>LBA-Adressierung (0x08)</th><th>Sektoren (0x0C)</th></tr></thead><tbody><tr><td>00</td><td>d9 9a 80</td><td>07</td><td>95 a2 f3</td><td>00 08 00 00</td><td>00 20 1c 00</td></tr><tr><td>Nicht bootfähig</td><td>640,217,25</td><td>NTFS</td><td>755,14,33</td><td>2048</td><td>1843200</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Geben Sie die LBA der nicht-allozierten Speicherbereiche an. Wie viele nicht-allozierte Speicherbereiche finden Sie?</p>



<p class="wp-block-paragraph">Es gibt drei nicht-allozierte Speicherbereiche mit den LBA 0000000000, 0010293248 und 0012138496.</p>



<pre class="wp-block-code"><code>     Slot    Start        End          Length       Description
01:  -----   0000000000   0000002047   0000002048   Unallocated
04:  -----   0010272768   0010295295   0000022528   Unallocated
08:  -----   0012138496   0012648613   0000510118   Unallocated</code></pre>



<h4 class="wp-block-heading">Analyse der Partitionen</h4>



<p class="wp-block-paragraph">Schreiben Sie mittels&nbsp;<code>dd</code>&nbsp;die erste und die zweite Primäre Partition nach partition_1.dd bzw. partition_2.dd.</p>



<pre class="wp-block-code"><code># dd if=arbeitskopie.dd of=partition_1.dd skip=2048 count=0010229760 bs=512
10229760+0 records in
10229760+0 records out
5237637120 bytes (5.2 GB) copied, 207.949 s, 25.2 MB/s

# dd if=arbeitskopie.dd of=partition_2.dd skip=10231808 count=40960  bs=512
40960+0 records in
40960+0 records out
20971520 bytes (21 MB) copied, 0.256054 s, 81.9 MB/s</code></pre>



<p class="wp-block-paragraph">Vermerken Sie deren Hashwerte.</p>



<pre class="wp-block-code"><code># sha256sum partition_1.dd partition_2.dd 
cc224419f690065a653efa9cb58dbf546b72e7db752fe71229bfb4d11dd8e685  partition_1.dd
af1b66fdf5ae27c07da0fb9915c4d7f6f6be2941484136698e73fa75cc6aab86  partition_2.dd</code></pre>



<p class="wp-block-paragraph">Welche Dateisysteme sollten Sie laut Partitionstabelle dort vorfinden?</p>



<p class="wp-block-paragraph">Laut Partitionstabelle sollte die erste Partition NTFS und die zweite Partition FAT16 verwenden.</p>



<p class="wp-block-paragraph">Stimmen die Angaben?</p>



<p class="wp-block-paragraph">Mit dem Werkzeug&nbsp;<code>fsstat</code>&nbsp;können konkrete Informationen über ein Dateisystem ausgelesen und angezeigt werden. Es eignet sich also bestens, um diese Frage zu beantworten.</p>



<pre class="wp-block-code"><code># fsstat partition_1.dd 
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: NTFS
Volume Serial Number: 5C0E509B0E50704E
OEM Name: NTFS    
Volume Name: Volume1
Version: Windows XP

# fsstat partition_2.dd 
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: FAT16

OEM Name: mkdosfs
Volume ID: 0x3ccb36b8
Volume Label (Boot Sector):            
Volume Label (Root Directory):
File System Type Label: FAT16</code></pre>



<p class="wp-block-paragraph">Vergleicht man diese Informationen nun, so scheinen die Angaben im MBR bzw. der Partitionstabelle korrekt zu sein.</p>



<h4 class="wp-block-heading">Analyse des nicht-allozierten Bereichs</h4>



<p class="wp-block-paragraph">Suchen Sie im dritten nicht-allozierten Speicherbereich nach versteckten Informationen. Geben Sie gefundene Informationen an.</p>



<p class="wp-block-paragraph">Zunächst extrahieren wir den nicht-allozierten Speicherbereich und generieren eine Prüfsumme, um die Nachvollziehbarkeit und Integrität zu gewährleisten.</p>



<pre class="wp-block-code"><code># dd if=arbeitskopie.dd of=u.dd skip=0012138496 count=0000510118 bs=512
510118+0 records in
510118+0 records out
261180416 bytes (261 MB) copied, 3.80292 s, 68.7 MB/s

# sha256sum u.dd 
5ceace853194138924c6fffad721d051d4f7735de261a60666af75d60702418f  u.dd</code></pre>



<p class="wp-block-paragraph">Mit dem Werkzeug&nbsp;<code>scalpel</code>&nbsp;lassen sich gelöschte Dateien auf einem Laufwerk wiederherstellen. Es ist somit ebenfalls geeignet die Daten im nicht-allozierten Bereich zu rekonstruieren. Diese Klasse von Programmen wird auch file carver genannt.</p>



<pre class="wp-block-code"><code># scalpel -o out u.dd

Scalpel version 1.60 audit file
Started at Thu Apr 30 09:03:15 2015
Command line:
scalpel -o out u.dd 

Output directory: /root/Downloads/P1/u/out
Configuration file: /etc/scalpel/scalpel.conf

Opening target "H="

The following files were carved:
File                Start		Chop		Length		Extracted From
00000004.png       120455		NO          1111330		u.dd
00000001.jpg       212540		NO            44428		u.dd
00000000.jpg       100354		NO            13484		u.dd
00000002.jpg     51381248		NO            13484		u.dd
00000005.png     61672449		NO          1111330		u.dd
00000003.jpg    108820480		NO            44428		u.dd
00000016.pdf    204800000		NO          1115386		u.dd
...</code></pre>



<p class="wp-block-paragraph">An dieser Stelle werden alle Einträge, die nicht erfolgreich extrahiert werden können, nicht aufgeführt. Es verbleiben somit 7 Dateien, die sich regulär von den Anwendungen öffnen lassen. Laut Praktikumsbetreuer gibt es einen Fehler in&nbsp;<code>scalpel</code>&nbsp;bezüglich des png-Headers, wodurch einige Dateien nicht korrekt identifiziert oder extrahiert werden.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-2/">Computer Forensik (Praktikum 2)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Computer Forensik (Praktikum 1)</title>
		<link>https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-1/</link>
					<comments>https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-1/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Thu, 16 Apr 2015 17:45:00 +0000</pubDate>
				<category><![CDATA[Computer Forensik]]></category>
		<category><![CDATA[1. Semester (M.Sc.)]]></category>
		<category><![CDATA[Master of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=2849</guid>

					<description><![CDATA[<p>Im ersten Praktikum untersuchen wir ein Datenträgerabbild und versuchen die Inhalte beschädigter Dateien zu identifizeren. Skript-Anfang Praktikum 1 &#8211; Seite 1 Skript-Ende Praktikum 1 &#8211; Seite 1 Kopieren Duplizieren Sie die Masterkopie EDF.dd mittels&#160;dd&#160;in die Datei arbeitskopie.dd. Mit dem Werkzeug&#160;dd&#160;lassen sich bit-genaue Kopien von Dateien erzeugen. Im Gegensatz zu anderen Kopierfunktionen bleiben alle Informationen vom [&#8230;]</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-1/">Computer Forensik (Praktikum 1)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Im ersten Praktikum untersuchen wir ein Datenträgerabbild und versuchen die Inhalte beschädigter Dateien zu identifizeren.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Skript-Anfang</th><td>Praktikum 1 &#8211; Seite 1</td></tr><tr><th>Skript-Ende</th><td>Praktikum 1 &#8211; Seite 1</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Kopieren</h3>



<p class="wp-block-paragraph">Duplizieren Sie die Masterkopie EDF.dd mittels&nbsp;<code>dd</code>&nbsp;in die Datei arbeitskopie.dd.</p>



<p class="wp-block-paragraph">Mit dem Werkzeug&nbsp;<code>dd</code>&nbsp;lassen sich bit-genaue Kopien von Dateien erzeugen. Im Gegensatz zu anderen Kopierfunktionen bleiben alle Informationen vom originalen Zustand erhalten.</p>



<pre class="wp-block-code"><code># dd if=EDF.dd of=arbeitskopie.dd
12648614+0 records in
12648614+0 records out
6476090368 bytes (6.5 GB) copied, 442.091 s, 14.6 MB/s</code></pre>



<p class="wp-block-paragraph">Prüfen Sie die Übereinstimmung der beiden Hashwerte von EDF.dd und arbeitskopie.dd.</p>



<pre class="wp-block-code"><code># sha256sum arbeitskopie.dd EDF.dd 
d93f75c0eb592538c49baeaa8081b90f3f2ddfd91e8d059b94e08bdca6b9f288  arbeitskopie.dd
d93f75c0eb592538c49baeaa8081b90f3f2ddfd91e8d059b94e08bdca6b9f288  EDF.dd</code></pre>



<p class="wp-block-paragraph">Wie sich zeigt sind die berechneten Hashwerte absolut identisch, weshalb die Dateien identisch sein müssen.</p>



<p class="wp-block-paragraph">Kopieren Sie mittels&nbsp;<code>dd</code>&nbsp;aus arbeitskopie.dd ab Block 2048 bis einschließlich Block 10231807 nach partition_1.dd.</p>



<p class="wp-block-paragraph">Bevor wir die Partition 1 extrahieren, möchte ich mir die eigentliche Partitionstabelle ansehen. Hierfür verwenden wir den Befehl&nbsp;<code>mmls</code>.</p>



<pre class="wp-block-code"><code># mmls arbeitskopie.dd 
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

     Slot    Start        End          Length       Description
00:  Meta    0000000000   0000000000   0000000001   Primary Table (#0)
01:  -----   0000000000   0000002047   0000002048   Unallocated
02:  00:00   0000002048   0010231807   0010229760   NTFS (0x07)
03:  00:01   0010231808   0010272767   0000040960   DOS FAT16 (0x06)
04:  -----   0010272768   0010295295   0000022528   Unallocated
05:  Meta    0010293248   0012646399   0002353152   Win95 Extended (0x0f)
06:  Meta    0010293248   0010293248   0000000001   Extended Table (#1)
07:  01:00   0010295296   0012138495   0001843200   NTFS (0x07)
08:  -----   0012138496   0012648613   0000510118   Unallocated</code></pre>



<p class="wp-block-paragraph">Nun extrahieren wir die erste Partition, indem wir&nbsp;<code>dd</code>&nbsp;die ersten 2048 Blöcke überspringen lassen (<em>beginnend mit 0</em>) und lesen die nächsten 10229760 Blöcke ein. Die so erzeugte Datei umfasst ausschließlich den Bereich der Blöcke 2048 bis 10231807.</p>



<pre class="wp-block-code"><code># dd if=arbeitskopie.dd of=partition_1.dd skip=2048 count=10229760 bs=512
10231807+0 records in
10231807+0 records out
5238685184 bytes (5.2 GB) copied, 189.473 s, 27.6 MB/s</code></pre>



<p class="wp-block-paragraph">Notieren Sie die Hashsumme von partition_1.dd.</p>



<pre class="wp-block-code"><code># sha256sum partition_1.dd
cc224419f690065a653efa9cb58dbf546b72e7db752fe71229bfb4d11dd8e685  partition_1.dd</code></pre>



<h3 class="wp-block-heading">Hashsummen</h3>



<p class="wp-block-paragraph">Mounten Sie partition_1.dd nach /mnt/.</p>



<pre class="wp-block-code"><code># mount partition_1.dd /mnt
The disk contains an unclean file system (0, 0).
The file system wasn't safely closed on Windows. Fixing.</code></pre>



<p class="wp-block-paragraph">Auf der Partition hat sich scheinbar eine Windows-Partition befunden, die nun wieder erfolgreich gemountet wird. Lediglich ein Fehler durch eine unsaubere Beendigung scheint zu existieren, der zunächst behoben werden muss. Danach lassen sich erfolgreich Ordnerstrukturen erkennen.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1003" height="542" src="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150416-cofo-1.png" alt="" class="wp-image-2850" srcset="https://maximiliankrieg.de/wp-content/uploads/2026/06/20150416-cofo-1.png 1003w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150416-cofo-1-350x189.png 350w, https://maximiliankrieg.de/wp-content/uploads/2026/06/20150416-cofo-1-768x415.png 768w" sizes="auto, (max-width: 1003px) 100vw, 1003px" /></figure>



<p class="wp-block-paragraph">Kopieren Sie alle Dateien unter /mnt/Documents/ auf Ihre Festplatte und vergleichen Sie die SHA256-Hashsumme von Kopie und Original.</p>



<pre class="wp-block-code"><code># cp -R /mnt/Documents /root/Downloads/P1

# sha256sum /mnt/Documents/* /root/Downloads/P1/Documents/*
f1a450d97f7779f8049af5dd4877b6867a01f0687a3fc62c388320ba243eae51  /mnt/Documents/file1
3bb8c855771c073508923e4a8818c076f2dc8a88dc30f2eb27b976f730064e62  /mnt/Documents/file2
68d11c70f05b7020ea3802a3b3c97489fd2bfe7c98c04579ce8607317f3dde07  /mnt/Documents/file3
f3861e09be1824ca693c302674abfbb99d313485446ad5fd9d3b54f964418bd3  /mnt/Documents/file4
45380bf0de0e900543cc9c9a9ac23491f3ee2de3e646f8f6d23ab5f149111c90  /mnt/Documents/file5
0ebd56d6f836d10618a909fad35578d0da8413ad8fcd0625e70005030662b674  /mnt/Documents/file6
fb6f1b1ff819f14688dccfae6be26b6ef1630c60cab30858e0b559f47e124ffa  /mnt/Documents/file7
c1c462a67811b81ad9aebe57c95107a9ae07c18f8178da5f43278fd45e2cfa50  /mnt/Documents/file8
f1a450d97f7779f8049af5dd4877b6867a01f0687a3fc62c388320ba243eae51  /root/Downloads/P1/Documents/file1
3bb8c855771c073508923e4a8818c076f2dc8a88dc30f2eb27b976f730064e62  /root/Downloads/P1/Documents/file2
68d11c70f05b7020ea3802a3b3c97489fd2bfe7c98c04579ce8607317f3dde07  /root/Downloads/P1/Documents/file3
f3861e09be1824ca693c302674abfbb99d313485446ad5fd9d3b54f964418bd3  /root/Downloads/P1/Documents/file4
45380bf0de0e900543cc9c9a9ac23491f3ee2de3e646f8f6d23ab5f149111c90  /root/Downloads/P1/Documents/file5
0ebd56d6f836d10618a909fad35578d0da8413ad8fcd0625e70005030662b674  /root/Downloads/P1/Documents/file6
fb6f1b1ff819f14688dccfae6be26b6ef1630c60cab30858e0b559f47e124ffa  /root/Downloads/P1/Documents/file7
c1c462a67811b81ad9aebe57c95107a9ae07c18f8178da5f43278fd45e2cfa50  /root/Downloads/P1/Documents/file8</code></pre>



<p class="wp-block-paragraph">Die Dateien wurden offensichtlich ohne Veränderung in den neuen Ordner kopiert. Die identischen Hashsummen sind ein Nachweis dafür.</p>



<p class="wp-block-paragraph">Zu welchem Zweck werden Hashsummen in der Computer Forensik eingesetzt?</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Kryptologische Hashfunktionen besitzen spezielle Eigenschaften, in der Praxis sind es kollisionsresistente Einwegfunktionen. Sie werden verwendet, um Nachrichten zu signieren bzw. die Integrität von Daten sicherzustellen.http://de.wikipedia.org/wiki/Hashfunktion</p>
</blockquote>



<p class="wp-block-paragraph">Hat sich die Hashsumme von partition_1.dd geändert? Falls ja, warum?</p>



<pre class="wp-block-code"><code># sha256sum partition_1.dd 
e01d086ec789334fb8e8956e2d31169cf301841a0f01448e55bb8e90e1f0a8f5  partition_1.dd</code></pre>



<p class="wp-block-paragraph">Beim Zugriff auf das Festplattenabbild kann es immer zu unerwünschten Schreibzugriffen kommen, die Informationen ändern. Die Fehlerkorrektur beim Mounten der Datei hat vermutlich zu der Veränderung geführt. Die Verwendung des readonly-Parameters hätte an dieser Stelle zuverlässig geholfen.</p>



<pre class="wp-block-code"><code># mount -o ro partition_1.dd /mnt</code></pre>



<h3 class="wp-block-heading">Klassifikation verschiedener Dateitypen</h3>



<p class="wp-block-paragraph">Klassifizieren Sie die Art der Dateien anhand der Metadaten-Informationen, die in jeder Datei enthalten sind. Erläutern Sie, wie Sie den Dateityp bestimmt haben.</p>



<p class="wp-block-paragraph">Wir schauen uns zunächst an, wie das Betriebssystem diese Dateien identifiziert. Das Werkzeug&nbsp;<code>file</code>&nbsp;untersucht dafür die sogenannten Magic numbers, die am Anfang der Dateien stehen.</p>



<pre class="wp-block-code"><code># file *
file1: JPEG image data, JFIF standard 1.01
file2: Zip archive data, at least v2.0 to extract
file3: data
file4: data
file5: data
file6: data
file7: PC bitmap, Windows 3.x format, 607 x 351 x 32
file8: data</code></pre>



<p class="wp-block-paragraph">Wir überprüfen die Aussagen des Werkzeugs indem wir die Dateien 1, 2 und 7 zu öffnen versuchen. Dies lässt sich auch bewerkstelligen. Die Dateien 1 und 7 sind Bilder, letztere ist jedoch beschädigt. Bei Datei 2 handelt es sich um einen BSI-Leitfaden.</p>



<p class="wp-block-paragraph">Für die restlichen Dateien verwenden wir zunächst&nbsp;<code>xxd</code>, um uns die Dateiköpfe anzusehen.</p>



<pre class="wp-block-code"><code># xxd -l 32 file3
0000000: 8950 6466 0d0a 1a0a 0000 000d 4948 4452  .Pdf........IHDR
0000010: 0000 0238 0000 01ab 0802 0000 0042 0d7a  ...8.........B.z

# xxd -l 32 file4
0000000: 3a94 d49a 6fb4 0027 62a6 7b87 0719 8ef9  :...o..'b.{.....
0000010: 5f36 23de 16f8 4b1b 1f52 d4aa 1e48 ff00  _6#...K..R...H..

# xxd -l 32 file5
0000000: 5044 462d 312e 360d 25e2 e3cf d30d 0a32  PDF-1.6.%......2
0000010: 3730 3820 3020 6f62 6a0d 3c3c 2f4c 696e  708 0 obj.&lt;&lt;/Lin

# xxd -l 32 file6
0000000: 5241 5221 1a07 0066 6f72 6d61 7420 3300  RAR!...format 3.
0000010: 1000 0101 0040 2000 0000 001c 0000 0004  .....@ .........

# xxd -l 32 file8
0000000: ffff 504b 0304 1400 0008 0000 2285 483d  ..PK........".H=
0000010: 5ec6 320c 2700 0000 2700 0000 0800 0000  ^.2.'...'.......</code></pre>



<p class="wp-block-paragraph">Auf den ersten Blick scheint es sich bei den Dateien 3,5 und 6 um PDFs und ein RAR-Archiv zu handeln. Vergleicht man die Magic Numbers mit einer Liste im Internet (<a href="http://www.garykessler.net/library/file_sigs.html">Link</a>), so erkennt man, dass hier kaum etwas komplett stimmt.</p>



<p class="wp-block-paragraph">Wir untersuchen zunächst die Datei 3 mit&nbsp;<code>strings</code>, um mehr über deren Inhalt zu erfahren.</p>



<pre class="wp-block-code"><code># strings file3
IHDR
sRGB
pHYs
tIME
IDATx
uEQt
jjjB
...
</code></pre>



<p class="wp-block-paragraph">In Datei 3 sind Zeichenketten, wie IHDR, sRGB und pHYs zu finden, die typisch für png-Dateien sind. Eine vollständige Betrachtung der hexadezimalen Darstellung und ein Abgleich mit den Magic Numbers zeigt, dass der Datei-Trailer (<code>49 45 4E 44 AE 42 60 82</code>) ebenfalls zu png-Dateien gehört und der Dateikopf (<code>89 50 4E 47 0D 0A 1A 0A</code>) nahezu korrekt ist, mit kleinen Abweichungen.</p>



<pre class="wp-block-code"><code># xxd file3
...
...
003add0: f52f 35d2 2a22 5c66 6d18 0000 0000 4945  ./5.*"\fm.....IE
003ade0: 4e44 ae42 6082</code></pre>



<p class="wp-block-paragraph">Korrigiert man die Abweichung&nbsp;<code>64 66</code>&nbsp;zu&nbsp;<code>4e 47</code>, so lässt sich die Datei wieder öffnen. Sie zeigt den Campusplan der Hochschule Darmstadt. Der Dateikopf sieht nun wie folgt aus.</p>



<pre class="wp-block-code"><code># xxd -l 16 f3
0000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR</code></pre>



<p class="wp-block-paragraph">Nun nehmen wir uns Datei 4 vor. Die Idee, sich den Datei-Trailer anzusehen, ist ein guter Ansatzpunkt. Die Kennzeichnung&nbsp;<code>FF D9</code>&nbsp;stimmt mit dem Ende des JPEG-Formats überein. Betrachtet man den Dateikopf, so scheint dieser komplett zu fehlen oder falsch zu sein. Wir untersuchen die funktionierende JPEG-Datei (<em>Datei 1</em>) und erkennen, dass der Inhalt von Datei 4 komplett in Datei 1 enthalten ist. Wir fügen mit Hilfe eines Hexeditors den fehlenden Teil von Datei 1 ein.</p>



<pre class="wp-block-code"><code>FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01 00 00 FF DB 00 84 00 09 06 06 14 12 11 15 14 10 14 14 14 15 15 17 14 14 15 14 14 15 14 14 17 14 14 14 14 15 15 14 14 15 14 17 1C 26 1E 17 19 23 19 14 14 1F 2F 20 24 27 29 2C 2C 2C 15 1E 31 35 30 2A 35 26 2B 2C 29 01 09 0A 0A 0E 0C 0E 17 0F 0F 14 29 1C 1C 1C 29 29 29 29 29 2C 29 29 29 2C 29 34 2D 29 29 2C 29 29 2C 29 2C 29 29 2C 29 29 29 29 29 2C 29 29 29 29 29 29 29 29 29 29 29 29 2C 2E 2C 2B 29 29 29 29 FF C0 00 11 08 00 C2 01 03 03 01 22 00 02 11 01 03 11 01 FF C4 00 1B 00 00 02 02 03 01 00 00 00 00 00 00 00 00 00 00 00 00 03 02 07 04 05 06 01 FF C4 00 42 10 00 02 01 02 02 06 06 06 08 05 04 02 03 00 00 00 01 02 00 03 11 04 21 05 06 12 31 41 51 22 61 71 81 91 A1 07 13 32 52 B1 C1 24 42 72 73 82 92 B2 D1 23 33 A2 C2 F0 14 34 62 93 63 E1 16 43 B3 FF C4 00 1A 01 00 03 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00 01 02 03 05 06 04 FF C4 00 21 11 01 01 01 00 01 04 02 03 01 00 00 00 00 00 00 00 00 01 02 11 03 04 12 21 31 51 22 41 61 13 FF DA 00 0C 03 01 00 02 11 03 11 00 3F 00 AA EA AD 82 8E A9 2A 29 61 BE 4B 10 33 EC 92 51 95 A4 69 71 E8 23 AE 1E B2 DC 24 48 EB 82 66 6C A0 9B E4 07 39 0A 3B 0B 41 EA B8 44 CC 93 DD D6 4F 57 5C EC 75 6F 1D 42 98 F5 41 B6 5C 12 1B 6A CB B6 C0 DA E0 EE 3B B2 1B E7 BA 03 44 8A 2B 72 06 DB 7B 47 97 FC 41 9C 66 34 F4 DB ED 37 EA 32 E6 79 2E 56 E2 18 F5 32 AF D1 5A D7 5A 8D 85 F6 D4 7D 57 E0 39 06 DE 3E 1D 53 B5 D1 1A D9 46 B5 85 F6 1F DD 72 05 FE CB 6E 3E 47 AA 17 3C 0E 5D 0A 98 E5 31 08 63 14 C4 0E 06 31 4C 52 99 31 00 72 B4 60 33 1C 34 60 68 0E 4F 53 18 A6 63 83 18 8D 03 47 15 81 4A 82 CE 2F 63 70 77 10 79 82 33 06 6B F1 0A D4 F2 AB 77 4E 15 40 BB A0 FF 00 C8 A3 DA 1D 62 6D 54 C9 03 2F 1B D6 2F 32 A7 59 9B 9C 6A 34 AC B9 02 08 65 3B 99 4D C1 1D 46 46 65 D7 D1 85 49 6A 04 29 39 B5 33 FC B7 ED 1F 55 BA C7 9C C4 4A 81 89 00 15 71 9B 53 6F 68 0E 6B EF AF 58 9B 5E 8F 75 37 EB 5E AB 55 D7 ED 2E 3D E7 DC 10 84 27 B1 E2 10 84 20 04 21 08 01 08 42 00 42 10 80 10 84 20 1E C2 10 88 28 FA C7 A4 7B 60 C6 45 CF C6 7A D3 9D D7 CB A2 88 CE 9F 57 B4 3E C5 AA 54 1D 22 3A 23 DD 1F B9 F9 CD 66 89 C1 9B 8A 8C 85 97 80 16 27 B7 64 EF 13 A9 C2 63 11 FD 92 2F EE 9C 88 EE 31 06 75 14 00 DF 9C AD F1 2D D2 3D 64 FC 65 92 B2 B2 AA D9 F7 CB C9 51 78 C5 68 8B C9 A9 99 09 6E 6A CD 4B E1 68 FD 85 FD A6 DD 0C D0 EA BB 7D 12 97 D8 1F 13 37 54 DA 61 AA 64 29 93 43 13 4D A3 11 A2 06 C9 83 14 0C 98 8C 1A 1A 49 0C 54 98 31 19 CA D2 60 C4 03 26 1B 7C 01 EA 66 3E 33 47 A5 51 D2 19 8F 65 86 4C A7 98 61 98 8C 53 27 B7 18 69 71 01 A9 9B 56 CD 78 56 51 BB EF 54 6E FB 43 2E 76 83 2D BB 0E 60 8C C1 1C C1 9B D2 2F 35 98 8D 16 53 A5 42 D6 39 B5 23 EC 31 E6 BE E3 75 8C B9 CF 6F 47 BA B8 F5 AF 71 E3 EB 76 B9 DF BC FA AC 48 41 18 35 C0 B8 61 ED 53 6C 9D 7A ED C4 75 88 4D 9E 37 9D CE 73 5A BD E3 58 BC 6A 08 42 12 D0 21 08 40 08 42 10 02 10 84 03 D8 42 11 05 1C 46 62 66 68 FC 07 AC 6B 9F 64 1C FA FA A2 F0 D8 03 51 B7 D8 79 CE 86 85 10 A0 05 C8 09 CE D7 45 CB 2A 8A 5B 21 BA 3A A6 19 5F DA 00 F5 F1 EE 23 39 14 11 D4 E2 04 35</code></pre>



<p class="wp-block-paragraph">Nach diesem Schritt lässt sich Datei 4 wieder öffnen. Tatsächlich sind die Dateien identisch.</p>



<p class="wp-block-paragraph">Nun wenden wir uns Datei 5 zu. Normalerweise verfügen PDF-Dateien über den Anfang&nbsp;<code>25 50 44 46</code>. Mit der Idee im Kopf, dass man nur kleinere Fehler korrigieren muss, fügen wir die fehlenden&nbsp;<code>0x25</code>&nbsp;am Anfang der Datei ein.</p>



<pre class="wp-block-code"><code># xxd -l 16 file5
0000000: 2550 4446 2d31 2e36 0d25 e2e3 cfd3 0d0a  %PDF-1.6.%......
</code></pre>



<p class="wp-block-paragraph">Daraufhin lässt sich die Datei wieder öffnen. Es handelt sich um den gleichen BSI-Leitfaden, der in Datei 2 enthalten ist.</p>



<p class="wp-block-paragraph">Die vorhergehenden Schritte haben wir nun auch auf Datei 6 angewendet, ohne Erfolg. Das&nbsp;<code>format 3</code>&nbsp;weist jedoch auf eine sqlite-Datei hin. Die Auswertung von&nbsp;<code>strings</code>&nbsp;zeigt, dass tatsächlich die Datensätze einer sqlite-Datei enthalten sind.</p>



<pre class="wp-block-code"><code>/tablecontactscontacts
CREATE TABLE contacts (
    name VARCHAR(32) PRIMARY KEY,
    no INTEGER UNIQUE
indexsqlite_autoindex_contacts_2contacts
indexsqlite_autoindex_contacts_1contacts</code></pre>



<p class="wp-block-paragraph">Untersucht man Datei 8 mit&nbsp;<code>strings</code>, so finden sich Zeichenketten wie&nbsp;<code>application/vnd.oasis.opendocument.text</code>&nbsp;darin, die auf eine OpenDocument-Textdatei schließen lässt.</p>



<h3 class="wp-block-heading">Datei Header Analyse</h3>



<p class="wp-block-paragraph">Finden Sie so viel wie möglich uber die Datei file7 heraus, in dem Sie nur das Linux Kommando hexdump oder xxd auf die ersten 27 Bytes der Datei anwenden.</p>



<pre class="wp-block-code"><code># xxd -l 27 file7
0000000: 424d 42df 0a00 0000 0000 3600 0000 2800  BMB.......6...(.
0000010: 0000 5f02 0000 5f01 0000 01              .._..._....</code></pre>



<p class="wp-block-paragraph">Wir übertragen diese Informationen auf ein Tabellenschema und analyisieren diese Werte nun. Man muss darauf achten, dass die Berechnung von Werten durch die Byte-Reihenfolge (<em>endianess</em>) beeinflusst wird. Die Zahlen, bis auf den Typ, sind also von rechts nach links auszuwerten.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Bytes</th><th>Bedeutung</th></tr></thead><tbody><tr><td>42 4d</td><td>Typ: Windows Bitmap-Datei</td></tr><tr><td>42 df 0a 00</td><td>Größe der Bitmap-Datei: 712.514 Byte</td></tr><tr><td>00 00</td><td>Reserviert</td></tr><tr><td>00 00</td><td>Reserviert</td></tr><tr><td>36 00 00 00</td><td>Offset bis zum Pixelarray: 54 Byte</td></tr><tr><td>28 00 00 00</td><td>Größe des Headers: 40 Byte</td></tr><tr><td>5f 02 00 00</td><td>Breite des Bildes: 607px</td></tr><tr><td>5f 01 00 00</td><td>Höhe des Bildes: 351px</td></tr><tr><td>00 01</td><td>Anzahl der Farbebenen (<em>nicht genutzt</em>)</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Sind alle angegebenen Informationen korrekt? Wie erklären Sie sich die Unstimmigkeiten?</p>



<p class="wp-block-paragraph">Die Größe der Bitmap-Datei ist nicht korrekt. Auf dem Dateisystem nimmt das Bild 692034 Byte ein. Vermutlich sind Informationen beim Wiederherstellungsvorgang verloren gegangen.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-1/">Computer Forensik (Praktikum 1)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2015/04/computer-forensik-praktikum-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Praktikum 5)</title>
		<link>https://maximiliankrieg.de/2014/06/verteilte-systeme-praktikum-5/</link>
					<comments>https://maximiliankrieg.de/2014/06/verteilte-systeme-praktikum-5/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Tue, 17 Jun 2014 09:23:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3051</guid>

					<description><![CDATA[<p>Inhalt Für diesen Termin habe ich keine Lösung implementiert.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/06/verteilte-systeme-praktikum-5/">Verteilte Systeme (Praktikum 5)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Inhalt</h3>



<p class="wp-block-paragraph">Für diesen Termin habe ich keine Lösung implementiert.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/06/verteilte-systeme-praktikum-5/">Verteilte Systeme (Praktikum 5)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/06/verteilte-systeme-praktikum-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verteilte Systeme (Praktikum 4)</title>
		<link>https://maximiliankrieg.de/2014/05/verteilte-systeme-praktikum-4/</link>
					<comments>https://maximiliankrieg.de/2014/05/verteilte-systeme-praktikum-4/#respond</comments>
		
		<dc:creator><![CDATA[Maximilian]]></dc:creator>
		<pubDate>Tue, 27 May 2014 09:22:00 +0000</pubDate>
				<category><![CDATA[Verteilte Systeme]]></category>
		<category><![CDATA[6. Semester (B.Sc.)]]></category>
		<category><![CDATA[Bachelor of Science]]></category>
		<category><![CDATA[Praktikum]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://maximiliankrieg.de/?p=3049</guid>

					<description><![CDATA[<p>Inhalt Für diesen Termin habe ich keine Lösung implementiert.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/05/verteilte-systeme-praktikum-4/">Verteilte Systeme (Praktikum 4)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Inhalt</h3>



<p class="wp-block-paragraph">Für diesen Termin habe ich keine Lösung implementiert.</p>
<p>Der Beitrag <a href="https://maximiliankrieg.de/2014/05/verteilte-systeme-praktikum-4/">Verteilte Systeme (Praktikum 4)</a> erschien zuerst auf <a href="https://maximiliankrieg.de">Maximilian Krieg</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://maximiliankrieg.de/2014/05/verteilte-systeme-praktikum-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
