Однобайтовый XOR
Прогресс комнаты
0 / 4
Задание 1Введение
Цель: Ломать XOR с коротким ключом перебором и через известный открытый текст.
Флаг зашифрован операцией XOR с ключом длиной в один байт. Шифртекст дан в hex.
Задание 2Теория и инструменты
XOR побайтово: c = p ^ k. Свойство: p = c ^ k и k = c ^ p. Если ключ — один байт, вариантов всего 256.
Ещё быстрее: мы знаем, что первый символ открытого текста — C. Тогда k = c[0] ^ ord('C').
Инструменты
- Python:
bytes.fromhex,bytes(b ^ k for b in data) - CyberChef: XOR Brute Force
Больше теории — в разделе «Обучение: Криптография».
Задание 3Практика: найдите флаг
dccbd9e4e7afedc0e8aeebf7c0aff1acc0fde6ebacc0aeecc0e8acabf4e2
Пошаговый план — открывайте по одному шагу
- 1Переведите hex-строку в байты.
- 2Вычислите ключ: XOR первого байта шифртекста с кодом буквы
C(67). - 3Примените XOR с этим ключом ко всем байтам.
- 4Проверьте, что результат начинается с
CTF{и читается.
Подсказки — каждая до решения стоит −25 очков
Задание 4Как защититься
Не изобретайте шифры. XOR с коротким или повторяющимся ключом ломается за секунды. Используйте AES-GCM.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.