Frage

Die gängigste Methode für komprimierte Dateien korrumpieren ist versehentlich eine ASCII-Modus FTP-Übertragung zu tun, die ein verursacht viele-zu-eins Wegwerfen von CR und / oder LF-Zeichen.

Natürlich gibt es Informationsverlust, und der beste Weg, um dieses Problem zu beheben ist, wieder zu übertragen, in FTP-Binär-Modus.

Wenn jedoch das Original verloren geht, und es ist wichtig, wie erzielbare sind die Daten?

[Eigentlich weiß ich schon, was ich denke, ist die beste Antwort (es ist sehr schwierig, aber manchmal möglich - werde ich später mehr schreiben) und die gemeinsamen Nicht-Antworten (viele off-the-shelf-Programme für CRCs Reparatur ohne Daten zu reparieren), aber ich dachte, es wäre interessant, diese Frage während der Stackoverflow beta-Phase zu testen und sehen, ob jemand auf dem erfolgreichen Wiederherstellungspfad oder entdeckt Werkzeuge, die ich weiß nicht, über.]

War es hilfreich?

Lösung

Von Bukys Software

  

Etwa 1 von 256 Bytes ist bekannt   wird beschädigt, und die Korruption   nur in Bytes auftreten mit den bekannten   value '\ 012'. So die Byte-Fehlerrate   beträgt 1/256 (0,39% des Eingangs) und 2/256   Bytes (0,78% des Eingangs) ist verdächtig.   Da aber nur drei Bits pro zertrümmert   Byte betroffen sind, die Bitfehlerrate   ist nur 3 / (256 * 8): 0,15% ist schlecht, 0,29%   suspekt ist.

     

...

     

Ein Fehler in dem komprimierten Eingang   stört die Dekompression für   alle nachfolgenden Bytes ... Die Tatsache, dass   der dekomprimierte Ausgang   so schnell erkennbar schlecht ist Ursache   für Hoffnung - die Suche nach dem richtigen   Antwort kann falsche Antworten identifizieren   schnell.

     

Schließlich verschiedene Techniken waren   kombiniert erfolgreich zu extrahieren   vernünftige Daten aus diesen Dateien:

     
      
  • Domain-spezifische Analyse der Felder und Strings in Anführungszeichen
  •   
  • Maschine aus früheren Daten mit geringer Wahrscheinlichkeit von Schäden zu lernen
  •   
  • Toleranz für Dateischäden durch andere Ursachen (z Platte voll, während   logging)
  •   
  • Die Look-Ahead zum Führen der Suche entlang der höchsten Wahrscheinlichkeit Wege
  •   
     

Diese Techniken identifizieren 75% der   notwendige Reparaturen mit Sicherheit und   der Rest sind erforscht   höchste Wahrscheinlichkeit zuerst, so dass   plausible Rekonstruktionen sind   sofort identifiziert.

Andere Tipps

Sie könnten versuchen, ein kleines Skript zu schreiben mit CRLFs alle den CRs zu ersetzen (die Richtung des trashing angenommen wurde CRLF zu CR), sie nach dem Zufall pro Block tauschen, bis die richtige crc hatte. Unter der Annahme, dass die Daten nicht besonders groß waren, denke ich, dass nicht alle Ihre CPU bis zum Wärmetod des Universums verwenden könnte abzuschließen.

Da es bestimmten Informationsverlust ist, ich weiß nicht, dass es ein besserer Weg gibt. Der Verlust in der Tschechischen Republik zu CRLF Richtung könnte etwas leichter sein, zurück zu rollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top