2017 [11] Архив
Школьник скачал с некоторого Интернет-ресурса архив PROGS.RAR, который, согласно приведенному на сайте описанию, содержит пакет простых утилит (каждой утилите соответствует ровно один исполняемый файл формата .EXE). После распаковки архива школьник обнаружил, что часть файлов из архива зашифрована методом «двоичного гаммирования», т.е. путем выполнения операции «побитового исключающего ИЛИ» между байтами исходного файла и байтами, полученными циклическим повторением последовательности некоторого ключа.
Зашифрованные файлы не запускаются, а при попытке запуска незашифрованных файлов, некоторые из них блокируются антивирусом из-за наличия в них подозрительной сигнатуры «0x0A0B0C0F».
Помогите школьнику получить из архива максимальное количество программ, которыми он сможет воспользоваться, не отключая антивирус.
К задаче прилагается (см. Вариант 1 для 11 класса): архив PROGS.RAR, скаченный школьником с Интернет-ресурса.
Показать решение
На первом этапе необходимо выделить множество файлов, которые корректно запускаются: Clockres.exe; plink.exe; pslist.exe. Остальные файлы архива являются зашифрованными. Заметим, что у всех незашифрованных файлов несколько первых байт одинаковые (заголовок файла). Рассмотрим, например, первые 8 из них «0x4D 0x5A 0x90 0x00 0x03 0x00 0x00 0x00», что соответствует началу заголовка файла формата .EXE. Следовательно, можно предположить, что остальные файлы после их расшифрования должны содержать аналогичные 8 первых байт. Для определения ключа необходимо выполнить операцию «побитового исключающего ИЛИ» между первыми байтами любого из файлов Clockres.exe; plink.exe; pslist.exe и первыми байтами любого зашифрованного файла (например puttygen_enc.exe): 4D 5A 90 00 03 00 00 00 ^ 26 93 FB C9 68 C9 6B C9 = 6B C9 6B C9 6B C9 6B C9.
Таким образом, можно предположить, что в качестве ключа использовалась последовательность – 6B C9. Далее необходимо применить операцию «побитового исключающего ИЛИ» между всеми байтами зашифрованных файлов и байтами, полученными циклическим повторением последовательности байтов ключа, т.е. 6B C9 6B C9… 6B C9, для чего необходимо написать программное средство, позволяющее выполнить данную операцию в автоматическом режиме. Результатом работы данного программного средства являются файлы формата .EXE, которые успешно запускаются.
На втором этапе необходимо определить файлы, содержащие сигнатуру «0x0A 0x0B 0x0C 0x0F»: clockres.exe, plink.exe, whois.exe, ru.exe, sync.exe. Следовательно, остальными программами школьник сможет воспользоваться, не отключая антивирус. Заметим, что файл puttygen_enc.exe содержал искомую сигнатуру только в зашифрованном виде.
Показать ответ
Все файлы, кроме clockres.exe, plink.exe, ru.exe, sync.exe, whois.exe.
<< Назад в раздел (Все задания)