Wie kann ich nur den ersten und letzten Teil eines Geräts zerschneiden?

624
Karl Richter

Der shredBefehl (von coreutils8.23) überschreibt ein Gerät mit konfigurierbaren Daten vom Anfang bis zum Ende, was perfekt für die Anwendungsfälle ist, für die es konzipiert ist (die sich alle darauf beziehen, etwas auf das gesamte Gerät zu schreiben).

In meinem Fall reicht es aus, mit den x ersten und y letzten Bytes eines Geräts zu tun, was shredauf das gesamte Gerät zutrifft, aber es scheint keine gute Lösung zu sein, und es wird vermieden, explizite Werte (Gerätegröße usw.) .). Ich könnte von einer zufälligen Quelle auf einen berechneten Teil des Geräts schreiben dd, aber dann muss ich die Gerätegröße ermitteln, mit MiB und MB kämpfen, usw. Vielleicht gibt es etwas so bequemes wie shred(oder mir fehlt gerade etwas).

Die meisten Informationen zum Partitionieren (gpt, msdos-Partitionstabelle und Sicherungen) befinden sich am Anfang und Ende eines Geräts.

1
Ich musste das dreimal lesen, um Ihr Problem zu verstehen. Bin ich richtig, wenn Sie davon ausgehen, dass Ihre Frage grundsätzlich lautet: ** Wie kann ich nur den ersten und den letzten Teil eines Geräts zerschneiden? **. Ich frage mich jedoch, warum Sie gerade diesen Teil zerstören wollen. Nifle vor 9 Jahren 0
@Nifle Alte Fragen durchgehen. Sie haben absolut recht, keine Ahnung, warum ich diesen Titel gewählt habe und nach Ihrem Kommentar darauf bestanden habe. Karl Richter vor 6 Jahren 0

1 Antwort auf die Frage

3
Xen2050

Sind Sie sicher, was Sie wirklich wollen, nicht " wipefs- eine Dateisystemsignatur von einem Gerät löschen "?


ddist nicht so schwer zu benutzen, vor allem die richtigen Zahlen von gpartedoder zu bekommen fdisk, siehe unten.

Die Ganzplattenmethode funktioniert wie in dd if=/dev/zero of=/dev/sdx. Möglicherweise mit bs=1Mum die Geschwindigkeit zu erhöhen. Oder ersetzen Sie es /dev/zeromit / dev / urandom`, um mehr zufällig aussehende Daten zu erhalten. Wie in " ArchWiki's Secure Wipe Disk ".

Für nur eine Partitionsnummer "n", auch "sdxn" genannt, ist dies möglich dd if=/dev/zero of=/dev/sdxn

Für nur die "ersten" n MBs könnte man das tun dd if=/dev/zero of=/dev/sdx bs=1M count=n

Für "Start" und "Ende" können Sie die Sektorgröße und die Gesamtsektoren des Laufwerks ermitteln. gpartedDies können Sie ganz einfach unter "Ansicht -> Geräteinformationen" erfahren. Außerdem erfahren Sie, wo sich die Start- und Endsektoren einer Partition befinden. parted& fdisk(für MBR) sollte auch.

Verwenden Sie dann ein paar Berechnungen, um herauszufinden, wo Sie den Filter löschen möchten.

  • Winziger (512b) exakter Weg - finden Sie die zu löschenden Sektoren. Wenn Ihr Laufwerk 512-Byte-Sektoren und 251658240 Sektoren (120 GB, 251658240 Sektoren * 512 Byte / 1024 in k / 1024 in M ​​/ 1024 in G) konvertiert

    • den letzt 1G (Gig, G = 1024 * 1024 * 1024 Bytes), könnten Sie herauszufinden, die Sektoren in 1 GB (1 GB / 512b = 1 * 1024 * 1024 * 1024/512 = wischen 2097152 ), dann subtrahiert dass von den gesamten Sektoren 251.658.240 - 2097152 = 249561088 und starten Sie für diesen Sektor in diesem Sektor:
      dd if=/dev/zero of=/dev/sdx bs=512 seek=249561088 count=2097152

  • Sie können stattdessen das & konvertieren bs, um M (M = 1024 * 1024) zu verwenden, wenn es zu langsam ist und 512b auf einmal abläuft. Die Platte beginnt immer bei 0, endet jedoch bei 251658240 * 512/1024/1024 = 122880 in M.seekcount

    • Wischen Sie die letzten 1 G ab. Es gibt 1024 M in einem G, überspringen Sie also 122880 - 1024 = 121856 M und machen Sie:
      dd if=/dev/zero of=/dev/sdx bs=1M seek=121856 count=1024

  • Gig-at-a-Time-Grobmuster, funktioniert gut, wenn das Schreiben über das "Ende" hinaus keinen Schaden verursacht (ganz am Ende der Festplatte, nicht beim Löschen einer mittleren Partition). Versuchen Sie jeweils 1G (G = 1024 * 1024 * 1024 Byte). Siehe man ddfür weitere Informationen, versteht es K, M, G, andere.

    • Das letzte G, dd if=/dev/zero of=/dev/sdx bs=1G seek=119ohne countweiter bis zum Ende des Geräts zu gehen.

Für einen wahrscheinlich schnelleren Weg, "zufällige" Daten auf eine ganze Partition / ein Laufwerk zu schreiben, können Sie dm-crypt verwenden :

Erstellen Sie zunächst einen temporär verschlüsselten Container auf der Partition (sdXY) oder der gesamten Festplatte (sdX), die Sie verschlüsseln möchten, z. B. mit Standardparametern

# cryptsetup open --type plain /dev/sdXY container 

Zweitens prüfen, ob es existiert

# fdisk -l Disk /dev/mapper/container: 1000 MB, 1000277504 bytes ... Disk /dev/mapper/container does not contain a valid partition table 

Wischen Sie schließlich mit Pseudozufallszahlen (verschlüsselte Daten) ab. Eine Verwendung von / dev / urandom ist nicht erforderlich, da die Verschlüsselungsverschlüsselung für die Zufälligkeit verwendet wird:

# dd if=/dev/zero of=/dev/mapper/container dd: writing to ‘/dev/mapper/container’: No space left on device