Wiederherstellen beschädigter Dateien, die im falschen FTP-Modus hochgeladen wurden

Wiederherstellen beschädigter Dateien, die im falschen FTP-Modus hochgeladen wurden

Einige Dateien wurden im falschen Modus auf den FTP hochgeladen (über die Befehlszeile). Ich glaube, ich habe einige Binärdateien, die im TEXT-Modus hochgeladen wurden, und jetzt kann ich sie nicht öffnen.

Ich habe keinen Zugriff auf die Originaldateien. Kann ich das irgendwie wiederherstellen? Gibt es ein Tool, mit dem ich die Dateien im richtigen Format wiederherstellen kann?

Antwort1

Ich hatte vor kurzem dasselbe Problem. Linux -> Windows, ASCII-Modus. Ich habe ein Programm in Python fertig geschrieben, mit dem man per ASCII übertragene Binärdateien wiederherstellen kann. Es ist ein Byte-Bruteforcer, und so funktioniert es:

  1. Beschädigtes Archiv als Bytestream öffnen.
  2. Suchen Sie alle Vorkommen von 0d gefolgt von 0a (ASCII 13, ASCII 10).
  3. Entfernen Sie alle Vorkommen von 0d gefolgt von 0a und speichern Sie die Byteadressen.
  4. Gehen Sie alle Adressen durch, um eine Anzahl von 0ds wiederherzustellen, falls diese in der Binärdatei vorhanden sein sollten, stellen Sie sie wieder her und versuchen Sie, sie zu öffnen (in meinem Fall arbeitete ich mit bz2-Archiven und ließ einen CRC-Prüfsummenalgorithmus die Integrität der unkomprimierten Daten prüfen und sie mit den im Archiv fest codierten Daten abgleichen).

Die Anzahl der möglichen gültigen 0d 0a-Bytepaare in einer Binärdatei wird nicht sehr hoch sein; die Wahrscheinlichkeit, dass eine Binärdatei ein gültiges 0d 0a-Paar enthält, ist ziemlich gering. Die Zeit, die zum Reparieren eines bz2-Archivs mit dieser Brute-Force-Methode benötigt wird, beträgt bei Dateien unter 100 KB weniger als 10 Sekunden. Ich habe es nicht mit anderen Dateitypen überprüft, aber es ist möglich.

Ich werde den Code hier nicht einfügen, da diese Frage nichts mit Programmierung zu tun hat und es sich um eine Art Wettbewerbsaufgabe handelte. Ich glaube nicht, dass ich mich wohl dabei fühle, die Quellen öffentlich zu machen, aber wenn Sie es benötigen, lassen Sie es mich bitte wissen.

Prost und allen frohe Weihnachten! :)

Antwort2

Um zu wissen, ob die Zerstörung rückgängig gemacht werden kann, muss man die beteiligten Betriebssysteme kennen. Die Folgen hängen davon ab, welche Betriebssystemkombination man auf Server und Client verwendet.

Das größte Problem ist das Zeilenendezeichen. Windows verwendet einen Wagenrücklauf (ASCII-Wert 13), gefolgt von einem Zeilenvorschub (ASCII-Wert 10), während Linux nur den Zeilenvorschub verwendet.

Die FTP-Übertragung im Textmodus übersetzt dies. Der Binärmodus tut dies nicht. Und hier kommt die Zerstörung ins Spiel.

Wenn die Übertragung von Windows auf Linux erfolgt, ist es unmöglich festzustellen, ob ein LF ursprünglich ein LF oder eine Kombination aus CR-LF war. Da Daten verloren gehen, ist es nahezu unmöglich, die Zerstörung rückgängig zu machen.

Antwort3

Wie bereits von anderen angemerkt, sind die Daten beschädigt und möglicherweise nicht wiederherstellbar.

Allerdings ist 0x0D 0x0A in den meisten binären Dateiformaten keine besonders häufige Bytefolge [Quellenangabe erforderlich!], daher ist es einen Versuch wert, sie zu ersetzen, um zu sehen, ob das Problem dadurch behoben wird.

DerFixgz-Dienstprogrammtut genau das. Trotz seines Namens hat es nichts Spezifisches für .gzip-Dateien und kann für jede Datei verwendet werden.

Viel Glück!

verwandte Informationen