MFTparser
100 % dans votre navigateur · aucun envoi

Parseur MFTvisionneuse MFT en ligne et analyseur $MFT

Un parseur MFT qui s'exécute entièrement dans votre navigateur. Déposez un fichier $MFT NTFS et inspectez chaque enregistrement — entrées supprimées, horodatages $STANDARD_INFORMATION et $FILE_NAME, flux de données alternatifs, données résidentes — sans envoyer un seul octet. WebAssembly sous le capot, le crate Rust omerbenamram/mft pour le parsing.

$MFT synthétique issu d'une intrusion fictive — aucune donnée réelle. Astuce : Plage horaire → « Dernière heure » cadre l’attaque.
Pourquoi MFT Parser

Chaque enregistrement. Chaque horodatage. Zéro envoi.

Un banc de triage NTFS complet compilé en WebAssembly — la vitesse d'un outil natif, la simplicité d'une page web.

  • Enregistrements supprimés, révélés

    Les entrées non allouées restent dans la $MFT tant qu'elles ne sont pas réutilisées. Filtrez-les en un clic : ce qui a été supprimé, quand, et où.

  • Confidentiel par conception

    L'analyse tourne dans un Web Worker sur votre machine. Débranchez le réseau : ça marche toujours.

  • Timestomping repéré d'un coup d'œil

    $STANDARD_INFORMATION et $FILE_NAME côte à côte : les fichiers antidatés ressortent.

  • Flux de données alternatifs

    Zone.Identifier, charges cachées et $DATA résident, téléchargeables depuis l'enregistrement.

  • Explorateur de dossiers

    Chemins complets reconstruits depuis les références parentes — y compris les dossiers supprimés orphelins.

  • Au-delà de la $MFT

    $UsnJrnl:$J, $Boot, $Secure:$SDS et les index $I30 sont détectés et décodés automatiquement.

  • Exports prêts pour le rapport

    CSV, super-timeline et rapport de triage HTML — limités à n'importe quelle plage horaire.

Comment récupérer vos données

Jamais collecté de $MFT ? Choisissez la première méthode qui convient : la plupart des gens ont fini en moins de deux minutes.

  1. Collecter : lancez une commande ci-dessous
  2. Déposez le fichier $MFT dans la zone ci-dessus
  3. Analysé dans votre navigateur, jamais envoyé

PowerShell intégré, rien à installer

Windows uniquement · ouvrez PowerShell avec « Exécuter en tant qu’administrateur » · collez le bloc entier.

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

Crée C:\triage\$MFT et affiche son SHA-256. Déposez ce fichier ci-dessus.

Pièges

  • copy, robocopy et l’Explorateur ne peuvent pas lire $MFT : Windows le verrouille. Il faut un lecteur brut (le script, KAPE, FTK Imager) et une invite administrateur.
  • Une $MFT par volume. Pour D:, changez $drive = 'C:' dans le script (ou --tsource pour KAPE).
  • BitLocker : la collecte à chaud lit des données déchiffrées, mais l’image d’un disque chiffré doit être déverrouillée (clé de récupération) avant d’exporter $MFT.
Sous le capot

À propos de ce parseur MFT

Un parseur MFT lit la Master File Table NTFS — le fichier $MFT au début de chaque volume NTFS — et transforme ses enregistrements de 1 024 octets en quelque chose qu'un analyste forensique peut exploiter : noms de fichiers, horodatages, dossiers parents, flux de données alternatifs, entrées supprimées et données résidentes. Ce site est l'un de ces parseurs. Il s'exécute dans votre navigateur.

Déposez un fichier $MFT sur la zone ci-dessus. Le fichier est chargé dans la mémoire du navigateur, analysé par le crate Rust omerbenamram/mft compilé en WebAssembly, et rendu sous forme de table paginée et recherchable. Rien n'est envoyé — vous pouvez vérifier en coupant votre réseau avant de déposer le fichier. L'export CSV et un rapport de triage sont disponibles pour l'analyse aval.

Ce qu'il vous montre

  • Chaque enregistrement MFT, alloué ou supprimé, avec le drapeau in-use exposé.
  • Les deux jeux d'horodatages — $STANDARD_INFORMATION et $FILE_NAME — pour repérer le timestomping d'un coup d'œil.
  • Les flux de données alternatifs attachés à chaque enregistrement, y compris Zone.Identifier.
  • Les octets $DATA résidents pour les petits fichiers — souvent la seule version récupérable après suppression.
  • La reconstruction du chemin complet en parcourant les références parentes à travers la table.

Comment il se compare aux autres parseurs MFT

Sur un poste d'analyse Windows, MFTECmd est le CLI standard et produit le CSV attendu par Timeline Explorer et KAPE. Pour scripter sous Linux, le CLI et le crate Rust omerbenamram/mft émettent du JSON Lines. Ce parseur navigateur occupe le troisième créneau : zéro installation, fonctionne partout où un navigateur fonctionne, adapté au triage rapide et aux situations où les preuves ne peuvent pas être envoyées à un service cloud. Comparaison complète dans l'article Comparatif des parseurs MFT.

Obtenir un $MFT à analyser

$MFT est verrouillé pendant l'exécution de Windows. Pour en extraire une copie, utilisez fsutil sur un système vivant, Disk Image Parser pour l'exporter d'une image disque (E01, dd, VMDK, VHD) directement dans le navigateur, ou la cible MFT de KAPE pour une collecte de triage complète. Pas à pas dans comment extraire $MFT d'un système Windows en cours d'exécution.

FAQ

FAQ forensique

Des réponses claires sur NTFS, la $MFT et la façon dont ce parseur traite vos preuves.

Lire les notes forensiques
Qu'est-ce que la Master File Table ?

La Master File Table ($MFT) est l'index de métadonnées de NTFS. Chaque fichier et dossier du volume possède au moins un enregistrement de 1 024 octets dans $MFT décrivant son nom, ses attributs, ses horodatages et la localisation de ses données sur le disque.

Que signifie MFT ?

MFT signifie Master File Table. Sur disque, on l'écrit $MFT — le signe dollar est la convention NTFS pour les fichiers de métadonnées.

Quels attributs de fichier sont stockés dans la Master File Table ?

Chaque enregistrement porte $STANDARD_INFORMATION (horodatages, drapeaux DOS), $FILE_NAME (nom et un second jeu d'horodatages) et $DATA (le contenu du fichier ou ses cluster runs). Les enregistrements peuvent aussi porter $ATTRIBUTE_LIST, $OBJECT_ID, $SECURITY_DESCRIPTOR, $INDEX_ROOT, $INDEX_ALLOCATION, $BITMAP, $REPARSE_POINT, $EA et $LOGGED_UTILITY_STREAM.

Comment extraire $MFT d'un système Windows ?

$MFT est le premier fichier de tout volume NTFS et il est verrouillé pendant l'exécution de Windows. Utilisez KAPE ou la commande Windows « fsutil » pour exporter une copie depuis un système en cours d'exécution, ou ouvrez une image disque dans Disk Image Parser (diskimageparser.com) et exportez-le directement dans le navigateur.

Comment réparer une Master File Table corrompue ?

Imagez le disque avant toute autre chose. Lancez ensuite chkdsk /f sur l'image (rapide, peut écarter des enregistrements illisibles) ou utilisez un outil de récupération qui scanne le volume brut à la recherche de signatures « FILE » et reconstitue les enregistrements (lent, préserve plus de preuves). N'exécutez jamais chkdsk sur l'original avant l'imagerie.

Mon $MFT est-il envoyé quelque part ?

Non. L'analyse se déroule dans un Web Worker via WebAssembly. Le fichier est chargé dans la mémoire de votre navigateur et n'est jamais transmis. Vous pouvez couper votre réseau pour le vérifier.

Pourquoi certaines entrées sont-elles marquées supprimées ?

Chaque enregistrement MFT possède un drapeau « en cours d'utilisation ». Lorsqu'un fichier est supprimé, le drapeau est effacé mais l'enregistrement reste dans $MFT jusqu'à réutilisation. Ces entrées supprimées conservent souvent le nom de fichier, les horodatages et parfois même les données résidentes.

Peut-il traiter de très gros fichiers $MFT ?

L'analyse tourne dans un thread Web Worker dédié. La mémoire utilisée croît linéairement avec la taille du fichier. Les fichiers $MFT de plusieurs gigaoctets fonctionnent sur les navigateurs modernes, mais la lecture initiale en mémoire prend quelques instants.

Votre $MFT, décodée en quelques secondes.

Sans compte, sans installation, sans envoi. Déposez un fichier — ou commencez par l'exemple synthétique.