Skip to content

Daten auf der Festplatte sicher löschen

Vor etwa einem Jahr schrieb ich über die Great Zero Challenge. Bei dem Wettkampf bekam jeder Teilnehmer eine Festplatte, deren Inhalte mit Nullen überschrieben waren. Derjenige, der den Namen eines Ordners oder einer Datei auf der Platte auslesen kann, gewinnt den Wettkampf. Bis heute gibt es keinen Gewinner. Diejenigen, die sich im Usenet oder entsprechenden Webforen rumtreiben, werden sich darüber sicher wundern. Denn es gibt immer wieder Aussagen, dass solche Daten trivial wiederzugewinnen sind. Ein Experte für Computerforensik hat sich jetzt dieser Tatsache angenommen.Nach einem Artikel bei Securityfocus fand er dabei heraus, dass es reicht, die Festplatte einmal mit Zufallswerten zu überschreiben. Die Wahrscheinlichkeit, ein Byte an korrekten Daten wieder zu gewinnen, liegt bei unter einem Prozent. Die korrekte Rückgewinnung von vier Bytes funktionierte nur in neun von einer Million Fällen.

In many instances, using a MFM (magnetic force microscope) to determine the prior value written to the hard drive was less successful than a simple coin toss.

Insofern besteht immer noch eine vage Möglickeit, den obigen Wettkampf zu gewinnen. Doch den meisten meienr Leser dürften die dazu notwendigen Arbeitsmittel nicht zur Verfügung stehen. :-)

Update: Die Diskussion in der Newsgroup de.comp.security.misc Beweise für das Wiederherstellen “überschriebener” Daten hat weitere interessante Details zu dem Thema.

Tip #15: Maximum in einem Array finden

Stellt euch vor, ihr habt ein Array gut gefüllt mit verschiedenen Integer-Werten und wollt das Maximum bestimmen. Wie geht das mit zsh-Mitteln? Ganz einfach:

jens@frankenstein:~/ > a=( 12 232 45 1 56 232 124 12 3442 345)
jens@frankenstein:~/ > print -l ${${(On)a}[1]}
3442

Was macht der Ausdruck? Ganz einfach! Er sortiert das Array numerisch und gibt dann den ersten Wert aus.

Tip #14: E-Mails mit mutt automatisch verschlüsseln

Ich sinniere schon seit einiger Zeit, wie ich ausgehende E-Mails weitgehend automatisch verschlüsseln kann. Vor längerer Zeit stiess ich dabei auf das Perlskript von Martin Grandrath. Auf der Seite ist gut beschrieben, wie das einzurichten ist. Das problem am Skript ist die relativ lange Startzeit. Es vergehen in der regel mehrere Sekunden bis mutt einsatzfähig ist.

Vor kurzem unterhielt ich mich mit Jörg Sommer darüber. Er hat eine Lösung mit zsh-Mitteln gebastelt. Diese ist zudem noch wesentlich schneller als die obige Variante:


#!/bin/zsh

hook_name=send-hook
blacklist_file=$HOME/Mail/crypt_blacklist
output_file=$HOME/Mail/crypt_hook_list

setopt extendedglob

gpg_dump=( ${(f)“$(gpg --list-keys --with-colons)”} )

# filter out lines without @
people=( ${(f)"$(for line in ${(M)gpg_dump:#(pub|uid):*@*}; do 
  print ${“${(@s.:.)line}”[10]}; done)"} )

typeset -a -U addresses
# possible bad lines:
# • email@example.com  -- only an address
# • name (<…>) 
addresses=( ${${people%>}##*<} )

[[ -r $blacklist_file ]] &&
  addresses=( ${addresses:#${(j:|:)~${${(f)"$(<$blacklist_file)"}:#\#*}}} )

print -l "$hook_name\t~A\tunset crypt_autoencrypt" \
  "$hook_name\t'~t \""${(j:|:)addresses//./\\\\.}"\"'\tset crypt_autoencrypt" \
  > $output_file

Was macht das Skript? Anfangs werden zunächst ein paar Variablen festgelegt und das erweiterte Globbing der zsh eingeschalten. In der Variable gpg_dump wird alsdann die Ausgabe von gpg --list-keys --with-colons gespeichert. Nun folgt ein wenig zsh-Magic. ;-) Die Anweisung hinter people entspricht in etwa der Shellzeile awk -F: ‘/^(pub|uid)/ { print $10 }’ gpg_dump, d.h. dort liegen dann alle E-Mail-Adressen, die auf den Schlüsseln angegeben waren. Schließlich wird für alle Adressen auf der Blackliste ein enstprechender Eintrag erzeugt und die Konfiguration in die Variable output_file geschrieben.Die Adressen in der Blackliste werden entfernt. Was übrig bleibt, schreibt das Skript in Datei, deren Name in output_file gespeichert ist. Dabei muss man beachten, dass mutt nicht unendlich viele Einträge akzeptiert. Es scheint eine Begrenzung irgendwo bei 200 Einträgen zu geben.

Das ist aus meiner Sicht eine gute Alternative zu Martins Skript. Solltet ihr Anmerkungen, Fragen, Kommentare haben, schreibt mir es unten rein oder schreibt direkt eine E-Mail an Jörg.

Update: Eine Zeile im Beitrag war ungenau formuliert. Nach einem Hinweis von Jörg habe ich das verbessert.

Das deutsche zsh-Buch ist da

Cover des zsh-Buches

Beim Schlendern durch eine Bücherei fiel mir gestern, das quasi druckfrische Buch “zsh -- Die magische Shell” auf. Seit einiger Zeit schrieben Julius Plenz und Sven Guckes daran und seit etwa einer Woche ist es im Handel erhältlich.

Im Buch geht es natürlich um die beste Shell der Welt, die zsh. Auf sechs Kapiteln in insgesamt 200 Seiten wird (hoffentlich) alles Wissenswerte gesagt. Hoffentlich deswegen, weil ich das Buch noch nicht komplett gelesen habe. Sobald ich durch bin, werde ich sicher eine Rezension dazu schreiben.

In der Einleitung finden sich kurze Hinweise zur Installation, Konfiguration und zum Prompt. Das zweite Kapitel beschäftigt sich dann mit dem effizienten Arbeiten. Es werden Aliase, Shell-Funktionen und Expansionen erklärt. Der Name des dritten Kapitels “Dateien, Ausgaben und Programmaufrufe” ist selbsterklärend. Kapitel 4 erklärt die interaktive Verwendung und Kapitel 5 das Skripting. Das letzte Kapitel des Buches beschreibt, wie Completions und Widgets selbst geschrieben werden können.

Ich bin sehr gespannt und freue mich, das Buch zu lesen. :-)

Neue Hardware

Der Titel verrät es. Ich habe neue Hardware und zwar für meinen Rechner. Mal wieder kündigte eine Festplatte ihren Tod an und nach kurzem Überlegen entschloss ich mich zu einem Upgrade.

Festplatten sind in meinem Rechner permanent ausfallgefährdet. Deren Lebenszeit liegt bei unter einem Jahr und das, obwohl ich diese nicht besonders beanspruche. Hier liegen momentan zwei kaputte Western Digital, eine Hitachi und eine Seagate (eher “Siegehtnicht”) sowie noch eine, bei der ich wegen des Herstellers nicht mehr sicher bin. Alles sind IDE-Platten. Jetzt steckt eine Hitachi SATA-Platte im Rechner. Ich bin gespannt, wie lange die halten wird.

Neben der Festplatte habe ich mir ein GB mehr RAM gegönnt und vor allem die CPU auf einen neuen Stand gebracht. Vorher war hier ein 1 GHz Athlon am Werkeln. Jetzt versucht sich ein Athlon64 Dual Core. Momentan bin ich noch dabei, Backups einzuspielen, Daten neu zu strukturieren und auch einige neue Software einzustellen. Daher habe ich noch nicht alles austesten können. Jedoch fühlt sich der Rechner wirklich schneller an.

Montage des Ruby Orb

Eine Herausforderung war die Montage des Lüfters. Die CPU sollte durch einen Thermaltake Ruby Orb gekühlt werden. Laut der Spezifikation versprach der Lüfter leise zu sein und dabei viel Luft durchzupusten. Als ich ihn dann in der Hand hielt, staunte ich nicht schlecht. Von der Größe her, sah es so aus, als ob man eher einen Hubschrauber antreiben kann. ;-) Zum Einbau werden zwei Schellen in das Motherboard geschraubt. Darauf kommt dann der Lüfter. Die Schrauben am Lüfter, die auf die Schellen geschraubt werden, sind mit relativ starken Federn versehen. Da der Lüfter zusätzlich auf der mit Wärmeleitpaste versehenen CPU hin- und herrutscht, ist es sehr schwer, die Löcher zu treffen. Wenn ihr das Teil in eure Rechner verbauen wollt, empfehle ich, das zu zweit zu machen. Ich hätte mir einen dritten Arm oder eine helfende Hand gewünscht.

Nach dem Anschalten fängt der Lüfter an, rot zu leuchten. Für Case-Modder ist der wohl auch geeignet. Und er ist ist wirklich leise. Mein Rechner läuft seit einiger Zeit mit einer Load von mehr als vier und beide CPU-Kerne sind beschäftigt. Vom Lüfter ist dennoch kaum etwas zu hören.

Momentan bin ich mit der Wahl der Hardware also recht zufrieden und hoffe, dass diese (inklusive der Festplatte) mich wieder ein paar Jahre aushält.

Tip #13: Dateien mit gleichen Namensbestandteilen löschen

Ich habe in einem Verzeichnis verschiedene Dateien:

jens@tacop:~/ > ls
abc.bar+bar abc.bar+foo abc.foo+bar abc.foo+baz abc.foo+foo

Nun möchte ich alle Dateien löschen, die vor und nach dem + das gleiche Wort haben, in dem Beispiel also abc.bar+bar und abc.foo+foo. Ich hatte die Hoffnung, dass das die zsh von Haus aus können könnte. Auf der Mailingliste zsh-users erhielt ich die erlösende Antwort:

rm *(e:’[[ $REPLY = abc.(#b)(???)+(???) ]] && [[ $match[1] = $match[2] ]]’:)

Distrowars

Ich hatte auf meinem Laptop seit einiger Zeit ein Ubuntu installiert und kürzlich war ich der Meinung, dass er mal eine andere Distribution benötigt. Zum einen war kürzlich grml in der Version 1.1 erschienen und wollte getestet werden, andererseits hatte ich früher Gentoo und damit war ich damals auch zufrieden.

grml bringt das Programm grml2hd mit. Damit lässt sich die Live-CD auf die Festplatte bringen. Die Installation selbst ist recht einfach. Es wird nach der Partition und dem Dateisystem gefragt, Nutzer angelegt etc. In kürzester Zeit war das System installiert und ich konnte es nutzen. Doch es dauerte nicht lange und ich bemerkte, dass der Rechner beim Runterladen großer Dateien langsam wurde. Ein Blick auf die DMA-Einstellungen bestätigte den Verdacht, dass kein DMA eingeschalten ist. Es liess sich nicht aktivieren und dmesg zeigte:

ata_piix 0000:00:1f.2: version 2.12
ata_piix 0000:00:1f.2: MAP [ P0 P2 IDE IDE ]
PCI: Unable to reserve I/O region #1:8@1f0 for device 0000:00:1f.2
ata_piix 0000:00:1f.2: failed to request/iomap BARs for port 0 (errno=-16)
PCI: Unable to reserve I/O region #3:8@170 for device 0000:00:1f.2
ata_piix 0000:00:1f.2: failed to request/iomap BARs for port 1 (errno=-16)
ata_piix 0000:00:1f.2: no available native port

Spätere Tests ergaben, dass das ein “grml-Problem” ist. Ich konnte den Effekt bei keiner anderen Live-CD (Debian, Gentoo, Knoppix, Ubuntu) feststellen. Eine Idee war noch, einen anderen Kernel zu installieren. Gesagt, getan. Doch nach einem Reboot begrüsste mich die Meldung GRUB. Also wieder die Live-CD eingeworfen und mittels grub-install den Rechner wieder bootfähig gemacht. Mika gab mir noch einen Tip, einen Blick auf /etc/kernel-img.conf zu werfen. Doch selbst mit einer angepassten Konfiguration ging das schief.

Daneben gab es noch kleinere Probleme und ich entschied mich, mit Gentoo weiter zu machen. Gentoo bringt seit einiger einen grafischen Installer mit. So hoffte ich, den mal praktisch testen zu können. Aber der X-Server tat mir nicht den Gefallen zu starten. So versuchte ich den konsolenbasierten zu nutzen. Dieser stürzte jedoch undeterministisch ab. Ich schaffte es damit nur einmal in die Nähe einer Installation zu kommen. Ich hätte es zwar noch auf dem klassischen Weg probieren können. Dazu fehlte mir jedoch die Lust.

Bei Distrowatch schaute ich mich noch nach weiteren interessanten Distributionen um. Jedoch konnte ich nichts ansprechendes finden und unternahm deswegen einen letzten Versuch mit Debian. Zu meiner Überraschung war das eine komplett problemlose Angelegenheit. Die Installation lief problemlos durch. Danach habe ich ein paar Anpassungen gemacht, Software eingespielt und Konfigurationen ergänzt. Also läuft auf dem Rechner zunächst mal Debian. Zumindest bis es mir zu langweilig wird. ;-)

Ach ja, wer sich fragt, welchen exotischen Rechner ich denn habe: IBM Thinkpad R52

cronjob