
Une suite d'usurpation réseau Python entièrement asynchrone de qualité professionnelle, destinée aux audits de sécurité autorisés. Elle propose une interception complète IPv4/IPv6, des attaques sans fil 802.11, un empoisonnement LLMNR/NBT-NS et une interface TUI interactive avec journalisation d'audit inviolable.
Suite professionnelle d'usurpation réseau en Python asynchrone Interface interactive pilotée par menus · Couverture IPv4/IPv6 complète · Empoisonnement de type Responder Tests de sécurité autorisés uniquement — par amibhai
Avertissement : Cet outil est destiné à des fins éducatives et à l'audit de sécurité autorisé uniquement. Les auteurs déclinent toute responsabilité et ne sont pas responsables de tout usage abusif ou dommage causé par ce programme. N'utilisez pas cet outil sur des réseaux que vous ne possédez pas ou pour lesquels vous ne disposez pas d'une autorisation écrite explicite de tester.
| Module | Description |
|---|---|
attacks/deauth.py | Désauthentification 802.11 — déconnecte les clients, capture les handshakes WPA |
attacks/beacon_flood.py | Inondation de balises 802.11 — tempête de faux SSID |
attacks/llmnr_nbt.py | Empoisonnement LLMNR + NBT-NS + mDNS (capture de hachages de type Responder) |
attacks/icmpv6_ra.py | Usurpation d'annonces de routeur ICMPv6 — détournement de passerelle IPv6 |
attacks/ndp_spoof.py | Empoisonnement d'annonces de voisin NDP IPv6 — usurpation ARP IPv6 |
attacks/captive_portal.py | Portail captif (modèles hôtel/entreprise/café/FAI) |
attacks/wpad.py | Injection de configuration automatique de proxy WPAD |
core/platform_compat.py | Abstraction macOS pf + Linux iptables + Windows netsh |
| Gigue temporelle | Délai aléatoire de ±N secondes sur chaque rafale de paquets pour l'évasion IDS |
| CI GitHub Actions | pytest + mypy + seuil de couverture (≥80%) sur Python 3.10–3.12 |
| Docker | docker build + docker-compose up pour un déploiement portable |
| pyproject.toml | Packaging moderne, configuration mypy stricte, lint ruff, configuration de couverture |
| Fonctionnalité | Détails |
|---|---|
| Autorisation | Fichier de périmètre des règles d'engagement — le tir réel est refusé pour toute cible hors périmètre ou hors fenêtre ; pas de périmètre ⇒ simulation uniquement |
| Architecture | Python 3.10+ 100% asynchrone — zéro threading.Thread |
| Interface | Bannière animée 256 couleurs + menus numérotés + fil d'Ariane |
| Tableau de bord | TUI PRISM en direct à 3 panneaux (journal d'attaque / statistiques de paquets / identifiants) |
| Journalisation | Piste d'audit structlog chaînée par HMAC-SHA256 (inviolable) |
| Rapports | JSON + Markdown + HTML générés automatiquement après chaque session |
| Langues | Détection automatique depuis LANG + bascule manuelle (en, hi, ar, zh, fr, es) |
| Pré-vérification | Système à 17 contrôles (périmètre, root, Python, dépendances, interfaces, terminal) |
| Nettoyage | Restaure toujours les tables ARP/NDP, les règles iptables/pf dans finally |
| Plateforme | Linux (complet) · macOS (backend pf) · Windows (Npcap, limité) |
Les engagements réels sont définis par un périmètre signé. Cette boîte à outils en impose un dans le code : elle ne transmettra pas un seul paquet vers une cible qui n'est pas explicitement autorisée, à l'intérieur d'une fenêtre d'engagement ouverte. C'est la différence entre un instrument professionnel de red team et un script indiscriminé.
rules/engagement.example.json.SPOOF_TOOLKIT_SCOPE.Session.guard(...) avant de toucher une cible. Une
cible hors des plages autorisées — ou une fenêtre d'engagement qui s'est fermée
— lève une AuthorizationError et l'attaque est refusée.fingerprint SHA-256 — est écrite
dans le journal d'audit chaîné par HMAC et dans chaque rapport de session, afin que le rapport prouve
exactement ce qui a été autorisé.# 1. Copy and edit the template with your engagement details + authorized targets
cp rules/engagement.example.json rules/my-engagement.json
# 2. Point the toolkit at it (enables live fire for in-scope targets only)
export SPOOF_TOOLKIT_SCOPE=rules/my-engagement.json
# 3. Verify it loaded and the window is open
sudo -E python3 spoof_toolkit.py --preflight
| Champ | Signification |
|---|---|
engagement_id | requis — identifiant unique de l'engagement |
authorized_by | requis — partie nommée autorisant le test (SOW / ticket) |
client, operator, contact, notes | métadonnées de l'engagement pour la piste d'audit |
start, end | fenêtre ISO-8601 (UTC supposé si aucun décalage) ; l'une ou l'autre borne peut être omise pour une durée ouverte |
authorized_networks | CIDR IPv4/IPv6 ou hôtes nus pouvant être ciblés |
authorized_macs / authorized_ssids / authorized_bssids | listes d'autorisation pour le ciblage L2 / sans fil |
denied_networks / denied_macs | listes de non-frappe — prévalent toujours sur les listes d'autorisation |
Fail-closed par conception : une liste d'autorisation vide n'autorise rien, et un
hôte dans la plage d'une entrée denied_networks (par ex. un contrôleur de domaine à l'intérieur d'un
/24 autrement autorisé) est refusé.
Mode sécurisé.
session.safe_mode = Trueforce le dry-run même avec un périmètre valide chargé — utilisez-le pour répéter un engagement de bout en bout sans transmission.
| Module | Fichier | Description |
|---|---|---|
| Usurpation ARP | attacks/arp_spoof.py | Empoisonnement de cache — MitM, DoS, unidirectionnel, passerelle uniquement |
| Usurpation DNS | attacks/dns_spoof.py | Injection de réponse — sélective, tout usurper, fichier de règles, NXDOMAIN |
| MitM combiné | attacks/combined_mitm.py | ARP + DNS + capture d'identifiants complet (asyncio.TaskGroup) |
| SSL Strip | attacks/ssl_strip.py | Proxy de rétrogradation HTTPS transparent (Linux/macOS) |
| DHCP pirate | attacks/rogue_dhcp.py | Détournement de la passerelle par défaut via un faux serveur DHCP (furtif) |
| LLMNR/NBT-NS | attacks/llmnr_nbt.py | NOUVEAU — empoisonnement LLMNR + NBT-NS + mDNS, capture de hachages NTLMv2 |
| WPAD | attacks/wpad.py | NOUVEAU — Injection de configuration automatique de proxy navigateur |
| Portail captif | attacks/captive_portal.py | NOUVEAU — Fausse page de connexion avec 4 modèles |
| Module | Fichier | Description |
|---|---|---|
| Deauth | attacks/deauth.py | NOUVEAU — désauthentification 802.11 (ciblée + diffusion), capture de handshake WPA |
| Inondation de balises | attacks/beacon_flood.py | NOUVEAU — Inonde les ondes de centaines de faux SSID |
| Scanner d'AP | attacks/deauth.py | NOUVEAU — Scanner passif de balises 802.11 |
| Scanner de clients | attacks/deauth.py | NOUVEAU — Détecte les clients associés à un AP |