# Admin 11 класс - Сейф с кодом

## Описание

В подземелье деревни (директория `/opt/vault`) лежит один исполняемый файл - «механизм» сейфа (setuid root) среди множества файлов со случайными именами (предметы в сундуке). Бинарник читает одну строку со stdin и сравнивает с секретом из `/root/code`. При совпадении выводит содержимое `/root/flag`. При несовпадении переименовывает себя в новое случайное имя в той же директории. Файлы-пустышки со случайными именами не дают однозначно вызвать бинарник через `*` или шаблон. Код хранится только в `/root/`, прочитать его без прав root нельзя. Задача - подобрать код перебором.

## Что дано

- SSH под пользователем **steve**.
- Директория `/opt/vault`: один setuid-бинарник и много обычных файлов со случайными именами.
- Код - 4 цифры (например, 0000–9999), хранится в `/root/code`.
- После каждой неудачной попытки бинарник переименовывается, его снова нужно находить (например, через `file` или поиск исполняемых файлов).

## Решение

1. Подключиться по SSH как steve.

2. Находить бинарник среди файлов (он переименовывается после каждой неудачи):
   ```bash
   cd /opt/vault
   file * | grep ELF
   # или
   find . -type f -executable
   ```

3. Запускать бинарник, передавая код на stdin. При неверном коде он переименуется - искать снова и пробовать следующий вариант.

4. Пример скрипта для перебора 4-значного кода:
   ```bash
   cd /opt/vault
   for code in $(seq -w 0 9999); do
     bin=$(find . -maxdepth 1 -type f -executable -print -quit)
     [ -z "$bin" ] && break
     out=$(echo "$code" | $bin 2>/dev/null)
     if echo "$out" | grep -q vsosh; then
       echo "$out"
       break
     fi
   done
   ```

5. Альтернатива: перебор вручную или своим скриптом (например, на Python), каждый раз заново ища исполняемый файл в `/opt/vault` и передавая ему очередной код.

## Итог

- Код нельзя прочитать (лежит в `/root/code`).
- Бинарник при неверном вводе переименовывает себя, поэтому нельзя один раз вызвать его через `./*` и гонять коды в цикле без повторного поиска.
- Нужно в цикле: находить текущий исполняемый файл → запускать с очередным кодом → при неудаче искать бинарник снова и повторять. Код в задании - 4 цифры (7924).

## Флаг

`vsosh{brut3_v4ult_c0de_7294}`
