ai-secret-scout 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.fr.md ADDED
@@ -0,0 +1,514 @@
1
+ <div align="center">
2
+ <pre>
3
+ █████╗ ██╗ ███████╗ ██████╗ ██████╗ ██╗ ██╗████████╗
4
+ ██╔══██╗██║ ██╔════╝██╔════╝██╔═══██╗██║ ██║╚══██╔══╝
5
+ ███████║██║ ███████╗██║ ██║ ██║██║ ██║ ██║
6
+ ██╔══██║██║ ╚════██║██║ ██║ ██║██║ ██║ ██║
7
+ ██║ ██║██║ ███████║╚██████╗╚██████╔╝╚██████╔╝ ██║
8
+ ╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝
9
+ ◈ A I S E C R E T S C O U T ◈
10
+ </pre>
11
+
12
+ <h2>AI Secret Scout (<code>aiscout</code>) — v2.3.0</h2>
13
+
14
+ <p align="center">
15
+ <!-- Ligne 1 : badges techno & plateforme -->
16
+ <img src="https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python&amp;logoColor=white" alt="Python 3.10+">
17
+ <img src="https://img.shields.io/badge/Interface-TUI%20Plein%20%C3%89cran-06B6D4?logo=gnometerminal&amp;logoColor=white" alt="TUI Plein Écran">
18
+ <img src="https://img.shields.io/badge/D%C3%A9pendances-Zero%20External-22c55e?logo=python&amp;logoColor=white" alt="Zéro Dépendance">
19
+ <img src="https://img.shields.io/badge/Watchdog-Temps%20R%C3%A9el%20%26%20Desktop%20Alerts-F59E0B?logo=airplayaudio&amp;logoColor=white" alt="Watchdog Temps Réel">
20
+ <img src="https://img.shields.io/badge/Safe%20Restore-Gestionnaire%20Backups-7C3AED?logo=securityscorecard&amp;logoColor=white" alt="Safe Restore">
21
+ <img src="https://img.shields.io/badge/Plateforme-Linux%20%7C%20WSL%20(uniquement)-E95420?logo=linux&amp;logoColor=white" alt="Linux | WSL (uniquement)">
22
+ </p>
23
+
24
+ <p align="center">
25
+ <!-- Ligne 2 : thématique & écosystèmes IA audités -->
26
+ <img src="https://img.shields.io/badge/Claude%20Code-Audit%C3%A9-D97706?logo=anthropic&amp;logoColor=white" alt="Claude Code">
27
+ <img src="https://img.shields.io/badge/Antigravity-Audit%C3%A9-4285F4?logo=google&amp;logoColor=white" alt="Antigravity">
28
+ <img src="https://img.shields.io/badge/OpenAI%20Codex-Audit%C3%A9-10A37F?logo=openai&amp;logoColor=white" alt="Codex">
29
+ <img src="https://img.shields.io/badge/GitHub%20Copilot-Audit%C3%A9-000000?logo=githubcopilot&amp;logoColor=white" alt="GitHub Copilot">
30
+ <img src="https://img.shields.io/badge/Cursor%20%26%20Aider-Audit%C3%A9-8B5CF6" alt="Cursor &amp; Aider">
31
+ </p>
32
+
33
+ <p align="center">
34
+ <i>Audit, surveillance temps réel (Watchdog), alertes bureau, détection heuristique et caviardage sécurisé de fuites de secrets dans les historiques d'IA.</i>
35
+ </p>
36
+
37
+ <p align="center">
38
+ <b><a href="./README.md">🇬🇧 English documentation</a></b> | <b>🇫🇷 Documentation en français</b>
39
+ </p>
40
+ </div>
41
+
42
+ ---
43
+
44
+ ## 📑 Sommaire
45
+ 1. [Pourquoi ce projet ?](#-pourquoi-ce-projet-)
46
+ 2. [Nouveautés majeures de la v2.3.0](#-nouveautés-majeures-de-la-v230)
47
+ 3. [Lancement rapide](#-lancement-rapide)
48
+ 4. [Interface TUI & Navigation](#-interface-tui--navigation)
49
+ 5. [Surveillance Temps Réel (Watchdog) & Notifications Bureau](#-surveillance-temps-réel-watchdog--notifications-bureau)
50
+ 6. [Gestionnaire de Sauvegardes & Restauration (`Safe Restore`)](#-gestionnaire-de-sauvegardes--restauration-safe-restore)
51
+ 7. [Écosystèmes d'IA Audités](#-écosystèmes-dia-audités)
52
+ 8. [Moteur de Détection & Signatures (18 intégrées + Custom)](#-moteur-de-détection--signatures-18-intégrées--custom)
53
+ 9. [Fichier de Règles Personnalisées (`rules.json`)](#-fichier-de-règles-personnalisées-rulesjson)
54
+ 10. [Algorithmes Anti-Faux-Positifs](#-algorithmes-anti-faux-positifs)
55
+ 11. [Assainissement & Caviardage Sécurisé (`Safe Redact`)](#-assainissement--caviardage-sécurisé-safe-redact)
56
+ 12. [Raccourcis Clavier & Contrôles](#-raccourcis-clavier--contrôles)
57
+ 13. [Mode Scripting / CLI & Automatisation](#-mode-scripting--cli--automatisation)
58
+ 14. [Architecture Technique](#-architecture-technique)
59
+
60
+ ---
61
+
62
+ ## 🔍 Pourquoi ce projet ?
63
+
64
+ Lors de l'utilisation d'assistants de codage autonomes (**Claude Code**, **Google Antigravity / Gemini CLI**, **OpenAI Codex**, **GitHub Copilot CLI**, **Cursor**), les modèles enregistrent des transcriptions complètes de chaque échange dans votre espace personnel (`~/.claude`, `~/.gemini`, etc.).
65
+
66
+ ### Le problème
67
+ 1. **Fuites passives de secrets** : Lorsqu'un agent exécute une commande terminal (ex. `infisical secrets`, `ssh`, `curl`, ou un script `.env`), la sortie brute de la commande est enregistrée en clair dans les logs locaux.
68
+ 2. **Fuites actives dans les prompts** : Lorsqu'un utilisateur colle une clé d'API, un token GitHub ou un mot de passe directement dans la boîte de dialogue, cette valeur est conservée indéfiniment sur le disque.
69
+ 3. **Absence de protection native** : Même si certains assistants avertissent l'utilisateur de la fuite, ils ne suppriment **jamais** la valeur enregistrée sur le disque.
70
+ 4. **Persistance invisible** : Les secrets restent vulnérables aux malwares locaux, aux sauvegardes cloud accidentelles ou aux partages de dépôts.
71
+
72
+ **AI Secret Scout (`aiscout`)** comble cette faille critique : il surveille et audite l'ensemble des historiques d'IA sur votre machine, attribue chaque secret à son **projet d'origine**, identifie son **contexte d'usage**, et permet de le **caviarder chirurgicalement** avec sauvegarde de secours et restauration instantanée.
73
+
74
+ ---
75
+
76
+ ## 🌟 Nouveautés majeures de la v2.3.0
77
+
78
+ * **📡 Surveillance continue en temps réel (Mode Watchdog)** :
79
+ * Détecte instantanément l'écriture ou la modification d'un fichier de session IA sans solliciter le CPU.
80
+ * Envoi immédiat d'une **notification de bureau native** (`notify-send`) sous Linux (KDE Plasma Wayland / GNOME).
81
+ * Voyant de pulsation visuelle en direct `🟢 [VEILLE ACTIVE]` et journal des événements défilant en temps réel.
82
+ * Accessible via le menu TUI `[8]` ou en ligne de commande directe : `aiscout --watch`.
83
+
84
+ * **↩️ Gestionnaire de sauvegardes & Restauration (`Safe Restore`)** :
85
+ * Tableau TUI interactif dédié à la gestion des sauvegardes (`.bak`) créées lors des opérations de caviardage.
86
+ * Restauration unitaire chirurgicale (`[R]`), restauration complète de tous les originaux (`[A]`), ou purge définitive (`[P]`).
87
+ * Commandes CLI dédiées : `aiscout --restore` et `aiscout --clean-backups`.
88
+
89
+ * **🔍 Recherche interactive (`/`) & Tri dynamique (`S`/`D`/`O`) dans le tableau TUI** :
90
+ * Touche `/` : Champ de recherche textuel instantané (filtre en direct par catégorie, outil, projet, chemin ou valeur).
91
+ * Touches de tri dynamique :
92
+ * `S` : Tri par sévérité décroissante (`🔴 CRITIQUE` > `🟡 ÉLEVÉ` > `🔵 MOYEN`).
93
+ * `D` : Tri par date / fraîcheur de session (les plus récents en premier).
94
+ * `O` : Tri alphabétique par outil d'IA.
95
+ * Réinitialisation rapide via `Backspace` ou `Échap`.
96
+
97
+ * **⚙️ Moteur de règles personnalisées & 4 nouvelles signatures** :
98
+ * Chargement automatique de règles définies par l'utilisateur dans `~/.config/aiscout/rules.json`.
99
+ * 4 nouvelles signatures intégrées majeures :
100
+ * **GitLab Personal Access Token** (`glpat-[0-9a-zA-Z_\-]{20,}`)
101
+ * **HuggingFace Access Token** (`hf_[a-zA-Z0-9]{34,}`)
102
+ * **Resend API Key** (`re_[a-zA-Z0-9_\-]{24,}`)
103
+ * **Supabase / JWT Secret** (`eyJ...`)
104
+ * Commande d'inspection CLI : `aiscout --list-rules` listant les 18 règles intégrées et les règles custom.
105
+
106
+ ---
107
+
108
+ ## 🚀 Lancement rapide
109
+
110
+ `aiscout` peut être exécuté directement ou installé sur votre machine :
111
+
112
+ ```bash
113
+ # ⚡ Exécution instantanée sans installation préalable
114
+ npx ai-secret-scout
115
+ # ou avec bun
116
+ bunx ai-secret-scout
117
+
118
+ # 📦 Installation globale permanente (recommandée)
119
+ npm install -g ai-secret-scout
120
+ # ou avec bun
121
+ bun add -g ai-secret-scout
122
+
123
+ # Une fois installé, les commandes aiscout et ai-secret-scout sont disponibles partout :
124
+ aiscout
125
+
126
+ # Surveillance temps réel (Watchdog) avec alertes bureau
127
+ aiscout --watch
128
+
129
+ # Restauration instantanée de tous les fichiers originaux depuis leurs sauvegardes .bak
130
+ aiscout --restore
131
+
132
+ # Nettoyage définitif de tous les fichiers .bak
133
+ aiscout --clean-backups
134
+
135
+ # Liste exhaustive de toutes les règles actives (intégrées + personnalisées)
136
+ aiscout --list-rules
137
+ ```
138
+
139
+ L'application bascule automatiquement votre terminal dans un écran alternatif (`\033[?1049h`). À la fermeture (`Q`), votre terminal d'origine est intégralement restauré sans résidu d'affichage.
140
+
141
+ ---
142
+
143
+ ## 🎨 Interface TUI & Navigation
144
+
145
+ Le moteur TUI autonome d'`aiscout` (pure bibliothèque standard Python) s'adapte dynamiquement aux dimensions de votre terminal sans jamais tronquer le menu ni provoquer de défilement parasite.
146
+
147
+ ### 1. Tableau de bord & Menu d'accueil interactif (Hub central)
148
+
149
+ ```text
150
+ ◈ AISCOUT v2.3.0 │ Utilisateur : dev_redious │ Machine : nobara-pc 12/09/2026 22:30
151
+
152
+ █████╗ ██╗ ███████╗ ██████╗ ██████╗ ██╗ ██╗████████╗
153
+ ██╔══██╗██║ ██╔════╝██╔════╝██╔═══██╗██║ ██║╚══██╔══╝
154
+ ███████║██║ ███████╗██║ ██║ ██║██║ ██║ ██║
155
+ ██╔══██║██║ ╚════██║██║ ██║ ██║██║ ██║ ██║
156
+ ██║ ██║██║ ███████║╚██████╗╚██████╔╝╚██████╔╝ ██║
157
+ ╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝
158
+
159
+ ◈ A U D I T D E S S E C R E T S E N C L A I R D A N S L E S I A ◈
160
+ Claude Code • Antigravity / Gemini • Codex • GitHub Copilot • Cursor
161
+
162
+ [ 🔴 19 CRITIQUES │ 🟡 1 ÉLEVÉ │ 🔵 1 MOYEN ] ◈ TOTAL : 21 SECRETS EXPOSÉS
163
+
164
+ ║ ▶ [1] 🔍 AUDIT COMPLET DES SESSIONS IA ║
165
+ │ [2] 📋 EXPLORATEUR DE SECRETS (TABLEAU TUI) │
166
+ │ [3] 👁️ MODE RÉVÉLATION (VALEURS EN CLAIR) │
167
+ │ [4] 🏷️ FILTRER PAR OUTIL IA OU PROJET │
168
+ │ [5] 💾 EXPORTER LE DOSSIER D'AUDIT │
169
+ │ [6] 🛡️ ASSAINISSEMENT & CAVIARDAGE SÉCURISÉ │
170
+ │ [7] ↩️ GESTIONNAIRE DES BACKUPS (.BAK) │
171
+ │ [8] 📡 SURVEILLANCE TEMPS RÉEL (WATCHDOG) │
172
+ │ [9] 🚪 QUITTER L'APPLICATION │
173
+
174
+ ╭─ ACTION SÉLECTIONNÉE ───────────────────────────────────────────────────────╮
175
+ │ 💡 Naviguer au clavier dans la liste des secrets détectés et inspecter │
176
+ ╰─────────────────────────────────────────────────────────────────────────────╯
177
+
178
+ [↑/↓] Naviguer │ [Entrée] Valider │ [1-9] Accès direct │ [Q] Quitter
179
+ ```
180
+
181
+ ### 2. Explorateur de secrets (Tableau interactif, Tri dynamique & Recherche)
182
+
183
+ La vue tableau permet de parcourir l'intégralité des fuites identifiées avec pagination fluide, tri multi-critères et recherche plein texte instantanée :
184
+
185
+ ```text
186
+ ◈ AISCOUT v2.3.0 │ Utilisateur : dev_redious │ Machine : nobara-pc 12/09/2026 22:30
187
+
188
+ 📋 EXPLORATEUR DE SECRETS (1/21) — Mode : MASQUÉ 🛡️ │ Tri : Sévérité (🔴 > 🟡 > 🔵)
189
+
190
+ # │ SÉVÉRITÉ │ CATÉGORIE │ OUTIL IA │ PROJET │ VALEUR DU SECRET
191
+ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
192
+ 1 │ 🔴 CRITIQUE │ Clé Privée (SSH / RSA / ECC) │ Claude Code │ ~ │ ----****************...
193
+ 2 │ 🔴 CRITIQUE │ Clé Privée (SSH / RSA / ECC) │ Claude Code │ ~ │ ----****************...
194
+ 3 │ 🔴 CRITIQUE │ GitHub Token (PAT / Fine-Gr) │ Claude Code │ ~/Documents/Dev/RIL... │ ghp_****************...
195
+ 4 │ 🔴 CRITIQUE │ Infisical / Coolify Token │ Claude Code │ ~/Documents/Dev/RIL... │ st.4****************...
196
+ 5 │ 🟡 ÉLEVÉ │ Discord Bot Token │ Claude Code │ ~/Documents/Dev/RIL... │ MTE2****************...
197
+ 6 │ 🔵 MOYEN │ Mot de passe passé en comman │ Claude Code │ ~/Documents/Dev/RIL... │ pass****************...
198
+ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
199
+
200
+ [↑/↓] Naviguer │ [Entrée] Fiche │ [/] Chercher │ [S/D/O] Trier │ [R] Mode │ [C] Caviarder │ [Q] Retour
201
+ ```
202
+
203
+ #### Recherche interactive plein texte (`/`)
204
+ En appuyant sur `/`, une boîte de saisie inline s'ouvre sur la barre inférieure. Le tableau se met à jour en temps réel (filtre instantané sur la catégorie, l'outil, le projet, le fichier ou la valeur du secret) :
205
+
206
+ ```text
207
+ ◈ AISCOUT v2.3.0 │ Utilisateur : dev_redious │ Machine : nobara-pc 12/09/2026 22:30
208
+
209
+ 📋 EXPLORATEUR DE SECRETS (1/3) — Mode : MASQUÉ 🛡️ │ Tri : Sévérité (🔴 > 🟡 > 🔵)
210
+ 🔍 Recherche active : "github" (3 secrets trouvés) │ [Backspace/Esc] Effacer
211
+
212
+ # │ SÉVÉRITÉ │ CATÉGORIE │ OUTIL IA │ PROJET │ VALEUR DU SECRET
213
+ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
214
+ 1 │ 🔴 CRITIQUE │ GitHub Token (PAT / Fine-Gr) │ Claude Code │ ~/Documents/Dev/RIL... │ ghp_****************...
215
+ 2 │ 🔴 CRITIQUE │ GitHub Token (PAT / Fine-Gr) │ Claude Code │ ~/Documents/Dev/RIL... │ ghp_****************...
216
+ 3 │ 🔴 CRITIQUE │ GitHub Token (PAT / Fine-Gr) │ Antigravity (Gemi) │ Session Antigravity │ ghp_****************...
217
+ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
218
+
219
+ [↑/↓] Naviguer │ [Entrée] Fiche │ [/] Chercher │ [S/D/O] Trier │ [R] Mode │ [C] Caviarder │ [Q] Retour
220
+ ```
221
+
222
+ ### 3. Fiche détaillée d'audit (Modal Card)
223
+
224
+ En pressant `Entrée` sur une ligne du tableau, une fiche d'audit chirurgicale s'affiche avec le contexte exact d'usage et l'extrait de log :
225
+
226
+ ```text
227
+ ◈ AISCOUT v2.3.0 │ Utilisateur : dev_redious │ Machine : nobara-pc 12/09/2026 22:30
228
+
229
+ ╭──────────────────────────────────────────────────────────────────────────────────╮
230
+ │ FICHE D'AUDIT DU SECRET DÉTECTÉ │
231
+ ├──────────────────────────────────────────────────────────────────────────────────┤
232
+ │ Catégorie : Clé Privée (SSH / RSA / ECC) │
233
+ │ Sévérité : CRITIQUE │
234
+ │ Outil IA : Claude Code │
235
+ │ Projet d'origine: ~ │
236
+ │ Date session : 2026-08-20 14:06 │
237
+ │ Emplacement : 20b45f26-98f1-4273-a834-32243f11d067.jsonl:23 │
238
+ │ Contexte : Sortie d'outil exécuté (commande bash, .env ou infisical) │
239
+ ├──────────────────────────────────────────────────────────────────────────────────┤
240
+ │ VALEUR EN CLAIR: -----BEGIN OPENSSH PRIVATE KEY----- │
241
+ ├──────────────────────────────────────────────────────────────────────────────────┤
242
+ │ Extrait Log : │ SECRET NAME │ SECRET VALUE │
243
+ ├──────────────────────────────────────────────────────────────────────────────────┤
244
+ │ Action conseillée: 1. Procéder à la rotation de la clé/identifiant. │
245
+ │ 2. Caviarder ce fichier avec [C] pour effacer la trace. │
246
+ ╰──────────────────────────────────────────────────────────────────────────────────╯
247
+
248
+ [C] Caviarder ce secret │ [Esc] ou [Q] Retour à la liste
249
+ ```
250
+
251
+ ### 4. Animation de chargement en temps réel (Spinner & Jauge dynamique)
252
+
253
+ Lors de l'audit initial, du caviardage ou de l'exportation des dossiers d'audit, une animation à 100ms affiche l'étape en cours et la progression :
254
+
255
+ ```text
256
+ ◈ AISCOUT v2.3.0 │ Utilisateur : dev_redious │ Machine : nobara-pc 12/09/2026 22:30
257
+
258
+ █████╗ ██╗ ███████╗ ██████╗ ██████╗ ██╗ ██╗████████╗
259
+ ██╔══██╗██║ ██╔════╝██╔════╝██╔═══██╗██║ ██║╚══██╔══╝
260
+ ███████║██║ ███████╗██║ ██║ ██║██║ ██║ ██║
261
+ ██╔══██║██║ ╚════██║██║ ██║ ██║██║ ██║ ██║
262
+ ██║ ██║██║ ███████║╚██████╗╚██████╔╝╚██████╔╝ ██║
263
+ ╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝
264
+
265
+ ⚡ AUDIT DE SÉCURITÉ EN COURS D'EXÉCUTION...
266
+
267
+ ╭──────────────────────────────────────────────────────────────────╮
268
+ │ ⠹ [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱] 58% │
269
+ │ Analyse : Infisical / Coolify Token │
270
+ ╰──────────────────────────────────────────────────────────────────╯
271
+
272
+ Veuillez patienter pendant l'analyse...
273
+ ```
274
+
275
+ ### 🌟 Points forts du moteur TUI (v2.3.0)
276
+ * **Gestion infaillible des flèches** : Décodage non bloquant avec lookahead 100ms absorbant toutes les séquences d'échappement ANSI (`\x1b[A`, `\x1b[B`, `\x1bOA`, `\x1bOB`, consoles Linux et modificateurs Shift/Ctrl).
277
+ * **Layout auto-adaptatif (zéro coupure)** :
278
+ * Barre supérieure clouée à la **ligne 1**.
279
+ * Barre inférieure clouée à la **dernière ligne du terminal**.
280
+ * Hauteur ≥ 42 : Grandes cartes épaisses avec double bordure (`╔══════╗`).
281
+ * Hauteur 27–41 : Boutons barres compacts en surbrillance avec boîte de description contextuelle.
282
+ * Hauteur < 27 : En-tête ultra-compact assurant que 100% des 9 actions restent immédiatement accessibles.
283
+ * **Précision typographique Unicode** : Prise en charge des largeurs de caractères variables (`unicodedata.east_asian_width`) pour garantir l'alignement strict des bordures verticales avec les emojis.
284
+
285
+ ---
286
+
287
+ ## 📡 Surveillance Temps Réel (Watchdog) & Notifications Bureau
288
+
289
+ Le mode **Watchdog** transforme `aiscout` en un gardien silencieux en arrière-plan :
290
+
291
+ ```text
292
+ ◈ AISCOUT v2.3.0 │ Utilisateur : dev_redious │ Machine : nobara-pc 12/09/2026 22:21
293
+
294
+ 📡 SURVEILLANCE EN TEMPS RÉEL (WATCHDOG) │ 🟢 [VEILLE ACTIVE]
295
+ Détecte les sessions IA en écriture et notifie instantanément sur le bureau KDE Plasma
296
+
297
+ ╭──────────────────────────────────────────────────────────────────────────────╮
298
+ │ Fichiers écoutés : 5498 │ Scans live : 14 │ Alertes déclenchées : 0 │
299
+ ╰──────────────────────────────────────────────────────────────────────────────╯
300
+
301
+ ╭─ 📜 JOURNAL DES ÉVÉNEMENTS RÉCENTS (14 logs) ────────────────────────────────╮
302
+ │ [22:20:10] 🚀 Surveillance démarrée — 5498 fichiers d'historique IA sous éc │
303
+ │ [22:20:45] ℹ️ Modification vérifiée saine : history.jsonl │
304
+ │ [22:21:02] ⚠️ ALERTE : GitHub Token (CRITIQUE) dans Claude Code (~/ProjetX) │
305
+ ╰──────────────────────────────────────────────────────────────────────────────╯
306
+
307
+ [Q] ou [Esc] Quitter la surveillance et revenir au menu principal
308
+ ```
309
+
310
+ ### Mécanismes clés
311
+ 1. **Écoute non-intrusive** : Scrute les horodatages `mtime` des répertoires d'IA sans lire le disque inutilement.
312
+ 2. **Scan chirurgical** : Dès qu'une modification ou un nouveau fichier est détecté, seul ce fichier est analysé à chaud avec `scan_single_file()`.
313
+ 3. **Alertes de bureau natives** : Déclenchement via `notify-send` avec niveau d'urgence `critical` sous KDE Plasma Wayland et GNOME.
314
+ 4. **Signal d'alerte sonore** : Bip terminal (`\a`) lors de chaque détection de secret critique.
315
+
316
+ ---
317
+
318
+ ## ↩️ Gestionnaire de Sauvegardes & Restauration (`Safe Restore`)
319
+
320
+ Le menu `[7]` offre un contrôle absolu sur les fichiers de sauvegarde générés lors des opérations de caviardage :
321
+
322
+ ```text
323
+ ◈ AISCOUT v2.3.0 │ Utilisateur : dev_redious │ Machine : nobara-pc 12/09/2026 22:22
324
+
325
+ ↩️ GESTIONNAIRE DES SAUVEGARDES & RESTAURATION (.BAK)
326
+ Restaurer les fichiers originaux avant caviardage ou purger les sauvegardes.
327
+
328
+ # │ FICHIER SOURCE │ OUTIL IA │ TAILLE │ DATE SAUVEGARDE
329
+ ──────────────────────────────────────────────────────────────────────────────────────────
330
+ 1 │ 20b45f26-98f1-4273-a834...jsonl │ Claude Code │ 412.3 Ko │ 12/09/2026 22:15
331
+ 2 │ history.jsonl │ Antigravity (Gemini) │ 84.1 Ko │ 12/09/2026 21:50
332
+ ──────────────────────────────────────────────────────────────────────────────────────────
333
+
334
+ [↑/↓] Naviguer │ [R] Restaurer sélection │ [A] Tout restaurer │ [P] Purger (.bak) │ [Esc] Retour
335
+ ```
336
+
337
+ * **`[R]` Restaurer le fichier sélectionné** : Remplace le fichier courant par sa version originale et supprime le `.bak`.
338
+ * **`[A]` Tout restaurer** : Restaure l'ensemble des sauvegardes en une seule commande après confirmation.
339
+ * **`[P]` Purger définitivement** : Supprime tous les `.bak` pour finaliser définitivement l'assainissement et libérer l'espace disque.
340
+
341
+ ---
342
+
343
+ ## 📁 Écosystèmes d'IA Audités
344
+
345
+ `aiscout` recherche automatiquement les historiques dans toute session utilisateur :
346
+
347
+ | Assistant IA | Chemins analysés | Types de fichiers |
348
+ | :--- | :--- | :--- |
349
+ | **Claude Code** | `~/.claude/projects/`, `~/.claude/history.jsonl`, `~/.claude/handoff/` | `JSONL`, `JSON` |
350
+ | **Google Antigravity / Gemini CLI** | `~/.gemini/antigravity-cli/brain/`, `~/.gemini/antigravity-cli/history.jsonl`, `conversations/` | `JSONL`, `JSON` |
351
+ | **OpenAI Codex CLI** | `~/.codex/sessions/`, `~/.codex/history.jsonl` | `JSONL`, `JSON` |
352
+ | **GitHub Copilot CLI** | `~/.copilot/session-state/` | `JSON`, `LOG` |
353
+ | **Cursor & Aider** | `~/.cursor/projects/`, `~/.cursor/plans/`, `.aider.chat.history.md` | `JSON`, `MD` |
354
+
355
+ ---
356
+
357
+ ## 🛡️ Moteur de Détection & Signatures (18 intégrées + Custom)
358
+
359
+ | Catégorie | Sévérité | Exemple de pattern détecté |
360
+ | :--- | :---: | :--- |
361
+ | **GitHub Token (PAT / Fine-Grained)** | 🔴 **CRITIQUE** | `ghp_[A-Za-z0-9]{36}`, `github_pat_[A-Za-z0-9_]{82}` |
362
+ | **GitLab Personal Access Token** *(Nouveau)* | 🔴 **CRITIQUE** | `glpat-[0-9a-zA-Z_\-]{20,}` |
363
+ | **HuggingFace Token** *(Nouveau)* | 🔴 **CRITIQUE** | `hf_[a-zA-Z0-9]{34,}` |
364
+ | **Clé Privée (SSH / RSA / ECC / PEM)** | 🔴 **CRITIQUE** | `-----BEGIN (?:OPENSSH\|RSA\|EC) PRIVATE KEY-----` |
365
+ | **Stripe Secret Key** | 🔴 **CRITIQUE** | `sk_live_[0-9a-zA-Z]{24,}`, `rk_live_[0-9a-zA-Z]{24,}` |
366
+ | **Base de données (URI avec MDP)** | 🔴 **CRITIQUE** | `postgres://user:password@host`, `mysql://...`, `mongodb://...` |
367
+ | **Infisical / Coolify Token** | 🔴 **CRITIQUE** | `st.[a-f0-9]{24}.[a-f0-9]{64}`, `inf_sec_...`, `inf_tok_...` |
368
+ | **Resend API Key** *(Nouveau)* | 🟡 **ÉLEVÉ** | `re_[a-zA-Z0-9_\-]{24,}` |
369
+ | **Supabase / JWT Secret** *(Nouveau)* | 🟡 **ÉLEVÉ** | `eyJ[a-zA-Z0-9_-]{10,}\.eyJ...` |
370
+ | **Anthropic API Key** | 🟡 **ÉLEVÉ** | `sk-ant-api03-[A-Za-z0-9_-]{30,}` |
371
+ | **OpenAI API Key** | 🟡 **ÉLEVÉ** | `sk-proj-[A-Za-z0-9_-]{32,}` |
372
+ | **AWS Access Key** | 🟡 **ÉLEVÉ** | `AKIA[0-9A-Z]{16}`, `ASIA[0-9A-Z]{16}` |
373
+ | **Discord Bot Token** | 🟡 **ÉLEVÉ** | `[MN][A-Za-z\d]{23,25}\.[a-zA-Z0-9_-]{6}\.[a-zA-Z0-9_-]{27,39}` |
374
+ | **Slack Token** | 🟡 **ÉLEVÉ** | `xox[baprs]-[0-9a-zA-Z]{10,48}` |
375
+ | **Tailscale Auth Key** | 🟡 **ÉLEVÉ** | `tskey-auth-[a-zA-Z0-9_-]{20,}` |
376
+ | **Variable d'environnement sensible** | 🟡 **ÉLEVÉ** | `PGPASSWORD=...`, `MYSQL_PWD=...`, `API_KEY=...` |
377
+ | **Mot de passe dans le Prompt** | 🟡 **ÉLEVÉ** | `"mon mot de passe est ..."`, `"mdp: ..."` |
378
+ | **Mot de passe passé en commande CLI**| 🔵 **MOYEN** | `sshpass -p ...`, `mysql -p...`, `--password ...` |
379
+
380
+ ---
381
+
382
+ ## ⚙️ Fichier de Règles Personnalisées (`rules.json`)
383
+
384
+ `aiscout` permet d'ajouter vos propres signatures propres à votre entreprise ou projets dans :
385
+ `~/.config/aiscout/rules.json`
386
+
387
+ ```json
388
+ {
389
+ "_comment": "Ajoutez vos règles personnalisées ici. Format: Nom: {regex, severity, description}",
390
+ "Jeton Interne Entreprise": {
391
+ "regex": "\\bcorp_sec_[a-zA-Z0-9]{24,}\\b",
392
+ "severity": "CRITIQUE",
393
+ "description": "Jeton secret d'accès à l'API interne d'entreprise."
394
+ },
395
+ "Clé API Partenaire": {
396
+ "regex": "\\bpartner_live_[a-z0-9]{32}\\b",
397
+ "severity": "ÉLEVÉ",
398
+ "description": "Clé d'authentification API partenaire B2B."
399
+ }
400
+ }
401
+ ```
402
+
403
+ Toutes les règles définies dans ce fichier sont automatiquement identifiées avec le suffixe `[CUSTOM]` et intégrées à l'audit complet, au watchdog et au tableau TUI.
404
+
405
+ ---
406
+
407
+ ## 🧠 Algorithmes Anti-Faux-Positifs
408
+
409
+ Pour éliminer le bruit et les faux positifs fréquents, `aiscout` applique 5 filtres rigoureux :
410
+
411
+ 1. **Calcul d'entropie de Shannon ($H$)** :
412
+ $$H(X) = -\sum_{i=1}^n P(x_i) \log_2 P(x_i)$$
413
+ Les chaînes avec une entropie insuffisante (< 3.2 bits/symbole) sont éliminées.
414
+ 2. **Diversité des classes de caractères** :
415
+ Les secrets doivent réunir au moins 3 types distincts (minuscules, majuscules, chiffres, symboles).
416
+ 3. **Liste noire contextuelle de Placeholders** :
417
+ Exclusion stricte des exemples de documentation : `your_token`, `dummy`, `example`, `change_me`, `sk-ant-xxx`, etc.
418
+ 4. **Validation de bloc pour clés privées** :
419
+ Les mentions textuelles isolées sont ignorées ; seules les clés comportant un en-tête, un corps cryptographique et un pied (`-----END ...`) sont retenues.
420
+ 5. **Bouclier miroir anti-auto-détection** :
421
+ L'outil ignore ses propres expressions régulières, ses scripts et les mentions `[REDACTED_BY_AISCOUT]`.
422
+
423
+ ---
424
+
425
+ ## 🛡️ Assainissement & Caviardage Sécurisé (`Safe Redact`)
426
+
427
+ * **Caviardage ciblé (`[C]`)** : Remplacement unitaire du secret par `[REDACTED_BY_AISCOUT]`.
428
+ * **Caviardage global (`[6]`)** : Assainissement en un clic de l'ensemble des sessions compromises.
429
+ * **Garantie `.bak`** : Création automatique d'une copie conforme avant modification du fichier original.
430
+ * **Intégration Safe Restore** : Toute modification peut être annulée instantanément depuis le menu `[7]`.
431
+
432
+ ---
433
+
434
+ ## 🕹️ Raccourcis Clavier & Contrôles
435
+
436
+ ### Menu Principal
437
+ | Touche | Action |
438
+ | :--- | :--- |
439
+ | `↑` / `↓` ou `k` / `j` ou `z` / `s` | Déplacer le curseur de sélection |
440
+ | `Entrée` / `Espace` / `→` | Valider et exécuter l'action sélectionnée |
441
+ | `1` à `9` | Accès direct au menu par son numéro |
442
+ | `Q` ou `Ctrl+C` | Quitter proprement l'application |
443
+
444
+ ### Explorateur de Secrets (Tableau TUI)
445
+ | Touche | Action |
446
+ | :--- | :--- |
447
+ | `↑` / `↓` ou `k` / `j` | Naviguer ligne par ligne |
448
+ | `PageUp` / `PageDown` | Faire défiler par page entière |
449
+ | `Entrée` | Ouvrir la **fiche détaillée** du secret survolé |
450
+ | `/` | **Recherche interactive** par mot-clé (catégorie, outil, projet, valeur) |
451
+ | `S` | **Trier par sévérité** (`🔴 CRITIQUE` > `🟡 ÉLEVÉ` > `🔵 MOYEN`) |
452
+ | `D` | **Trier par date** de session (plus récents en premier) |
453
+ | `O` | **Trier par outil IA** (ordre alphabétique) |
454
+ | `Backspace` / `Échap` | Réinitialiser la recherche active |
455
+ | `R` | Basculer entre le mode **Masqué** (`ghp_****...`) et **En Clair** |
456
+ | `C` | Caviarder chirurgicalement le secret sélectionné |
457
+ | `Q` ou `Échap` | Retourner au menu principal |
458
+
459
+ ### Surveillance Temps Réel (Watchdog) & Backups
460
+ | Touche | Action |
461
+ | :--- | :--- |
462
+ | `R` *(Backups)* | Restaurer la sauvegarde `.bak` sélectionnée |
463
+ | `A` *(Backups)* | Restaurer l'intégralité des sauvegardes |
464
+ | `P` *(Backups)* | Purger définitivement tous les fichiers `.bak` |
465
+ | `Q` ou `Échap` | Quitter l'écran et revenir au menu principal |
466
+
467
+ ---
468
+
469
+ ## ⚙️ Mode Scripting / CLI & Automatisation
470
+
471
+ ```bash
472
+ # Scan en ligne de commande standard
473
+ aiscout --scan
474
+
475
+ # Lancement direct du Watchdog avec alertes de bureau
476
+ aiscout --watch
477
+
478
+ # Restauration globale des fichiers originaux
479
+ aiscout --restore
480
+
481
+ # Nettoyage définitif des sauvegardes .bak
482
+ aiscout --clean-backups
483
+
484
+ # Liste des 18 règles actives + personnalisées
485
+ aiscout --list-rules
486
+
487
+ # Affichage des valeurs en clair
488
+ aiscout --reveal
489
+
490
+ # Sortie au format JSON pour pipelines automatisés (jq)
491
+ aiscout --json | jq '.[] | select(.severity == "CRITIQUE")'
492
+
493
+ # Exportation automatique d'un rapport complet en Markdown ou JSON
494
+ aiscout --export ~/Documents/audit_secrets.md
495
+ aiscout --export ~/Documents/audit_secrets.json
496
+
497
+ # Audit d'un répertoire utilisateur spécifique
498
+ aiscout --home-dir /home/autre_utilisateur
499
+ ```
500
+
501
+ ---
502
+
503
+ ## 🏗️ Architecture Technique
504
+
505
+ * **Langage** : Python 3.10+ standard pur (`os`, `sys`, `re`, `json`, `termios`, `tty`, `select`, `unicodedata`, `shutil`, `argparse`, `subprocess`).
506
+ * **Zéro Dépendance Externe** : Aucun package tiers `pip`. Conçu pour la bibliothèque standard Python 3.
507
+ * **Systèmes Supportés** : **Linux** (natif Wayland / X11) et **WSL / WSL2** sous Windows uniquement pour le moment (macOS et Windows natif non supportés).
508
+ * **Notification System** : Détection automatique de `notify-send` pour alertes desktop natives Wayland / X11.
509
+ * **Emplacement du code** : `/home/dev_redious/Documents/Dev/tools/ai-secret-scout/ai_secret_scout.py`
510
+ * **Configuration** : `~/.config/aiscout/rules.json`
511
+ * **Liens symboliques exécutables** :
512
+ - `~/.local/bin/aiscout`
513
+ - `~/.local/bin/ai-secret-scout`
514
+ * **Confidentialité absolue** : 100% local, aucun flux réseau sortant, zéro télémétrie.