Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
interrogation-game — Jeu d'interrogatoire policier basé sur la voix. Mistral Large 3 + Voxtral STT + ElevenLabs TTS. Conçu pour le Mistral Worldwide Hackathon 2026. | Kitploit
Outils/GitHubGitHub/jpoindexter/interrogation-game
OSINT pour l'Ingénierie SocialeSécurité WebCTFIngénierie SocialeApprentissage AutomatiqueApprentissage et ÉducationSécurité de l'IAAttaque AdversarialeLabs et Pratique
GitHubjpoindexter/interrogation-game

interrogation-game

Jeu d'interrogatoire policier basé sur la voix. Mistral Large 3 + Voxtral STT + ElevenLabs TTS. Conçu pour le Mistral Worldwide Hackathon 2026.

528il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

Interrogation

Interrogation — Écran titre

Un jeu d'interrogatoire de détective basé sur la voix. Vous êtes un détective. Mistral est un suspect qui ment. Votre travail consiste à découvrir le mensonge rien qu'en posant des questions.

Chaque affaire est générée de manière procédurale — un crime en col blanc unique, un suspect, une histoire de couverture et un mensonge caché. Le suspect est interprété par Mistral Large, doté d'une histoire complète et chargé de la défendre sous pression contradictoire. Aucune affaire n'est identique.

Construit pour le Mistral Worldwide Hackathon 2026 (Volet en ligne).

"Mistral peut raisonner. Je l'ai fait mentir. Votre travail est de le prendre sur le fait."

Comment ça marche

  1. Choisissez un lieu et une difficulté
  2. Une affaire unique est générée — crime, suspect, histoire de couverture et un mensonge
  3. Interrogez le suspect par la voix ou le texte
  4. Le suspect répond en personnage avec une voix réactive au stress
  5. Collectez des indices en posant les bonnes questions sous pression
  6. Faites votre accusation — une IA juge séparée l'évalue
  7. Correct = confession. Faux = perte d'une tentative (3 au total)
  8. L'IA est instruite de ne jamais avouer, même sous stress maximum. Vous gagnez en faisant une accusation spécifique et précise — pas en faisant craquer le suspect.

Stack

  • Next.js 16 — App Router, TypeScript, Tailwind v4
  • Mistral Large 3 — cerveau de l'IA suspecte, génération d'affaires, évaluation des accusations
  • Voxtral STT — reconnaissance vocale pour les entrées vocales du joueur
  • ElevenLabs TTS — voix du suspect avec stabilité dynamique basée sur le stress
  • Browser SpeechSynthesis — solution de secours quand ElevenLabs est indisponible
  • Supabase — persistance du classement avec RLS, stockage des exportations de parties
  • Framer Motion — animations sur toutes les pages
  • PixelLab — portraits de suspects générés procéduralement

Pour commencer

npm install
cp .env.example .env    # Remplissez vos clés API
npm run dev             # http://localhost:3000

Variables d'environnement

MISTRAL_API_KEY=            # Requis — génération d'affaires, interrogatoire, évaluation, STT
ELEVENLABS_API_KEY=         # Requis — TTS pour la voix du suspect
ELEVENLABS_VOICE_ID=        # Facultatif — ID de voix ElevenLabs spécifique
NEXT_PUBLIC_SUPABASE_URL=   # Requis — URL du projet Supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=  # Requis — clé anonyme Supabase (protégée par RLS)
SUPABASE_SERVICE_ROLE_KEY=  # Facultatif — endpoint d'exportation admin
EXPORT_SECRET=              # Facultatif — authentification d'exportation admin

Les clés API peuvent également être configurées dans la page Paramètres à l'exécution — l'application est livrée sans clé et les joueurs apportent leurs propres clés.

Commandes

npm run dev       # Serveur de développement
npm run build     # Construction pour la production
npm run start     # Serveur de production
npm run lint      # ESLint

Mécaniques de jeu

Difficulté

NiveauIndicesMinuteurComportement du suspect
Facile25 minMensonge évident, nerveux
Moyen37 minMensonge attrapable, calme
Difficile49 minMensonge subtil, expert en esquive
Expert510 minMensonge profondément enfoui, manipulateur

Un mode minuteur illimité est également disponible — en difficulté difficile/expert, le suspect fera appel à un avocat après 4 échanges consécutifs à stress élevé.

Système d'indices

Les indices se déverrouillent à des seuils de stress répartis de 1 à 9, conditionnés par :

  • Nombre minimum de questions par difficulté
  • Longueur minimale des questions (pas de pêche au mot unique)
  • Seuils de stress appliqués côté serveur par numéro d'indice

Le bouton Accuser ne se déverrouille qu'après avoir collecté tous les indices requis.

Score

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)

Le score est calculé côté serveur à partir de statistiques figées au moment de la victoire — les valeurs du client sont ignorées.

Fin de partie

  • Victoire : tampon APPREHENDED, dévoilement progressif du score, saisie d'initiales de 3 lettres façon arcade, classement
  • Défaite (accusations) : ESCAPED, résumé de l'affaire, raillerie du suspect, le mensonge révélé
  • Défaite (temps) : Identique ci-dessus avec issue de timeout
  • Abandon : remarque narquoise générée par l'IA via TTS, révélation complète de l'affaire

Architecture

app/
├── page.tsx                     # Écran titre
├── cases/                       # Sélection d'affaires — lieux + difficulté
├── game/
│   ├── page.tsx                 # Orchestrateur principal du jeu
│   ├── hooks/                   # useVoiceRecorder, useTTS, useGameTimer, useSfx, useSettings
│   ├── components/              # Dock, TopBar, CaseFile, SuspectZone, BriefingScreen, dialogs
│   ├── win/                     # Écran de victoire + InitialsEntry
│   └── lose/                    # Écran de défaite
├── leaderboard/                 # Top 20, animation de nouvelle entrée
├── settings/                    # Configuration des clés API, exportation, préférences
├── help/                        # Comment jouer, score, à propos
├── about/                       # Informations sur le créateur
└── api/
    ├── generate-case/           # GET — génération d'affaire par Mistral
    ├── interrogate/             # POST — question du joueur → réponse du suspect
    ├── accuse/                  # POST — évaluation de l'accusation (juge séparé)
    ├── evaluate/                # POST — analyse victoire/défaite
    ├── hint/                    # POST — indices basés sur des seuils de stress obscurcis
    ├── tts/                     # POST — ElevenLabs TTS
    ├── transcribe/              # POST — Voxtral STT
    ├── leaderboard/             # GET/POST — classement Supabase
    ├── patterns/                # GET/POST — modèles d'apprentissage inter-sessions
    └── export/                  # GET — exportation admin JSONL

src/lib/
├── mistral/                     # Client Mistral, interrogatoire, évaluation, génération d'affaires, embeddings
├── game-session.ts              # Stockage de session côté serveur, jetons de victoire, exportation
├── game-state.ts                # Définitions de types
├── scoring.ts                   # Calcul du score + classements de détective
├── sanitize.ts                  # Validation des entrées, détection d'injection
├── db.ts                        # Client Supabase
└── rate-limit.ts                # Limitation de débit par IP

Sécurité

Le jeu confronte une IA antagoniste aux entrées du joueur — la sécurité est une fonctionnalité centrale, pas une réflexion après coup.

Assainissement des entrées : plus de 30 motifs d'injection regex, normalisation Unicode (NFKD), suppression des caractères de largeur nulle, détection de payloads base64, blocage du charabia/non-anglais.

Analyse des sorties : les réponses de l'IA sont vérifiées par rapport aux secrets de l'affaire avec correspondance floue (seuil de 40 %, filtrage des mots vides). Les réponses divulguées sont remplacées par une esquive.

Télécharger l’outil