2008-09-12 9 views
5

La méthode la plus courante pour corrompre les fichiers compressés consiste à effectuer par inadvertance un transfert FTP en mode ASCII, ce qui provoque une suppression de plusieurs à un des caractères CR et/ou LF.Récupérer des fichiers zip ou gzip corrompus?

De toute évidence, il y a une perte d'information, et la meilleure façon de résoudre ce problème est de transférer de nouveau, en mode binaire FTP.

Cependant, si l'original est perdu et que c'est important, dans quelle mesure les données sont-elles récupérables? [En fait, je sais déjà ce que je pense être la meilleure réponse (c'est très difficile mais parfois possible - je posterai plus tard), et les non-réponses habituelles (beaucoup de programmes prêts à l'emploi pour réparer). CRC sans réparer les données), mais j'ai pensé qu'il serait intéressant d'essayer cette question pendant la période bêta de stackoverflow, et de voir si quelqu'un d'autre a descendu le chemin de récupération réussie ou découvert des outils inconnus.]

Répondre

4

De Bukys Software

environ 1 à 256 octets est connu corrompre, et la corruption est connu pour se produire seulement en octets avec la valeur « \ 012 ». Ainsi, le taux d'erreur des octets est 1/256 (0,39% de l'entrée), et 2/256 octets (0,78% de l'entrée) sont suspects. Mais puisque seulement trois bits par octet brisé sont affectés, le taux d'erreur binaire est seulement 3/(256 * 8): 0,15% est mauvais, 0,29% est suspect.

...

Une erreur dans l'entrée comprimé perturbe le processus de décompression pour tous les octets suivants ... Le fait que la sortie décompressé est mauvaise si vite reconnue est la cause d'espoir - une recherche de la bonne réponse peut identifier les mauvaises réponses rapidement.

En fin de compte, plusieurs techniques ont été combinées pour extraire avec succès des données raisonnables à partir de ces fichiers:

  • analyse syntaxique spécifique au domaine des champs et des chaînes citées
  • machine d'apprentissage à partir des données précédentes avec une faible probabilité de dommages
  • Tolérance aux dommages de fichiers dus à d'autres causes (par ex.disque plein en exploitation forestière)
  • Lookahead pour guider la recherche le long des chemins plus haute probabilité

Ces techniques identifient 75% des réparations nécessaires avec certitude, et le reste sont explorées plus haut probabilité- d'abord, de sorte que reconstructions plausibles sont identifiées immédiatement.

1

Vous pouvez essayer d'écrire un petit script pour remplacer tous les CR avec CRLF (en supposant que la direction de la corbeille était CRLF à CR), en les échangeant aléatoirement par bloc jusqu'à ce que vous ayez le bon CRC. En supposant que les données n'étaient pas particulièrement grandes, je suppose que cela pourrait ne pas utiliser tout votre processeur jusqu'à ce que la mort thermique de l'univers soit complète.

Comme il y a une perte d'information certaine, je ne sais pas s'il existe une meilleure solution. La perte dans la direction CR vers CRLF peut être légèrement plus facile à annuler.

Questions connexes