Suite profissional de pentest WiFi.
pip install scapy rich
# Ferramentas externas necessárias (Kali Linux):
sudo apt install aircrack-ng hcxdumptool hcxtools hashcat
sudo apt install reaver bully dnsmasq hostapd# Ver interfaces disponíveis
python3 main.py --list-interfaces
# Modo interativo (recomendado)
sudo python3 main.py -i wlan0
# Com wordlist
sudo python3 main.py -i wlan0 -w /usr/share/wordlists/rockyou.txt
# Modo automático (escaneia e ataca o melhor alvo)
sudo python3 main.py -i wlan0 --auto
# Só escanear (sem atacar)
sudo python3 main.py -i wlan0 --scan-only| Ataque | Encriptação | Ferramenta | Observação |
|---|---|---|---|
| WEP Crack | WEP | aircrack-ng + aireplay-ng | Muito rápido, WEP é fraco |
| WPA Handshake | WPA/WPA2 | aircrack-ng + airodump | Força deauth para capturar |
| PMKID | WPA2 | hcxdumptool + hashcat | Sem cliente conectado! |
| Deauth | Qualquer | scapy | Força desconexão de clientes |
WiFiPS/
├── core/
│ ├── interfaces.py # Abstract classes + Strategy + Observer
│ ├── wireless_manager.py # Interface WiFi (modo monitor)
│ └── orchestrator.py # Facade - coordena todos os módulos
│
├── attacks/
│ ├── attack_factory.py # Factory Pattern - seleciona ataque
│ ├── wep_attack.py # Estratégia WEP
│ ├── wpa_attack.py # Estratégia WPA/WPA2
│ ├── pmkid_attack.py # Estratégia PMKID
│ └── deauth.py # Deautenticação
│
├── modules/
│ ├── scanner.py # Scan com airodump-ng
│ └── handshake_validator.py # Validação automática de handshake
│
├── ui/
│ ├── display.py # Rich CLI - tabelas, progress bars, painéis
│ └── menus.py # Menus interativos
│
└── utils/
└── logger.py # Singleton logger - JSON + credenciais
- S - Cada classe tem uma única responsabilidade (Scanner só escaneia, WPAAttack só faz WPA...)
- O - AttackFactory extensível sem modificação (
AttackFactory.register()) - L - Todos os ataques são substituíveis via interface
AttackStrategy - I -
AttackObservereAttackStrategysão interfaces mínimas e específicas - D - Orchestrator depende de abstrações, não implementações concretas
from core.interfaces import AttackStrategy, EncryptionType, AttackResult
from attacks.attack_factory import AttackFactory
class MeuNovoAtaque(AttackStrategy):
@property
def name(self): return "MeuAtaque"
@property
def supported_encryptions(self): return [EncryptionType.WPA2]
def execute(self) -> AttackResult:
self._start()
# ... lógica do ataque ...
return self._success(credential="senha_encontrada")
# Registra sem modificar código existente (Princípio OCP)
AttackFactory.register(EncryptionType.WPA2, MeuNovoAtaque)