Arquivos apagados e recuperação
Apagar um arquivo quase nunca apaga os dados; o sistema só marca o espaço como livre.
Quando você apaga um arquivo, o sistema de arquivos não apaga os bytes dele: só marca o espaço como livre e esconde o nome. Os dados ficam no disco até que outro arquivo seja gravado por cima.
No FAT, o sistema de pendrives, cartões de memória e disquetes antigos, isso é bem visível:
- O diretório tem uma entrada de 32 bytes por arquivo: nome com 8 + 3 letras (
FOTO JPG), atributos, datas, primeiro cluster (bytes 26 e 27) e tamanho (bytes 28 a 31), em little-endian. - Para apagar, o sistema troca o primeiro byte do nome por
E5(FOTO JPGviraåOTO JPG) e marca os clusters do arquivo como livres na tabela FAT. Os dados não são tocados.
Para achar onde fica o cluster N, use os números do primeiro setor do disco (boot sector): bytes por setor (bytes 11 e 12), setores por cluster (byte 13), setores reservados (14 e 15), número de tabelas FAT (16), entradas do diretório raiz (17 e 18) e setores por FAT (22 e 23). A área de dados começa depois dos setores reservados, das tabelas FAT e do diretório raiz, e o cluster 2 é o primeiro dela. Num disquete de 1,44 MB (512 bytes por setor, 1 setor por cluster, 1 setor reservado, 2 FATs de 9 setores, 224 entradas):
área de dados = (1 + 2 × 9) × 512 + 224 × 32 = 16896
cluster 10 = 16896 + (10 - 2) × 512 = 20992
Há dois jeitos de recuperar um arquivo apagado:
- Pelo diretório: ler a entrada apagada, pegar o primeiro cluster e o tamanho e recortar esses bytes. O The Sleuth Kit faz isso:
fls imagem.imglista os arquivos, inclusive os apagados (marcados com*), eicat imagem.img <número>recupera um deles. No terminal,dd if=imagem.img of=saida bs=1 skip=<início> count=<tamanho>recorta bytes à mão. - Pela assinatura (carving): procurar no disco inteiro os bytes que começam e terminam cada tipo de arquivo e recortar o que está entre eles. Um PNG começa com
89 50 4E 47e termina no blocoIEND, mais 4 bytes de CRC; um JPEG vai deFF D8 FFatéFF D9. O PhotoRec e a operação Extract Files do CyberChef fazem isso sozinhos, e no HexEd.it dá para procurar os bytes e recortar com Take bytes no CyberChef.
Se o começo de um arquivo foi estragado, a busca pela assinatura não o encontra, mas outras partes fixas do formato continuam lá (num PNG, o IHDR 12 bytes depois do início) e servem de âncora. Depois de recortar, conserte o começo e abra.
É assim que peritos recuperam fotos de cartões de memória e documentos que alguém apagou. Para apagar de verdade, é preciso sobrescrever os dados.