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.
- 0 octetenvoyé, jamais
- Rust → Wasmvitesse native
- 5 artefacts$MFT · $J · $Boot · $SDS · $I30
- Multi-Govolumes, dans un Web Worker
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.
- Collecter : lancez une commande ci-dessous
- Déposez le fichier
$MFTdans la zone ci-dessus - 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.
# 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 $dstCrée C:\triage\$MFT et affiche son SHA-256. Déposez ce fichier ci-dessus.
KAPE
Invite administrateur, depuis le dossier de KAPE. La cible FileSystem récupère aussi $LogFile, $J, $Boot et $SDS.
kape.exe --tsource C: --target FileSystem --tdest C:\triageLe fichier arrive dans C:\triage\C\$MFT.
FTK Imager (système actif)
- En administrateur : File → Add Evidence Item → Physical Drive → choisissez le disque système.
- Dépliez la partition NTFS → [root].
- Clic droit sur
$MFT→ Export Files → choisissezC:\triage.
The Sleuth Kit (Linux, macOS, WSL)
mmls disk.E01
icat -o <start-sector> disk.E01 0 > MFTmmls liste les partitions : prenez le secteur Start de la partition NTFS (souvent 2048). Pour une image d’un seul volume, retirez -o. L’inode 0 est toujours $MFT ; le nom du fichier de sortie n’a pas d’importance.
FTK Imager
- File → Add Evidence Item → Image File → sélectionnez le .E01, .dd ou .vmdk.
- Dépliez la partition NTFS → [root].
- Clic droit sur
$MFT→ Export Files.
Dans le navigateur
Ouvrez l’image dans Disk Image Parser, là aussi sans envoi, et exportez $MFT depuis la racine du volume.
$MFT se trouve à la racine de chaque volume NTFS (C:\, D:\, …). C’est un métafichier système caché : l’Explorateur ne l’affiche jamais.
C:\$MFTMaster File Table — une par volume NTFSC:\$Extend\$UsnJrnl:$JJournal des modifications USN (flux de données $J)C:\$BootSecteur de démarrage du volumeC:\$Secure:$SDSFlux des descripteurs de sécuritéC:\<folder>\$I30Index de répertoire ($INDEX_ALLOCATION), un par dossier\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\$MFTCopies plus anciennes dans les clichés instantanés (vssadmin list shadows)
L’outil ouvre un fichier à la fois : $MFT seul suffit. $J, $Boot, $SDS et $I30 s’ouvrent de la même façon ; dans la vue $J, liez la $MFT pour résoudre noms et chemins.
Pièges
copy,robocopyet 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
$MFTpar volume. PourD:, changez$drive = 'C:'dans le script (ou--tsourcepour 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.
À 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.
Outils connexes
- USN ParserLes enregistrements USN référencent les numéros d'entrée MFT : le journal montre ce qui est arrivé à chaque fichier dans le temps.
- $LogFile Parser$LogFile conserve les transactions redo/undo derrière les modifications récentes des enregistrements MFT.
- Disk Image ParserExportez $MFT d'une image E01, dd ou VMDK dans le navigateur, sans envoi.
FAQ forensique
Des réponses claires sur NTFS, la $MFT et la façon dont ce parseur traite vos preuves.
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.