Clusterbestimmung bei FAT Unklarheiten

Rostmampfer

Newbie
Registriert
Okt. 2015
Beiträge
6
Hallo liebe Leute!

ich komm direkt zum Thema mit der ersten Frage:

Wenn ich bei ner virtuellen Diskette Textdateien reinspeichere (FAT 12), anschließend die FAT auslese mit z.bsp. FlexHex,

die ausgelesenen Zahlen als Bytes schreibe, die Zahlen vertausche, als 3 Halbbytes schreibe, anschließend wieder

vertausche,

dann kann ich ja ablesen wo meine Dateien gespeichert sind.

Doch sind das die belegten Cluster oder die belegten Sektoren?

Unser Prof hat in seinem Skript stehen es seien die Sektoren, aber könnten es nicht die Cluster sein?

Zweite Frage: Ich kann ja aus dem Stammverzeichnis die Nummer des ersten Clusters ablesen, woran erkenne ich welche

Cluster noch belegt sind? Hier steht als Beispiel eine 00 02 als erstes Cluster, woher weiß ich ob die ganze Datei auf den

Clustern 00 02 und 00 03 liegt?

Ich freue mich über jede Rückmeldung:)

Mit freundlichen Grüßen
Rostmampfer
 
... anschließend die FAT auslese mit z.bsp. FlexHex,
die ausgelesenen Zahlen als Bytes schreibe, die Zahlen vertausche, als 3 Halbbytes schreibe, anschließend wieder
vertausche...

Ich hab jetzt nicht so ganz verstanden, was genau du da machst und vor allen Dingen wieso. Was genau liest du denn mit FlexHex aus? Die komplette FAT oder den FAT-Bereich der FAT? Oder meinst du damit, dass du dir die zuvor gespeicherte Textdatei aus dem Datenbereich rausziehst, änderst und wieder speicherst?

Doch sind das die belegten Cluster oder die belegten Sektoren?

Dateien werden immer im Datenbereich abgelegt. Dort wird mit Clustern addressiert, die x Sektoren groß sind. Aber Achtung: Die kleinste Cluster-Adresse ist die 2! Bei FAT12/16 beginnt diese direkt nach dem Wurzelverzeichnis, das am Anfang des Datenbereichs steht.

Unser Prof hat in seinem Skript stehen es seien die Sektoren, aber könnten es nicht die Cluster sein?

Du kannst über die Sektoradresse auch auf den Datenbereich zugreifen, musst aber drauf achten, dass du entsprechend die Clusteradressen zu Sektoradressen umwandelst (z.B. wenn du eine bestimmte Datei über blkcat extrahieren möchtest).

Hier steht als Beispiel eine 00 02 als erstes Cluster, woher weiß ich ob die ganze Datei auf den
Clustern 00 02 und 00 03 liegt?

Wenn du das erste Cluster einer Datei hast musst du in der File Allocation Table in der entsprechenden FAT-Adresse nachschauen, welche Cluster von dieser Datei noch belegt werden. Das funktioniert mit Zeigern und ist einer verketteten Liste relativ ähnlich. Cluster-Chain ist hier das Stichwort.

Also angenommen dein Start-Cluster der Datei ist die 2 (kleiner geht nicht), dann schaust du in der FAT, was unter der FAT-Adresse 2 steht. Sofern die Datei nicht fragmentiert ist steht hier ne 3, dann schaust du was in Adresse 3 steht usw, bis du am Ende ankommst. Das Ende ist bei FAT12 mit 0xff8 - 0xfff kodiert.
 
Zuletzt bearbeitet:
Ich sehs leider erst jetzt, aber vielen Dank!

Es ist eigentlich sehr simpel, nochmals vielen Dank!

Mit freundlichen Grüßen
Rostmampfer
 
Zurück
Oben