Восстановление поврежденных файлов загружается в неправильном режиме FTP

Некоторые файлы были загружены в неправильном режиме на FTP (через командную строку). Я полагаю, что у меня есть некоторые двоичные файлы, которые были загружены в Текстовом режиме, и теперь я не могу открыть их.

У меня нет доступа к исходным файлам, я могу так или иначе восстановиться с этого? Есть ли некоторый инструмент, который позволит мне получать файлы в их правильном формате?

3
задан 25.05.2015, 19:29

2 ответа

Я недавно должен был столкнуться с той же проблемой. Linux-> Windows, режим ASCII. Я закончил писать программу в Python, который допускает восстановление переданных двоичных файлов ASCII. Это - байт bruteforcer и здесь - как это работает:

  1. Открытый поврежденный архив как поток байтов.
  2. Найдите все случаи 0d сопровождаемыми 0a (ASCII 13, ASCII 10).
  3. Удалите все случаи 0d, сопровождаемого 0a, и сохраните адреса байта.
  4. Цикл через каждый из адресов для восстановления многого 0d в случае, если они, как предполагалось, были там в двоичном файле, восстановлении и пытались открыться (в моем случае я имел дело с архивами bz2, и имел алгоритм контрольной суммы CRC, проверяют целостность несжатых данных и соответствуют ему одному hardcoded в архив).

Количество возможного допустимого 0d 0a пары байта в двоичном файле не будет очень высоко; вероятность двоичного файла, имеющего допустимый 0d 0a пара, является довольно низкой. Время, которое архив bz2 занимает для фиксации с этим методом "в лоб", младше 10 секунд для файлов менее чем 100 КБ. Я не проверил его с другими типами файлов, но это возможно.

Я не собираюсь вставлять код здесь, так как этот вопрос не программирует связанный, и это было своего рода задачей конкуренции, и я не думаю, что я доволен взятием исходной общественности, но если Вы действительно требуете его, сообщите мне.

С наилучшими пожеланиями, и С Рождеством все!:)

2
ответ дан 07.12.2019, 23:44

Знание, возможно ли отменить разрушение, требует знания включенных операционных систем. Последствия зависят от того, какую комбинацию операционных систем Вы используете на сервере и клиенте.

Худшей проблемой является символ конца строки. Windows использует возврат каретки (значение ASCII 13) сопровождаемый переводом строки (значение ASCII 10), в то время как Linux использует только перевод строки.

Текстовый режим передача FTP переводит это. Режим двоичного счета не делает. Который является, где разрушение входит.

Если бы передача пошла от Windows до Linux, то было бы невозможно определить, был ли LF первоначально LF или комбинацией CR-LF. Поскольку данные потеряны, отменение разрушения почти невозможно.

4
ответ дан 07.12.2019, 23:44

Теги

Похожие вопросы