
Herramienta de exploración, extracción, reparación y análisis forense de sistemas de archivos FAT

Esta herramienta está diseñada para manipular sistemas de archivos FAT, con el fin de explorar, extraer, reparar, recuperar y realizar análisis forense de los mismos. Actualmente soporta FAT12, FAT16 y FAT32.
Puedes compilar fatcat de esta manera:
mkdir build
cd build
cmake ..
make
Y luego instalarlo:
make install
Fatcat toma una imagen como argumento:
fatcat disk.img [options]
NOTA: según tu compilación, es posible que debas especificar las opciones antes de disk.img, es decir
fatcat [options] disk.img
Puedes especificar un desplazamiento en el archivo con -O, lo que puede ser útil si hay
varias particiones en un dispositivo de bloque, por ejemplo:
fatcat disk.img -O 1048576 [options]
Esto le indicará a fatcat que comience en el byte 1048576. Échale un vistazo al tutorial de particiones.
Puedes explorar la partición FAT usando la opción -l de la siguiente manera:
$ fatcat disk.img -l /
Listando ruta /
Cluster: 2
d 24/10/2013 12:06:00 some_directory/ c=4661
d 24/10/2013 12:06:02 other_directory/ c=4662
f 24/10/2013 12:06:40 picture.jpg c=4672 s=532480 (520K)
f 24/10/2013 12:06:06 hello.txt c=4671 s=13 (13B)
También puedes proporcionar una ruta como -l /some/directory.
Usando -L, puedes proporcionar un número de clúster en lugar de una ruta, lo que puede ser
útil en ocasiones.
Si añades -d, también verás los archivos eliminados.
En el listado, el prefijo es f o d para indicar si la línea se refiere a un archivo o
un directorio.
c= indica el número de clúster, s= indica el tamaño en bytes (que
debería coincidir con el tamaño legible justo después).
La letra h al final indica que se supone que el archivo está oculto.
La letra d al final indica que el archivo fue eliminado.
Puedes leer un archivo usando -r, el archivo se escribirá en la salida
estándar:
$ fatcat disk.img -r /hello.txt
¡Hola mundo!
$ fatcat disk.img -r /picture.jpg > save.jpg
Usando -R, puedes proporcionar un número de clúster en lugar de una ruta, pero la información
del tamaño del archivo se perderá y el archivo se redondeará al número de clústeres
que ocupe, a menos que proporciones la opción -s para especificar el tamaño del archivo a leer.
Puedes usar -x para extraer los directorios del sistema de archivos FAT a un directorio:
fatcat disk.img -x output/
Si quieres extraer desde un clúster específico, proporciónalo con -c.
Si proporcionas -d para extraer, los archivos eliminados también se extraerán.
Como se explicó anteriormente, los archivos eliminados se pueden encontrar en el listado proporcionando -d:
$ fatcat disk.img -l / -d
f 24/10/2013 12:13:24 delete_me.txt c=5764 s=16 (16B) d
Puedes explorar y localizar un archivo o un directorio eliminado interesante.
Para recuperar un archivo eliminado, simplemente usa -r para leerlo. Ten en cuenta que el archivo
resultante se leerá de forma contigua del sistema FAT original y puede estar dañado.
Para recuperar un directorio eliminado, anota su número de clúster y extráelo como se indicó anteriormente:
# Si el clúster de tu directorio eliminado es 71829
fatcat disk.img -x output/ -c 71829
Ver también: tutorial de recuperación de eliminados
Suponiendo que tu disco tiene sectores dañados, es posible que desees realizar una recuperación.
El primer consejo es hacer una copia de tus datos usando ddrescue, y guardar tu disco
en otro disco o en un archivo sano.
Cuando los sectores están dañados, sus bytes se reemplazarán con 0s en la imagen de ddrescue.
Una primera forma es intentar explorar tu imagen usando -l como se indicó y verificar con -i para
descubrir si fatcat reconoce el disco como un sistema FAT.
Luego, puedes intentar echar un vistazo a -2, para comprobar si las tablas de asignación de archivos difieren,
y si parecen fusionables. Es muy probable que lo sean; en ese caso, puedes
intentar -m para fusionar las tablas FAT, no olvides hacer una copia de seguridad antes (ver abajo).
Cuando tu sistema de archivos está dañado, hay archivos y archivos perdidos y directorios perdidos que llamamos "huérfanos", porque no se puede acceder a ellos desde el sistema normal.
fatcat te proporciona una opción para encontrar esos nodos, realizará un análisis automatizado de tu
sistema y explorará los sectores asignados de tu sistema de archivos; esto se hace con -o.
Obtendrás una lista de directorios y archivos, como esta:
Hay 2 elementos huérfanos:
Clústeres de directorio 4592 a 4592: 2 elementos, 49B
Clústeres de archivo 4611 a 4611: ~512B
Luego puedes usar directamente -L y -R para echar un vistazo a esos archivos y directorios:
$ fatcat disk.img -L 4592
Listando clúster 4592
Cluster: 4592
d 23/10/2013 17:45:06 ./ c=4592
d 23/10/2013 17:45:06 ../ c=0
f 23/10/2013 17:45:22 poor_orphan.txt c=4601 s=49 (49B)
Ten en cuenta que los archivos huérfanos tienen un tamaño desconocido, lo que significa que si los lees, obtendrás un archivo que es múltiplo del tamaño de los clústeres.
Ver también: tutorial de archivos huérfanos
Puedes usar fatcat para hackear tu sistema de archivos FAT
La bandera -i te proporcionará mucha información sobre el sistema de archivos:
fatcat disk.img -i
Esto te dará datos de cabecera como tamaños de sectores, tamaños de FAT, etiqueta del disco, etc. También leerá la tabla FAT para estimar el uso del disco.
También puedes obtener información sobre un clúster específico usando -@:
fatcat disk.img -@ 1384
Esto te dará la dirección del clúster (desplazamiento del clúster en el sistema de archivos) y el valor del siguiente clúster en las dos tablas FAT.
Puedes usar -b para hacer una copia de seguridad de tus tablas FAT:
fatcat disk.img -b backup.fats
Y usar -p para escribirlas de nuevo:
fatcat disk.img -p backup.fats
Puedes escribir en las tablas FAT con -w y -v:
fatcat disk.img -w 123 -v 124
Esto escribirá 124 como valor del siguiente clúster de 123.
También puedes elegir la tabla con -t, 0 es ambas tablas, 1 es la primera y 2 la segunda.
Puedes ver la diferencia de las dos FAT usando -2:
# Viendo la diferencia
$ fatcat disk.img -2
Comparando las FAT
Las FAT son exactamente iguales
# Escribiendo 123 en el clúster 500 solo en FAT1
$ fatcat disk.img -w 500 -v 123 -t 1
Escribiendo siguiente clúster de 500 de 0 a 123
Escribiendo en FAT1
# Viendo la diferencia
$ fatcat disk.img -2
Comparando las FAT
[000001f4] 1:0000007b 2:00000000
Las FAT difieren
Parece fusionable
Puedes fusionar dos FAT usando -m. Para cada entrada diferente en la tabla,
si una es cero y la otra no, se elegirá la entrada no cero:
$ fatcat disk.img -m
Comenzando la fusión...
Fusionando clúster 500
Fusión completa, 1 clúster fusionado