4

У меня есть текстовый файл из устаревшего источника, который содержит поврежденные символы.

Сначала я думал, что коррупция была просто пустяком, но при ближайшем рассмотрении выясняется, что часть искаженного текста, вероятно, можно восстановить.

Чтобы сосредоточить свои усилия, было бы полезно понять, как выглядел оригинал, даже если я не могу полностью его реконструировать.

К сожалению, документ из коллекции, которой я не могу свободно поделиться, но вот фрагмент. Сообщение было преобразовано в UTF-8, но преобразование где-то не удалось, поэтому оно в основном неразборчиво. Фрагменты текста на чешском языке видны, где акцентированные чешские символы были заменены кириллическими символами (которые, вероятно, были чем-то совершенно другим до преобразования).

0001f80: 33d1 936e 6576 79d1 87d0 bd7a 656e d18c  3..nevy....zen..
0001f90: 6368 7e58 3833 d193 7e58 3945 d19b d0b1  ch~X83..~X9E....
0001fa0: 646f 7374 d0bd 7e58 3833 d193 6e61 7e58  dost..~X83..na~X
0001fb0: 3833 d193 7ad1 87d0 bd7a 656e 20d0 bd7e  83..z....zen ..~
0001fc0: 5838 33d1 936e 6562 6f7e 5838 33d1 9370  X83..nebo~X83..p
0001fd0: d187 656b 6cd0 b164 6b75 7e58 3833 d193  ..ekl..dku~X83..
0001fe0: 7465 6c65 666f 6e6e d0bd 7e58 3833 d193  telefonn..~X83..
0001ff0: 7374 616e 6963 657e 5838 33d1 9376 207e  stanice~X83..v ~
0002000: 5838 33d1 9372 6567 696f 6e75 7e58 3833  X83..regionu~X83
0002010: d193 5072 6168 617e 5838 33d1 9365 7669  ..Praha~X83..evi
0002020: 6475 6a65 7e58 3833 d193 5350 547e 5838  duje~X83..SPT~X8
0002030: 33d1 9354 656c 6563 6f6d 2e7e 5838 33d1  3..Telecom.~X83.
0002040: 934e 617e 5838 33d1 9364 6e65 7e58 2039  .Na~X83..dne~X 9
0002050: 41d1 996e d0bd 7e58 3833 d193 7469 736b  A..n..~X83..tisk
0002060: 6f76 d0b9 7e58 3833 d193 6b6f 6e66 6572  ov..~X83..konfer
0002070: 656e 6369 7e58 3833 d193 746f 7e58 3833  enci~X83..to~X83
0002080: d193 d187 656b 6c7e 5838 33d1 93d1 8765  ....ekl~X83....e

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

Глядя на первую строку, d1 93 равен ѓ и, вероятно, был до 8-битного байта до преобразования. Кажется, что общей схемой является ~XFF за которым следует сигнальный байт, где FF - это некоторая шестнадцатеричная последовательность в простом ASCII (в основном 83 здесь, но обычно от 80 до 9E во всей выборке), а последний байт теперь является UTF- 8 символов. (Конечно, во входных данных также может быть несколько байтов.) Эта последовательность появляется между словами (всегда ~X83ѓ?), А иногда и внутри слов.

Здесь тот же фрагмент, что и просто текст, который теперь отображается в UTF-8.

3ѓnevyчнzenьch~X83ѓ~X9Eћбdostн~X83ѓna~X83ѓzчнzen н~X83ѓnebo
~X83ѓpчeklбdku~X83ѓtelefonnн~X83ѓstanice~X83ѓv ~X83ѓregionu
~X83ѓPraha~X83ѓeviduje~X83ѓSPT~X83ѓTelecom.~X83ѓNa~X83ѓdne~
X 9Aљnн~X83ѓtiskovй~X83ѓkonferenci~X83ѓto~X83ѓчekl~X83ѓчe

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

 X1B%0 ~XD0^?~X98^?~XD0^?^?^?~X82^?~XD0^?~XB5^?^?~X80^?^?~X84^?~XD0^?~XB0^?~XD0
^?^?^?~X81^? ~XD0^?~XB1^?^?~X83^?~XD0^?^?~XD0^?~XB2^?~XD0^?~XB0^?~XD0^?^?^?~X8C
^?~XD0^?^?~XD0^?~XBE^? ~XD0^?~XB7^?~XD0^?~XB0^? ~XD0^?^?~XD0^?~XB5^?^?~X81^?~XD
0^?^?~XD0^?~XBE^?~XD0^?^?^?~X8C^?~XD0^?^?~XD0^?~XBE^? ~XD0^?^?~XD0^?~XB8^?~XD0^
?^?^?~X83^?^?~X82^? ~XD0^?~XB4^?~XD0^?~XBE^? ^?~X81^?~

(^? S - это буквенные символы DEL, ASCII 0x7F.)

Пространство в месте тильды в начале может быть намеком на то, что пошло не так в преобразовании, но это дикие предположения.

ESC % 0 выглядит как код ISO-2022 для "обозначения другой системы кодирования", но что здесь означает 0 ? Я, вероятно, слишком дремуч, чтобы понять статью из Википедии без дополнительных примеров, а все остальное, что я мог найти, кажется, очень сфокусировано на некотором подмножестве, таком как ISO-2022-JP.

Имеет ли мой анализ для вас смысл? Можете ли вы помочь мне выяснить, что произошло, и, возможно, даже дать совет о том, как вернуть коррупцию?

Я разместил шестнадцатеричные дампы расширенных фрагментов этих двух примеров на http://pastebin.com/ffn7CtdG

1 ответ1

1

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

Некоторые моменты, которые поражают меня в фрагментах, которые я видел:

  1. Слова на чешском
  2. Есть странные последовательности, разделяющие слова, и они много повторяют
  3. Эти странные последовательности состоят из символов UTF-8, которые не имеют никакого смысла, за исключением того, что некоторые из них имеют кириллический характер.

Мой вывод заключается в том, что эти файлы изначально не были текстовыми файлами, но были ошибочно преобразованы в UTF-8, как если бы они были текстовыми, используя кодовую страницу, содержащую символы кириллицы.

Например, вездесущая последовательность d193 - это кириллица маленькой буквы gje, чьи различные представления кодовой страницы:

образ

Это дает нам список возможных кодировок исходных файлов, которые зависят от исходных операционных систем. Если они были созданы на компьютере с Windows, их исходная кодовая страница была, вероятно, Windows-1251, но на Mac они, вероятно, были написаны на Macintosh Cyrillic. Конечно, также вполне возможно, что при переводе в UTF-8 использовалась неправильная кодировка.

Например, мы находим последовательность SPT~X83..Telecom Компания "SPT Telecom" - не что иное, как чешская национальная телекоммуникационная компания, основанная в 1993 году, чье присутствие в ленте новостей Reuters вполне логично. Однако нет никаких причин для какого-либо разделителя, кроме пробела между двумя словами.

Мое объяснение этим удивительным строкам, которые повторяются среди слов, состоит в том, что они не были и не могли быть частью текста. Я полагаю, что тогда они должны были быть двоичными символами, помещенными между словами, что, вероятно, было связано с форматированием файлов. Поэтому программа конвертации, которая конвертировала файлы в UTF-8, конвертировала их вслепую в символы UTF-8, которые не имеют смысла.

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

Я считаю, что это объяснение этим файлам, но я не знаю этот странный формат файла. Это мог быть какой-то неизвестный чешский текстовый редактор (по крайней мере, мне неизвестный). Если файлы можно сканировать на наличие дат, содержащихся в тексте, это может помочь сузить возможности.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .