← Все комнаты Путь «Реверс» →
СложныйРеверс Флаг Осенний CTF

Проверятор

Прогресс комнаты 0 / 4
Задание 1Введение

Цель: Обращать проверку ключа, а не перебирать его.

Программа проверяет лицензионный ключ. Ключ — это флаг. Восстановите его, не перебирая все варианты.

Задание 2Теория и инструменты

Программа XOR-ит каждый символ ввода с числом, зависящим от позиции, и сравнивает с эталонным списком.

Раз XOR обратим, достаточно применить ту же операцию к эталону: символ = эталон[i] ^ ключ(i).

Инструменты

  • Python
  • Любой отладчик — для бинарных программ

Больше теории — в разделе «Обучение: Реверс».

Задание 3Практика: найдите флаг
Данные задания275 символов
def check(s):
    if len(s) != 30:
        return False
    data = [ord(c) ^ ((i * 7 + 13) & 0xFF) for i, c in enumerate(s)]
    return data == [78, 64, 93, 89, 91, 3, 65, 13, 55, 63, 98, 52, 6, 55, 94, 5, 34, 238, 254, 225, 237, 255, 213, 157, 129, 216, 242, 164, 182, 165]
Войдите, чтобы ответить

Пошаговый план — открывайте по одному шагу

  1. 1
    Найдите эталонный список чисел в коде.

Подсказки — каждая до решения стоит −50 очков

Задание 4Как защититься

Проверка лицензий на клиенте всегда обратима. Важную логику держите на сервере.

Разборы участников

Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.