/Разборы задач
5 ноября 2026
Райтап на задачу «Огрызок»
Определяем компактный формат Micro QR и считываем флаг с обрывка листа.3
3

Misc
Задача «Осень 1582»
Внимательно прочитаем условие. Мы знаем, что файл зашифрован с помощью исключающего «или», он же всем известный XOR. Скачаем файлы и распакуем архив.
У нас два файла: cipher.bin и journal.txt.
«Даты нужно использовать ровно в этом виде», — гласит нам файл. Явно ключ будет как-то связан с датами. Попробуем посчитать разницу между каждой из них.
[17, 8, 2, 5, 11, 24, 6, 19, 13, 11, 18, 14, 4, 22]Попробуем расшифровать с этим ключом. Учитывая длину cipher.bin (39 байт), ключ будет повторяющимся. Откроем любой сайт для XOR с repeat-key, введём содержимое cipher.bin и наш ключ и получим непонятные байты, которые даже прочитать нельзя.
В таком случае проведём простенький криптоанализ. Мы знаем, что формат флага — BugCTF{}. Может быть дополнительно есть некая XOR-маска? Попробуем ее посчитать.
Берём первый байт из cipher.bin — 0x13, берём первый байт ключа — 0x11 (в десятеричной системе — 17). Мы получили 0x02, но мы ещё ничего не расшифровали. Мы берём первую букву флага — B, смотрим ее положение в таблице ASCII с помощью ord() и переводим в шестнадцатеричную форму и получаем 0x42. Теперь делаем 0x02 xor 0x42 и получаем 0x40 — нужную нам маску. Для удобства наложим маску на наш ключ.
Мы наложили маску 0x40 на наш ключ, частично флаг виден, но всё же он выглядит как-то странно и с ошибками. Правильно ли мы рассмотрели даты?
По правде, это сомнительный источник, но это правда и подобная информация есть на многих сайтах. И в нашем журнале есть такая пара дат.
Выходит, что между ними прошёл всего 1 день. Изменим наш ключ.
[17, 8, 2, 5, 11, 24, 6, 19, 13, 1, 18, 14, 4, 22]После наложения маски мы получили правильный флаг.