
Une interface graphique hébergée localement pour la suite d'audit sans fil aircrack-ng.
Une interface web locale pour la suite d'outils sans fil aircrack-ng.
Captures d'écran · Démarrage rapide · Fonctionnalités · Feuille de route · Contribuer
[!WARNING] Utilisez ceci uniquement sur des réseaux dont vous êtes propriétaire ou pour lesquels vous avez une autorisation écrite de test. Scanner, déauthentifier ou capturer le trafic de réseaux que vous ne contrôlez pas est illégal dans la plupart des endroits. Voir Utilisation légale et responsable.
AirmonGUI rassemble airmon-ng, airodump-ng, aireplay-ng, et aircrack-ng derrière une application web qui tourne sur votre propre machine. Vous activez le mode moniteur, scannez les réseaux, capturez une poignée de main WPA et la craquez en cliquant sur des formulaires étiquetés au lieu de vous souvenir des options.
Il ne réimplémente aucun des outils. Le backend exécute les vrais binaires et analyse leur sortie, donc ce que vous voyez est ce que la suite a réellement fait. L'interface se lie à 127.0.0.1 et l'API n'atteint jamais l'extérieur de votre machine.
La suite aircrack-ng est excellente, mais le workflow s'étend sur quatre commandes distinctes et de nombreuses options que vous devez garder en tête : mettre la carte en mode moniteur, changer de canal pour trouver une cible, se verrouiller sur un BSSID, envoyer des déauthentifications sur le bon canal, attendre la poignée de main à quatre voies, puis alimenter la capture avec une liste de mots. Si vous manquez le canal, la déauth ne va nulle part. Si vous oubliez --bssid, votre capture est pleine de bruit.
Je voulais cette séquence entière sous forme d'écrans qui vous guident, vous montrent ce qui est dans les ondes, et gardent l'état cohérent entre les étapes. C'est ce que c'est. Cela fonctionne bien pour apprendre comment les attaques se comportent vraiment, pour le travail en laboratoire, et pour accélérer une évaluation autorisée.
Une exécution se déroule de haut en bas dans la barre latérale. Voici chaque écran.
Les réseaux, BSSID et clients dans les captures d'écran ci-dessous sont des données de démonstration synthétiques, pas une capture réelle.
Choisissez une interface, vérifiez son pilote, chipset et PHY, et activez le mode moniteur. Libérez juste cette interface quand vous avez terminé.

Lancez une tâche airodump-ng et regardez les points d'accès et les clients se remplir au fur et à mesure qu'ils sont trouvés. Filtrez le tableau, puis envoyez n'importe quel réseau directement vers un workflow de déauthentification ou de capture de poignée de main.

L'analyse du signal note chaque point d'accès pour que ceux qui sont forts, faiblement sécurisés et avec des clients actifs remontent en haut. Elle montre aussi à quel point chaque canal est occupé et quelle sécurité les réseaux environnants utilisent. Vos propres appareils sont signalés pour que vous ne pointiez rien sur vous-même par erreur.

Cet écran verrouille airodump-ng sur le BSSID et le canal de la cible, exécute le moteur de déauthentification automatique pour déconnecter les clients afin qu'ils se reconnectent, et devient vert dès qu'une poignée de main à quatre voies est capturée.

Pointez aircrack-ng vers la capture et une liste de mots. Le journal défile pendant l'exécution, et si la phrase de passe est dans votre liste, elle apparaît en haut.

Déauthentification autonome avec verrouillage de canal, historique d'exécution et sortie d'événements analysée :

Gestion des fichiers de capture :

Historique des commandes de session :

Vous avez besoin de Linux, de root, d'un adaptateur sans fil qui supporte le mode moniteur, et de la suite aircrack-ng dans votre $PATH. Voir Prérequis pour la liste complète.
# 0. Installer la suite (Debian, Ubuntu, Kali)
sudo apt update && sudo apt install aircrack-ng wireless-tools
# 1. Cloner
git clone https://github.com/ELHart05/AirmonGUI.git
cd AirmonGUI
# 2. Backend (terminal 1)
cd backend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
sudo -E .venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
# 3. Frontend (terminal 2)
cd frontend
npm install
npm run dev
Ouvrez http://localhost:5173. L'interface ne parle qu'à 127.0.0.1:8000.
Lors de la première connexion, l'interface demande un jeton API. Le backend en affiche un dans sa console au démarrage, comme ceci :
======================================================================
Jeton API AirmonGUI (généré pour cette exécution) :
Xy3k...long-random-string...
Collez-le dans l'interface web AirmonGUI lorsqu'il vous est demandé.
======================================================================
Collez ce jeton dans l'écran de déverrouillage. Pour conserver un jeton fixe entre les redémarrages, définissez AIRMON_GUI_AUTH_TOKEN dans backend/.env (le backend charge ce fichier au démarrage). Toutes les routes API, à l'exception de la vérification de santé, nécessitent ce jeton, ce qui empêche un processus local errant ou une page web que vous visitez par hasard de piloter les outils sans fil dans votre dos. Vous devez définir le jeton explicitement avant de lier le backend à autre chose que 127.0.0.1 — sinon il refuse de démarrer.
Si la demande est juste une friction sur une machine mono-utilisateur, définissez AIRMON_GUI_AUTH_ENABLED=false pour désactiver complètement l'authentification ; l'interface ignore alors l'écran de déverrouillage. Avec l'authentification désactivée, le backend refuse de se lier ailleurs que sur la boucle locale — pointez API_HOST vers autre chose que 127.0.0.1 et il ne démarrera pas.
Root est nécessaire car airmon-ng, airodump-ng et aireplay-ng utilisent des sockets bruts. Appelez .venv/bin/uvicorn directement plutôt que uvicorn simple, car sudo réinitialise PATH et manquerait sinon l'environnement virtuel ; le drapeau -E conserve toutes les variables AIRMON_GUI_* que vous avez définies. Si vous préférez ne pas exécuter le serveur en tant que root, mettez en place sudo sans mot de passe pour ces binaires spécifiques et ajustez backend/app/utils.py.
cd frontend
npm run build # écrit les fichiers statiques dans frontend/dist/
Servez frontend/dist/ depuis n'importe quel serveur de fichiers statiques et proxiez /api/* et le WebSocket /ws/* vers le processus Uvicorn.
| Couche | Stack |
|---|---|
| Backend | Python 3.11+, FastAPI, Uvicorn, Pydantic v2 |
| Frontend | Vue 3, Vite 5, Tailwind CSS 3, lucide-vue-next, xterm.js |
| Site web | React 18, TypeScript, Vite, Tailwind (la page d'accueil optionnelle dans website/) |
AirmonGUI
├── backend/ API REST FastAPI et WebSocket, un module de route par outil
│ app/routes/ (interfaces, airodump, aireplay, aircrack, handshake, captures)
│ app/models.py (E/S validées Pydantic), app/state.py (registre de tâches en processus)
│ app/utils.py (logique de sous-processus et sudo), app/config.py (configuration env)
│
├── frontend/ Application monopage Vue 3, la console de contrôle
│ views/ (Overview, Monitor, Scan, Signal, Deauth, Handshake, Crack, Captures, Reports, Terminal, Logs)
│ composables/ (logique réactive de tâches et d'état), api/ (wrappers fetch)
│
└── website/ Site d'accueil React autonome (optionnel)
Le backend sert une API REST à http://127.0.0.1:8000/api et un WebSocket de terminal à /ws/terminal (protégé par le jeton API ; désactivez-le avec AIRMON_GUI_TERMINAL_ENABLED=0). En développement, le serveur de développement Vite sur :5173 proxy les deux vers le backend.
Les schémas interactifs sont à http://127.0.0.1:8000/docs (Swagger UI), /redoc et /openapi.json pendant que le backend tourne.
Tant que l'authentification est activée (par défaut), chaque point de terminaison sauf /api/health et /api/auth/status nécessite l'en-tête X-Auth-Token (voir Démarrage rapide pour savoir d'où vient le jeton). Dans Swagger UI, le bouton Authorize l'envoie pour vous. Avec AIRMON_GUI_AUTH_ENABLED=false, le jeton est abandonné (boucle locale uniquement).
Le backend fonctionne avec les valeurs par défaut ci-dessous, vous n'avez donc besoin de celles-ci que pour les modifier. Définissez-les dans backend/.env (chargé au démarrage) ou exportez-les avant de lancer Uvicorn ; une variable exportée écrase le fichier. Voir backend/.env.example pour la liste complète.
Impossible de verrouiller wlan0 sur le canal N ou scan sans réseau. L'interface est presque toujours encore en mode géré. Le mode moniteur est ce qui permet à l'adaptateur de capturer et de changer de canal. Activez-le depuis l'onglet Moniteur d'abord (ou airmon-ng start wlan0), puis scannez sur l'interface moniteur — souvent wlan0mon, bien que certains pilotes conservent le nom original. Le scan refuse une interface gérée avec ce même indice, et un scan mono-canal n'abandonne plus si le pré-verrouillage ne peut être vérifié, puisque airodump-ng règle le canal lui-même.
Les réseaux apparaissent au premier lancement mais pas au second. Une interface moniteur résiduelle, ou NetworkManager qui reprend l'adaptateur entre les exécutions, peut la laisser dans un état bloqué. Exécutez airmon-ng check kill (bouton Check Kill) avant de scanner, et arrêtez un scan avant d'en démarrer un autre sur la même interface.
Toute aide sur l'un de ces points est la bienvenue. Voir Contribuer.
hashcat pour le craquage GPUVous avez une idée ? Ouvrez un ticket. Les demandes de fonctionnalités et les questions sont les bienvenues.
Les pull requests sont les bienvenues, et plus elles sont petites et ciblées, mieux c'est.
uvicorn) et le frontend (npm run dev) démarrent tous deux proprement.Chaque dossier a son propre README avec des notes : backend, frontend, website.
Si le projet vous est utile, une étoile aide d'autres personnes à le trouver et me dit que ça vaut la peine de continuer.
AirmonGUI est destiné aux tests sans fil autorisés, à la recherche et à l'enseignement sur des réseaux dont vous êtes propriétaire ou pour lesquels vous avez une autorisation écrite d'évaluation.
Intercepter le trafic et déauthentifier des réseaux ou des appareils que vous ne contrôlez pas est illégal dans la plupart des juridictions. Les valeurs par défaut maintiennent l'API et le serveur de développement sur la boucle locale pour une bonne raison, ne les exposez donc pas sur un réseau partagé ou public. Les auteurs n'assument aucune responsabilité en cas de mauvaise utilisation. En utilisant ce logiciel, vous confirmez que vous avez la permission pour chaque réseau et chaque appareil que vous touchez.
Utilisez-le pour comprendre et défendre les réseaux, pas pour attaquer ceux qui ne sont pas les vôtres.
MIT, voir LICENSE. Construit au-dessus du projet aircrack-ng, qui fait le travail réel.
| Domaine | Ce qu'il fait |
|---|
| Mode moniteur | Activer ou désactiver le mode moniteur sur une interface choisie avec airmon-ng. Une action séparée de vérification et d'arrêt exécute airmon-ng check kill lorsque des services en arrière-plan comme NetworkManager bloquent le mode moniteur. |
| Scan réseau | Exécute des tâches de capture airodump-ng et affiche les points d'accès et les clients dans un tableau en direct que vous pouvez filtrer par nom, sécurité ou bande. |
| Analyse du signal | Classe les points d'accès selon leur attaquabilité (force du signal, sécurité faible, clients actifs) et représente graphiquement la congestion des canaux et la mixité de sécurité à portée. |
| Déauthentification | Envoie des déauthentifications ciblées ou broadcast via aireplay-ng, en réglant d'abord l'interface sur le canal du point d'accès pour que les trames arrivent. |
| Capture de poignée de main | Un workflow en trois étapes qui verrouille airodump-ng sur une cible, exécute un moteur de déauthentification automatique, et détecte la poignée de main WPA à quatre voies tout seul. |
| Craquage | Fournit une capture et une liste de mots à aircrack-ng, diffuse le journal en direct, et affiche la clé récupérée dès qu'elle apparaît. |
| Gestion des captures | Parcourir, filtrer, sélectionner en masse et supprimer les fichiers .cap, .csv, .pcap, .ivs et .log que la suite écrit. |
| Terminal intégré | Un vrai shell PTY (xterm.js) pour quand vous voulez la ligne de commande brute dans la même fenêtre. |
| Journaux des commandes | Chaque commande exécutée dans la session, avec stdout, stderr, statut, et copie en un clic. |
| Méthode | Point de terminaison | Description |
|---|
| GET | /api/health | Vérification de santé du serveur (pas de jeton) |
| GET | /api/auth/status | Si l'authentification et le terminal sont activés (pas de jeton) |
| GET | /api/auth/verify | Confirmer que le jeton fourni est valide |
| GET | /api/toolcheck | Vérifier que les outils aircrack-ng sont installés |
| GET | /api/interfaces | Lister les interfaces sans fil avec MAC et état du mode moniteur |
| POST | /api/monitor | Démarrer ou arrêter le mode moniteur |
| POST | /api/checkkill | Exécuter airmon-ng check kill pour arrêter les services interférents |
| GET | /api/airodump/jobs | Lister les tâches de capture en cours et connues |
| POST | /api/airodump/start | Démarrer une tâche de scan airodump-ng |
| POST | /api/airodump/stop | Arrêter une tâche de scan par son id |
| GET | /api/airodump/results/{job_id} | Résultats de scan analysés (réseaux et clients) |
| POST | /api/aireplay/deauth/start | Démarrer une tâche de déauthentification |
| GET | /api/aireplay/deauth/jobs | Lister les tâches de déauthentification |
| GET | /api/aireplay/deauth/{job_id}/status | Interroger une tâche de déauthentification |
| POST | /api/aireplay/deauth/{job_id}/stop | Arrêter une tâche de déauthentification |
| POST | /api/handshake/start | Démarrer une capture de poignée de main ciblée |
| GET | /api/handshake/jobs | Lister les tâches de capture de poignée de main |
| GET | /api/handshake/{job_id}/status | Interroger la détection de poignée de main |
| POST | /api/handshake/{job_id}/stop | Arrêter une capture de poignée de main |
| GET | /api/aircrack/jobs | Lister les tâches de craquage |
| GET | /api/aircrack/validate?path=<file> | Vérifier si une capture contient une poignée de main |
| POST | /api/aircrack/crack | Démarrer une tâche de liste de mots aircrack-ng |
| GET | /api/aircrack/{job_id}/status | Interroger l'état du craquage et la sortie récente du journal |
| POST | /api/aircrack/{job_id}/stop | Arrêter une tâche de craquage |
| GET | /api/captures | Lister les fichiers de capture |
| GET | /api/captures/cap | Lister les fichiers .cap, .pcap et .ivs craquables |
| DELETE | /api/captures/{filename} | Supprimer un fichier de capture |
| WS | /ws/terminal | Terminal PTY interactif (activé par défaut ; protégé par jeton ; désactivable avec AIRMON_GUI_TERMINAL_ENABLED=0) |
| Variable | Défaut | Description |
|---|
AIRMON_GUI_CAPTURE_DIR | /var/lib/airmongui/captures | Où les fichiers de capture sont écrits (créé 0700 ; doit être un répertoire privé et appartenant à l'utilisateur) |
AIRMON_GUI_AUTH_ENABLED | true | Mettre à false pour abandonner l'exigence de jeton (boucle locale uniquement) |
AIRMON_GUI_AUTH_TOKEN | (généré) | Jeton API. Généré et affiché au démarrage s'il n'est pas défini ; requis pour se lier en dehors de la boucle locale |
AIRMON_GUI_TERMINAL_ENABLED | 1 | Shell /ws/terminal protégé par jeton ; mettre à 0 pour supprimer la route et cacher l'onglet |
AIRMON_GUI_MAX_ACTIVE_JOBS | 8 | Plafond des tâches d'outils simultanées |
CORS_ORIGINS | http://localhost:5173 | Origines autorisées séparées par des virgules |
API_HOST | 127.0.0.1 | Hôte auquel Uvicorn se lie |
API_PORT | 8000 | Port sur lequel Uvicorn écoute |
AIRMON_GUI_ENV_FILE | backend/.env | Chemin du fichier d'environnement à charger ; chaîne vide ignore le chargement |
export AIRMON_GUI_CAPTURE_DIR=/home/user/captures
sudo -E .venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
| Prérequis | Notes |
|---|
| Linux (kernel 4.x+) | Testé sur Kali Linux et Ubuntu 22.04 |
| Adaptateur sans fil mode moniteur | Par exemple un Atheros AR9271 ou un autre chipset de pentest courant |
| Suite aircrack-ng | airmon-ng, airodump-ng, aireplay-ng, aircrack-ng dans le $PATH |
wireless-tools (iwconfig) | Utilisé pour le réglage de canal |
| Privilèges root | Requis par les outils aircrack-ng |
| Python 3.11+ et Node.js 18+ | Chaînes d'outils backend et frontend |