Pular para o conteúdo
Todos os conceitos

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 JPG vira å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:

  1. 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.img lista os arquivos, inclusive os apagados (marcados com *), e icat 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.
  2. 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 47 e termina no bloco IEND, mais 4 bytes de CRC; um JPEG vai de FF D8 FF até 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.
2 · pela assinatura: de FF D8 FF até FF D9 área de dados boot FAT 1 FAT 2 diretório raiz 2 3 … 10 FF D8 FF 11 … 12 FF D9 0 16896 20992 na FAT: 10 a 12 livres a entrada de 32 bytes da foto E5 OTO    JPG … 1º cluster 0A 00 tamanho o F virou E5: apagado 1 · pelo diretório
Apagar a foto só troca o F do nome por E5 e marca os clusters 10 a 12 como livres na FAT; os bytes continuam lá e podem ser achados pelo diretório (1º cluster 10, na posição 20992) ou pela assinatura do JPEG.

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.

Aparece nestes desafios