Вопрос

Наиболее распространенным методом повреждения сжатых файлов является непреднамеренная передача по FTP в режиме ASCII, что приводит к потере CR и / или LF символов "много к одному".

Очевидно, что происходит потеря информации, и лучший способ устранить эту проблему - повторить передачу в двоичном режиме FTP.

Однако, если оригинал утерян, а это важно, насколько эти данные могут быть восстановлены?

[На самом деле, я уже знаю, какой, на мой взгляд, наилучший ответ (это очень сложно, но иногда возможно - я опубликую подробнее позже), а также распространенные неполадки (множество готовых программ для восстановления CRC без восстановления данных), но я подумал, что было бы интересно опробовать этот вопрос в период бета-тестирования stackoverflow и посмотреть, пошел ли кто-нибудь еще по пути успешного восстановления или обнаружил инструменты, о которых я не знаю.]

Это было полезно?

Решение

От Программное обеспечение Bukys

Известно , что приблизительно 1 из 256 байт поврежден, и известно, что повреждение происходит только в байтах со значением '\012'.Таким образом, частота ошибок в байтах равна 1/256 (0,39% входных данных), а 2/256 байт (0,78% входных данных) являются подозрительными.Но поскольку затрагиваются только три бита на разбитый байт, частота битовых ошибок составляет всего 3 / (256 * 8):0,15% - плохо, 0,29% - подозрительно.

...

Ошибка в сжатых входных данных прерывает процесс распаковки для всех последующих байтов...Тот факт, что распакованный результат так быстро становится узнаваемо плохим, является причиной для надежды - поиск правильного ответа может быстро выявить неправильные ответы .

В конечном счете, было применено несколько методов для успешного извлечения разумных данных из этих файлов:

  • Синтаксический анализ полей и строк, заключенных в кавычки, для конкретного домена
  • Машинное обучение на основе предыдущих данных с низкой вероятностью повреждения
  • Допуск к повреждению файла по другим причинам (например,диск заполнен во время ведения журнала )
  • Ориентир для направления поиска по наиболее вероятным путям

Эти методы позволяют с уверенностью определить 75% необходимых ремонтных работ, а остальные изучаются в первую очередь с наибольшей вероятностью, так что вероятные реконструкции определяются немедленно.

Другие советы

Вы могли бы попробовать написать небольшой скрипт для замены всех CRS на CRLFS (предполагая, что направление удаления было CRLF на CR), меняя их случайным образом для каждого блока, пока у вас не будет правильного crc.Предполагая, что данные были не особенно большими, я предполагаю, что это может не использовать весь ваш процессор до завершения тепловой смерти вселенной.

Поскольку происходит определенная потеря информации, я не знаю, есть ли лучший способ.Потери в направлении CR-CRLF, возможно, будет немного легче откатить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top