randomize.c

Dieses Programm soll das Auslesen einer (Text-)Datei von einer Festplatte, die zuvor überschrieben wurde, simulieren. Es hält sich immer noch das Gerücht, dass Festplatten bis zu 35-mal überschrieben werden müssen, um alle Datenspuren zu vernichten. Eine Studie zeigt aber zum Beispiel, dass bereits einfaches Überschreiben ein korrektes Wiederherstellen der Daten sehr erschwert.

Im Artikel wird eine Lesegenauigkeit von 56% pro Bit genannt; wodurch die Wahrscheinlichkeit für das richtige Auslesen von einem Byte bereits auf 0.97% sinkt. Mit diesem Programm kann das Auslesen mit verschiedenen Genauigkeiten simuliert werden. Außerdem kann die Ausgabe durch eine Binärmaske manipuliert werden, um so ein Wiederherstellen möglicherweise zu vereinfachen: Durch das feste Setzen einzelner Bits werden weniger korrekt gelesene Bits der Eingabe benötigt, allerdings gehen dadurch auch ursprünglich vorhandene Informationen verloren. Eine detaillierte Auseinandersetzung mit diesem Thema findet sich in diesem Diskussions-Thread.

Um das Programm ausführen zu können, muss es zuvor kompiliert werden:
gcc -O2 randomize.c -o randomize

Danach kann es auf der Konsole verwendet werden. Ein- und Ausgabe können auch auf Dateien umgeleitet werden:
echo "Hello World" | ./randomize
cat datei.txt | ./randomize
./randomize output.txt

Es können zwei Parameter angegeben werden: Die Lesegenauigkeit für die Eingabedaten (1.0 bedeutet fehlerfreies Lesen, 0.5 eine 50-prozentige Fehlerwahrscheinlichkeit; Standard: 0.98) und eine binäre Maske, die auf die gelesenen Daten angewendet wird (Format xxxxxxxx). Die Maske kann dazu verwendet werden, die Ausgabe auf einen bestimmten ASCII-Bereich zu beschränken, zum Beispiel werden durch 0xxxxxxx nur die unteren 7 Bit verwendet; 01xxxxxx beschränkt die Ausgabe auf darstellbare Zeichen und 010xxxxx auf Kleinbuchstaben (vergleiche ASCII-Tabelle). Am Ende des Artikels folgen einige Beispielausgaben zur Veranschaulichung.

Hinweis: Ich übernehme keine Haftung für Schäden, die durch das Benutzen dieser Software entstehen!

Quellcode

Download: randomize.c (6 KiB)

Beispiele

Hier folgen einige Beispiele mit verschiedenen Parametern. Als Eingabe wurde der Quellcode dieses Programms verwendet. Die Beispiele zeigen die ersten 256 Bytes der Ausgabe als Hexdump. Es wird deutlich, dass selbst mit einer immer noch sehr hohen Lesegenauigkeit von 90% (gegenüber dem Wert von 56% aus der Studie) der Text kaum noch zu erkennen ist. Es fällt auch auf, dass das Einschränken der möglichen Zeichen auf z.B. Buchstaben mit Hilfe der Bitmaske die Lesbarkeit des Texts verbessert.

  • Originaldatei:
  • Lesegenauigkeit 98%, keine Ausgabemaske:
  • Lesegenauigkeit 98%, Ausgabemaske 0xxxxxxx:
  • Lesegenauigkeit 95%, keine Ausgabemaske:
  • Lesegenauigkeit 95%, Ausgabemaske 0x1xxxxx:
  • Lesegenauigkeit 90%, keine Ausgabemaske:
  • Lesegenauigkeit 60%, Ausgabemaske 0xxxxxxx:
Bookmark the permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *