PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm für Wiederherstellung von Sony RAW-Dateien


JoeJung
21.07.2010, 20:34
Hallo,
nach dem ich am Wochenende fast die Bilder auf einer 8 GB-Speicherkarte verloren hätte - ich hatte in cRAW fotografiert und es gibt nur wenige Programme, die ARW-Dateien wiederherstellen können, habe ich mich ein wenig mit der Thematik Wiederherstellung von RAW-Dateien beschäftigt.

Die meisten meiner Bilder konnten wiederhergestellt werden, ein paar fragmentierte Bilder - da hatte ich zwischendurch was auf der Karte gelöscht - aber nicht. Ich bin Programmierer und ich würde gerne versuchen, ein Programm zu schreiben, mit dessen Hilfe auch fragmentierte Bilder wiederhergestellt werden können - nicht vollautomatisch, aber mit gewisser Unterstützung.

Irgendwo am Anfang einer ARW-Datei müsste abgespeichert sein, wie groß sie ist (Camera RAW beschwert sich sofort, wenn die Datei nur um ein Byte zu kurz ist, aber überflüssige Bytes werden ignoriert) und ich müsste wissen, wie ich an diese Information gelange. Weiß jemand, wie ich zu diesen Informationen gelangen könnte bzw. wen ich kontaktieren soll?

Das Programm könnte - zumindest im ersten Schritt - ausschließlich Sony RAW files wiederherstellen. Ich würde das Programm in C# entwickeln ...

Lg. Josef

konzertpix.de
21.07.2010, 20:50
Hallo, Josef,

das ist ja ganz wunderbar, aber eigentlich ist jedes Programm, das FAT-Sektordaten miteinander verknüpfen kann, in der Lage, beliebige Dateien - und damit auch ARW-Dateien - wiederherzustellen.

Hierbei wird einfach eine Tabelle der mit Nutzdaten belegten Sektoren erstellt und nachgesehen, auf welche Sektoren keine Referenzen von anderen Sektoren zu finden sind. Das sind dann Dateianfänge. Und das Ende ist dann dort, wo kein weiterer verknüpfter Sektor mehr notiert ist. Noch einfacher für den Fall, daß die FAT oder die Kopie derselben noch lesbar ist, ist es, der FAT mit ihren Sektoranfängen von Dateien zu folgen. Oder für den Fall, daß einfach nur gelöscht wurde, das Nullbyte (oder war es ein Leerzeichen ?) am Beginn eines Directoryeintrages mit einem Buchstaben oder "_" zu ersetzen. Das macht aber leider kein simples Recoveryprogramm mehr, sondern nur das undelete von MS DOS 6.x.

Mag sein, daß Camera RAW mit ein paar Byte zuviel nicht klarkommt. Andere RAW-Konverter stören sich dagegen nicht daran und damit hat man immer die Möglichkeit, die sektorweise wiederherstellten Dateien zu öffnen.

Recuva ist so eine Software und dazu noch kostenlos. Die kann fast jeden Fehler auf Datenträgern abfangen und greift notfalls eben roh auf das Medium zu, sollte mal sogar die FAT verloren gegangen sein. Klar, daß Recuva als Windows-Programm auch mit NTFS-formatierten Festplatten zurecht kommt, nicht aber mit den HFS(/+/journaled)-Datenträgern eines Macs. Für Befehlszeilen-Fanatiker bietet sich wiederum photorec an, das gibt es für Windows, Mac und Unixen. Und wenn mal doch was am Mac flöten gegangen sein sollte, gäbe es für knapp 100 EUR z.B. StellarPhoenix als schön grafisches Wiederherstellungsprogramm, das ebenfalls bis auf Datenträgerebene roh auf das verlorene Laufwerk zugreifen kann. Oder als Dreingabe zu einigen SanDisk-Speicherkarten ein Rettungsprogramm auf Mini-CD plus Key.

Deine Idee und das Angebot ist lobenswert. Aber ob das Rad noch ein weiteres Mal erfunden werden soll, kannst nur du beurteilen, denn vielleicht hast du ja einen vollkommen anderen Ansatz als deine Vorgänger, der umzusetzen lohnenswert erscheint :top:

LG, Rainer

mad_axe
22.07.2010, 14:04
Ich schaue heute abend mal in meine Favs, habe schonmal mit den Sony Raw rumgespielt und müsste noch irgendwo den Aufbau haben. Ich hatte mit einem MC dann die Vorschaubilder usw ausgelesen.

Gruß
Micha

mad_axe
22.07.2010, 14:08
Deine Idee und das Angebot ist lobenswert. Aber ob das Rad noch ein weiteres Mal erfunden werden soll, kannst nur du beurteilen, denn vielleicht hast du ja einen vollkommen anderen Ansatz als deine Vorgänger, der umzusetzen lohnenswert erscheint :top:


Ich denke ja eher er will ein wiederhergestelltes defektes RAW reparieren. Also im Header steht ja die Länge der Rohdaten und wo das Vorschaubild anfängt usw. Man müsste also bei defekten Dateien die Länge anpassen (mit 0 Bytes usw). Dann hätte man zwar "Pixelfehler" aber immer noch besser als gar kein Bild. Bin daran auch interessiert, hatte nach USB Festplattencrash noch RAW dateinen, die ein Programm wieder hergestellt hat. Aber alle lassen sich nicht öffnen, und ich hatte bis jetzt noch keine Zeit mich dem Problem anzunehmen. Beim proggen kann ich mit helfen, C# sollte gehen und ich glaub ich habe da auch noch eine Bilbliothek @home.

Gruß
Micha

dey
22.07.2010, 14:46
Recuva ist so eine Software und dazu noch kostenlos.

Da du hier Recuva erwähnst noch ein Hinweis. Dieses Programm funktioniert ohne Installation, einfach eine ausführbare Datei. Aber man kann sie meines wissens nach nicht als finale exe runterladen.
Deswegen mein Tip an alle: das Programm zur Datenrettung besorgen und installieren bevor die Daten verschwunden sind. Sonst wird im zuge des Suchen, Probieren und Installieren das zerstört, was ihr retten wollt. Das ist besonders für jene interessant, die wie ich eine SSD haben, da dort die üblichen Rettungs-CDs nicht arbeiten.

bydey

JoeJung
22.07.2010, 18:25
Das Programm Recuva hat bei mir leider keine Bilder gefunden. Bei der Karte im Originalzustand, hat Recuva nach ein paar Sekunden aufgehört und nach dem Formatieren der Karte nach ca. 10 Minuten - leider ohne Bilder.

Das Programm exiftool kann die benötigten Informationen auslesen, die müssten also in den EXIF-Daten enthalten sein. Hier mal ein Auszug der relevanten Datein:
Strip Offsets : 622592
Rows Per Strip : 2856
Strip Byte Counts : 12246528
Preview Image Start : 155683
Preview Image Length : 452116

Aus dem Wert von Strip Offsets und Strip Byte Counts lässt sich die Dateigröße berechnen. Ich werde mal versuchen, ob ich mit Hilfe dieser Informationen die 9 oder 10 fragmentierten RAW-Dateien mit Hilfe eines Hex-Editors wiederherstellen kann. Falls das gelingt, wäre mein Denkansatz zumindest einmal richtig.

Jede RAW-Datei hat am Anfang eine Signatur aus 4 Bytes und in diesem Sektor noch zusätzlich den Namen des Kameramodells. So kann der Anfang mit 100prozentiger Sicherheit erkannt werden. Wenn ich jetzt auch noch die Länge der Datei kenne, kann ich prüfen, ob die RAW-Datei vollständig ist oder ob es sich um ein Fragment handelt. Weiters erkenne ich, ob das Fragment vom Anfang oder vom Ende stammt. Mit diesen Informationen könnten sich auch fragmentierte Dateien zumindest von Speicherkarten wiederherstellen lassen.

Lg. Josef

averel
22.07.2010, 19:13
Das Problem haben wir schon besprochen. Guck mal den Link (http://www.sonyuserforum.de/forum/showthread.php?t=89250) da hab ich meine Geschichte erzählt, vielleicht hilft dir auch.

Edit: Sorry war bissel deneben mit meiner Antwort:oops: Aber du kannst den Quellcode vom Testdisk angucken, vielleicht bringt dich ein Stück weiter.

Moritz F.
22.07.2010, 22:01
Hi,
ich stelle grade 900GB von meiner externen Festplatte wieder her. Mit demselben Programm, wie ich auch schon mehrfach meine Speicherkarten wiederhergestellt habe. Heißt GetDataBack und kommt von Runtime (http://www.runtime.org/data-recovery-software.htm).
Man kann das Programm kostenlos testen und wenn es funktioniert muss man nicht alles nochmal machen, sondern kann auch in der Testversion seinen Fortschritt speichern und dann das Programm kaufen. Es kostet zwar $79, ist aber wirklich eine Empfehlung wert. Wenn nichts zu klappen scheint, einfach mal ausprobieren. Liest auch wirklich ALLE Dateiformate.
Viel Erfolg, LG
Moritz

JoeJung
24.07.2010, 20:47
Ich habe jetzt mit den Informationen aus dem Programm exiftool und einem primitiven Hexeditor 9 von 11 ursprünglich fragmentierten Bildern noch manuell wiederherstellen können. Bei den restlichen beiden gibt es anscheinend irgend eine interne Fragmentierung, die ich einfach nicht knacken kann.

Ich schreib hier mal ein paar Werte auf, die mir weitergeholfen haben, vielleicht braucht sie ja noch wer:
Der RAW-Bereich in einem cRAW-File der Alpha 700 ist immer 12246528 Bytes lang. Die Gesamtlänge der Datei hängt somit ausschließlich von der Größe der Vorschaudatei ab. Diese beginnt immer am Offset 155683. Die Länge der Vorschaudatei läßt sich problemlos mit dem exiftool auslesen. Das Offset + der Länge ergibt den Start des RAW-Bereichs. Dabei muss man noch berücksichtigen, dass dieser Anfang immer ein Vielfaches von 32k sein muss. Mit diesen Informationen lässt sich die Größe der Datei berechnen (auch dabei muss berücksichtigt werden, dass die Gesamtgröße ein Vielfaches der Größe einer Zuordnungseinheit auf der Speicherkarte sein muss). So bekommt man einen Überblick, welche Dateien wie viel zu lange bzw. zu kurz sind und zusammen mit dem Aufnahmedatum, lässt sich ermitteln, welche Blöcke noch wie verschoben werden müssen.

Ich werde in Zukunft keine Bilder mehr mit der Kamera löschen (oder zumindest nur mehr ganz am Ende). So entsteht auf der Karte keine Fragmentierung und die Bilder können im Falle eines Falles einfacher wiederhergestellt werden.

Lg. Josef

Rainer Zufall
27.07.2010, 06:35
die ARW-Dateien haben als interne Datenstruktur eine TIFF-Struktur ( wie eigentlich fast alle RAW-Dateien ). Daher gibt es auch keine absolute Längenangabe. Wenn du dir einen kleinen TIFF-Parser programmierst wirst du schnell erkennen wo es in deinen Dateien klemmt, bzw. wie eine heile Datei aussehen sollte. Da die Info-Kette nahezu immer gleich sein sollte kannst du in den FAT-Datenblöcken nach den fehlenden IDF-Einträgen suchen und so versuchen die Datei wieder zusammen zubringen.

Das mit den weniger Bytes macht Sinn: wenn die interne verlinkte Info-Kette unterbrochen wird oder einige Offsets nicht mehr in der Datei sind fällt das sofort auf, zusätzliche Bytes die nicht adressiert werden sind ziemlich egal.

Tip: es gibt den Raw-Konverter dcraw als Quelltext, dort kannst du ja mal nachsehen wie eine Datei eingelesen wird, nur Vorsicht: der Quelltext ist ziemlich caotischer Spaghetti-Code :-(

stebue
27.04.2014, 08:42
Weiter oben wir angegeben, dass Recuva keine .ARW Dateien retten könne. Das ist nicht korrekt. Zwar kennt Recuva .ARW nicht als Foto-Datei, aber wenn man zu Beginn angibt, er soll alle Dateien finden, erhält man auch die Sony-RAW Dateien.

Hansevogel
27.04.2014, 17:32
Hallo stebue,

willkommen im Forum!

Hast Du bemerkt... der letzte Beitrag vor Deinem ist vom 27.07.2010.

In den knapp vier Jahren hat sich bei Recuva sicherlich was getan in Sachen raw. :D

Gruß: Joachim