[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Tutorial/Tipps für Dateien-Wiederherstellung FAT16/Smartmedia



Hallo Robert,

Robert Michel <news@robertmichel.de> wrote:
> Ersteinmal vielen dank für die Hilfe - mit foremost würden die
> Dateinamen verlohren gehen, 

Jain. Weil man foremost zur Wiederherstellung verwenden kann, wenn
die Dateinamen (sprich das Inhaltsverzeichnis) bereits nicht mehr
vorhanden sind.

> also werde ich etwas eigenes Basteln,

Lass Dir doch das was foremost findet erstmal ausgeben und bennen die
Dateien danach um. Wäre aus meiner Sicht der kleinere Aufwand.

> habe aber mit dem Rechnen von Hexadressen keine Erfahrung - also
> wird es zusätzlich noch etwas länger dauern, soetwas wäre nett:
> 
> hexdumpapart Anfangsadresse Endadresse rawdata exportname

Genauso geht foremost auch vor. Und es übernimmt für Dich die Suche
nach Anfangsadresse. Wenn das Dateiformat eine Längenangabe
beinhaltet, dann sogar auch noch für Endadresse. Exportname, wie oben
schon erwähnt einfach danach umbenennen.

> Mein skript soll später den alten Dateinamen auch verwenden,

Wenn der noch zu finden ist, dann nimm sleuthkit/autopsy. Gibt es den
nicht mehr, dann bist Du der einzige der ihn kennt. d.f. umbenennen.

> -Wie kann man mit Hexadressen in einem Shellskript umgehen?

z.B. so
--- hex2dec.sh ----------------------------
#!/bin/sh

let "hex = 0x$1"
echo "Hexadezimal: 0x"$1
echo "Dezimal    : "$hex
-------------------------------------------

oder so
--- hex2dec.sh ----------------------------
#!/bin/sh

echo "Hexadezimal: 0x"$1
echo -n "Dezimal    : "
echo "ibase=16; $1" | bc
-------------------------------------------

> -Gibt es einen Hexeditor, der die Adressen Dezimal angibt?

Kenne ich keinen.

> -Oder sollte man zu einer Skriptsprache Python/Perl greifen?

Kommt drauf an was man bereits kennt, was man machen will, wie
komfortable es zum Schluß werden soll. Für viele Dinge reichen auch
"Boradmittel" (hexdump, bc, $SH, ...).

> > Wenn nur der erste Sektor beschädigt/gelöscht wurde, dann
> > könntest Du diesen mit dd von einer anderen Karte mit gleicher
> > Kapazität und gleicher Formatierung kopieren. Das würde Dir etwas
> > nutzen, wenn nicht noch weitere Sektoren beschädigt sind. 
> 
> Ja, dafür muß ich aber wissen welchen Bereich ich kopieren muß.
> Ich lag übrings falsch - es ist _keine_ Superdisk sondern
> die formatierte Karte kann ich per /dev/hde1 ansprechen.

Wenn es nur der erste Sektor ist:

- funktionieren Karte einstecken
- dd if=/dev/hde of=cf_mbr.bin bs=512 count=1
- Image der nicht funktionierenden Karte mounten
- dd if=cf_mbr.bin of=/dev/loop0 bs=512 count=1
- Image unmount der nicht funktionierenden Karte
- Image der nicht funktionierenden Karte wieder mounten

Nachschauen ob es was gebracht hat. Wenn nicht Imagekopie löschen und
durch Backup, für weitere Versuche, ersetzen.

> > Wenn auf der Karte zuvor häufig Dateien gelöscht, überschrieben,
> > neu angelegt wurden, dann sind die Erfolgschancen wegen der
> > dadurch entstandenen Fragementierung eher gering. 
> 
> Wie sieht es aus, wenn eine Datei zerstückelt ist?
> Der zweite Teil hat keinen Header. Gibt es irgendwie
> Sprungadressen/Zeiger?

Schlecht. Angenommen Du hast eine leere Karte und speicherst darauf
nacheinander die Dateien A, B und C. Dann liegen die Daten dieser
Dateien auch aufeinander folgenden Sektoren.

1) FAT - stilisiert (# soll leere Sektoren andeueten)
AAAAABBCCC#############

2) nun löschst Du Datei B 
AAAAA##CCC#############

3) und speicherst Datei D
AAAAADDCCCDDD##########

Löschst Du nun nur Datei D, dann sind Wiederherstellungchancen, trotz
Fragmentierun sehr gut. Zum einen steht im Inhaltsverzeichnis noch
der erste Sektor und die Größe der Datei, die von der Datei vor dem
löschen belegt wurde.

Wird die Karte (schnell) formatiert, dann wird die FAT und das
Hauptverzeichnis gelöscht. Es fehlen im allgemeinen folgende
Informationen, der ehemalige Name der Datei, der erste von der Datei
belegte Sektor und die ehemalige Größe der Datei.
Ist im Dateiheader der Dateien deren Größe mit gespeichert, dann wird
foremost folgendes wieder herstellen.
Datei A: komplett AAAAA, weil alle Sektoren der Datei aufeinander
folgen
Datei D: fehlerhaft DDCCC, weil nicht zu erkennen ist das die letzten
Sektoren eigentlich zu Datei C gehören

Das bedeutet. War vorher eine Fragemtierung der Daten vorhanden, dann
ist es nicht mehr so einfach die originalen Dateien zu
rekonstruieren. Je stärker die Fragmentierung, desto höher der
Aufwand. Letztendlich kann man nur versuchen, zuerst die Dateien zu
ermittlen die nicht fragmentiert gespeichert wurden. Die von diesen
Dateien belegten Sektoren aufschreiben und dann durch mehr oder
weniger trial and error die anderen Dateien zusammen zu stückeln.

> Wie kann Verzeichnisstruckturen wiederherstellen?

Informationen über FAT (oder das betreffende Dateisystem) lesen.

> Und wenn wenn man Teile erfolgreich zugeordnet hat, wie verwaltet
> man die Wiederherstellung am besten? Eintragen der bekannten
> Bereiche in eine Liste/Tabelle/Papier???

Kommt drauf an wie wichtig die zu rekonstruierenden Daten sind.
Allgemein würde ich sagen, im privaten ist es oft den Aufwand
nicht wert. Sich ein brauchbares Backup einzurichten ist wesentlich
weniger aufwendig. Für viele Sachen würde ja schon etwas in der Art
'tar czf Sicherung_home.tgz $HOME/.' ausreichen. Muß ja nicht immer
die super-duper-vollautomatisch-inkrementelle Sicherungsstrategie
sein.

Frank
-- 
A: Because it breaks the logical sequence of discussion
Q: Why is top posting bad?



Reply to: