Взломщик Цезаря
Задание 1Введение
Цель: Автоматизировать криптоанализ: писать программу-взломщик.
Напишите функцию caesar_crack(ct). На вход — текст, зашифрованный шифром Цезаря с неизвестным сдвигом (латиница, регистр сохраняется, остальные символы не меняются). Известно, что исходный текст содержит подстроку CTF{. Верните расшифрованный текст.
Задание 2Теория и инструменты
Чтобы взломать Цезаря программно, перебираем все 26 сдвигов и проверяем критерий успеха. Здесь критерий простой: в расшифровке есть CTF{.
Важно правильно сдвигать строчные и заглавные буквы отдельно и не трогать остальные символы.
Инструменты
- Python:
ord,chr,% - JS:
charCodeAt,String.fromCharCode,replaceс функцией
Больше теории — в разделе «Обучение: Защита (код)».
Задание 3Практика: напишите код
Примеры
caesar_crack("OFR{daf_ue_zaf_odkbfa}")
→ "CTF{rot_is_not_crypto}"caesar_crack("Ebiil ZQC{pefcq_exmmbkp} tloia")
→ "Hello CTF{shift_happens} world"Ещё 4 скрытых тестов.
Пошаговый план — открывайте по одному шагу
- 1Напишите функцию сдвига одной буквы назад на k с учётом регистра.
- 2Примените её ко всей строке, пропуская не-латинские символы.
- 3Переберите k от 0 до 25, верните первый вариант, где есть
CTF{. - 4В JS не забудьте
+26перед%, чтобы не получить отрицательный остаток.
Подсказки — каждая до решения стоит −25 очков
Задание 4Как защититься
Это задача для тренировки автоматизации. Вывод тот же: классические шифры не защищают.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.