MFTparser
100 % en tu navegador · sin subidas

Parser MFTvisor MFT online y analizador $MFT NTFS

Un parser MFT que se ejecuta íntegramente en tu navegador. Suelta un archivo $MFT NTFS e inspecciona cada registro — entradas eliminadas, marcas de tiempo $STANDARD_INFORMATION y $FILE_NAME, flujos de datos alternativos, datos residentes — sin enviar un solo byte. WebAssembly bajo el capó y el crate de Rust omerbenamram/mft haciendo el parsing.

$MFT sintético de una intrusión ficticia — sin datos reales. Consejo: Rango de tiempo → «Última hora» enmarca el ataque.
Por qué MFT Parser

Cada registro. Cada marca de tiempo. Cero subidas.

Un banco de triaje NTFS completo compilado a WebAssembly: la velocidad de una herramienta nativa con la comodidad de una web.

  • Registros eliminados, a la vista

    Las entradas no asignadas siguen en la $MFT hasta que se reutilizan. Fíltralas con un clic y ve qué se borró, cuándo y dónde estaba.

  • Privado por diseño

    El análisis corre en un Web Worker en tu equipo. Desconecta la red: sigue funcionando.

  • Timestomping de un vistazo

    $STANDARD_INFORMATION y $FILE_NAME lado a lado: los archivos con fechas falsificadas destacan.

  • Flujos de datos alternativos

    Zone.Identifier, cargas ocultas y $DATA residente, descargables desde el registro.

  • Explorador de carpetas

    Rutas completas reconstruidas desde las referencias padre, incluidas carpetas eliminadas huérfanas.

  • Más allá de la $MFT

    $UsnJrnl:$J, $Boot, $Secure:$SDS e índices $I30 se detectan y decodifican automáticamente.

  • Exportaciones listas para informe

    CSV, supertimeline e informe de triaje HTML, acotados a cualquier rango de tiempo.

Cómo obtener tus datos

¿Nunca has recolectado un $MFT? Elige el primer método que encaje: la mayoría termina en menos de dos minutos.

  1. Recolectar: ejecuta un comando de abajo
  2. Suelta el archivo $MFT en el recuadro de arriba
  3. Se analiza en tu navegador, nunca se sube

PowerShell integrado, nada que instalar

Solo Windows · abre PowerShell con «Ejecutar como administrador» · pega el bloque completo.

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

Crea C:\triage\$MFT y muestra su SHA-256. Suelta ese archivo arriba.

Trampas habituales

  • copy, robocopy y el Explorador no pueden leer $MFT: Windows lo bloquea. Necesitas un lector en bruto (el script, KAPE, FTK Imager) y una consola elevada.
  • Un $MFT por volumen. Para D:, cambia $drive = 'C:' en el script (o --tsource en KAPE).
  • BitLocker: la recolección en vivo lee datos descifrados, pero la imagen de un disco cifrado debe desbloquearse (clave de recuperación) antes de exportar $MFT.
Bajo el capó

Sobre este parser MFT

Un parser MFT lee la Master File Table de NTFS — el fichero $MFT al inicio de cada volumen NTFS — y convierte sus registros de 1 024 bytes en algo que un analista forense puede explotar: nombres de archivos, marcas de tiempo, directorios padre, flujos de datos alternativos, entradas eliminadas y datos residentes. Este sitio es uno de esos parsers. Funciona en tu navegador.

Suelta un fichero $MFT sobre la zona de arriba. El fichero se carga en la memoria del navegador, lo analiza el crate Rust omerbenamram/mft compilado a WebAssembly, y se muestra en una tabla paginada y buscable. Nada se sube — puedes verificarlo desconectando tu red antes de soltar el fichero. Hay exportación a CSV y un informe de triaje disponibles para el análisis posterior.

Qué te muestra

  • Cada registro MFT, asignado o eliminado, con el flag in-use expuesto.
  • Los dos conjuntos de marcas de tiempo — $STANDARD_INFORMATION y $FILE_NAME — para detectar el timestomping de un vistazo.
  • Los flujos de datos alternativos asociados a cada registro, incluyendo Zone.Identifier.
  • Los bytes $DATA residentes de los ficheros pequeños — a menudo la única versión recuperable tras la eliminación.
  • La reconstrucción completa del path siguiendo las referencias padre a través de la tabla.

Cómo se compara con otros parsers MFT

En una estación de análisis Windows, MFTECmd es el CLI estándar y produce el CSV que Timeline Explorer y KAPE esperan. Para scripting en Linux, el CLI y el crate Rust omerbenamram/mft emiten JSON Lines. Este parser de navegador ocupa el tercer hueco: cero instalación, funciona en cualquier sitio donde haya un navegador, adecuado para triaje rápido y para situaciones en las que las pruebas no pueden enviarse a un servicio en la nube. Comparativa completa en el artículo Comparativa de parsers MFT.

Obtener un $MFT para analizar

$MFT está bloqueado mientras Windows está en marcha. Para extraer una copia, usa fsutil en un sistema vivo, Disk Image Parser para exportarlo de una imagen de disco (E01, dd, VMDK, VHD) desde el navegador, o el objetivo MFT de KAPE para una recogida de triaje completa. Paso a paso en cómo extraer $MFT de un sistema Windows en ejecución.

FAQ

FAQ forense

Respuestas directas sobre NTFS, la $MFT y cómo este analizador trata tus evidencias.

Leer las notas forenses
¿Qué es la Master File Table?

La Master File Table ($MFT) es el índice de metadatos de NTFS. Cada archivo y carpeta del volumen tiene al menos un registro de 1024 bytes en $MFT que describe su nombre, atributos, marcas de tiempo y dónde residen sus datos en disco.

¿Qué significa MFT?

MFT significa Master File Table. En disco se escribe $MFT — el signo dólar es la convención NTFS para los archivos de metadatos.

¿Qué atributos de archivo se almacenan en la Master File Table?

Cada registro lleva $STANDARD_INFORMATION (marcas de tiempo, banderas DOS), $FILE_NAME (nombre y un segundo conjunto de marcas de tiempo) y $DATA (el contenido del archivo o sus cluster runs). Los registros también pueden llevar $ATTRIBUTE_LIST, $OBJECT_ID, $SECURITY_DESCRIPTOR, $INDEX_ROOT, $INDEX_ALLOCATION, $BITMAP, $REPARSE_POINT, $EA y $LOGGED_UTILITY_STREAM.

¿Cómo extraigo $MFT de un sistema Windows?

$MFT es el primer archivo de todo volumen NTFS y está bloqueado mientras Windows está en ejecución. Usa KAPE o el comando «fsutil» de Windows para exportar una copia desde un sistema en vivo, o abre una imagen de disco en Disk Image Parser (diskimageparser.com) y expórtalo desde el navegador.

¿Cómo reparo una Master File Table corrupta?

Crea primero una imagen del disco. Luego ejecuta chkdsk /f sobre la imagen (rápido, puede descartar registros ilegibles) o usa una herramienta de recuperación que escanee el volumen crudo buscando firmas «FILE» y reconstruya los registros (lento, preserva más evidencia). Nunca ejecutes chkdsk sobre el original antes de crear la imagen.

¿Esta herramienta sube mi $MFT a algún sitio?

No. El análisis ocurre en un Web Worker mediante WebAssembly. El archivo se carga en la memoria del navegador y nunca se transmite. Desconecta la red si quieres comprobarlo.

¿Por qué algunas entradas aparecen como eliminadas?

Cada registro MFT tiene una marca de «en uso». Cuando se elimina un archivo, la marca se borra pero el registro permanece en $MFT hasta que se reutiliza. Estas entradas eliminadas suelen conservar nombres recuperables, marcas de tiempo e incluso datos residentes.

¿Puede procesar archivos $MFT muy grandes?

El análisis se ejecuta en un hilo de Web Worker dedicado. La memoria crece linealmente con el tamaño del archivo. Archivos $MFT de varios gigabytes funcionan en navegadores modernos, aunque la lectura inicial a memoria tarda un instante.

Tu $MFT, decodificada en segundos.

Sin cuenta, sin instalación, sin subidas. Suelta un archivo o empieza con la muestra sintética.