Recuperando arquivos corrompidos enviados no modo FTP errado

3

Alguns arquivos foram enviados no modo errado para o FTP (via linha de comando). Acredito que tenho alguns arquivos binários que foram enviados no modo TEXT e agora não consigo abri-los.

Eu não tenho acesso aos arquivos originais, posso me recuperar disso? Existe alguma ferramenta que me permita obter os arquivos no formato correto?

    
por JPCosta 04.10.2010 / 13:28

3 respostas

2

Recentemente tive que enfrentar o mesmo problema. Linux - > Windows, modo ASCII. Eu terminei de escrever um programa em Python que permite a recuperação de binários transferidos ASCII. É um bruteforcer byte, e aqui está como funciona:

  1. Abra o arquivo danificado como fluxo de bytes.
  2. Encontre todas as ocorrências de 0d seguidas por 0a (ASCII 13, ASCII 10).
  3. Remova todas as ocorrências de 0d seguidas por 0a e armazene os endereços de bytes.
  4. Percorra cada um dos endereços para restaurar um número de 0ds no caso de eles estarem lá no binário, restaurar e tentar abrir (no meu caso eu estava lidando com arquivos bz2, e tinha uma verificação de algoritmo de soma de verificação CRC a integridade dos dados não compactados e combiná-los com o codificado no arquivo).

O número de possíveis pares válidos de 0d 0a byte em um binário não será muito alto; a probabilidade de um binário ter um par 0d 0a válido é bastante baixa. O tempo que um arquivo bz2 leva para corrigir esse método de força bruta é de menos de 10 segundos para arquivos com menos de 100kb. Eu não verifiquei com outros tipos de arquivos, mas é possível.

Eu não vou colar o código aqui, já que essa questão não é relacionada a programação, e isso era uma espécie de tarefa de competição e não acho que estou confortável em divulgar as fontes, mas se você precisar por favor me avise.

Felicidades e Feliz Natal a todos! :)

    
por 25.12.2010 / 07:52
4

Saber se é possível desfazer a destruição requer conhecer os sistemas operacionais envolvidos. As consequências dependem de qual combinação de sistemas operacionais que você usa no servidor e no cliente.

O pior problema é o caractere de fim de linha. O Windows usa um retorno de carro (valor ASCII 13) seguido por um avanço de linha (valor ASCII 10) enquanto o Linux usa apenas alimentação de linha.

O modo de texto Transferência por FTP traduz isso. O modo binário não. Que é onde entra a destruição.

Se a transferência fosse do Windows para o Linux, seria impossível determinar se um LF era originalmente um LF ou uma combinação de CR-LF. À medida que os dados são perdidos, desfazer a destruição é quase impossível.

    
por 04.10.2010 / 13:55
0

Como observado por outros, os dados estão corrompidos e potencialmente irrecuperáveis.

No entanto, 0x0D 0x0A não é uma seqüência de bytes particularmente comum na maioria dos formatos de arquivos binários [citação necessária!], então vale a pena tentar substituí-los para ver se isso corrige o arquivo.

O utilitário do fixgz faz exatamente isso. Apesar do nome, não tem nada específico para arquivos .gzip e pode ser usado em qualquer arquivo.

Boa sorte!

    
por 21.09.2015 / 14:38