Question

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.

Évidemment, il y a une perte d'informations, et la meilleure façon de résoudre ce problème est de procéder à un nouveau transfert, en mode binaire FTP.

Cependant, si l'original est perdu, et 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 - j'en posterai plus plus tard), et les non-réponses courantes (beaucoup de programmes disponibles dans le commerce pour réparer les 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 suivi le chemin de la récupération réussie ou a découvert des outils que je ne connais pas.]

Était-ce utile?

La solution

Depuis Logiciel Bukys

Environ 1 octets sur 256 est connu pour être corrompu, et la corruption est connue pour se produire uniquement en octets avec la valeur « 012».Ainsi, le taux d'erreur d'octet est de 1/256 (0,39% de l'entrée) et 2/256 octets (0,78% de l'entrée) sont suspects.Mais comme seulement trois bits par octet brisé sont affectés, le taux d'erreur de bit n'est que de 3 / (256 * 8):0,15% est mauvais, 0,29% est suspect.

...

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

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

  • Analyse spécifique au domaine des champs et des chaînes entre guillemets
  • Apprentissage automatique à partir de données précédentes avec une faible probabilité de dommages
  • Tolérance pour les dommages aux fichiers dus à d'autres causes (par ex.disque plein pendant la journalisation)
  • Lookahead pour guider la recherche sur les chemins les plus probables

Ces techniques identifient 75% des réparations nécessaires avec certitude, et les autres sont explorés d'abord la plus élevée, de sorte que les reconstructions plausibles sont identifiées immédiatement.

Autres conseils

Vous pouvez essayer d'écrire un petit script pour remplacer tous les CR par des CRLF (en supposant que la direction de la suppression était CRLF vers CR), en les échangeant aléatoirement par bloc jusqu'à ce que vous ayez le bon crc.En supposant que les données ne soient pas particulièrement volumineuses, je suppose que cela pourrait ne pas utiliser tout votre processeur jusqu'à ce que la mort thermique de l'univers soit terminée.

Comme il y a une perte d’informations certaine, je ne sais pas s’il existe un meilleur moyen.La perte dans la direction CR vers CRLF pourrait être légèrement plus facile à annuler.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top