Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
interrogation-game — Gioco investigativo basato sulla voce. Mistral Large 3 + Voxtral STT + ElevenLabs TTS. Realizzato per il Mistral Worldwide Hackathon 2026. | Kitploit
Strumenti/GitHubGitHub/jpoindexter/interrogation-game
OSINT per Ingegneria SocialeSicurezza WebCTFIngegneria SocialeMachine LearningApprendimento e FormazioneSicurezza dell'IAAttacco AvversarioLab e Pratica
GitHubjpoindexter/interrogation-game

interrogation-game

Gioco investigativo basato sulla voce. Mistral Large 3 + Voxtral STT + ElevenLabs TTS. Realizzato per il Mistral Worldwide Hackathon 2026.

53 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

Interrogation

Interrogation — Schermata del titolo

Un gioco investigativo basato sulla voce. Sei un detective. Mistral è un sospettato che mente. Il tuo compito è smascherare la bugia solo con le domande.

Ogni caso è generato proceduralmente — un crimine finanziario unico, un sospettato, una storia di copertura e una bugia nascosta. Il sospettato è interpretato da Mistral Large, dotato di una backstory completa e istruito a difenderla sotto pressione avversaria. Non esistono due casi uguali.

Realizzato per la Mistral Worldwide Hackathon 2026 (Online Track).

"Mistral sa ragionare. Io l'ho fatta mentire. Il tuo compito è smascherarla."

Come funziona

  1. Scegli una location e una difficoltà
  2. Viene generato un caso unico — crimine, sospettato, storia di copertura e una bugia
  3. Interroga il sospettato usando voce o testo
  4. Il sospettato risponde in carattere con voce reattiva allo stress
  5. Raccogli indizi facendo le domande giuste sotto pressione
  6. Accusa — un'IA giudice separata valuta la tua accusa
  7. Corretto = confessione. Sbagliato = perdi un tentativo (3 totali)

L'IA è istruita a non confessare mai, nemmeno sotto massimo stress. Vinci facendo un'accusa specifica e accurata — non facendo crollare il sospettato.

Stack

  • Next.js 16 — App Router, TypeScript, Tailwind v4
  • Mistral Large 3 — cervello IA del sospettato, generazione casi, valutazione accusa
  • Voxtral STT — riconoscimento vocale per l'input vocale del giocatore
  • ElevenLabs TTS — voce del sospettato con stabilità dinamica basata sullo stress
  • Browser SpeechSynthesis — fallback quando ElevenLabs non è disponibile
  • Supabase — persistenza della classifica con RLS, archiviazione esportazioni di gioco
  • Framer Motion — animazioni su tutte le pagine
  • PixelLab — ritratti dei sospettati generati proceduralmente

Per iniziare

root@kitploit:~
npm install
cp .env.example .env    # Inserisci le tue chiavi API
npm run dev             # http://localhost:3000

Variabili d'ambiente

root@kitploit:~
MISTRAL_API_KEY=            # Richiesta — generazione casi, interrogatorio, valutazione, STT
ELEVENLABS_API_KEY=         # Richiesta — TTS per la voce del sospettato
ELEVENLABS_VOICE_ID=        # Opzionale — ID voce specifico ElevenLabs
NEXT_PUBLIC_SUPABASE_URL=   # Richiesta — URL del progetto Supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=  # Richiesta — chiave anon Supabase (protetta da RLS)
SUPABASE_SERVICE_ROLE_KEY=  # Opzionale — endpoint esportazione admin
EXPORT_SECRET=              # Opzionale — autenticazione esportazione admin

Le chiavi API possono anche essere configurate nella pagina Impostazioni in fase di esecuzione — l'app viene fornita senza chiavi e i giocatori portano le proprie.

Comandi

root@kitploit:~
npm run dev       # Server di sviluppo
npm run build     # Build di produzione
npm run start     # Server di produzione
npm run lint      # ESLint

Meccaniche di gioco

Difficoltà

È disponibile anche una modalità timer illimitato — in difficoltà difficile/esperto, il sospettato chiamerà un avvocato dopo 4 scambi consecutivi ad alto stress.

Sistema di indizi

Gli indizi si sbloccano a soglie di stress distribuite tra 1 e 9, limitate da:

  • Numero minimo di domande per difficoltà
  • Lunghezza minima delle domande (niente pesca con una parola)
  • Soglie di stress imposte lato server per numero di indizio

Il pulsante Accusa si sblocca solo dopo aver raccolto tutti gli indizi richiesti.

Punteggio

root@kitploit:~
punteggio = punteggioTempo x moltiplicatoreDifficoltà x bonusEfficienza x penalitàSuggerimento x penalitàAccusa

punteggioTempo     = 1000 x sqrt(max(0, 1 - tempoTrascorso / (parTempo x 2)))
moltiplicatore     = facile 1.0x, medio 1.5x, difficile 2.0x, esperto 2.5x
bonusEfficienza    = 1.0-1.5x (meno domande del par = bonus)
penalitàSuggerimento = 0.85^suggerimentiUsati
penalitàAccusa     = max(0, 1 - accuseSbagliate x 0.1)

Il punteggio viene calcolato lato server dalle statistiche congelate al momento della vittoria — i valori del client vengono ignorati.

Fine partita

  • Vittoria: timbro APPREHENDED, rivelazione punteggio scaglionata, inserimento iniziali a 3 lettere stile arcade, classifica
  • Sconfitta (accuse): ESCAPED, riepilogo caso, presa in giro del sospettato, rivelazione della bugia
  • Sconfitta (tempo): Come sopra con esito timeout
  • Arrendersi: Commento ironico generato dall'IA tramite TTS, rivelazione completa del caso

Architettura

root@kitploit:~
app/
├── page.tsx                     # Schermata del titolo
├── cases/                       # Selezione caso — location + difficoltà
├── game/
│   ├── page.tsx                 # Orchestratore principale del gioco
│   ├── hooks/                   # useVoiceRecorder, useTTS, useGameTimer, useSfx, useSettings
│   ├── components/              # Dock, TopBar, CaseFile, SuspectZone, BriefingScreen, dialoghi
│   ├── win/                     # Schermata vittoria + Inserimento iniziali
│   └── lose/                    # Schermata sconfitta
├── leaderboard/                 # Top 20, animazione nuovo inserimento
├── settings/                    # Configurazione chiavi API, esportazione, preferenze
├── help/                        # Come giocare, punteggio, info
├── about/                       # Info realizzatore
└── api/
    ├── generate-case/           # GET — generazione caso Mistral
    ├── interrogate/             # POST — domanda giocatore → risposta sospettato
    ├── accuse/                  # POST — valutazione accusa (giudice separato)
    ├── evaluate/                # POST — analisi vittoria/sconfitta
    ├── hint/                    # POST — suggerimenti oscurati sull'attivazione dello stress
    ├── tts/                     # POST — ElevenLabs TTS
    ├── transcribe/              # POST — Voxtral STT
    ├── leaderboard/             # GET/POST — classifica Supabase
    ├── patterns/                # GET/POST — pattern di apprendimento tra sessioni
    └── export/                  # GET — esportazione admin JSONL

src/lib/
├── mistral/                     # Client Mistral, interrogatorio, valutazione, generazione casi, embeddings
├── game-session.ts              # Archivio sessioni lato server, token vittoria, esportazione
├── game-state.ts                # Definizioni dei tipi
├── scoring.ts                   # Calcolo punteggio + valutazioni detective
├── sanitize.ts                  # Validazione input, rilevamento iniezioni
├── db.ts                        # Client Supabase
└── rate-limit.ts                # Limitazione richieste per IP

Sicurezza

Il gioco esegue un'IA avversaria contro l'input del giocatore — la sicurezza è una caratteristica fondamentale, non un ripensamento.

Sanitizzazione input: oltre 30 pattern regex di iniezione, normalizzazione Unicode (NFKD), rimozione caratteri a larghezza zero, rilevamento payload base64, blocco di testi senza senso/non inglesi.

Scansione output: Risposte IA controllate per segreti del caso con fuzzy matching (soglia 40%, filtro stop-word). Risposte che rivelano segreti sostituite con deviazioni.

Isolamento giudice: La valutazione dell'accusa utilizza una chiamata Mistral separata con prompt di sistema dedicato, token di delimitazione randomizzati, marcatori di iniezione rimossi. Le chiamate al giudice non usano mai chiavi API fornite dal giocatore.

Controllo stress: Clausola di monotonicità lato server — lo stress sale solo, max +1 per turno. Le soglie degli indizi sono applicate lato server. L'IA non può aumentare o diminuire lo stress per aggirare i blocchi di gioco.

Token vittoria: casuale a 128 bit, confronto sicuro nel tempo, monouso, TTL di 30 minuti. Punteggio calcolato da snapshot delle statistiche lato server — i valori riportati dal client vengono ignorati.

Sicurezza sessione: ID casuali a 192 bit, blocchi mutex, TTL di 1 ora, max 5000 sessioni con espulsione LRU. Modalità timer fissata alla creazione.

Validazione TTS: Richiede sessione attiva. Il testo deve corrispondere a un messaggio recente dell'assistente. Impedisce l'abuso di proxy TTS gratuito.

Difesa da avvelenamento RAG: Le tattiche apprese tra sessioni vengono filtrate attraverso il rilevamento di iniezioni e la sanitizzazione prima di essere incluse nel prompt.

Esportazione dati

Le partite completate vengono conservate su Supabase per analisi e miglioramento del modello:

  • Dati completi del caso (inclusi segreti), cronologia conversazione, esito, statistiche, dettagli accusa
  • Esportazione admin: GET /api/export?limit=100&offset=0&outcome=win&difficulty=hard con header Authorization: Bearer <EXPORT_SECRET>
  • CLI: EXPORT_SECRET=xxx npx tsx scripts/export-data.ts --output=data/export.jsonl

Sound Design

  • Audio immersivo: ticchettio ambientale dell'orologio, agitazione nervosa ad alto stress, stacchi drammatici
  • Musica di sottofondo con crossfade tra pool menu e gioco
  • Tutti gli effetti sonori mono 22kHz 48kbps MP3, <1s ciascuno, con envelope di fade per suono
  • Controlli volume master separati per musica e effetti sonori
  • La stabilità della voce ElevenLabs diminuisce con lo stress del sospettato — la voce letteralmente si degrada

Design

Estetica detective noir. Scuro, minimale, tipografico. JetBrains Mono. Sfondi pixel art e ritratti sospettati. Niente balloon di chat — il dialogo appare come testo stilizzato nella scena.

Configurazione Supabase

Crea una tabella leaderboard:

root@kitploit:~
CREATE TABLE leaderboard (
  id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
  player_name text NOT NULL,
  case_number text,
  case_setting text,
  suspect_name text,
  time_remaining int,
  stress_level int,
  clues_found int,
  hints_used int,
  accusations_used int,
  detective_rating text,
  score int NOT NULL,
  created_at timestamptz DEFAULT now()
);

ALTER TABLE leaderboard ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Public read" ON leaderboard FOR SELECT USING (true);
CREATE POLICY "Public insert" ON leaderboard FOR INSERT WITH CHECK (true);

Tabella opzionale game_exports per dati di addestramento:

root@kitploit:~
CREATE TABLE game_exports (
  id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
  session_id text UNIQUE NOT NULL,
  case_data jsonb NOT NULL,
  conversation jsonb NOT NULL,
  outcome text NOT NULL,
  difficulty text NOT NULL,
  setting text,
  stats jsonb NOT NULL,
  accusation_text text,
  accusation_correct boolean,
  created_at timestamptz DEFAULT now()
);

ALTER TABLE game_exports ENABLE ROW LEVEL SECURITY;
CREATE POLICY "anon_insert" ON game_exports FOR INSERT TO anon WITH CHECK (true);
CREATE POLICY "no_public_read" ON game_exports FOR SELECT TO anon USING (false);

Tabella opzionale interrogation_patterns per apprendimento tra sessioni:

root@kitploit:~
CREATE TABLE interrogation_patterns (
  id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
  session_id text UNIQUE NOT NULL,
  setting text,
  difficulty text NOT NULL,
  outcome text NOT NULL,
  questions jsonb,
  effective_questions jsonb,
  max_stress int,
  clues_found int,
  time_elapsed int,
  embedding vector(1024),
  created_at timestamptz DEFAULT now()
);

ALTER TABLE interrogation_patterns ENABLE ROW LEVEL SECURITY;
CREATE POLICY "anon_insert" ON interrogation_patterns FOR INSERT TO anon WITH CHECK (true);
CREATE POLICY "anon_read" ON interrogation_patterns FOR SELECT TO anon USING (true);

Hackathon

Mistral Worldwide Hackathon 2026 — Online Track, categoria "Anything Goes".

Criteri di valutazione: Creatività/unicità (più importante), potenziale futuro, implementazione tecnica, qualità della presentazione.

Premi speciali: Best Mistral Vibe (AirPods), Best Voice AI (abbonamento 6 mesi ElevenLabs).

Sponsor: Mistral, ElevenLabs, NVIDIA, AWS, Hugging Face, Jump Trading, Weights & Biases, Giant, Raise, Tilde Research, White Circle.

Perché questo progetto

La maggior parte dei progetti IA degli hackathon sono assistenti o chatbot. Questo ribalta il copione — l'IA non ti aiuta, ti mente. Il giocatore è avversario del modello, non collaborativo. Questo crea un'interazione fondamentalmente diversa: stai cercando incongruenze, applicando pressione e leggendo segnali comportamentali invece di chiedere aiuto.

Il gioco genera anche dati di addestramento. Ogni sessione completata — domande poste, progressione dello stress, quali tattiche hanno funzionato, quali no — è esportabile come JSONL. Questo crea un ciclo di feedback: gioca, esporta i dati, affina il modello, rendilo più difficile da smascherare.

Utilizzo dell'ecosistema Mistral

  • Mistral Large 3 — cervello IA del sospettato (roleplay avversario con output JSON strutturato), generazione casi (scenari criminosi procedurali), valutazione accusa (chiamata giudice separato)
  • Voxtral STT — trascrizione input vocale del giocatore
  • Mistral Embeddings — similarità vettoriale per riconoscimento pattern tra sessioni (apprendimento RAG)

Potenziale futuro

  • Affinare Mistral sui dati di gioco esportati per creare sospettati sempre più difficili
  • Modalità multiplayer — un giocatore interroga, un altro guarda e consiglia
  • Editor di casi — scenari creati dalla community con sospettati personalizzati
  • App mobile con voce sempre attiva
  • Strumento di addestramento per la pratica di tecniche di interrogatorio reali

Realizzato da

Jason Poindexter — Partecipazione singola, online track da Barcellona.

Scarica lo strumento
LivelloIndiziTimerComportamento sospettato
Facile25 minBugia ovvia, nervoso
Medio37 minBugia scopribile, composto
Difficile49 minBugia sottile, abile nel deviare
Esperto510 minBugia profondamente nascosta, manipolatore