VFAT - einzelne Sektoren und Cluster lesen ...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
ts7343
User
Beiträge: 69
Registriert: Mittwoch 5. Mai 2010, 13:48

Hallo,

ich hab ein Problem mit einer VFAT Partition und wuerde gerne den kompletten Inhalt durchschauen,
da ich meine, dort eine bestimmte Datei noch finden zu koennen,

wie stell ich das mit Python an, die einzelnen Bytes von der Platte zu lesen oder direkt bei der FAT
anzufangen die belegten Cluster herauszusieben und anschliessend diese Cluster durchzuschauen?

Welche Module faesst man da an und hat jemand gar ein kleines Beispiel wie man so etwas anpackt?

Oder ist das ganze zu systemnah und man muss eine andere Sprache verwenden?

Das ganze wird unter Suse Linux stattfinden, wobei die VFAT Partition extern angestoepselt wird.
Was ich mir vorstellen koennte waere auch die komplette Partition als File zu ziehen und
dann langsam durchzuscannen.

Vielen Dank fuer eure Ideen!
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Warum möchtest du das unbedingt mit Python machen?
Kann man natürlich, allerdings gibt es da draußen ja genut Tools die für so etwas konzipiert sind, sprich Datenrettung.

Ich würde vorab auf jeden Fall mit 'dd' ein rohen Backup der Platte machen falls du etwas kaputt spielst.
Mit dem Programm 'testdisk' habe ich bereits gelöschte und verloren geglaube Partitionen wiederhergestellt. Vielleicht klappt das ja auch bei Dateien.

Gruß
sparrow

edit: Testdisk kann anhand des FAT-Dateisystems auch gelöschte Daten wiederherstellen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Naja, du kannst ja dir Partition direkt als Datei auslesen. Solltest sie aber nicht mounten und nicht darauf schreiben. Und naja, es verhält sich dann wie eine normale Binärdatei. Du kannst dir dann etwa einen Parser für dieses "Dateiformat" schreiben, etwa mit ``construct``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
ts7343
User
Beiträge: 69
Registriert: Mittwoch 5. Mai 2010, 13:48

Vielen Dank,
Ich hab es jetzt mit dd geloest, und dann die gesamte Binaerdatei Wort-weise
gescannt bis ich einen Einstieg in die Datei gefunden hab,

@leonidas:
wie meinst du das mit "construct" einen parser schreiben?
zur Zeit nehm ich ganz normal read und interpretier dann jeweils die Daten,
hattu ein Beispiel mit "construct" ?
BlackJack

@ts7343: Einen Parser schreiben meint Code der das Dateisystem versteht, womit Du dann zum Beispiel genau das machen könntest was Du am Anfang angemerkt hattes -- die FAT analysieren und nur belegte Blöcke betrachten. Ausserdem müsste man über die FAT ja zusammengehörige Blöcke und deren "Adresse" in den Daten ermitteln können -- denn Dateien müssen ja nicht zwangsläufig in aufeinander folgenden Datenblöcken und in der richtigen Reihenfolge vorliegen.

Und das `construct`-Paket vereinfacht es solche Parser zu schreiben, weil man da die Datenstrukturen mit vorgefertigten Klassen und Funktionen beschreiben kann und so einen Parser zusammen bauen kann. Was einfacher ist als das alles "per Hand" selber zu machen.
Antworten