O arquivo está misteriosamente vazio. Opções para recuperar?

9

Vi várias postagens sobre a recuperação de arquivos excluídos, mas essa situação é diferente. Minha esposa tinha um arquivo chamado Journal.odt, no qual mantinha muitas informações pessoais importantes, como memórias especiais sobre nossos filhos. No outro dia, quando ela tentou abri-lo no OpenOffice, ele reclamou do formato. Eu a mandei cancelar e voltar. Quando eu cato arquivo está completamente vazio. lsdiz que o arquivo é 0 bytes.

Se ela tivesse selecionado acidentalmente todo o texto do arquivo, pressionado backspace e o salvado, ainda haveria as meta informações do OpenOffice no arquivo.

Desliguei imediatamente o laptop dela para evitar fazer mais alterações no disco até pensar em algo para fazer.

Eu fiz algumas coisas complicadas no passado, como usar ddpara recuperar texto bruto do disco, mas não tenho idéia do que fazer aqui. Como os arquivos odt não são texto simples, não posso simplesmente canalizar todo o disco através do grep.

Todas as sugestões serão muito apreciadas.

Além disso, se alguém tiver alguma idéia do que pode ter dado errado, eu adoraria ouvi-lo.

obrigado

jcbwlkr
fonte
11
Seria diferente se o arquivo fosse excluído acidentalmente ou algo assim, mas quando em um editor de texto, etc., o salvamento geralmente grava "no local" limpando efetivamente qualquer coisa que possa ter sido recuperada com a recuperação forense forense. Teria sido melhor se você não desligasse o sistema imediatamente, aposto que algumas teclas de controle + z (integradas na função "desfazer" no Open Office) teriam corrigido o problema.
Tim
@ Tim Entendo o seu ponto, mas infelizmente o arquivo havia sido esvaziado dias antes. O horário da última modificação no arquivo ocorreu alguns dias antes. Na minha descrição, quando ela abriu no OO, ele já estava vazio. Obrigado embora.
Jcbwlkr
2
Não tentando bater em um cavalo morto ou chutar um homem quando ele estiver abatido, mas suspeito que essa experiência fará com que você procure uma solução de backup. Dê uma olhada em "Areca Backup" para um aplicativo de backup simples e compatível com Linux.
Tim
Disco cheio, talvez? Verifique comdf -h
jippie
@ Tim Se o arquivo tiver 0 bytes, não é um documento OO; Ctrl+Znão teria feito nada, pois o arquivo não foi salvo como está no OO. @ Jacobwalker0814 Os arquivos ODT são arquivos zip, portanto, ferramentas de recuperação como o testdisk têm a chance de encontrá-los; mas não há garantia e, mesmo que os dados ainda estejam lá, você poderá percorrer muitos outros arquivos zip. E para o futuro, faça backup!
Gilles 'SO- stop be evil'

Respostas:

3

Se você estiver usando o sistema de arquivos ext3, tente seguir o HOWTO de Carlo Wood

Em poucas palavras,

  • Use ext3grep $ IMAGE --ls --inode 2 | grep your_file para encontrar o arquivo que você está procurando (onde $ IMAGE é sua partição, por exemplo / dev / sda2)
  • Localize o bloco do sistema de arquivos que contém o diário de espaço não alocado.
  • Encontre todos os descritores de periódicos referenciando o bloco que foram encontrados anteriormente.
  • Copie o bloco com dd.
  • Edite o arquivo para excluir os zeros à direita.
  • cat o arquivo onde quer que você queira

Da fonte:

"O capítulo Exemplo de recuperação manual

No exemplo a seguir, recuperaremos manualmente um arquivo pequeno. Somente saída parcial é fornecida para economizar espaço e tornar o exemplo mais legível.

Usando ext3grep $ IMAGE --ls --inode, encontramos o nome do arquivo que queremos recuperar:

$ ext3grep $ IMAGE --ls - nó 2 | grep carlo 3 end d 195457 D 1202352103 qui Fev 7 03:41:43 2008 drwxr-xr-x carlo

$ ext3grep $ IMAGE --ls --inode 195457 | grep 'bin $' | head -n 1 34 35 d 309540 D 1202352104 qui fev 7 03:41:44 2008 drwxr-xr-x bin

$ ext3grep $ IMAGE --ls --inode 309540 | grep start_azureus 9 10 r 309631 D 1202351093 qui fev 7 03:24:53 2008 rrwxr-xr-x start_azureus

Obviamente, o inode 309631 é apagado e não temos números de bloco para este arquivo:

$ ext3grep $ IMAGE --print --inode 309631 [...] O inode não está alocado Grupo: 19 Id da geração: 2771183319 uid / gid: 1000/1000 modo: rrwxr-xr-x tamanho: 0 número de links: 0 setores: 0 (-> 0 blocos indiretos).

Tempos de Inode: Acessados: 1202350961 = Qui 7 de fevereiro 03:22:41 2008 Arquivo Modificado: 1202351093 = Qui 7 de fevereiro 03:24:53 2008 Inode Modificado: 1202351093 = Qui 7 de fevereiro 03:24:53 2008 Tempo de exclusão: 1202351093 = Qui 7 de fevereiro 03:24:53 2008

Blocos diretos:

Portanto, tentaremos procurar uma cópia mais antiga no diário. Primeiro, encontramos o bloco do sistema de arquivos que contém este inode:

$ ext3grep $ IMAGE --inode-para-bloquear 309631 | grep reside O inode 309631 reside no bloco 622598 no deslocamento 0xf00.

Em seguida, encontramos todos os descritores de diário que referenciam o bloco 622598:

$ ext3grep $ IMAGE --journal --block 622598 [...] Descritores de periódicos que referenciam o bloco 622598: 4381294 26582 4381311 28693 4381313 28809 4381314 28814 4381321 29308 4381348 30676 4381349 30986 4381350 31299 43813 43813 43813 43813 43813 43813 438 13 43 43 9 13 43 43 43 43 42 43 42 43 42 43 42 44 44 44 44 44 44 44 54 44 54 44 54 44 9 9 9 9 9 9 9 9 9 9 9 8 9 8 8 8 8 7 8 7 8 9 9 9 8 9 8 8 8 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 8 8 8 8 7 8 7 8 7 8 7 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 4 4 4 4 4 5 4 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 ... 4382137 6672 4382138 7536 4382139 7984 4382140 8931

Isso significa que a transação com o número de sequência 4381294 possui uma cópia do bloco 622598 no bloco 26582 e assim por diante. O maior número de sequência, na parte inferior, deve ser o último dado gravado no disco e, portanto, o bloco 8931 deve ser o mesmo do bloco atual 622598. Para encontrar a última cópia não excluída, é necessário iniciar na parte inferior e trabalhar para cima.

Se você tentar imprimir um bloco desse tipo, o ext3grep reconhecerá que é um bloco de uma tabela de inodes e imprimirá o conteúdo de todos os 32 inodes nela. No entanto, apenas desejamos ver o inode 309631; então usamos um grep inteligente:

$ ext3grep $ IMAGE --print --block 8931 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- ID da geração: 2771183319 uid / gid: modo 1000/1000: rrwxr-xr-x tamanho: 0 num de links: 0 setores: 0 (-> 0 blocos indiretos).

Tempos de Inode: Acessados: 1202350961 = Qui 7 de fevereiro 03:22:41 2008 Arquivo Modificado: 1202351093 = Qui 7 de fevereiro 03:24:53 2008 Inode Modificado: 1202351093 = Qui 7 de fevereiro 03:24:53 2008 Tempo de exclusão: 1202351093 = Qui 7 de fevereiro 03:24:53 2008

Blocos diretos:

É realmente o mesmo que vimos no bloco 622598. A seguir, examinamos números de sequência menores até encontrarmos um com um tempo de exclusão 0. O primeiro que encontramos (de baixo para cima) é o bloco 6073:

$ ext3grep $ IMAGE --print --block 6073 | grep -A15 'Inode 309631' -------------- Inode 309631 ----------------------- ID da geração: 2771183319 uid / gid: modo 1000/1000: rrwxr-xr-x tamanho: 40 num de links: 1 setores: 8 (-> 0 blocos indiretos).

Tempos de inode: acessados: 1202350961 = qui 7 de fev 03:22:41 2008 arquivo modificado: 1189688692 = qui 13 de setembro 15:04:52 2007 modificado inode: 1189688692 = qui 13 de setembro 15:04:52 2007 Tempo de exclusão: 0

Blocos diretos: 645627

O exposto acima é automatizado e pode ser feito muito mais rápido com a opção de linha de comando --show-journal-inodes. Essa opção localiza o bloco ao qual o inode pertence, localiza todas as cópias desse bloco no diário e, subsequentemente, imprime apenas o inode solicitado de cada um desses blocos (cada um deles contém 32 inodes, como você sabe), eliminando duplicatas :

$ ext3grep $ IMAGE --show-journal-inodes 309631 Número de grupos: 75 Bloco de diário mínimo / máximo: 1115/35026 Carregando descritores de diário ... done Transação de diário 4381435, alguns blocos de dados podem ter sido perdidos nessa transação. Número de descritores no periódico: 30258; números de sequência min / max: 4379495/4382264 Cópias do inode 309631 encontradas no diário:

-------------- Inode 309631 ----------------------- ID da geração: 2771183319 uid / gid: 1000/1000 mode: rrwxr-xr-x tamanho: 0 num de links: 0 setores: 0 (-> 0 blocos indiretos).

Tempos de Inode: Acessados: 1202350961 = Qui 7 de fevereiro 03:22:41 2008 Arquivo Modificado: 1202351093 = Qui 7 de fevereiro 03:24:53 2008 Inode Modificado: 1202351093 = Qui 7 de fevereiro 03:24:53 2008 Tempo de exclusão: 1202351093 = Qui 7 de fevereiro 03:24:53 2008

Blocos diretos:

-------------- Inode 309631 ----------------------- ID da geração: 2771183319 uid / gid: 1000/1000 mode: rrwxr-xr-x size: 40 num de links: 1 setores: 8 (-> 0 blocos indiretos).

Tempos de inode: acessados: 1202350961 = qui 7 de fev 03:22:41 2008 arquivo modificado: 1189688692 = qui 13 de setembro 15:04:52 2007 modificado inode: 1189688692 = qui 13 de setembro 15:04:52 2007 Tempo de exclusão: 0

Blocos diretos: 645627

O arquivo é realmente pequeno: apenas um bloco. Copiamos esse bloco com dd, como mostrado anteriormente:

$ dd if = $ IMAGE bs = 4096 contagem = 1 pular = 645627 de = bloco.645627 1 + 0 registros em 1 + 0 registra 4096 bytes (4,1 kB) copiados, 0,0166104 segundos, 247 kB / s

e edite o arquivo para excluir os zeros à direita ou copie os primeiros 40 bytes (o tamanho especificado do arquivo):

$ dd if = block.645627 bs = 1 contagem = 40 de = start_azureus 40 + 0 registros em 40 + 0 registros fora 40 bytes (40 B) copiados, 0,000105397 segundos, 380 kB / s

$ cat start_azureus cd / usr / src / azureus / azureus ./azureus e

Recuperado!"

java_xof
fonte
Eu adoraria olhar para isso, mas o link parece morto.
jcbwlkr
3
Não parece morto para mim.
Sr. Lister
Sim, também posso acessá-lo.
Java_xof 24/07/12
Está funcionando bem agora. Definitivamente não era mais cedo. Quem sabe? Obrigado java. Eu vou dar uma olhada.
Jcbwlkr
Não tem problema, espero que isso ajuda u, sem ofensa, mas eu sei algo sobre a esposa interação <-> computador;)
java_xof
2

Tente testdisk e photorec , mas a maneira como entendo sua escrita é provavelmente a maneira mais difícil de aprender o valor dos backups regulares. Além disso, convém inicializar a partir do CD para impedir que o disco rígido seja alterado ainda mais. Pessoalmente, gosto do System Rescue Disk para isso, mas é amplamente baseado em linha de comando.

jippie
fonte
1

Use o Caine, uma distribuição linux especial para análise forense digital. É uma abundância de ferramentas para recuperação de arquivos e disco rígido.

PsyStyle
fonte
Obrigado. Vou dar uma olhada nessa distro e ver se ela tem alguma coisa. Você tem alguma recomendação sobre ferramentas específicas ou maneiras de abordar o problema? O problema aqui é que o arquivo não foi excluído, o que muitas ferramentas parecem abordar; apenas perdeu seu conteúdo.
jcbwlkr
11
O Open Office às vezes cria um arquivo oculto que contém o documento salvo anteriormente. Se tiver sorte, você pode tentar recuperá-lo usando, por exemplo "extundelete" ou "testdisk" cgsecurity.org/wiki/TestDisk
PsyStyle
Procure em ~ / .openoffice.org / 3 / user / backup / ou ~ / .libreoffice.org / 3 / user / backup /. Escrevi um script para limpar esses diretórios, para que coisas sensíveis que excluí ainda não existiam.
31712 Joe