
Strumento forense per esplorare, estrarre e riparare filesystem FAT

Questo strumento è progettato per manipolare filesystem FAT, al fine di esplorarli, estrarli, ripararli, recuperarli e analizzarli forensemente. Attualmente supporta FAT12, FAT16 e FAT32.
Puoi compilare fatcat in questo modo:
mkdir build
cd build
cmake ..
make
E poi installarlo:
make install
Fatcat accetta un'immagine come argomento:
fatcat disk.img [options]
NOTA: a seconda della tua compilazione, potresti dover specificare le opzioni prima di disk.img, cioè fatcat [options] disk.img
Puoi specificare un offset nel file con -O, questo può essere utile se ci sono più partizioni su un dispositivo a blocchi, per esempio:
fatcat disk.img -O 1048576 [options]
Questo dirà a fatcat di iniziare dal 1048576° byte. Dai un'occhiata al tutorial sulle partizioni.
Puoi esplorare la partizione FAT usando l'opzione -l in questo modo:
$ fatcat disk.img -l /
Listing path /
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)
Puoi anche fornire un percorso come -l /some/directory.
Usando -L, puoi fornire un numero di cluster invece di un percorso, questo a volte può essere utile.
Se aggiungi -d, vedrai anche i file cancellati.
Nell'elenco, il prefisso è f o d per indicare se la riga riguarda un file o una directory.
Il c= indica il numero di cluster, s= indica la dimensione in byte (che dovrebbe essere uguale alla dimensione leggibile subito dopo).
La lettera h alla fine indica che il file dovrebbe essere nascosto.
La lettera d alla fine indica che il file è stato cancellato.
Puoi leggere un file usando -r, il file sarà scritto sull'output standard:
$ fatcat disk.img -r /hello.txt
Hello world!
$ fatcat disk.img -r /picture.jpg > save.jpg
Usando -R, puoi fornire un numero di cluster invece di un percorso, ma l'informazione sulla dimensione del file andrà persa e il file sarà arrotondato al numero di cluster che occupa, a meno che non si fornisca l'opzione -s per specificare la dimensione del file da leggere.
Puoi usare -x per estrarre le directory del filesystem FAT in una directory:
fatcat disk.img -x output/
Se vuoi estrarre da un certo cluster, fornisci il numero con -c.
Se fornisci -d per estrarre, verranno estratti anche i file cancellati.
Come spiegato sopra, i file cancellati possono essere trovati nell'elenco fornendo -d:
$ fatcat disk.img -l / -d
f 24/10/2013 12:13:24 delete_me.txt c=5764 s=16 (16B) d
Puoi esplorare e individuare un file o una directory cancellata interessante.
Per recuperare un file cancellato, usa semplicemente -r per leggerlo. Nota che il file prodotto verrà letto in modo contiguo dal sistema FAT originale e potrebbe essere danneggiato.
Per recuperare una directory cancellata, prendi nota del suo numero di cluster ed estraila come sopra:
# Se il cluster della tua directory cancellata è 71829
fatcat disk.img -x output/ -c 71829
Vedi anche: tutorial sul ripristino
Supponendo che il tuo disco abbia settori danneggiati, potresti voler eseguire un ripristino.
Il primo consiglio è fare una copia dei tuoi dati usando ddrescue, e salvare il tuo disco su un altro o in un file integro.
Quando i settori sono danneggiati, i loro byte verranno sostituiti con 0 nell'immagine di ddrescue.
Un primo approccio è provare a esplorare la tua immagine usando -l come sopra e controllare -i per scoprire se fatcat riconosce il disco come un sistema FAT.
Poi, puoi provare a dare un'occhiata a -2, per verificare se le tabelle di allocazione dei file differiscono, e se sembrano unibili. È molto probabile che siano unibili, in tal caso, puoi provare -m per unire le tabelle FAT, non dimenticare di farne un backup prima (vedi sotto).
Quando il tuo filesystem è danneggiato, ci sono file e directory persi che chiamiamo "orfani", perché non puoi raggiungerli dal sistema normale.
fatcat ti fornisce un'opzione per trovare questi nodi, eseguirà un'analisi automatica del tuo sistema ed esplorerà i settori allocati del tuo filesystem, questo si fa con -o.
Otterrai un elenco di directory e file, come questo:
There is 2 orphaned elements:
Directory clusters 4592 to 4592: 2 elements, 49B
File clusters 4611 to 4611: ~512B
Puoi quindi usare direttamente -L e -R per dare un'occhiata a quei file e directory:
$ fatcat disk.img -L 4592
Listing cluster 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)
Nota che i file orfani hanno una dimensione sconosciuta, ciò significa che se li leggi, otterrai un file che è un multiplo delle dimensioni del cluster.
Vedi anche: tutorial sui file orfani
Puoi usare fatcat per hackerare il tuo filesystem FAT
Il flag -i ti fornirà molte informazioni sul filesystem:
fatcat disk.img -i
Questo ti darà dati di intestazione come dimensioni dei settori, posizioni dei FAT, etichetta del disco ecc. Leggerà anche la tabella FAT per stimare l'utilizzo del disco.
Puoi anche ottenere informazioni su un cluster specifico usando -@:
fatcat disk.img -@ 1384
Questo ti darà l'indirizzo del cluster (offset del cluster nel filesystem) e il valore del cluster successivo nelle due tabelle FAT.
Puoi usare -b per fare il backup delle tue tabelle FAT:
fatcat disk.img -b backup.fats
E usare -p per riscriverlo:
fatcat disk.img -p backup.fats
Puoi scrivere nelle tabelle FAT con -w e -v:
fatcat disk.img -w 123 -v 124
Questo scriverà 124 come valore del cluster successivo di 123.
Puoi anche scegliere la tabella con -t, 0 sono entrambe le tabelle, 1 è la prima e 2 la seconda.
Puoi dare un'occhiata alla differenza tra i due FAT usando -2:
# Watching the diff
$ fatcat disk.img -2
Comparing the FATs
FATs are exactly equals
# Writing 123 in the 500th cluster only in FAT1
$ fatcat disk.img -w 500 -v 123 -t 1
Writing next cluster of 500 from 0 to 123
Writing on FAT1
# Watching the diff
$ fatcat disk.img -2
Comparing the FATs
[000001f4] 1:0000007b 2:00000000
FATs differs
It seems mergeable
Puoi unire due FAT usando -m. Per ogni voce diversa nella tabella, se una è zero e l'altra no, verrà scelto il valore non zero:
$ fatcat disk.img -m
Begining the merge...
Merging cluster 500
Merge complete, 1 clusters merged
Vedi anche: tutorial sulla correzione del FAT
Fatcat può correggere directory con concatenamento FAT danneggiato.
Per fare questo, usa -f. Verrà percorso l'intero albero del filesystem e le directory che non sono allocate nel FAT ma che fatcat può leggere verranno corrette nel FAT.
Puoi ottenere informazioni su una voce con -e:
fatcat disk.img -e /hello.txt
Questo mostrerà l'indirizzo della voce (non il file stesso), il riferimento al cluster e la dimensione del file (se non è una directory).
Puoi aggiungere il flag -c [cluster] per cambiare il cluster della voce e il flag -s [size] per cambiare la dimensione della voce.
Vedi anche: tutorial sul divertimento con il FAT
Puoi usare -k per cercare un riferimento a un cluster.
Puoi cancellare i dati dei settori non allocati, con zeri usando -z, o usando dati casuali con -S.
Ad esempio, i file cancellati diventeranno poi illeggibili.
Questo è sotto licenza MIT