
Outil automatisé de désauthentification Wi-Fi qui analyse en continu les clients sur un SSID cible et expulse les appareils non présents sur la liste blanche. Fonctionnalités : prise en charge de liste blanche, gestion mesh/multi-AP, détection PMF et contournement expérimental du PMF WPA2 par extraction EAPOL.
Pointez-le vers un SSID et il découvre automatiquement tous les clients connectés et les déconnecte — y compris ceux qui tentent de se reconnecter — sans ciblage manuel nécessaire.
Des outils comme aireplay-ng vous obligent à fournir un BSSID et une
adresse MAC de client. Vous devez d'abord savoir qui est sur le réseau,
et si quelqu'un se reconnecte, vous devez le repérer vous-même et
relancer l'outil. KTO fait tout cela automatiquement en boucle :
analyse continue → liste des clients en direct → déauthentification
automatique → répétition. Quiconque se reconnecte est rattrapé au
balayage suivant.
Utilisation autorisée uniquement. N'exécutez cet outil que contre des réseaux dont vous êtes propriétaire ou pour lesquels vous avez une autorisation écrite explicite de test. La déauthentification non autorisée est illégale dans la plupart des juridictions.
--live-table affiche un tableau des
clients actualisé au lieu d'un journal défilant, pratique pour les
démos--log FILE enregistre chaque
déconnexion avec un horodatage, en cumulant les sessions--scan-only découvre et journalise les clients
sans envoyer de trames# Python 3.10+
pip install scapy
# suite aircrack-ng
sudo apt install aircrack-ng
Doit être exécuté en tant que root.
git clone https://github.com/Ymsniper/KTO.git
cd KTO
pip install scapy
Aucune autre configuration requise. Script unique, aucun fichier de configuration.
sudo python3 kto.py -i <interface> -t <SSID> [options]
L'interface doit être en mode moniteur, ou passez --auto-monitor pour
laisser KTO s'en occuper.
# basique
sudo python3 kto.py -i wlan0mon -t "CorpNet"
# laissez KTO gérer le mode moniteur
sudo python3 kto.py -i wlan0 -t "CorpNet" --auto-monitor
# mode agressif — aucune fenêtre de reconnexion
sudo python3 kto.py -i wlan0mon -t "CorpNet" --aggressive
# épargnez votre propre appareil
sudo python3 kto.py -i wlan0mon -t "CorpNet" -w AA:BB:CC:DD:EE:FF
# découverte passive uniquement, pas de déauthentification
sudo python3 kto.py -i wlan0mon -t "CorpNet" --scan-only
# réseau mesh ou multi-AP
sudo python3 kto.py -i wlan0mon -t "CorpNet" --auto-bssid
# enregistrez un journal et affichez le tableau en direct
sudo python3 kto.py -i wlan0mon -t "CorpNet" --log session.txt --live-table
# rafale plus lourde avec aireplay-ng
sudo python3 kto.py -i wlan0mon -t "CorpNet" -n 10 --aireplay --broadcast
# désactivez le contournement PMF (repli sur la déauthentification standard sur WPA2+PMF)
sudo python3 kto.py -i wlan0mon -t "CorpNet" --no-bypass
# mon téléphone
AA:BB:CC:DD:EE:FF
# ordinateur portable
11:22:33:44:55:66
À partir de la v2.1.6, KTO inclut une fonctionnalité PMF expérimentale pour les réseaux WPA2-PSK avec trames de gestion protégées (PMF) activées. Lorsque la PMF est détectée sur un réseau WPA2, KTO tente automatiquement une extraction EAPOL par mot de passe erroné :
Ce contournement ne requiert PAS le mot de passe réel du réseau --- il n'a besoin que du SSID.
Limitations importantes :
Si vous souhaitez ignorer complètement le contournement et simplement
envoyer des trames de déauthentification standard (en acceptant que les
clients compatibles PMF les ignorent), utilisez l'option --no-bypass.
Si le point d'accès cible a activé les trames de gestion protégées, KTO vous en avertira au démarrage. Les clients prenant en charge 802.11w suppriment silencieusement les trames de déauthentification non protégées, l'efficacité dépend donc des appareils connectés.
Cependant, en mode agressif avec une rafale de déauthentification suffisamment élevée, il a été observé que KTO déconnecte tout de même des clients protégés par la PMF sur certains réseaux---même sans contournement. Le simple volume de trames semble submerger certaines implémentations. Ainsi, même si la PMF est une défense critique, elle n'est pas infaillible dans toutes les configurations.
Ctrl+C arrête tout proprement, restaure l'interface en mode géré si
KTO a créé l'interface moniteur, et affiche un résumé de session avec
les compteurs de rafales par client.
Licence MIT --- voir LICENSE
| Option | Défaut | Description |
|---|
-i, --interface | requis | Interface sans fil (p. ex. wlan0mon) |
-t, --target | requis | Nom du SSID cible |
-w, --whitelist | --- | Adresses MAC à épargner, séparées par des virgules |
--whitelist-file FILE | --- | Fichier d'adresses MAC à épargner, une par ligne (# = commentaire) |
-c, --channel | auto | Verrouille sur un canal spécifique |
-n, --count | 5 | Trames de déauthentification par rafale et par direction |
-s, --sleep | 5.0 | Secondes entre les balayages |
--scan-duration | 8.0 | Secondes d'écoute d'airodump-ng par balayage |
--delay | 0.1 | Délai par client dans la boucle agressive |
--broadcast | off | Déauthentifie aussi ff:ff:ff:ff:ff:ff |
--aireplay | off | Utilise aireplay-ng au lieu de Scapy |
--aggressive | off | Analyse + threads de déauthentification en parallèle |
--scan-only | off | Mode passif, aucune trame envoyée |
--auto-monitor | off | Active automatiquement le mode moniteur via airmon-ng |
--auto-bssid | off | Sélectionne automatiquement le BSSID le plus fort pour les SSID mesh / multi-AP |
--reason | 7 | Code de raison 802.11 (1=non spécifié, 4=inactivité, 7=trame de classe 3) |
--log FILE | --- | Enregistre un journal horodaté des déconnexions dans un fichier |
--live-table | off | Tableau des clients actualisé au lieu d'une sortie défilante |
--no-bypass, -nb | off | Désactive le contournement PMF expérimental |