
Strumento automatizzato di deautenticazione Wi-Fi che scansiona continuamente i client su un SSID target ed espelle i dispositivi non in whitelist. Include supporto per la whitelist, gestione mesh/multi-AP, rilevamento PMF e bypass PMF WPA2 sperimentale tramite estrazione EAPOL.
Puntalo su un SSID e scopre automaticamente ogni client connesso e li caccia via --- inclusi quelli che tentano di riconnettersi --- senza bisogno di targeting manuale.
Strumenti come aireplay-ng richiedono di fornire un BSSID e un MAC
client. Devi sapere già chi è sulla rete, e se qualcuno si riconnette
devi beccarlo tu e rieseguire lo strumento. KTO fa tutto questo
automaticamente in un ciclo: scansione continua → lista client live →
deauth automatico → ripeti. Chiunque si riconnette viene beccato alla
scansione successiva.
Solo per uso autorizzato. Esegui questo strumento solo su reti di tua proprietà o per cui hai esplicito permesso scritto di test. La deautenticazione non autorizzata è illegale nella maggior parte delle giurisdizioni.
--live-table mostra una tabella client aggiornata invece di un log scorrevole, utile per le demo--log FILE salva ogni cacciata con timestamp, in append tra sessioni--scan-only scopre e registra i client senza inviare frame# Python 3.10+
pip install scapy
# aircrack-ng suite
sudo apt install aircrack-ng
Deve essere eseguito come root.
git clone https://github.com/Ymsniper/KTO.git
cd KTO
pip install scapy
Nessun'altra configurazione richiesta. Script singolo, nessun file di configurazione.
sudo python3 kto.py -i <interfaccia> -t <SSID> [opzioni]
L'interfaccia deve essere in modalità monitor, oppure passa --auto-monitor per lasciare che KTO se ne occupi.
# basic
sudo python3 kto.py -i wlan0mon -t "CorpNet"
# let KTO handle monitor mode
sudo python3 kto.py -i wlan0 -t "CorpNet" --auto-monitor
# aggressive mode — no reconnect window
sudo python3 kto.py -i wlan0mon -t "CorpNet" --aggressive
# spare your own device
sudo python3 kto.py -i wlan0mon -t "CorpNet" -w AA:BB:CC:DD:EE:FF
# passive discovery only, no deauth
sudo python3 kto.py -i wlan0mon -t "CorpNet" --scan-only
# mesh or multi-AP network
sudo python3 kto.py -i wlan0mon -t "CorpNet" --auto-bssid
# save a log and show live table
sudo python3 kto.py -i wlan0mon -t "CorpNet" --log session.txt --live-table
# heavier burst with aireplay-ng
sudo python3 kto.py -i wlan0mon -t "CorpNet" -n 10 --aireplay --broadcast
# disable PMF bypass (fall back to standard deauth on WPA2+PMF)
sudo python3 kto.py -i wlan0mon -t "CorpNet" --no-bypass
# my phone
AA:BB:CC:DD:EE:FF
# laptop
11:22:33:44:55:66
A partire dalla v2.1.6, KTO include una funzione PMF sperimentale per reti WPA2-PSK con Protected Management Frames (PMF) abilitati. Quando il PMF viene rilevato su una rete WPA2, KTO tenta automaticamente un'estrazione EAPOL con password errata:
Questo bypass NON richiede la password di rete effettiva --- serve solo l'SSID.
Limitazioni importanti:
Se vuoi saltare del tutto il bypass e inviare semplicemente frame deauth standard (accettando che i client con PMF li scarteranno), usa il flag --no-bypass.
Se l'AP target ha i Protected Management Frames abilitati, KTO ti avviserà all'avvio. I client con supporto 802.11w scarteranno silenziosamente i frame deauth non protetti, quindi l'efficacia dipende da quali dispositivi sono connessi.
Tuttavia, in modalità aggressiva con un burst deauth abbastanza alto, KTO è stato osservato disconnettere comunque i client protetti da PMF su alcune reti---anche senza bypass. Il volume elevato di frame sembra sopraffare certe implementazioni. Quindi, anche se il PMF è una difesa critica, non è infallibile in ogni configurazione.
Ctrl+C ferma tutto in modo pulito, ripristina l'interfaccia in modalità managed se KTO ha creato l'interfaccia monitor, e stampa un riepilogo della sessione con i conteggi dei burst per client.
Licenza MIT --- vedi LICENSE
| Flag | Predefinito | Descrizione |
|---|
-i, --interface | richiesto | Interfaccia wireless (es. wlan0mon) |
-t, --target | richiesto | Nome SSID target |
-w, --whitelist | --- | MAC separati da virgole da escludere |
--whitelist-file FILE | --- | File di MAC da escludere, uno per riga (# = commento) |
-c, --channel | auto | Blocca su un canale specifico |
-n, --count | 5 | Frame deauth per burst per direzione |
-s, --sleep | 5.0 | Secondi tra le scansioni |
--scan-duration | 8.0 | Secondi di ascolto di airodump-ng per scansione |
--delay | 0.1 | Ritardo per client nel loop aggressivo |
--broadcast | off | Invia deauth anche a ff:ff:ff:ff:ff:ff |
--aireplay | off | Usa aireplay-ng invece di Scapy |
--aggressive | off | Thread di scansione e deauth in parallelo |
--scan-only | off | Modalità passiva, nessun frame inviato |
--auto-monitor | off | Abilita automaticamente la modalità monitor tramite airmon-ng |
--auto-bssid | off | Seleziona automaticamente il BSSID più forte per SSID mesh / multi-AP |
--reason | 7 | Codice motivo 802.11 (1=non specificato, 4=inattività, 7=frame di classe 3) |
--log FILE | --- | Salva un log delle cacciate con timestamp su file |
--live-table | off | Tabella client aggiornata invece di output scorrevole |
--no-bypass, -nb | off | Disabilita il bypass PMF sperimentale |