Pergunta

O método mais comum para corromper arquivos compactados é fazer inadvertidamente uma transferência FTP no modo ASCII, o que causa uma destruição de muitos para um de caracteres CR e/ou LF.

Obviamente há perda de informações, e a melhor forma de resolver esse problema é transferir novamente, em modo binário FTP.

No entanto, se o original for perdido, e isso é importante, quão recuperáveis ​​serão os dados?

[Na verdade, eu já sei o que considero ser a melhor resposta (é muito difícil, mas às vezes possível - postarei mais tarde) e as não-respostas comuns (muitos programas disponíveis no mercado para reparar CRCs sem reparar dados ), mas pensei que seria interessante tentar esta questão durante o período beta do stackoverflow e ver se alguém seguiu o caminho da recuperação bem-sucedida ou descobriu ferramentas que eu não conheço.]

Foi útil?

Solução

De Bukys Software

Sabe -se que aproximadamente 1 em 256 bytes estão corrompidos, e a corrupção é conhecida apenas em bytes com o valor ' 012'.Portanto, a taxa de erro de bytes é de 1/256 (0,39% da entrada) e 2/256 bytes (0,78% da entrada) são suspeitos.Mas como apenas três bits por byte esmagado são afetados, a taxa de erro de bit é de apenas 3/(256*8):0,15% é ruim, 0,29% é suspeito.

...

Um erro na entrada compactada interrompe o processo de descompressão para todos os bytes subsequentes ... o fato de que a saída descomprimida é reconhecivelmente ruim, tão rapidamente é motivo de esperança - uma pesquisa pela resposta correta pode identificar respostas erradas rapidamente.

Por fim, várias técnicas foram combinadas para extrair com sucesso dados razoáveis ​​desses arquivos:

  • Análise específica de domínio de campos e strings entre aspas
  • Aprendizado de máquina a partir de dados anteriores com baixa probabilidade de danos
  • Tolerância para danos em arquivos devido a outras causas (por exemplo,disco cheio durante o log)
  • Lookahead para orientar a pesquisa ao longo dos caminhos de maior probabilidade

Essas técnicas identificam 75% dos reparos necessários com certeza, e o restante é explorado com maior probabilidade primeiro, de modo que as reconstruções plausíveis são identificadas imediatamente.

Outras dicas

Você poderia tentar escrever um pequeno script para substituir todos os CRs por CRLFs (assumindo que a direção da lixeira era CRLF para CR), trocando-os aleatoriamente por bloco até obter o CRC correto.Supondo que os dados não sejam particularmente grandes, acho que isso pode não usar toda a sua CPU até que a morte térmica do universo seja concluída.

Como há perda definitiva de informações, não sei se existe uma maneira melhor.A perda na direção CR para CRLF pode ser um pouco mais fácil de reverter.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top