В центр обработки информации поступило четыре файла, каждый из которых является зашифрованным представлением изображения формата PNG. Известно, что шифрование осуществлялось методом «двоичного гаммирования», т.е. путем выполнения операции «побитового исключающего ИЛИ» между байтами исходного файла и байтами, полученными циклическим повторением последовательности из 4‑х байтов ключа. Сотрудники центра успели расшифровать только три файла с именами First.png, Second.png и Third.png.
Помогите расшифровать оставшийся файл «Secret.enc». В ответе укажите слово, изображенное на полученной картинке формата PNG.
Комментарий. К задаче прилагаются файлы с расшифрованными картинками (First.png, Second.png, Third.png), файл с зашифрованной картинкой Secret.enc, редактор файлов в шестнадцатеричном формате (HexEditor).
Рассмотрим первые байты шестнадцатеричного представления всех четырех файлов.
First.png
89 50 4E 47 0D 0A 1A 0A …
Second.png
89 50 4E 47 0D 0A 1A 0A …
Third.png
89 50 4E 47 0D 0A 1A 0A …
Secret.enc
F3 64 5C D7 77 3E 08 9A …
Заметим, что для первых трех изображений формата PNG последовательность начальных байтов совпадает. Следовательно, можно предположить, что и четвертый файл Secret.enc после его расшифрования должен содержать аналогичные начальные байты. Так как для шифрования применялся метод «двоичного гаммирования» с длиной ключа 4 байта, то для определения самого ключа достаточно выполнить операцию «побитового исключающего ИЛИ» между первыми 4-мя байтами любого из файлов First.png, Second.png и Third.png и первыми 4-мя байтами файла Secret.enc:
89 50 4E 47 ^ F3 64 5C D7 = 7A 34 12 90
Таким образом, можно предположить, что в качестве ключа использовалась последовательность – 7A 34 12 90. Далее необходимо применить операцию «побитового исключающего ИЛИ» между всеми байтами файла Secret.enc и байтами, полученными циклическим повторением последовательности байтов ключа, то есть 7A 34 12 90 7A 34 12 90 … 7A 34 12 90. Для этого необходимо написать программное средство, позволяющее выполнить данную операцию в автоматическом режиме. Результат его работы – файл формата PNG, открытие которого с использованием редактора изображений приведет к отображению на экране искомого слова: «АССЕМБЛЕР».
Рис. Результат расшифрования картинки
Ассемблер