Einzelne Bits auf Festplatte schreiben/lesen?
Gibt es irgendeine Möglichkeit
(bzw. ich hoffe doch, dass es eine gibt; die Frage ist eher, wie sieht diese Möglichkeit aus),
einzelne Bits an beliebiger Position der Festplatte oder eines externen Speichermediums auszulesen und zu schreiben? Mit irgendeiner Programmiersprache, irgendeinem Programm... ?
PS: Ich kann zwar auch Windows benutzen, am liebsten wäre mir aber eine Methode, für Linux.
4 Antworten
Mit einem geeigneten Hex-Editor sehen die Chancen ganz gut aus!
einzelne Bits an beliebiger Position der Festplatte oder eines externen Speichermediums auszulesen und zu schreiben
In Linux kannst du Festplatten als Devices (in /dev) adressieren und darin tatsächlich einzelne Bytes (nicht Bits, das gibt das Interface nicht her) lesen und schreiben. Auch am Partitions- und Dateisystem vorbei.
Die Frage ist dann, was du mit "beliebiger" Position meinst - wie willst du das ausdrücken?
Warum /dev/usb/bus? Willst du USB mit denen sprechen? Du musst dir schon überlegen, an welcher Schicht du ansetzt. Linux gibt dir für die erkannten Speichergeräte Block Devices, die bekommst du anschaulich mit lsblk aufgelistet. Dann kannst du auf das jeweilige Device schreiben. Klarerweise nur als root.
Ah, vielen Dank. Ich hatte einfahc keine Ahnung, wie diese Devices aufgebaut sind.
Aber wie kann ich darauf schreiben? Im Dateimanager wird es mir als Unbekannter Dateityp angezeigt.
Gar nicht. HDDs arbeiten blockorientiert, insofern mußt Du immer ganze Blöcke (Sektoren) lesen oder schreiben. Ein Bitmanipulation erfordert also ein Read+Änderung+Write.
Im Falle von Linux ist das OS so freundlich die Blockgeräte als Dateien bereitzustellen, sodaß Du mit normalen File I/O darauf arbeiten kannst. D.h. Du kannst tatsächlich ein einzelnes Byte lesen und schreiben, ohne daß Du Dich um die notwendigen Ops im Hintergrund kümmern mußt.
Der Zugriff auf eine Festplatte ist nur Byte-weise möglich, einzelne Bits kann man nicht adressieren.
Naja, aber bytes sind ja bekanntlich Bits, und wenn man den Speicherzelleninhalt kennt, kann man auch gezielt einzelne Bits verändern! Müsste man dann ersteinmal umrechnen.
Um ein einziges Bit zu ändern, müsste ein ganzes Byte umgeändert werden!
Und man selbst -als Programmierer- oder auch die Syntax müsste den sich neu ergebenden Zahlenwert kennen, ihn also errechnen. Möchte man bspw. aus der Bitfolge 01010101 01010111 machen, müsste man den Wert ins Dezimalsystem umrechnen, hier 85 und in 87 umändern.
Ja, OK, vielleicht hätte ich besser bytes schreiben sollen; das reicht mir eigentlich auch schon.
Ich meinte vor allem so etwas wie "am Partitions- und Dateisystem vorbei". Also selber entscheiden, an welcher Position, statt, dass einem die Entscheidung vom Betriebssystem abgenommen wird.
Die Bits dürften davon ja auch ... beeinflusst werden. Vielen Dank also. Könntest Du mir nur vielleicht noch ein kleines Bisschen weiter helfen? Wenn ich z.B. /dev/bus/usb/ öffne, sind da vier Ordner mit je 1, 3 oder 4 Dateien darin. Versuche ich aber, eine der Dateien zu öffnen, wird mir gesagt, es sei kein Programm zum öffnen dieser Datei bekannt...