Разбор: babycrypto с отбора Кубка CTF 2025
Задача из раздела для начинающих. Участнику дают скрипт шифрования и шифротекст. Описание от авторов: все действия простые и обратимые, нужно только перебрать seed.
Что делает шифр
- Подстановка — таблица из 256 байт, перемешанная генератором случайных чисел с seed из хеша ключа
- XOR с nonce — nonce равен текущему времени по модулю 100 000, каждый байт ключа ещё и циклически сдвигается
- XOR с SHA-256 от мастер-ключа
- Кодирование — свой вариант Base64
Как решать
Мастер-ключ выдан участникам, значит слои 1, 3 и 4 полностью известны. Неизвестен только nonce — а у него всего 100 000 значений. Перебираем nonce, разворачиваем слои в обратном порядке и проверяем результат по известному началу открытого текста «Your flag is: ». Такой перебор на ноутбуке занимает секунды.
Важно. Урок задачи: «самописная» криптография, которая держится на секретности метода или маленьком пространстве ключей, ломается перебором. Ищите в задаче слабое звено — здесь это время вместо настоящего случайного ключа.
Чек-лист
- ☐ Прочитать скрипт и выписать слои по порядку
- ☐ Отметить, что известно, а что нет
- ☐ Оценить пространство перебора
- ☐ Найти проверку правильного ответа (известный открытый текст)
- ☐ Записать разбор для команды
Шаблон разбора уже есть
Открыть «Разбор задачи для команды CTF» →
Источник: репозиторий заданий отбора Кубка CTF 2025, tasks/beginners/babycrypto (README и public/task.py). Флаг в записи не приводится. Сверено 01.11.2026.