
Ferramenta de exploração, extração, reparo e análise forense de sistemas de arquivos FAT

Esta ferramenta foi projetada para manipular sistemas de arquivos FAT, a fim de explorar, extrair, reparar, recuperar e realizar análises forenses neles. Atualmente suporta FAT12, FAT16 e FAT32.
Você pode construir o fatcat desta forma:
mkdir build
cd build
cmake ..
make
E então instalá-lo:
make install
O fatcat recebe uma imagem como argumento:
fatcat disk.img [options]
NOTA: de acordo com sua compilação, você pode ter que especificar as opções antes de disk.img, ou seja, fatcat [options] disk.img
Você pode especificar um deslocamento no arquivo com -O, isso pode ser útil se houver múltiplas partições em um dispositivo de bloco, por exemplo:
fatcat disk.img -O 1048576 [options]
Isso informará ao fatcat para começar no 1048576º byte. Dê uma olhada no tutorial de partição.
Você pode explorar a partição FAT usando a opção -l assim:
$ 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)
Você também pode fornecer um caminho como -l /algum/diretorio.
Usando -L, você pode fornecer um número de cluster em vez de um caminho, isso pode ser útil algumas vezes.
Se você adicionar -d, também verá arquivos deletados.
Na listagem, o prefixo é f ou d para indicar se a linha se refere a um arquivo ou um diretório.
O c= indica o número do cluster, s= indica o tamanho em bytes (que deve ser o mesmo do tamanho formatado logo após).
A letra h no final indica que o arquivo deve estar oculto.
A letra d no final indica que o arquivo foi deletado.
Você pode ler um arquivo usando -r, o arquivo será escrito na saída padrão:
$ fatcat disk.img -r /hello.txt
Hello world!
$ fatcat disk.img -r /picture.jpg > save.jpg
Usando -R, você pode fornecer um número de cluster em vez de um caminho, mas a informação de tamanho do arquivo será perdida e o arquivo será arredondado para o número de clusters que ele ocupa, a menos que você forneça a opção -s para especificar o tamanho do arquivo a ser lido.
Você pode usar -x para extrair os diretórios do sistema de arquivos FAT para um diretório:
fatcat disk.img -x output/
Se você quiser extrair de um cluster específico, forneça-o com -c.
Se você fornecer -d para extrair, arquivos deletados também serão extraídos.
Conforme explicado acima, arquivos deletados podem ser encontrados na listagem fornecendo -d:
$ fatcat disk.img -l / -d
f 24/10/2013 12:13:24 delete_me.txt c=5764 s=16 (16B) d
Você pode explorar e identificar um arquivo ou um diretório deletado interessante.
Para recuperar um arquivo deletado, simplesmente use -r para lê-lo. Observe que o arquivo produzido será lido de forma contígua do sistema FAT original e pode estar corrompido.
Para recuperar um diretório deletado, anote seu número de cluster e extraia-o como acima:
# Se o cluster do seu diretório deletado é 71829
fatcat disk.img -x output/ -c 71829
Veja também: tutorial de desfazer exclusão
Supondo que seu disco tenha setores quebrados, você pode querer realizar recuperação nele.
O primeiro conselho é fazer uma cópia dos seus dados usando ddrescue, e salvar seu disco em outro ou em um arquivo íntegro.
Quando os setores estão quebrados, seus bytes serão substituídos por 0s na imagem ddrescue.
Uma primeira maneira é tentar explorar sua imagem usando -l como acima e verificar -i para descobrir se o fatcat reconhece o disco como um sistema FAT.
Em seguida, você pode tentar dar uma olhada em -2, para verificar se as tabelas de alocação de arquivos diferem, e se elas parecem mescláveis. É muito provável que sejam mescláveis; nesse caso, você pode tentar -m para mesclar as tabelas FAT, não se esqueça de fazer backup antes (veja abaixo).
Quando seu sistema de arquivos está quebrado, existem arquivos e diretórios perdidos que chamamos de "órfãos", porque você não pode alcançá-los pelo sistema normal.
O fatcat fornece uma opção para encontrar esses nós; ele fará uma análise automatizada do seu sistema e explorará setores alocados do seu sistema de arquivos; isso é feito com -o.
Você obterá uma lista de diretórios e arquivos, assim:
There is 2 orphaned elements:
Directory clusters 4592 to 4592: 2 elements, 49B
File clusters 4611 to 4611: ~512B
Você pode então usar diretamente -L e -R para dar uma olhada nesses arquivos e diretórios:
$ 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)
Observe que arquivos órfãos têm um tamanho desconhecido; isso significa que, se você lê-los, obterá um arquivo que é múltiplo do tamanho do cluster.
Veja também: tutorial de arquivos órfãos
Você pode usar o fatcat para hackear seu sistema de arquivos FAT
A opção -i fornecerá muitas informações sobre o sistema de arquivos:
fatcat disk.img -i
Isso fornecerá dados de cabeçalho como tamanhos de setores, locais das FATs, rótulo do disco, etc. Ele também lerá a tabela FAT para estimar o uso do disco.
Você também pode obter informações sobre um cluster específico usando -@:
fatcat disk.img -@ 1384
Isso fornecerá o endereço do cluster (deslocamento do cluster no sistema de arquivos) e o valor do próximo cluster nas duas tabelas FAT.
Você pode usar -b para fazer backup de suas tabelas FAT:
fatcat disk.img -b backup.fats
E use -p para escrevê-lo de volta:
fatcat disk.img -p backup.fats
Você pode escrever nas tabelas FAT com -w e -v:
fatcat disk.img -w 123 -v 124
Isso escreverá 124 como valor do próximo cluster de 123.
Você também pode escolher a tabela com -t; 0 são ambas as tabelas, 1 é a primeira e 2 é a segunda.
Você pode dar uma olhada no diff das duas FATs usando -2:
# Assistindo o diff
$ fatcat disk.img -2
Comparing the FATs
FATs are exactly equals
# Escrevendo 123 no 500º cluster apenas na FAT1
$ fatcat disk.img -w 500 -v 123 -t 1
Writing next cluster of 500 from 0 to 123
Writing on FAT1
# Assistindo o diff
$ fatcat disk.img -2
Comparing the FATs
[000001f4] 1:0000007b 2:00000000
FATs differs
It seems mergeable
Você pode mesclar duas FATs usando -m. Para cada entrada diferente na tabela, se uma for zero e a outra não, o valor não nulo será escolhido:
$ fatcat disk.img -m
Begining the merge...
Merging cluster 500
Merge complete, 1 clusters merged
Veja também: tutorial de correção de FAT
O Fatcat pode corrigir diretórios com encadeamento FAT quebrado.
Para fazer isso, use -f. Toda a árvore do sistema de arquivos será percorrida e os diretórios que estão desalocados na FAT mas que o fatcat pode ler serão corrigidos na FAT.
Você pode obter informações sobre uma entrada com -e:
fatcat disk.img -e /hello.txt
Isso exibirá o endereço da entrada (não o arquivo em si), a referência do cluster e o tamanho do arquivo (se não for um diretório).
Você pode adicionar a opção -c [cluster] para alterar o cluster da entrada e a opção -s [tamanho] para alterar o tamanho da entrada.
Veja também: tutorial de diversão com FAT
Você pode usar -k para pesquisar uma referência de cluster.
Você pode apagar dados de setores não alocados, com zeros usando -z, ou usando dados aleatórios usando -S.
Por exemplo, arquivos deletados se tornarão ilegíveis.
Isso está sob licença MIT