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

Повороты битов

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

Цель: Обращать цепочку битовых операций.

Ещё одна проверка ключа, на этот раз с циклическим сдвигом битов. Восстановите ключ, обратив каждую операцию.

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

Циклический сдвиг rol8(x, 3) переносит выпавшие слева биты вправо. Обратная операция — сдвиг на 5 (8 − 3).

Программа делает три шага: прибавляет позицию i, XOR с 0x5A, сдвигает биты. Обращаем в обратном порядке.

Инструменты

  • Python: <<, >>, |, & 0xFF

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

Задание 3Практика: найдите флаг
Данные задания358 символов
def rol8(x, r):
    return ((x << r) | (x >> (8 - r))) & 0xFF

def check(key):
    if len(key) != 31:
        return False
    out = [rol8(((ord(c) + i) & 0xFF) ^ 0x5A, 3) for i, c in enumerate(key)]
    return out == [200, 120, 144, 33, 225, 99, 1, 225, 1, 27, 33, 43, 214, 35, 35, 57, 169, 192, 254, 65, 230, 144, 182, 128, 134, 182, 136, 57, 150, 80, 14]
Войдите, чтобы ответить

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

  1. 1
    Найдите эталонный список и все операции в функции.

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

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

Как и любая клиентская проверка, обфускация лишь замедляет реверс. Секреты не должны жить в клиенте.

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

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