@Oli - hi, ich bin Jim Salter, der Typ, der den Artikel tatsächlich geschrieben hat. Ich arbeitete mit einer virtuellen Maschine, was die Sache einfacher machte. Ich habe mit einer JPEG-Datei begonnen und sie in einem Hex-Editor geöffnet. Das besondere, das ich verwendet habe, war Bless, das Sie in Ubuntu mit einem einfachen apt-get install bless installieren können .
Nachdem ich das JPEG in Bless geöffnet hatte, blätterte ich ein paar Mal nach unten, um mich mit dem "Fleisch" des JPEG vertraut zu machen. Dann wurden nur Daten im Wert von etwa fünfzig Bytes hervorgehoben und kopiert und in einen Texteditor eingefügt (in meinem Fall gEdit). Das gab mir etwas zu suchen.
Jetzt habe ich das JPEG in jedem Array auf der VM gespeichert. Der Speicher hinter den Arrays bestand aus einer Reihe von .qcow2-Dateien. Sobald ich das JPEG in den Arrays gespeichert hatte, konnte ich die mit jedem Array verknüpften .qcow2-Dateien in Bless laden und sie - sie waren nicht sehr groß, da es sich nur um das JPEG und einige Metadaten handelte - nach diesem 50-Byte-Muster durchsuchen Ich hatte aus dem JPEG hervorgehoben und kopiert. Voila, ich hatte den Block zu korrumpieren! Zu diesem Zeitpunkt konnte ich einzelne Bytes des JPEGs, wie sie auf der virtuellen Festplatte der VM gespeichert sind, mit Bless manuell bearbeiten - und zwar auf genau dieselbe Weise für jedes Array.
Der einzige Nachteil ist, dass ich bei dem im Artikel getesteten RAID5-Array sicherstellen musste, dass ich die tatsächliche Kopie der Daten im Streifen bearbeitet habe und nicht die Parität für den Streifen selbst - es war ein kleines Bild auf einem Andernfalls ist das Array leer, sodass im FOLLOWING-Block im Stripe keine Daten vorhanden sind, sodass der Paritätsblock die Daten enthält, die nicht vom Datenblock geändert wurden. Wenn ich versehentlich den Paritätsblock anstelle des Datenblocks bearbeitet hätte, wäre das Bild unverändert angezeigt worden.
Eine letzte Anmerkung: Sie BRAUCHEN keine virtuellen Maschinen, um dies zu tun. Mit Bare Metal können Sie die gleichen Dinge auf die gleiche Weise tun. Es wäre nur eine größere Belastung, weil Sie mit ganzen Raw-Laufwerken anstatt mit netten kleinen .qcow2-Dateien arbeiten müssten und entweder die Laufwerke ziehen und sie in einen anderen Computer stecken müssten, oder Starten Sie eine Live-Umgebung (oder eine alternative Umgebung), um sich mit ihnen herumzuschlagen. (Ich habe das Heilen von ZFS-Daten genau auf diese Weise getestet, aber auf echten Bare-Metal-Rechnern vor sieben Jahren, als ich mich zum ersten Mal für Dateisysteme der nächsten Generation interessierte.)
Hoffe das hilft!