Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
interrogation-game — Jogo de interrogatório detetivesco baseado em voz. Mistral Large 3 + Voxtral STT + ElevenLabs TTS. Criado para o Mistral Worldwide Hackathon 2026. | Kitploit
Ferramentas/GitHubGitHub/jpoindexter/interrogation-game
OSINT para Engenharia SocialSegurança WebCTFEngenharia SocialAprendizado de MáquinaAprendizado e EducaçãoSegurança de IAAtaque AdversárioLabs e Prática

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubjpoindexter/interrogation-game

interrogation-game

Jogo de interrogatório detetivesco baseado em voz. Mistral Large 3 + Voxtral STT + ElevenLabs TTS. Criado para o Mistral Worldwide Hackathon 2026.

Ver Repositório
527há 4 mesesAinda não revisado

Interrogatório

Interrogatório — Tela de Título

Um jogo de interrogatório detetivesco baseado em voz. Você é um detetive. Mistral é um suspeito que está mentindo. Seu trabalho é descobrir a mentira apenas fazendo perguntas.

Cada caso é gerado proceduralmente — um crime financeiro único, um suspeito, uma história de fachada e uma mentira oculta. O suspeito é interpretado pelo Mistral Large, com uma história completa e instruído a defendê-la sob pressão adversarial. Dois casos nunca são iguais.

Construído para o Mistral Worldwide Hackathon 2026 (Trilha Online).

"Mistral consegue raciocinar. Eu a fiz mentir. Seu trabalho é pegá-la."

Como Funciona

  1. Escolha um local e uma dificuldade
  2. Um caso único é gerado — crime, suspeito, história de fachada e uma mentira
  3. Interrogue o suspeito usando voz ou texto
  4. O suspeito responde no personagem com voz reativa ao estresse
  5. Colete pistas fazendo as perguntas certas sob pressão
  6. Faça sua acusação — uma IA juíza separada a avalia
  7. Correta = confissão. Errada = perde uma tentativa (3 no total)

A IA é instruída a nunca confessar, mesmo sob estresse máximo. Você vence fazendo uma acusação específica e precisa — não fazendo o suspeito quebrar.

Stack

  • Next.js 16 — App Router, TypeScript, Tailwind v4
  • Mistral Large 3 — cérebro da IA suspeita, geração de casos, avaliação de acusações
  • Voxtral STT — conversão de fala em texto para entrada de voz do jogador
  • ElevenLabs TTS — voz do suspeito com estabilidade dinâmica baseada em estresse
  • Browser SpeechSynthesis — fallback quando ElevenLabs não está disponível
  • Supabase — persistência do placar com RLS, armazenamento de exportação de jogo
  • Framer Motion — animações em todas as páginas
  • PixelLab — retratos de suspeitos gerados proceduralmente

Primeiros Passos

npm install
cp .env.example .env    # Fill in your API keys
npm run dev             # http://localhost:3000

Variáveis de Ambiente

MISTRAL_API_KEY=            # Required — case gen, interrogation, evaluation, STT
ELEVENLABS_API_KEY=         # Required — TTS for suspect voice
ELEVENLABS_VOICE_ID=        # Optional — specific ElevenLabs voice ID
NEXT_PUBLIC_SUPABASE_URL=   # Required — Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEY=  # Required — Supabase anon key (RLS-protected)
SUPABASE_SERVICE_ROLE_KEY=  # Optional — admin export endpoint
EXPORT_SECRET=              # Optional — admin export auth

As chaves de API também podem ser configuradas na página de Configurações em tempo de execução — o aplicativo vem sem chaves e os jogadores trazem as suas próprias.

Comandos

npm run dev       # Dev server
npm run build     # Production build
npm run start     # Production server
npm run lint      # ESLint

Mecânicas do Jogo

Dificuldade

NívelPistasTempoComportamento do Suspeito
Fácil25 minMentira óbvia, nervoso
Médio37 minMentira detectável, controlado
Difícil49 minMentira sutil, desviador habilidoso
Expert510 minMentira profundamente enterrada, manipulador

Um modo ilimitado de tempo também está disponível — no difícil/expert, o suspeito chamará um advogado após 4 trocas consecutivas de alto estresse.

Sistema de Pistas

As pistas são desbloqueadas em patamares de estresse distribuídos entre 1 e 9, condicionadas por:

  • Número mínimo de perguntas por dificuldade
  • Comprimento mínimo da pergunta (sem pesca de uma palavra)
  • Limites de estresse impostos pelo servidor por número de pista

O botão de Acusar só é desbloqueado depois que todas as pistas necessárias são coletadas.

Pontuação

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 (fewer questions than par = bonus)
hintPenalty     = 0.85^hintsUsed
accusePenalty   = max(0, 1 - wrongAccusations x 0.1)

A pontuação é calculada no servidor a partir de estatísticas congeladas no momento da vitória — os valores do cliente são ignorados.

Fim de Jogo

  • Vitória: selo APREENDIDO, revelação escalonada da pontuação, entrada de iniciais de 3 letras estilo arcade, placar
  • Derrota (acusações):) FUGIU, resumo do caso, provocação do suspeito, a mentira revelada
  • Derrota (tempo):) Mesmo que acima com resultado de tempo esgotado
  • Desistir: observação arrogante gerada por IA via TTS, revelação completa do caso

Arquitetura

app/
├── page.tsx                     # Tela de título
├── cases/                       # Seleção de casos — locais + dificuldade
├── game/
│   ├── page.tsx                 # Orquestrador principal do jogo
│   ├── hooks/                   # useVoiceRecorder, useTTS, useGameTimer, useSfx, useSettings
│   ├── components/              # Dock, TopBar, CaseFile, SuspectZone, BriefingScreen, dialogs
│   ├── win/                     # Tela de vitória + InitialsEntry
│   └── lose/                    # Tela de derrota
├── leaderboard/                 # Top 20, animação de nova entrada
├── settings/                    # Configuração de chaves API, exportação, preferências
├── help/                        # Como jogar, pontuação, sobre
├── about/                       # Informações do construtor
└── api/
    ├── generate-case/           # GET — geração de caso Mistral
    ├── interrogate/             # POST — pergunta do jogador → resposta do suspeito
    ├── accuse/                  # POST — avaliação da acusação (juiz separado)
    ├── evaluate/                # POST — análise de vitória/derrota
    ├── hint/                    # POST — dicas ofuscadas de gatilhos de estresse
    ├── tts/                     # POST — ElevenLabs TTS
    ├── transcribe/              # POST — Voxtral STT
    ├── leaderboard/             # GET/POST — placar Supabase
    ├── patterns/                # GET/POST — padrões de aprendizado entre sessões
    └── export/                  # GET — exportação JSONL para administrador

src/lib/
├── mistral/                     # Cliente Mistral, interrogatório, avaliação, geração de caso, embeddings
├── game-session.ts              # Armazenamento de sessão no servidor, tokens de vitória, exportação
├── game-state.ts                # Definições de tipo
├── scoring.ts                   # Cálculo de pontuação + classificações de detetive
├── sanitize.ts                  # Validação de entrada, detecção de injeção
├── db.ts                        # Cliente Supabase
└── rate-limit.ts                # Limitação de taxa por IP

Segurança

O jogo executa IA adversarial contra a entrada do jogador — a segurança é um recurso central, não um complemento.

Sanitização de entrada: Mais de 30 padrões de injeção regex, normalização Unicode (NFKD), remoção de caracteres de largura zero, detecção de payload base64, bloqueio de jargão/não inglês.

Varredura de saída: Respostas da IA verificadas contra segredos do caso com correspondência fuzzy (limiar de 40%, filtragem de stop words). Respostas vazadas substituídas por desvio.

Isolamento do juiz: A avaliação da acusação usa uma chamada Mistral separada com prompt de sistema dedicado, tokens de limite aleatórios, marcadores de injeção removidos. O juiz nunca usa chaves de API fornecidas pelo jogador.

Aplicação de estresse: Travamento monotônico no servidor — o estresse só aumenta, no máximo +1 por turno. Os limiares de pista são aplicados pelo servidor. A IA não pode aumentar ou diminuir o estresse para contornar as portas do jogo.

Baixar ferramenta