Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
interrogation-game — Детективная игра-допрос с голосовым управлением. Mistral Large 3 + Voxtral STT + ElevenLabs TTS. Создано для Mistral Worldwide Hackathon 2026. | Kitploit
Инструменты/GitHubGitHub/jpoindexter/interrogation-game
OSINT для социальной инженерииВеб-безопасностьCTFСоциальная инженерияМашинное ОбучениеОбучение и ОбразованиеБезопасность ИИСостязательная АтакаЛаборатории и Практика
GitHubjpoindexter/interrogation-game

interrogation-game

Детективная игра-допрос с голосовым управлением. Mistral Large 3 + Voxtral STT + ElevenLabs TTS. Создано для Mistral Worldwide Hackathon 2026.

5284 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

Допрос

Interrogation — Title Screen

Голосовая детективная игра-допрос. Вы — детектив. Мистраль — подозреваемый, который врёт. Ваша задача — поймать его на лжи с помощью одних только вопросов.

Каждое дело генерируется процедурно — уникальное преступление «белых воротничков», подозреваемый, алиби и одна скрытая ложь. Роль подозреваемого исполняет Mistral Large, которому предоставлена полная предыстория и инструкция защищать её под давлением. Ни одно дело не повторяется.

Создано для Mistral Worldwide Hackathon 2026 (онлайн-трек).

"Mistral умеет рассуждать. Я заставил его врать. Ваша задача — поймать его."

Как это работает

  1. Выберите локацию и сложность
  2. Генерируется уникальное дело — преступление, подозреваемый, алиби и одна ложь
  3. Допрашивайте подозреваемого голосом или текстом
  4. Подозреваемый отвечает в характере голосом, реагирующим на стресс
  5. Собирайте улики, задавая правильные вопросы под давлением
  6. Выдвиньте обвинение — отдельный ИИ-судья оценивает его
  7. Верно = признание. Неверно = потеря попытки (всего 3)

ИИ проинструктирован никогда не признаваться, даже при максимальном стрессе. Вы выигрываете, сделав конкретное, точное обвинение — а не заставив подозреваемого сломаться.

Стек

  • Next.js 16 — App Router, TypeScript, Tailwind v4
  • Mistral Large 3 — мозг подозреваемого ИИ, генерация дел, оценка обвинений
  • Voxtral STT — распознавание речи для голосового ввода игрока
  • ElevenLabs TTS — голос подозреваемого с динамической стабильностью на основе стресса
  • Browser SpeechSynthesis — запасной вариант, если ElevenLabs недоступен
  • Supabase — таблица лидеров с RLS, хранение экспортированных игр
  • Framer Motion — анимации на всех страницах
  • PixelLab — процедурно генерируемые портреты подозреваемых

Начало работы

npm install
cp .env.example .env    # Заполните свои ключи API
npm run dev             # http://localhost:3000

Переменные окружения

MISTRAL_API_KEY=            # Обязательно — генерация дел, допрос, оценка, STT
ELEVENLABS_API_KEY=         # Обязательно — TTS для голоса подозреваемого
ELEVENLABS_VOICE_ID=        # Опционально — конкретный ID голоса ElevenLabs
NEXT_PUBLIC_SUPABASE_URL=   # Обязательно — URL проекта Supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=  # Обязательно — анонимный ключ Supabase (защищено RLS)
SUPABASE_SERVICE_ROLE_KEY=  # Опционально — точка входа для экспорта админа
EXPORT_SECRET=              # Опционально — аутентификация экспорта админа

Ключи API также можно настроить на странице Настройки во время выполнения — приложение поставляется без ключей, игроки используют свои.

Команды

npm run dev       # Сервер разработки
npm run build     # Сборка для продакшена
npm run start     # Продакшен-сервер
npm run lint      # ESLint

Механики игры

Сложность

УровеньУликиТаймерПоведение подозреваемого
Лёгкий25 минОчевидная ложь, нервничает
Средний37 минЛожь можно поймать, спокоен
Сложный49 минТонкая ложь, умело уклоняется
Эксперт510 минГлубоко скрытая ложь, манипулирует

Также доступен режим безлимитного таймера — на сложном/экспертном уровне подозреваемый вызовет адвоката после 4 последовательных обменов с высоким стрессом.

Система улик

Улики открываются при порогах стресса, распределённых от 1 до 9, с ограничениями:

  • Минимальное количество вопросов для данной сложности
  • Минимальная длина вопроса (запрет на однословные «рыбалки»)
  • Пороги стресса, контролируемые сервером, для каждого номера улики

Кнопка «Обвинить» разблокируется только после сбора всех необходимых улик.

Подсчёт очков

score = timeScore x difficultyMultiplier x efficiencyBonus x hintPenalty x accusationPenalty

timeScore       = 1000 x sqrt(max(0, 1 - elapsed / (parTime x 2)))
multiplier      = easy 1.0x, medium 1.5x, hard 2.0x, expert 2.5x
efficiencyBonus = 1.0-1.5x (меньше вопросов, чем норма = бонус)
hintPenalty     = 0.85^hintsUsed
accusePenalty   = max(0, 1 - wrongAccusations x 0.1)

Очки вычисляются на стороне сервера из замороженной статистики в момент победы — значения клиента игнорируются.

Конец игры

  • Победа: штамп APPREHENDED, поэтапное раскрытие счёта, аркадный ввод инициалов (3 буквы), таблица лидеров
  • Поражение (обвинения): ESCAPED, сводка дела, насмешка подозреваемого, раскрытие лжи
  • Поражение (время): То же, что выше, с исходом по таймауту
  • Сдаться: сгенерированное ИИ самодовольное замечание через TTS, полное раскрытие дела

Архитектура

app/
├── page.tsx                     # Экран заголовка
├── cases/                       # Выбор дела — локации + сложность
├── game/
│   ├── page.tsx                 # Главный оркестратор игры
│   ├── hooks/                   # useVoiceRecorder, useTTS, useGameTimer, useSfx, useSettings
│   ├── components/              # Dock, TopBar, CaseFile, SuspectZone, BriefingScreen, dialogs
│   ├── win/                     # Экран победы + InitialsEntry
│   └── lose/                    # Экран поражения
├── leaderboard/                 # Топ-20, анимация нового рекорда
├── settings/                    # Настройка ключей API, экспорт, предпочтения
├── help/                        # Как играть, подсчёт очков, об игре
├── about/                       # Информация о создателе
└── api/
    ├── generate-case/           # GET — генерация дела Mistral
    ├── interrogate/             # POST — вопрос игрока → ответ подозреваемого
    ├── accuse/                  # POST — оценка обвинения (отдельный судья)
    ├── evaluate/                # POST — анализ победы/поражения
    ├── hint/                    # POST — завуалированные подсказки по триггерам стресса
    ├── tts/                     # POST — ElevenLabs TTS
    ├── transcribe/              # POST — Voxtral STT
    ├── leaderboard/             # GET/POST — таблица лидеров Supabase
    ├── patterns/                # GET/POST — межсессионные паттерны обучения
    └── export/                  # GET — административный экспорт JSONL

src/lib/
├── mistral/                     # Mistral-клиент, допрос, оценка, генерация дел, эмбеддинги
├── game-session.ts              # Серверное хранилище сессий, токены победы, экспорт
├── game-state.ts                # Определения типов
├── scoring.ts                   # Расчёт очков + рейтинг детектива
├── sanitize.ts                  # Валидация ввода, обнаружение инъекций
├── db.ts                        # Клиент Supabase
└── rate-limit.ts                # Ограничение запросов по IP

Безопасность

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

Санация ввода: 30+ регулярных выражений для паттернов инъекций, нормализация Unicode (NFKD), удаление нулевой ширины символов, обнаружение base64-полезной нагрузки, блокировка бессвязного/неанглийского текста.

Сканирование вывода: Ответы ИИ проверяются на секреты дела с нечетким сопоставлением (порог 40%, фильтрация стоп-слов). Утечки заменяются уклончивым ответом.

Изоляция судьи: Оценка обвинения использует отдельный вызов Mistral с выделенным системным промптом, рандомизированными граничными токенами, удалёнными маркерами инъекций. Вызовы судьи никогда не используют ключи API, предоставленные игроком.

Контроль стресса: Серверное монотонное ограничение — стресс только растёт, максимум +1 за ход. Пороги улик контролируются сервером. ИИ не может резко повысить или понизить стресс для прохождения игровых ворот.

Токены победы: 128-битные случайные, сравнение с защитой от временных атак, одноразовые, TTL 30 минут. Очки рассчитываются из серверного снимка статистики — значения, сообщённые клиентом, игнорируются.

Скачать инструмент