Школьник скачал с некоторого Интернет-ресурса архив PROGS.RAR, который, согласно приведенному на сайте описанию, содержит пакет простых утилит (каждой утилите соответствует ровно один исполняемый файл формата .EXE). После распаковки архива школьник обнаружил, что часть файлов из архива зашифрована методом «двоичного гаммирования», т.е. путем выполнения операции «побитового исключающего ИЛИ» между байтами исходного файла и байтами, полученными циклическим повторением последовательности двух байтов ключа «0xB69D».
Зашифрованные файлы не запускаются, а при попытке запуска незашифрованных файлов, некоторые из них блокируются антивирусом из-за наличия в них подозрительной сигнатуры «0x0A0B0C0F».
Помогите школьнику получить из архива максимальное количество программ, которыми он сможет воспользоваться, не отключая антивирус.
К задаче прилагается (см. Вариант 1 для 9-10 классов): архив PROGS.RAR, скаченный школьником с Интернет-ресурса.
На первом этапе необходимо выделить множество файлов, которые корректно запускаются: Clockres.exe; plink.exe; pslist.exe. Остальные файлы архива являются зашифрованными. Заметим, что у всех незашифрованных файлов первые два байта одинаковые: «0x4D 0x5A», что соответствует началу заголовка любого файла формата .EXE. Следовательно, можно предположить, что остальные файлы после их расшифрования должны содержать аналогичные 2 первых байта. Т.к. для шифрования применялся метод «двоичного гаммирования» с длиной ключа 2 байта, то первых двух байтов будет достаточно для определения самого ключа. Для этого необходимо выполнить операцию «побитового исключающего ИЛИ» между двумя первыми байтами любого из файлов Clockres.exe; plink.exe; pslist.exe и двумя первыми байтам любого зашифрованного файла (например puttygen_enc.exe): 4D 5A ^ FB C7 = B6 9D.
Таким образом, в качестве ключа использовалась последовательность – B6 9D. Далее необходимо применить операцию «побитового исключающего ИЛИ» между всеми байтами зашифрованных файлов и байтами, полученными циклическим повторением последовательности байтов ключа, т.е. B6 9D B6 9D … B6 9D, для чего необходимо написать программное средство, позволяющее выполнить данную операцию в автоматическом режиме. Результатом работы данного программного средства являются файлы формата .EXE, которые успешно запускаются.
На втором этапе необходимо определить файлы, содержащие сигнатуру «0x0A 0x0B 0x0C 0x0F»: plink.exe, whois.exe. Следовательно, остальными программами школьник сможет воспользоваться, не отключая антивирус.
все файлы, кроме plink.exe и whois.exe.