# Reverse 9 — Двойной редстоуновый замок

## Флаги

- **Флаг 1:** `vsosh{y0u_sp34k_my_l4ngu4g3}`
- **Флаг 2:** `vsosh{4nd_y0u_r3m3mb3r_1t_t00}`

---

## Этап 1

В `main` цикл по 8 байтам:

```c
prev = iv;  // iv печатается на старте
for (int i = 0; i < 8; i++) {
    out = ROL(input[i], 3) ^ prev;
    if (out != target[i]) → fail;
    prev = out;
}
```

- `target` = байты `"enderman"`
- CBC XOR с ROL(3) в качестве функции
- IV случаен → нужен скрипт

Обращение: перебрать 256 значений для каждой позиции.

## Этап 2

```c
iv2 = XOR всех байт input1;
for (int i = 0; i < 8; i++) {
    rot = input1[i] % 8;
    out = ROL(input2[i], rot) ^ prev;
    if (out != target2[i]) → fail;
    prev = out;
}
```

- `target2` = байты `"redstone"`
- IV2 не выводится — вычисляется из input1
- Углы ROL берутся из input1 — без знания первого ответа второй нерешаем
