Zitat:
Zitat von konzertpix.de
Auf FAT-Datenträgern wird gelöscht, indem der erste Buchstabe des Dateinamens im Inhaltsverzeichnis des Datenträgers (den beiden File-Allocation-Tables - Original und Sicherungskopie am Ende des Datenträgers) durch einen Unterstrich _ ersetzt wird.
|
Faszinierend, wie man in einen so kurzen Satz so viele sachliche Fehler packen kann.

Ich denke, du meinst das Richtige, aber es ist doch zumindest sehr unpräzise formuliert.
(1) In der FAT stehen keine Dateinamen, sondern nur Informationen darüber, welche Blöcke belegt und welche frei sind und in welcher Reihenfolge die belegten Blöcke hintereinander gehören. Die Namen der Dateien stehen davon getrennt im Directory, zusammen mit einem Vektor in die FAT, der angibt, wo die Datei beginnt.
(2) Zum Löschen einer Datei wird zunächst im Directory das erste Zeichen des Dateinamens unkenntlich gemacht, zusätzlich müssen aber in der FAT alle zu dieser Datei gehörenden Einträge ausgenullt werden, sonst wäre die Datei zwar verschwunden, aber der Speicherplatz trotzdem nicht freigegeben.
Danach sind aber sämtliche Informationen, wo sich die Datei einmal befunden hat, unwiederbringlich
weg, bis auf den Vektor im Directory, aus dem man den Anfang der Datei rekonstruieren kann. Schon der zweite Block kann nur noch geraten werden, und da ist es natürlich doch hilfreich, den Dateityp zu kennen. Wenn ein Block z.B. nur ASCII-Text enthält, kann er unmöglich zu einer JPEG-Datei gehören, oder wenn die EXIF-Daten über eine Blockgrenze hinaus gehen, kann man vielleicht anhand des Inhaltes den zugehörigen Folgeblock finden. Da die meisten (oder sogar alle?) Raw-Formate eine TIFF-ähnliche Struktur haben, lassen die sich oft auch mit einem generischen Algorithmus rekonstruieren, ohne jetzt diesen speziellen Herstellerdialekt zu kennen, aber ein gewisses grundlegendes Wissen über das Dateiformat ist auch hier hilfreich. Wenn das fehlt, kann man halt nur hoffen, daß der freie Block unmittelbar hinter dem ersten dann derjenige ist, wo es weiter geht.
Das gilt jetzt nur für versehentlich oder absichtlich gelöschte Dateien. Beim Formatieren sieht das noch einmal anders aus. Da werden FAT und Root-Directory komplett ausgenullt, so daß auch die Verweise auf die Dateianfänge weg sind und man nur noch anhand des Inhaltes eines Blocks erraten kann "hier beginnt eine JPEG-Datei" oder "hier war mal ein Directory". Wenn man letzteres gefunden hat, kann man natürlich davon ausgehend wieder weitermachen wie oben.
Zu MS-DOS-Zeiten war es AFAIR so, daß beim Löschen einer Datei nur die erste FAT aktualisiert wurde, aber noch nicht die Sicherheitskopie. Auf Kopie hat dann UNDELETE zurückgegriffen und konnte auf diese Weise eine Datei ohne Ratespielchen zurückholen. Davon ist man aber wieder abgekommen, warum auch immer.
(3) Die Sicherheitskopie der FAT liegt nicht am Ende des Datenträgers, sondern unmittelbar hinter dem Original. Sonst wären Schreibzugriffe auf magnetische Medien unerträglich ineffizient, weil jedes Mal der Kopf einmal ganz an den Anfang und einmal ganz ans Ende fahren müßte.
Wenn man unter MS-DOS 5 oder 6 formatiert hat, dann wurden
vom FORMAT-Programm vorher Stammverzeichnis und FAT ans Ende des Datenträgers in Sicherheit gebracht, so daß man sie mit UNFORMAT wieder herstellen konnte. Ob das beim Formatieren unter Windows oder gar beim Formatieren in der Kamera noch so ist, weiß ich nicht; vermutlich eher nicht.
(4) Und noch eben am Rande gesagt: Beim Löschen wird das erste Zeichen des Dateinamens nicht durch einen Unterstrich (hex 0x5F) ersetzt, sondern durch 0xE5. Sonst könnte Sony Dateien im AdobeRGB-Farbraum ja nicht _DSC1234.JPG nennen
Zitat:
Zitat von MajorTom123
Wenn die Speicherkarte nicht fragmentiert ist und keine anderen Dateien enthält, könnte man wohl tatsächlich JPEGs restaurieren, auch wenn die FAT total hinüber ist. Man könnte durch Versuch-und-Irrtum den ersten Sektor finden (der JPEG Marker im Header ist allerdings nur 2 Bytes groß, was es schon wieder schwierig macht) und dann Sektor für Sektor über die Speicherkarte rödeln und dekodieren, bis man am Ende ist. Dann macht man mit dem nächsten Bild weiter.
Das funktioniert aber eben nur, wenn nichts fragmentiert ist und keine anderen Dateien dazwischenfunken, die dann alles durcheinander würfeln würden.
|
Man könnte Bilddateien interaktiv rekonstruieren, indem man dem Benutzer das Ergebnis auf dem Bildschirm präsentiert und er klickt dann entweder auf Ok oder markiert die Stelle, an der es nicht stimmt. Dann könnte das Programm von da aus eine andere Fortsetzung suchen. Das ist natürlich eine mühsame Angelegenheit, aber für ein unersetzliches Bild würde das vielleicht mancher auf sich nehmen.