Wie liest man MFT auf einem USB-Festplattenlaufwerk (NTFS, 1 TB)?

1223
Thomas Matthews

Ich bin auf der Suche nach einer übergeordneten Methode zum Lesen der MFT-Einträge in einem NTFS-Dateisystem für eine interne Festplatte von Seagate 1 TB. Die Plattform ist Windows 7.

Ich muss den Dateinamen, die Blockgröße und die LBA abrufen.

Ist dies eine spezialisierte Aufgabe, bei der ich dazu ein Programm schreiben muss?

3
Es gibt eine Reihe von freien * Festplatten-Editoren *, die diese Informationen anzeigen können, die Daten jedoch manuell auswählen müssen, um sie zu speichern. DrMoishe Pippik vor 8 Jahren 0
Ich kann eine Datei auf einem anderen Speichergerät speichern, kein Problem. Ich habe Probleme beim Speichern eines vollständigen Images der Festplatte. Daher möchte ich die Datei (en), die diese LBAs verwendet, zur Sicherheit auf einem anderen Laufwerk speichern, bevor ich den Wiederherstellungsteil des Seagate-Tools verwende. Thomas Matthews vor 8 Jahren 0
Macrium Refkect Free, http://www.macrium.com/reflectfree.aspx, kann alle Partitionen sichern (und bei Bedarf wiederherstellen). DrMoishe Pippik vor 8 Jahren 0

1 Antwort auf die Frage

5
grawity

Diese Informationen sind über die Defrag-API zugänglich . Defragmentierungstools von Drittanbietern werden möglicherweise verfügbar gemacht. Auf aktuellen Windows-Systemen (8.1 funktioniert, 7 nicht getestet) können Sie fsutiles abfragen:

C: \> fsutil-Datei queryextents example.txt VCN: 0x0 Cluster: 0x2 LCN: 0x18f85e 

Es gibt auch einen weiteren Unterbefehl, der alle Informationen für alle Datenströme in der Datei speichert:

C: \> fsutil Volume-Dateilayout example.exe  ********* Datei 0x01390000000008dd ********* Referenznummer der Datei: 0x01390000000008dd Dateiattribute: 0x00000020: Archiv ... Stream: :: $ FILE_NAME Attribute: 0x00000000: * NONE * Flags: 0x0000000c: resident | Keine Cluster zugewiesen Größe: 80 Zugewiesene Größe: 80 Stream: :: $ DATA  (der Hauptdatenstrom) Attribute: 0x00000000: * NONE * Flags: 0x00000000: * NONE * Größe: 1681920 Zugewiesene Größe: 1683456  Ausdehnungen: 1 Ausdehnungen : 1: VCN: 0 Cluster: 411 LCN: 8527618 

In der Ausgabe beider Befehle erhalten Sie für jede "Ausdehnung" (einen zusammenhängenden Bereich von Clustern) die "virtuelle Clusternummer" (Versatz vom Anfang der Datei), die Anzahl der Cluster in der Ausdehnung und die "logische Clusternummer" ( versetzt vom Anfang des Volumens).

Hinweis: Kleine Dateien, die in den MFT-Basisdatensatz passen, werden in ihrem MFT-Datensatz gespeichert ("resident") und haben keine Ausdehnungen. Für diese müssen Sie andere Möglichkeiten nutzen, um die MFT selbst zu durchsuchen. (In einigen Fällen ist die Datei möglicherweise spärlich und weist nur einen kleinen Teil auf der Festplatte auf; der Rest wird nur als null Byte angenommen.)

Die Cluster sind auf Dateisystemebene, daher müssen Sie sie in Sektoren auf Blockgerätebene konvertieren. Mein System verfügt über 8 Sektoren pro Cluster:

C: \> fsutil fsinfo ntfsinfo c: ... Bytes pro Sektor: 512 Bytes pro Cluster: 4096 ...  C: \> set / a 0x18f85e * (4096/512) 13091568  C: \> set / a 0x18f85e * 4096 6702882816 

Das heißt, Sie können \\.\C:mit HxD oder ähnlichem öffnen und den Anfang der Datei im Sektor 13091568 (oder Byte 6702882816) finden.