Parser MFTvisualizzatore MFT online e analizzatore $MFT
Un parser MFT che gira interamente nel tuo browser. Trascina un file $MFT NTFS e ispeziona ogni record — voci eliminate, timestamp $STANDARD_INFORMATION e $FILE_NAME, flussi di dati alternativi, dati resident — senza inviare un solo byte. WebAssembly sotto il cofano, il crate Rust omerbenamram/mft per il parsing.
- 0 bytecaricati, mai
- Rust → Wasmvelocità nativa
- 5 artefatti$MFT · $J · $Boot · $SDS · $I30
- Multi-GBvolumi, in un Web Worker
Ogni record. Ogni timestamp. Zero upload.
Un banco di triage NTFS completo compilato in WebAssembly: la velocità di uno strumento nativo, la comodità di una pagina web.
Record eliminati, portati alla luce
Le voci non allocate restano nella $MFT finché non vengono riutilizzate. Filtrale con un clic: cosa è stato eliminato, quando e dove.
Privato per architettura
L'analisi gira in un Web Worker sulla tua macchina. Stacca la rete: funziona comunque.
Timestomping a colpo d'occhio
$STANDARD_INFORMATION e $FILE_NAME affiancati: i file retrodatati saltano all'occhio.
Alternate data stream
Zone.Identifier, payload nascosti e $DATA residente, scaricabili direttamente dal record.
Esplora cartelle
Percorsi completi ricostruiti dai riferimenti padre, comprese le cartelle eliminate orfane.
Oltre la $MFT
$UsnJrnl:$J, $Boot, $Secure:$SDS e indici $I30 vengono rilevati e decodificati automaticamente.
Esportazioni pronte per il report
CSV, super-timeline e report di triage HTML, limitati a qualsiasi intervallo di tempo.
Come ottenere i tuoi dati
Mai raccolto una $MFT? Scegli il primo metodo adatto: quasi tutti finiscono in meno di due minuti.
- Raccogli: esegui un comando qui sotto
- Trascina il file
$MFTnel riquadro sopra - Analizzato nel browser, mai caricato
PowerShell integrato, niente da installare
Solo Windows · apri PowerShell con «Esegui come amministratore» · incolla tutto il blocco.
# 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 $dstCrea C:\triage\$MFT e ne stampa lo SHA-256. Trascina quel file qui sopra.
KAPE
Prompt con privilegi elevati, dalla cartella di KAPE. Il target FileSystem prende anche $LogFile, $J, $Boot e $SDS.
kape.exe --tsource C: --target FileSystem --tdest C:\triageIl file finisce in C:\triage\C\$MFT.
FTK Imager (sistema live)
- Come amministratore: File → Add Evidence Item → Physical Drive → scegli il disco di sistema.
- Espandi la partizione NTFS → [root].
- Tasto destro su
$MFT→ Export Files → scegliC:\triage.
The Sleuth Kit (Linux, macOS, WSL)
mmls disk.E01
icat -o <start-sector> disk.E01 0 > MFTmmls elenca le partizioni: usa il settore Start di quella NTFS (spesso 2048). Per un’immagine di un solo volume togli -o. L’inode 0 è sempre $MFT; il nome del file di output non conta.
FTK Imager
- File → Add Evidence Item → Image File → seleziona il .E01, .dd o .vmdk.
- Espandi la partizione NTFS → [root].
- Tasto destro su
$MFT→ Export Files.
Nel browser
Apri l’immagine in Disk Image Parser, anche lì senza upload, ed esporta $MFT dalla radice del volume.
$MFT si trova nella radice di ogni volume NTFS (C:\, D:\, …). È un metafile di sistema nascosto: Esplora file non lo mostra mai.
C:\$MFTMaster File Table — una per volume NTFSC:\$Extend\$UsnJrnl:$JJournal delle modifiche USN (flusso di dati $J)C:\$BootSettore di avvio del volumeC:\$Secure:$SDSFlusso dei descrittori di sicurezzaC:\<folder>\$I30Indice di directory ($INDEX_ALLOCATION), uno per cartella\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\$MFTCopie precedenti nelle copie shadow del volume (vssadmin list shadows)
Lo strumento apre un file alla volta: basta la $MFT. $J, $Boot, $SDS e $I30 si aprono allo stesso modo; nella vista $J, collega la $MFT per risolvere nomi e percorsi.
Insidie
copy,robocopyed Esplora file non leggono$MFT: Windows la blocca. Serve un lettore raw (lo script, KAPE, FTK Imager) e un prompt con privilegi elevati.- Una
$MFTper volume. PerD:cambia$drive = 'C:'nello script (o--tsourcein KAPE). - BitLocker: la raccolta live legge dati decifrati, ma l’immagine di un disco cifrato va sbloccata (chiave di ripristino) prima di esportare
$MFT.
Informazioni su questo parser MFT
Un parser MFT legge la Master File Table NTFS — il file $MFT all'inizio di ogni volume NTFS — e trasforma i suoi record da 1.024 byte in qualcosa con cui un analista forense può lavorare: nomi di file, timestamp, directory genitore, flussi di dati alternativi, voci cancellate e dati residenti. Questo sito è uno di quei parser. Funziona nel tuo browser.
Trascina un file $MFT nell'area in alto. Il file viene letto nella memoria del browser, analizzato dal crate Rust omerbenamram/mft compilato in WebAssembly, e mostrato in una tabella paginata e ricercabile. Niente viene caricato — puoi verificarlo disconnettendo la rete prima di trascinare il file. Sono disponibili esportazione CSV e un report di triage per l'analisi a valle.
Cosa ti mostra
- Ogni record MFT, allocato o cancellato, con il flag in-use esposto.
- Entrambi i set di timestamp — $STANDARD_INFORMATION e $FILE_NAME — per individuare il timestomping a colpo d'occhio.
- I flussi di dati alternativi associati a ciascun record, incluso Zone.Identifier.
- I byte $DATA residenti dei file piccoli — spesso l'unica versione recuperabile dopo la cancellazione.
- Ricostruzione completa del path seguendo le referenze genitore attraverso la tabella.
Come si confronta con altri parser MFT
Su una workstation di analisi Windows, MFTECmd è il CLI standard e produce il CSV che Timeline Explorer e KAPE si aspettano. Per lo scripting su Linux, il CLI e il crate Rust omerbenamram/mft emettono JSON Lines. Questo parser nel browser copre il terzo slot: zero installazione, funziona ovunque ci sia un browser, adatto al triage rapido e alle situazioni in cui le prove non possono essere inviate a un servizio cloud. Confronto completo nell'articolo Confronto fra parser MFT.
Ottenere una $MFT da analizzare
$MFT è bloccata mentre Windows è in esecuzione. Per estrarne una copia, usa fsutil su un sistema vivo, Disk Image Parser per esportarla da un'immagine disco (E01, dd, VMDK, VHD) direttamente nel browser, o il target MFT di KAPE per una raccolta di triage completa. Passo per passo in come estrarre $MFT da un sistema Windows in esecuzione.
Strumenti correlati
FAQ di forensica
Risposte chiare su NTFS, la $MFT e su come questo parser tratta le tue evidenze.
Cos'è la Master File Table?
La Master File Table ($MFT) è l'indice di metadati di NTFS. Ogni file e cartella del volume ha almeno un record da 1.024 byte in $MFT che ne descrive il nome, gli attributi, i timestamp e la posizione dei dati sul disco.
Cosa significa MFT?
MFT significa Master File Table. Su disco si scrive $MFT — il segno dollaro è la convenzione NTFS per i file di metadati.
Quali attributi di file sono memorizzati nella Master File Table?
Ogni record contiene $STANDARD_INFORMATION (timestamp, flag DOS), $FILE_NAME (nome e un secondo set di timestamp) e $DATA (il contenuto del file o i suoi cluster runs). I record possono anche contenere $ATTRIBUTE_LIST, $OBJECT_ID, $SECURITY_DESCRIPTOR, $INDEX_ROOT, $INDEX_ALLOCATION, $BITMAP, $REPARSE_POINT, $EA e $LOGGED_UTILITY_STREAM.
Come estraggo $MFT da un sistema Windows?
$MFT è il primo file di ogni volume NTFS ed è bloccato mentre Windows è in esecuzione. Usa KAPE o il comando Windows «fsutil» per esportarne una copia da un sistema attivo, oppure apri un'immagine disco in Disk Image Parser (diskimageparser.com) ed esportalo direttamente nel browser.
Come riparo una Master File Table corrotta?
Imager il disco prima di tutto. Poi esegui chkdsk /f sull'immagine (veloce, può scartare record illeggibili) oppure usa uno strumento di recupero che scansiona il volume grezzo cercando signature «FILE» e riassembla i record (lento, preserva più prove). Non eseguire mai chkdsk sull'originale prima dell'imaging.
Questo strumento carica il mio $MFT da qualche parte?
No. L'analisi avviene in un Web Worker tramite WebAssembly. Il file viene caricato nella memoria del browser e non viene mai trasmesso. Puoi disconnettere la rete per verificarlo.
Perché alcune voci risultano eliminate?
Ogni record MFT ha un flag «in uso». Quando un file viene eliminato, il flag viene cancellato ma il record rimane in $MFT finché non viene riutilizzato. Queste voci eliminate conservano spesso nomi recuperabili, timestamp e talvolta dati residenti.
Riesce a gestire file $MFT molto grandi?
L'analisi gira in un thread Web Worker dedicato. La memoria cresce linearmente con la dimensione del file. File $MFT da diversi gigabyte funzionano nei browser moderni, ma la lettura iniziale in memoria richiede un istante.
La tua $MFT, decodificata in pochi secondi.
Nessun account, nessuna installazione, nessun upload. Trascina un file o parti dall'esempio sintetico.