
Un'interfaccia grafica locale per la suite di auditing wireless aircrack-ng.
Un'interfaccia web locale per la suite wireless aircrack-ng.
Screenshot · Avvio rapido · Funzionalità · Roadmap · Contribuire
[!WARNING] Usalo solo su reti di tua proprietà o per le quali hai ricevuto autorizzazione scritta al test. Scansionare, deautenticare o catturare traffico da reti che non controlli è illegale nella maggior parte dei Paesi. Vedi Uso legale e responsabile.
AirmonGUI riunisce airmon-ng, airodump-ng, aireplay-ng e aircrack-ng in un'unica app web che gira sulla tua macchina. Attivi la modalità monitor, scansiona le reti, catturi un handshake WPA e lo crachi cliccando su moduli etichettati invece di ricordare i flag.
Non reimplementa nessuno degli strumenti. Il backend esegue i binari reali e ne analizza l'output, quindi quello che vedi è ciò che la suite ha effettivamente fatto. L'interfaccia si lega a 127.0.0.1 e l'API non esce mai dalla tua macchina.
La suite aircrack-ng è eccellente, ma il flusso di lavoro si sviluppa su quattro comandi separati e molti flag da tenere a mente: metti la scheda in modalità monitor, salta tra i canali per trovare un target, aggancia un BSSID, lancia la deauth sul canale giusto, aspetta l'handshake a quattro passaggi, poi passa la cattura a una wordlist. Sbaglia canale e la deauth non va da nessuna parte. Dimentica --bssid e la tua cattura è piena di rumore.
Volevo trasformare l'intera sequenza in una serie di schermate che ti guidino, mostrino cosa c'è in onda e mantengano lo stato tra un passaggio e l'altro. Questo è ciò che fa. Funziona bene per imparare come si comportano realmente gli attacchi, per il lavoro in laboratorio e per velocizzare una valutazione autorizzata.
Un'esecuzione procede dall'alto verso il basso nella barra laterale. Ecco ciascuna schermata.
Le reti, i BSSID e i client negli screenshot seguenti sono dati dimostrativi sintetici, non una cattura reale.
Scegli un'interfaccia, controlla driver, chipset e PHY e attiva la modalità monitor. Quando hai finito, rilascia solo quell'interfaccia.

Avvia un job airodump-ng e guarda i punti di accesso e i client riempire la tabella mentre vengono trovati. Filtra la tabella, poi invia qualsiasi rete direttamente a un flusso di lavoro deauth o handshake.

L'analisi del segnale valuta ogni punto di accesso, così quelli forti e poco protetti con client attivi salgono in cima. Mostra anche quanto è trafficato ogni canale e quale sicurezza usano le reti circostanti. I tuoi dispositivi vengono segnalati, così non punti nulla per sbaglio verso te stesso.

Questa schermata aggancia airodump-ng al BSSID e al canale del target, esegue il motore di auto-deauth per disconnettere i client così che si riconnettano e diventa verde nell'istante in cui viene catturato un handshake a quattro passaggi.

Punta aircrack-ng sulla cattura e su una wordlist. Il log scorre durante l'esecuzione e, se la passphrase è nella tua lista, appare in cima.

Deauth standalone con blocco del canale, cronologia delle esecuzioni e output degli eventi analizzato:

Gestione dei file di cattura:

Cronologia dei comandi della sessione:

Servono Linux, root, un adattatore wireless che supporti la modalità monitor e la suite aircrack-ng nel $PATH. Vedi Requisiti per l'elenco completo.
# 0. Install the suite (Debian, Ubuntu, Kali)
sudo apt update && sudo apt install aircrack-ng wireless-tools
# 1. Clone
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
Apri http://localhost:5173. L'interfaccia parla solo con 127.0.0.1:8000.
Al primo collegamento l'interfaccia chiede un token API. Il backend lo stampa nella console all'avvio, così:
======================================================================
AirmonGUI API token (generated for this run):
Xy3k...long-random-string...
Paste it into the AirmonGUI web UI when prompted.
======================================================================
Incolla quel token nella schermata di sblocco. Per mantenere un token fisso tra i riavvii, imposta AIRMON_GUI_AUTH_TOKEN in backend/.env (il backend carica quel file all'avvio). Tutte le route API, tranne il health check, richiedono questo token, ed è ciò che impedisce a un processo locale o a una pagina web che ti capita di visitare di usare gli strumenti wireless alle tue spalle. Devi impostare esplicitamente il token prima di far ascoltare il backend a qualcosa di diverso da 127.0.0.1, altrimenti si rifiuta di avviarsi.
Se la richiesta è solo un ostacolo su una macchina con un solo utente, imposta AIRMON_GUI_AUTH_ENABLED=false per disattivare del tutto l'autenticazione; l'interfaccia salta la schermata di sblocco. Con l'autenticazione disattivata, il backend si rifiuta di legarsi a qualsiasi indirizzo che non sia il loopback: punta API_HOST su qualcosa di diverso da 127.0.0.1 e non si avvierà.
Root è necessario perché airmon-ng, airodump-ng e aireplay-ng usano i raw socket. Chiama direttamente .venv/bin/uvicorn invece del semplice uvicorn, poiché sudo resetta PATH e non troverebbe il virtualenv; il flag -E preserva tutte le variabili AIRMON_GUI_* che hai impostato. Se preferisci non eseguire il server come root, configura sudo senza password per quei binari specifici e modifica backend/app/utils.py.
cd frontend
npm run build # writes static files to frontend/dist/
Servi frontend/dist/ da qualsiasi server di file statici e fai da proxy per /api/* e per il WebSocket /ws/* verso il processo Uvicorn.
| Livello | Stack |
|---|---|
| Backend | Python 3.11+, FastAPI, Uvicorn, Pydantic v2 |
| Frontend | Vue 3, Vite 5, Tailwind CSS 3, lucide-vue-next, xterm.js |
| Sito web | React 18, TypeScript, Vite, Tailwind (l'eventuale landing page in website/) |
AirmonGUI
├── backend/ FastAPI REST API and WebSocket, one route module per tool
│ app/routes/ (interfaces, airodump, aireplay, aircrack, handshake, captures)
│ app/models.py (validated Pydantic I/O), app/state.py (in-process job registry)
│ app/utils.py (subprocess and sudo logic), app/config.py (env config)
│
├── frontend/ Vue 3 single-page app, the control console
│ views/ (Overview, Monitor, Scan, Signal, Deauth, Handshake, Crack, Captures, Reports, Terminal, Logs)
│ composables/ (reactive job and state logic), api/ (fetch wrappers)
│
└── website/ Standalone React landing site (optional)
Il backend espone una REST API su http://127.0.0.1:8000/api e un WebSocket per il terminale su /ws/terminal (protetto dal token API; disattivalo con AIRMON_GUI_TERMINAL_ENABLED=0). In sviluppo, il server di sviluppo Vite su :5173 fa da proxy per entrambi verso il backend.
Gli schemi interattivi sono disponibili su http://127.0.0.1:8000/docs (Swagger UI), /redoc e /openapi.json mentre il backend è in esecuzione.
Con l'autenticazione attiva (impostazione predefinita), ogni endpoint tranne /api/health e /api/auth/status richiede l'header X-Auth-Token (vedi Avvio rapido per capire da dove arriva il token). Nella Swagger UI, il pulsante Authorize lo invia al posto tuo. Con AIRMON_GUI_AUTH_ENABLED=false il token viene eliminato (solo loopback).
Il backend gira con i valori predefiniti qui sotto, quindi ti servono solo per modificarli. Impostali in backend/.env (caricato all'avvio) oppure esportali prima di avviare Uvicorn; una variabile esportata ha la precedenza sul file. Vedi backend/.env.example per l'elenco completo.
"Could not lock wlan0 to channel N" o una scansione senza reti. L'interfaccia è quasi sempre ancora in modalità managed. La modalità monitor è ciò che permette all'adattatore di catturare e cambiare canale. Abilitala prima dalla scheda Monitor (o con airmon-ng start wlan0), poi scansiona sull'interfaccia monitor, spesso wlan0mon, anche se alcuni driver mantengono il nome originale. La scansione rifiuta un'interfaccia in modalità managed con questo stesso suggerimento, e una scansione su un singolo canale non si interrompe più se il pre-lock non può essere verificato, poiché airodump-ng sintonizza il canale da solo.
Le reti appaiono al primo avvio ma non al secondo. Un'interfaccia monitor rimasta attiva, o NetworkManager che si riprende l'adattatore tra un'esecuzione e l'altra, possono lasciarlo in uno stato bloccato. Esegui airmon-ng check kill (il pulsante Check Kill) prima di scansionare e ferma una scansione prima di avviarne un'altra sulla stessa interfaccia.
Qualsiasi aiuto su questi punti è benvenuto. Vedi Contribuire.
hashcat per il cracking su GPUHai un'idea? Apri un issue. Richieste di funzionalità e domande sono benvenute.
Le pull request sono benvenute, e più sono piccole e mirate, meglio è.
uvicorn) e frontend (npm run dev) si avviino entrambi senza errori.Ogni cartella ha il proprio README con note: backend, frontend, website.
Se il progetto ti è utile, una stella aiuta altre persone a trovarlo e mi dice che vale la pena continuare.
AirmonGUI è pensato per test wireless autorizzati, ricerca e insegnamento su reti di tua proprietà o per le quali hai ricevuto autorizzazione scritta a valutare.
Intercettare il traffico e deautenticare reti o dispositivi che non controlli è illegale nella maggior parte delle giurisdizioni. I valori predefiniti tengono sia l'API sia il server di sviluppo sul loopback per un motivo: non esporli su una rete condivisa o pubblica. Gli autori non si assumono alcuna responsabilità per un uso improprio. Usando questo software confermi di avere il permesso per ogni rete e dispositivo che tocchi.
Usalo per capire e difendere le reti, non per attaccarne di non tue.
MIT, vedi LICENSE. Costruito sopra il progetto aircrack-ng, che fa il lavoro vero.
| Area | Cosa fa |
|---|
| Modalità monitor | Abilita o disabilita la modalità monitor su un'interfaccia scelta con airmon-ng. Un'azione check-kill separata esegue airmon-ng check kill quando servizi in background come NetworkManager bloccano la modalità monitor. |
| Scansione di rete | Esegue job di cattura airodump-ng e mostra punti di accesso e client in una tabella live che puoi filtrare per nome, sicurezza o banda. |
| Analisi del segnale | Classifica i punti di accesso in base a quanto sono attaccabili (potenza del segnale, sicurezza debole, client attivi) e grafica la congestione dei canali e il mix di sicurezza nell'area. |
| Deautenticazione | Invia deauth mirate o broadcast tramite aireplay-ng, impostando prima l'interfaccia sul canale del punto di accesso così che i frame arrivino a destinazione. |
| Cattura dell'handshake | Un flusso di lavoro in tre passaggi che aggancia airodump-ng a un target, esegue un motore di auto-deauth e rileva da solo l'handshake WPA a quattro passaggi. |
| Cracking | Alimenta aircrack-ng con una cattura e una wordlist, trasmette il log in tempo reale e mostra la chiave recuperata nel momento in cui appare. |
| Gestione delle catture | Sfoglia, filtra, seleziona in massa ed elimina i file .cap, .csv, .pcap, .ivs e .log scritti dalla suite. |
| Terminale integrato | Una vera shell PTY (xterm.js) per quando vuoi la riga di comando grezza nella stessa finestra. |
| Log dei comandi | Ogni comando eseguito nella sessione, con stdout, stderr, stato e copia con un clic. |
| Metodo | Endpoint | Descrizione |
|---|
| GET | /api/health | Controllo di integrità del server (senza token) |
| GET | /api/auth/status | Indica se autenticazione e terminale sono abilitati (senza token) |
| GET | /api/auth/verify | Conferma che il token fornito sia valido |
| GET | /api/toolcheck | Verifica che gli strumenti aircrack-ng siano installati |
| GET | /api/interfaces | Elenca le interfacce wireless con MAC e stato della modalità monitor |
| POST | /api/monitor | Avvia o arresta la modalità monitor |
| POST | /api/checkkill | Esegue airmon-ng check kill per fermare i servizi che interferiscono |
| GET | /api/airodump/jobs | Elenca i job di cattura in esecuzione e noti |
| POST | /api/airodump/start | Avvia un job di scansione airodump-ng |
| POST | /api/airodump/stop | Arresta un job di scansione tramite id |
| GET | /api/airodump/results/{job_id} | Risultati di scansione analizzati (reti e client) |
| POST | /api/aireplay/deauth/start | Avvia un job deauth |
| GET | /api/aireplay/deauth/jobs | Elenca i job deauth |
| GET | /api/aireplay/deauth/{job_id}/status | Interroga lo stato di un job deauth |
| POST | /api/aireplay/deauth/{job_id}/stop | Arresta un job deauth |
| POST | /api/handshake/start | Avvia una cattura dell'handshake mirata |
| GET | /api/handshake/jobs | Elenca i job di cattura dell'handshake |
| GET | /api/handshake/{job_id}/status | Interroga il rilevamento dell'handshake |
| POST | /api/handshake/{job_id}/stop | Arresta una cattura dell'handshake |
| GET | /api/aircrack/jobs | Elenca i job di cracking |
| GET | /api/aircrack/validate?path=<file> | Verifica se una cattura contiene un handshake |
| POST | /api/aircrack/crack | Avvia un job di cracking con wordlist aircrack-ng |
| GET | /api/aircrack/{job_id}/status | Interroga lo stato del cracking e le ultime righe di log |
| POST | /api/aircrack/{job_id}/stop | Arresta un job di cracking |
| GET | /api/captures | Elenca i file di cattura |
| GET | /api/captures/cap | Elenca i file .cap, .pcap e .ivs craccabili |
| DELETE | /api/captures/{filename} | Elimina un file di cattura |
| WS | /ws/terminal | Terminale PTY interattivo (attivo di default; protetto da token; disattivalo con AIRMON_GUI_TERMINAL_ENABLED=0) |
| Variabile | Predefinito | Descrizione |
|---|
AIRMON_GUI_CAPTURE_DIR | /var/lib/airmongui/captures | Dove vengono scritti i file di cattura (creato con permessi 0700; deve essere una directory privata e posseduta dall'utente) |
AIRMON_GUI_AUTH_ENABLED | true | Imposta a false per rimuovere la richiesta del token (solo loopback) |
AIRMON_GUI_AUTH_TOKEN | (generated) | Token API. Generato e stampato all'avvio se non impostato; richiesto per collegarsi al di fuori del loopback |
AIRMON_GUI_TERMINAL_ENABLED | 1 | Shell /ws/terminal protetta da token; imposta a 0 per rimuovere la route e nascondere la scheda |
AIRMON_GUI_MAX_ACTIVE_JOBS | 8 | Limite massimo di job degli strumenti in esecuzione contemporanea |
CORS_ORIGINS | http://localhost:5173 | Origini consentite separate da virgola |
API_HOST | 127.0.0.1 | Host a cui Uvicorn si collega |
API_PORT | 8000 | Porta su cui Uvicorn ascolta |
AIRMON_GUI_ENV_FILE | backend/.env | Percorso del file env da caricare; stringa vuota per saltare il caricamento |
export AIRMON_GUI_CAPTURE_DIR=/home/user/captures
sudo -E .venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
| Requisito | Note |
|---|
| Linux (kernel 4.x+) | Testato su Kali Linux e Ubuntu 22.04 |
| Adattatore wireless con modalità monitor | Ad esempio un Atheros AR9271 o un altro chipset comune per pentest |
| Suite aircrack-ng | airmon-ng, airodump-ng, aireplay-ng, aircrack-ng nel $PATH |
wireless-tools (iwconfig) | Usato per la sintonizzazione dei canali |
| Privilegi di root | Richiesti dagli strumenti aircrack-ng |
| Python 3.11+ e Node.js 18+ | Toolchain per backend e frontend |