Recuperar arquivos txt baseados em strings conhecidas

3

Eu perdi vários arquivos txt, que contêm informações pessoais importantes. Eu os apaguei acidentalmente do disco rígido. Não tenho certeza de qual pasta eles estavam. Não sei quais nomes de arquivos eles tinham (pelo menos nem todos), mas sei algumas palavras-chave que provavelmente estão neles. Por exemplo, eu sei que a maioria deles contém a string diary (você pode imaginar por que esses arquivos são importantes para mim).

Tanto quanto eu posso entender, eu não posso usar ferramentas de escultura de arquivos como o Scalpel, uma vez que eles confiam na identificação de arquivos baseados em seus cabeçalhos e rodapés, mas os arquivos txt não possuem nenhum.

Então eu acho que minha única opção é procurar por essas strings conhecidas no dump bruto.

Eu tenho um dump da partição FAT32, um arquivo img de 150 GB, criado com dd .

Tanto quanto eu entendo FAT32 usa clusters de 4K. Portanto, qualquer arquivo menor que 4K, que é o caso da maioria dos arquivos txt que estou procurando, estará em um cluster. Alguns deles abrangerão dois ou mais grupos, talvez contíguos, talvez não.

Então, eu acho que preciso de uma ferramenta, que possa passar por cada cluster na imagem, e grep para uma lista de palavras-chave. Se o cluster contiver uma correspondência, ele deverá ser copiado para um arquivo, talvez apenas cluster001.txt, cluster002.txt, etc. Então, posso juntar manualmente esses clusters.

Gostaria de saber se meu raciocínio e minhas ideias fazem sentido?

Quais ferramentas eu posso usar para conseguir isso?

    
por Mads Skjern 30.12.2013 / 14:23

1 resposta

4

Não conheço nenhuma ferramenta de recuperação de arquivos que selecione arquivos com base em uma string específica que eles contêm, mas esses três métodos devem funcionar:

  1. Quando um arquivo em uma partição FAT32 é apagado, seu nome de arquivo não é sobrescrito. Somente o primeiro byte do nome do arquivo 8.3 é definido como E5 , marcando o arquivo como excluído. Isso não afetará a extensão, então os arquivos TXT ainda são facilmente reconhecíveis.

    Você pode usar qualquer ferramenta de recuperação de arquivos que permita especificar uma extensão (por exemplo, Recuva ), recuperar todos os arquivos TXT e, em seguida, pesquise diário em todos os arquivos recuperados.

    Como os arquivos de texto são (geralmente) pequenos, a recuperação dos arquivos de texto não deve levar muito tempo (provavelmente menos do que encontrá-los). Para uma partição de 150 GB, isso deve ser bastante rápido.

  2. Programas como o PhotoRec identificam os arquivos pelo conteúdo e tentam recuperá-los. Embora seja verdade que os arquivos de texto não possuem nenhum cabeçalho, o PhotoRec ainda consegue identificá-los (por exclusão, suponho).

    Novamente, você pode recuperar todos os arquivos de texto e pesquisar diário em todos os arquivos recuperados.

    A identificação dos arquivos de texto pelo seu conteúdo demorará mais do que pela extensão, mas também encontrará arquivos cuja entrada de diretório foi sobrescrita.

  3. Como você não espera que os arquivos de texto sejam grandes, você também pode procurar por diário no dump de partição e recuperar o cluster que o contém:

    sudo bash -c '
        for OFFSET in $(grep -abio diary /dev/sda3 | cut -d: -f 1); do
            ((CLUSTER = OFFSET / 4096))
            dd if=<imgfile> of=cluster$CLUSTER.txt bs=4096 skip=$CLUSTER count=1
        done
    '
    

    Como funciona:

    • grep -Pabio diary /dev/sda3 | cut -d: -f 1 imprimirá os byte offsets de todas as ocorrências da string diário no arquivo de imagem.

      A opção -i torna a pesquisa insensível a maiúsculas e minúsculas. A chave -P ativa expressões regulares compatíveis com Perl. Isso é necessário por causa de um bug em algumas versões do (GNU) grep que faz com que as buscas, que não diferenciam maiúsculas de minúsculas, sejam insuportavelmente lentas, a menos que você use o PCRE.

    • ((CLUSTER = OFFSET / 4096)) calcula o deslocamento em clusters a partir do deslocamento em bytes.

    • dd if=<imgfile> of=cluster$CLUSTER.txt bs=4096 skip=$CLUSTER count=1 escreve o cluster no deslocamento X em um arquivo chamado clusterX.txt .

    Por sua natureza, isso funcionará apenas para arquivos que se encaixam em um cluster. Você pode aumentar count para recuperar mais de um cluster e diminuir CLUSTER para recuperar clusters anteriores também.

    Para recuperar três clusters (um antes e um após o cluster que contém o diário ), faça as seguintes alterações:

    ((CLUSTER = OFFSET / 4096 - 1))
    
    dd ... count=3
    
por 30.12.2013 / 16:58