Ich habe viele Fotos von einem alten Computer, der von einer älteren Person benutzt wurde und wahrscheinlich mit Malware infiziert war, auf eine externe Festplatte kopiert. Ich habe die Fotos auf eine andere Festplatte übertragen. Jetzt ist meine externe Festplatte völlig leer, aber ich bin paranoid und möchte sichergehen, dass sich auf der Festplatte keine Malware oder Schadcode mehr befindet.
Ich möchte es also mit Nullen füllen, ohne jedoch das Dateisystem oder die Partitionstabelle zu zerstören. In gewisser Weise möchte ich meine Festplatte zurückbekommen, als hätte ich sie gerade gekauft.
Ist das möglich und gibt es dafür einen Linux-Befehl?
Meine Festplatte ist in NTFS mit einer msdos(mbr)-Partitionstabelle formatiert.
Antwort1
Einfache Antwort:
mount /dev/your/disk /some/free/mountpoint
dd if=/dev/zero of=/some/free/mountpoint/zero bs=512
sync # See edit below
rm /some/free/mountpoint/zero
umount /some/free/mountpoint
Dies bewirkt genau das, was Sie verlangt haben: Der gesamte Speicherplatz, der im Dateisystem für Dateien verfügbar ist, wird mit Nullen überschrieben.
Komplexere Antwort:
- Ohne den MBR zu zerstören, können Sie nicht sicher sein, dass Sie keinen MBR-Virus haben
- ein leeres Dateisystem hat keinen Wert
Ich empfehle daher, das Gerät einfach zu löschen (also das Gerät auf Null zu setzen, einschließlich MBR und Dateisystem) und dann die Partitionstabelle neu zu erstellen undmkfs.ntfs -f -L LABEL -I
BEARBEITEN
Wie @Nyos in den Kommentaren anmerkte, ist es eine gute Idee, sync
vor dem ein zusätzliches einzufügen, wenn der NTFS-Treiber kein Sync mountet (ich kenne die Standardeinstellungen nicht) rm
. Die aktuelle Version (ab Ubuntu 18.04, vollständig gepatcht auf 2020-05-02) weist keine verzögerte Blockzuweisung zu, daher sync
ist das nicht unbedingt erforderlich, da alle zugewiesenen Blöcke am ausgeschrieben werden umount
, aber weder kennen wir die Zukunft, noch habe ich den vollständigen Quellcode gelesen.
In diesem Sinne: Wenn der NTFS-Treiber einmal Unterstützung für Sparse-Dateien erhält, müssen wir möglicherweise /dev/urandom
anstelle von verwenden /dev/zero
, um ein (fast) endloses Schreiben zu vermeiden.
Antwort2
Das beantwortet zwar Ihre Frage überhaupt nicht... trotzdem:
Erstens ist es eine wirklich, wirklich schlechte Idee, eine Festplatte auf Null zu setzen. Das gilt für „herkömmliche“ Festplatten und noch mehr für Solid-State-Festplatten. Eine Festplatte auf Null zu setzen ist trivial (erstellen Sie einfach eine Datei und füllen Sie sie, Eugen Rieck gibt das genaue Rezept), aber es dauert lange und nutzt die Festplatte ab. Schreibzyklen sind nicht unendlich, auf keiner Art von Festplatte.
Beachten Sie auch, dass Sie nicht einmal eine Garantie haben, dass das Überschreiben tatsächlich wie beabsichtigt funktioniert. Für Ihren Zweck wird der Unterschied nicht wahrnehmbar sein, aber für andere Zwecke (denken Sie an das sichere Löschen vertraulicher Daten) ist der Ansatz völlig unzuverlässig. Das liegt daran, dass Sie dank Wear-Levelling und Neuzuweisung absolut nicht wissen können, was passiert, wenn Sie etwas überschreiben. Laufwerke machen eine Menge Dinge, ohne dass jemand (einschließlich des Betriebssystems!) davon weiß oder überhaupt eine Möglichkeit hat, es zu erkennen, geschweige denn zu ändern. Wenn beispielsweise ein Sektor neu zugewiesen wurde, weil der Controller mit der Anzahl der Wiederholungsversuche oder dem CRC oder was auch immer nicht zufrieden war, können Sie in Zukunft tun, was Sie wollen, Sie erhalten lediglich keinen Zugriff mehr auf diesen Sektor. Nie wieder. Die Daten oder das, was davon übrig ist (und Sie können es nicht wissen), bleiben jedoch dort, und ein potenzieller Dieb könnte sie auslesen.
Zweitens ist es eine wirklich, wirklich schlechte Idee, das Dateisystem (und den MBR) beizubehalten, wenn man im vollen Paranoia-Modus arbeitet, insbesondere wenn die Festplatte „leer“ ist. Außer der UUID des Dateisystems verlieren Sie nichts, wenn Sie einfach ein neues Dateisystem erstellen (was wohlkann seinin manchen Situationen ein bisschen lästig, aber auch das lässt sich leicht beheben). Sie erhalten jedoch die Gewissheit, dass nichts an Stellen zurückbleibt, an denen Sie es nicht erwarten (z. B. MBR).
Drittens ist es keine gute Idee, ein „leeres“ Dateisystem, das in Wirklichkeit gar nicht leer ist, auf Null zu setzen und wiederzuverwenden. Es ist schlecht in Bezug auf die Leistung, wenn Sie stattdessen einfach ein neues FS (ohne veraltete Änderungsjournaleinträge, unsichtbare Elemente, vergessene Streams, Attribute, fragmentierte MFTs usw.) von Grund auf neu erstellen können. Alles von Grund auf neu zu erstellen ist nicht nur viel sicherer, sondern auch viel schneller und wird wahrscheinlich in Zukunft zu einer besseren Gesamtleistung führen.
tl;dr
Die meisten Geräte verfügen über eine spezielle Option zum sicheren Löschen oder Zurücksetzen auf Werkseinstellungen (was dasselbe ist), die vom zugehörigen Verwaltungstool oder von einem anderen Tool über einen Standard-ATA-Befehl unterstützt wird. Das Laufwerk verwendet die effizienteste und am wenigsten zerstörerische Methode (einige Laufwerke überschreiben tatsächlich die gesamte Festplatte, da sie die Funktion nicht wirklich unterstützen, aber die meisten geben nur den Verschlüsselungs- oder Bit-Scrambling-Schlüssel aus, der unabhängig von der Festplattengröße fast sofort funktioniert).
hdparm
das auf praktisch jeder Linux-Distribution standardmäßig verfügbar ist, verfügt über eine Option --security-erase
für genau diesen Zweck.
Sie erhalten eine Diskette„wie frisch gekauft“mit der Ausnahme, dass es eine Weile benutzt wurde. Dies geschieht auf die schnellste (im Rahmen des technisch Möglichen) und am wenigsten plattenschädigende Weise. Anschließend partitionieren Sie es und erstellen ein Dateisystem, fertig.