MFTparser
100 % im Browser · kein Upload

MFT-ParserMFT-Viewer online und NTFS-$MFT-Analyzer

Ein MFT-Parser, der vollständig in Ihrem Browser läuft. Legen Sie eine NTFS-$MFT-Datei ab und inspizieren Sie jeden Eintrag — gelöschte Einträge, $STANDARD_INFORMATION- und $FILE_NAME-Zeitstempel, alternative Datenströme, residente Daten — ohne ein einziges Byte hochzuladen. WebAssembly unter der Haube, das Rust-Crate omerbenamram/mft übernimmt das Parsing.

Synthetischer $MFT eines fiktiven Einbruchs — keine echten Daten. Tipp: Zeitraum → „Letzte Stunde“ zeigt den Angriff.
Warum MFT Parser

Jeder Datensatz. Jeder Zeitstempel. Null Uploads.

Eine komplette NTFS-Triage-Werkbank in WebAssembly — so schnell wie ein natives Tool, so bequem wie eine Webseite.

  • Gelöschte Datensätze, sichtbar gemacht

    Nicht zugewiesene Einträge bleiben in der $MFT, bis sie wiederverwendet werden. Ein Klick zeigt, was gelöscht wurde, wann und wo.

  • Privat durch Architektur

    Das Parsen läuft in einem Web Worker auf deinem Rechner. Netzwerk trennen — funktioniert trotzdem.

  • Timestomping auf einen Blick

    $STANDARD_INFORMATION und $FILE_NAME nebeneinander — rückdatierte Dateien fallen sofort auf.

  • Alternate Data Streams

    Zone.Identifier, versteckte Payloads und residente $DATA, direkt aus dem Datensatz herunterladbar.

  • Ordner-Explorer

    Vollständige Pfade aus Elternreferenzen rekonstruiert — auch verwaiste, gelöschte Ordner.

  • Mehr als die $MFT

    $UsnJrnl:$J, $Boot, $Secure:$SDS und $I30-Indizes werden automatisch erkannt und dekodiert.

  • Berichtsfertige Exporte

    CSV, Super-Timeline und HTML-Triage-Bericht — auf jeden Zeitraum eingrenzbar.

So kommst du an deine Daten

Noch nie eine $MFT gesichert? Nimm die erste passende Methode: Die meisten sind in unter zwei Minuten fertig.

  1. Sichern: einen Befehl unten ausführen
  2. Die Datei $MFT oben ablegen
  3. Im Browser ausgewertet, nie hochgeladen

Integrierte PowerShell, nichts zu installieren

Nur Windows · PowerShell mit „Als Administrator ausführen“ öffnen · den ganzen Block einfügen.

PowerShell (admin)
# Elevated PowerShell: copies the live C:\$MFT to C:\triage\$MFT by reading the raw volume.
$drive = 'C:'; $dst = 'C:\triage\$MFT'
New-Item -ItemType Directory -Force -Path (Split-Path $dst) | Out-Null
if (-not ('Raw.Vol' -as [type])) { Add-Type -Namespace Raw -Name Vol -MemberDefinition '[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] public static extern Microsoft.Win32.SafeHandles.SafeFileHandle CreateFile(string name, uint access, uint share, IntPtr sa, uint disposition, uint flags, IntPtr template);' }
$h = [Raw.Vol]::CreateFile("\\.\$drive", 2147483648, 3, [IntPtr]::Zero, 3, 0, [IntPtr]::Zero)
if ($h.IsInvalid) { throw "Cannot open \\.\$drive - run PowerShell as administrator" }
$vol = New-Object IO.FileStream($h, [IO.FileAccess]::Read)
function Read-At([long]$pos, [int]$len) { $b = New-Object byte[] $len; [void]$vol.Seek($pos, 'Begin'); $got = 0; while ($got -lt $len) { $n = $vol.Read($b, $got, $len - $got); if ($n -le 0) { throw 'Short read' }; $got += $n }; , $b }
$boot = Read-At 0 4096
$bps = [BitConverter]::ToUInt16($boot, 11); $spc = [int]$boot[13]; if ($spc -gt 128) { $spc = 1 -shl (256 - $spc) }
$cs = [long]$bps * $spc; $c = [int]$boot[64]; $rs = if ($c -gt 127) { 1 -shl (256 - $c) } else { $c * $cs }
$rec = Read-At ([BitConverter]::ToInt64($boot, 48) * $cs) ([math]::Max($rs, 4096))
$uo = [BitConverter]::ToUInt16($rec, 4)
for ($i = 1; $i -lt [BitConverter]::ToUInt16($rec, 6); $i++) { $rec[$i * 512 - 2] = $rec[$uo + 2 * $i]; $rec[$i * 512 - 1] = $rec[$uo + 2 * $i + 1] }
$a = [int][BitConverter]::ToUInt16($rec, 20)
while ($true) { $t = [BitConverter]::ToUInt32($rec, $a); if ($t -eq [uint32]::MaxValue) { throw 'No $DATA in record 0' }; if ($t -eq 0x80 -and $rec[$a + 9] -eq 0) { break }; $a += [int][BitConverter]::ToUInt32($rec, $a + 4) }
$size = [BitConverter]::ToInt64($rec, $a + 48); $p = $a + [BitConverter]::ToUInt16($rec, $a + 32)
$out = [IO.File]::Create($dst); $buf = New-Object byte[] 4MB; $lcn = [long]0
while ($rec[$p] -ne 0) {
  $ln = $rec[$p] -band 15; $lo = $rec[$p] -shr 4; $len = [long]0; $d = [long]0
  for ($i = $ln; $i -ge 1; $i--) { $len = $len * 256 + $rec[$p + $i] }
  for ($i = $ln + $lo; $i -gt $ln; $i--) { $d = $d * 256 + $rec[$p + $i] }
  if ($lo -gt 0 -and $rec[$p + $ln + $lo] -ge 128) { $d -= [long]1 -shl (8 * $lo) }
  $lcn += $d; $p += 1 + $ln + $lo; $left = $len * $cs; [void]$vol.Seek($lcn * $cs, 'Begin')
  while ($left -gt 0) { $n = $vol.Read($buf, 0, [int][math]::Min($left, $buf.Length)); if ($n -le 0) { throw 'Short read' }; $out.Write($buf, 0, $n); $left -= $n }
}
$out.SetLength($size); $out.Close(); $vol.Close()
Get-FileHash -Algorithm SHA256 $dst

Schreibt C:\triage\$MFT und gibt den SHA-256 aus. Diese Datei oben ablegen.

Stolperfallen

  • copy, robocopy und der Explorer können $MFT nicht lesen: Windows sperrt sie. Du brauchst einen Raw-Reader (das Skript, KAPE, FTK Imager) und eine Administrator-Konsole.
  • Eine $MFT pro Volume. Für D: im Skript $drive = 'C:' ändern (bzw. --tsource bei KAPE).
  • BitLocker: Live-Sicherung liest entschlüsselte Daten, ein Image einer verschlüsselten Platte muss aber erst entsperrt werden (Wiederherstellungsschlüssel), bevor $MFT exportiert werden kann.
Unter der Haube

Über diesen MFT-Parser

Ein MFT-Parser liest die NTFS- Master File Table — die $MFT-Datei am Anfang jedes NTFS-Volumes — und verwandelt ihre 1.024-Byte-Datensätze in etwas, womit ein Forensik-Analyst arbeiten kann: Dateinamen, Zeitstempel, übergeordnete Verzeichnisse, Alternate Data Streams, gelöschte Einträge und residente Daten. Diese Seite ist einer dieser Parser. Sie läuft in Ihrem Browser.

Legen Sie eine $MFT-Datei oben auf den Bereich. Die Datei wird in den Speicher des Browsers geladen, vom Rust-Crate omerbenamram/mft (kompiliert zu WebAssembly) geparst und als paginierte, durchsuchbare Tabelle dargestellt. Nichts wird hochgeladen — Sie können das prüfen, indem Sie das Netzwerk vor dem Drop trennen. CSV-Export und ein Triage-Bericht stehen für die nachgelagerte Analyse bereit.

Was er Ihnen zeigt

  • Jeden MFT-Datensatz, alloziert oder gelöscht, mit sichtbarem in-use-Flag.
  • Beide Zeitstempel-Sätze — $STANDARD_INFORMATION und $FILE_NAME — um Timestomping auf einen Blick zu erkennen.
  • Alternate Data Streams an jedem Datensatz, einschließlich Zone.Identifier.
  • Residente $DATA-Bytes für kleine Dateien — oft die einzige nach der Löschung wiederherstellbare Version.
  • Vollständige Pfad-Rekonstruktion durch Verfolgung der Parent-Referenzen durch die Tabelle.

Im Vergleich zu anderen MFT-Parsern

Auf einer Windows-Analyse-Workstation ist MFTECmd das Standard-CLI und erzeugt das CSV, das Timeline Explorer und KAPE erwarten. Für Skripting unter Linux geben das CLI und das Rust-Crate omerbenamram/mft JSON Lines aus. Dieser Browser-Parser füllt die dritte Lücke: keine Installation, läuft überall dort, wo ein Browser läuft, geeignet für schnelle Triage und für Situationen, in denen Beweismittel nicht an einen Cloud-Dienst gesendet werden dürfen. Vollständiger Vergleich im Beitrag MFT-Parser im Vergleich.

Eine $MFT zum Parsen besorgen

$MFT ist gesperrt, solange Windows läuft. Um eine Kopie zu extrahieren, nutzen Sie fsutil auf einem laufenden System, Disk Image Parser, um sie direkt im Browser aus einem Disk-Image (E01, dd, VMDK, VHD) zu exportieren, oder das Ziel MFT von KAPE für eine vollständige Triage-Sammlung. Schritt für Schritt in So extrahieren Sie $MFT aus einem laufenden Windows-System.

FAQ

Forensik-FAQ

Klare Antworten zu NTFS, der $MFT und dazu, wie dieser Parser mit deinen Beweisen umgeht.

Forensik-Notizen lesen
Was ist die Master File Table?

Die Master File Table ($MFT) ist der Metadaten-Index von NTFS. Jede Datei und jedes Verzeichnis auf dem Volume besitzt mindestens einen 1.024-Byte-Eintrag in der $MFT, der Name, Attribute, Zeitstempel und Speicherort der Daten auf der Platte beschreibt.

Wofür steht MFT?

MFT steht für Master File Table. Auf der Platte wird sie $MFT geschrieben — das Dollarzeichen ist die NTFS-Konvention für Metadatendateien.

Welche Dateiattribute werden in der Master File Table gespeichert?

Jeder Eintrag trägt $STANDARD_INFORMATION (Zeitstempel, DOS-Flags), $FILE_NAME (Name und ein zweiter Satz Zeitstempel) und $DATA (Dateiinhalt oder dessen Cluster Runs). Einträge können zudem $ATTRIBUTE_LIST, $OBJECT_ID, $SECURITY_DESCRIPTOR, $INDEX_ROOT, $INDEX_ALLOCATION, $BITMAP, $REPARSE_POINT, $EA und $LOGGED_UTILITY_STREAM tragen.

Wie extrahiere ich die $MFT aus einem Windows-System?

Die $MFT ist die erste Datei auf jedem NTFS-Volume und ist während des Windows-Betriebs gesperrt. Verwenden Sie KAPE oder den Windows-Befehl „fsutil“, um eine Kopie aus einem laufenden System zu exportieren, oder öffnen Sie ein Disk-Image in Disk Image Parser (diskimageparser.com) und exportieren Sie sie direkt im Browser.

Wie repariere ich eine beschädigte Master File Table?

Erstellen Sie zuerst ein Image des Datenträgers. Führen Sie dann chkdsk /f gegen das Image aus (schnell, kann unlesbare Einträge verwerfen) oder verwenden Sie ein Recovery-Tool, das das rohe Volume nach „FILE“-Signaturen scannt und Einträge rekonstruiert (langsam, bewahrt mehr Beweise). Führen Sie chkdsk niemals auf dem Original aus, bevor Sie ein Image haben.

Lädt dieses Tool meine $MFT irgendwo hoch?

Nein. Die Analyse läuft in einem Web Worker über WebAssembly. Die Datei wird in den Speicher Ihres Browsers geladen und niemals übertragen. Sie können Ihr Netzwerk trennen, um es zu prüfen.

Warum sind manche Einträge als gelöscht markiert?

Jeder MFT-Eintrag hat ein „in Benutzung“-Flag. Wenn eine Datei gelöscht wird, wird das Flag entfernt, der Eintrag bleibt jedoch bis zur Wiederverwendung in der $MFT. Solche gelöschten Einträge enthalten oft noch wiederherstellbare Dateinamen, Zeitstempel und sogar residente Daten.

Kann es sehr große $MFT-Dateien verarbeiten?

Die Analyse läuft in einem dedizierten Web-Worker-Thread. Der Speicherverbrauch skaliert linear mit der Dateigröße. Mehrere Gigabyte große $MFT-Dateien funktionieren in modernen Browsern, das initiale Einlesen in den Speicher dauert jedoch einen Moment.

Deine $MFT, in Sekunden dekodiert.

Kein Konto, keine Installation, kein Upload. Datei ablegen — oder mit dem synthetischen Beispiel starten.