Кубок CTF России

Разбор: babycrypto с отбора Кубка CTF 2025

Задача из раздела для начинающих. Участнику дают скрипт шифрования и шифротекст. Описание от авторов: все действия простые и обратимые, нужно только перебрать seed.

Что делает шифр

  1. Подстановка — таблица из 256 байт, перемешанная генератором случайных чисел с seed из хеша ключа
  2. XOR с nonce — nonce равен текущему времени по модулю 100 000, каждый байт ключа ещё и циклически сдвигается
  3. XOR с SHA-256 от мастер-ключа
  4. Кодирование — свой вариант Base64

Как решать

Мастер-ключ выдан участникам, значит слои 1, 3 и 4 полностью известны. Неизвестен только nonce — а у него всего 100 000 значений. Перебираем nonce, разворачиваем слои в обратном порядке и проверяем результат по известному началу открытого текста «Your flag is: ». Такой перебор на ноутбуке занимает секунды.

Важно. Урок задачи: «самописная» криптография, которая держится на секретности метода или маленьком пространстве ключей, ломается перебором. Ищите в задаче слабое звено — здесь это время вместо настоящего случайного ключа.

Чек-лист

  • ☐ Прочитать скрипт и выписать слои по порядку
  • ☐ Отметить, что известно, а что нет
  • ☐ Оценить пространство перебора
  • ☐ Найти проверку правильного ответа (известный открытый текст)
  • ☐ Записать разбор для команды

Шаблон разбора уже есть

Открыть «Разбор задачи для команды CTF» →

Источник: репозиторий заданий отбора Кубка CTF 2025, tasks/beginners/babycrypto (README и public/task.py). Флаг в записи не приводится. Сверено 01.11.2026.

Первоисточник