AP Wi-Fi aberto e malicioso para captura controlada de tráfego usando hostapd, dnsmasq e NAT via iptables. Permite monitoramento de clientes em tempo real, registro de DNS/DHCP e análise de tráfego baseada em Wireshark.
Ponto de acesso Wi-Fi aberto falso (rogue AP) para captura de tráfego em ambientes controlados. Usa hostapd (modo AP nativo nl80211) + dnsmasq (DHCP/DNS) + iptables NAT em direção a uma interface de uplink.

iw phy → Supported interface modes: ... AP).hostapd, dnsmasq, iw, iptables, , .rfkillwiresharkEdite as variáveis no topo de fake_ap.sh.
INTERNET_IFACE — uplink com internetEsta é a interface que já possui rota padrão (Ethernet, adaptador USB, cliente Wi‑Fi, etc.). Os nomes variam por máquina (eth0, enp3s0, wlp3s0, …).
ip route | grep default
# default via 192.168.1.1 dev enp3s0 ...
# ^^^^^^
# use this name
Defina INTERNET_IFACE como a interface depois de dev.
AP_IFACE — placa de rede sem fio para o AP falsoUse a interface Wi‑Fi física de iw dev. Geralmente é wlan0, mas pode ser wlp2s0 ou similar.
iw dev
# phy#0
# Interface wlan0
# ^^^^^
# use this name
Escolha a interface na phy que suporta modo AP (iw phy → Supported interface modes: ... AP). Não use bridges Docker (docker0, br-*) ou interfaces virtuais (veth*).
FAKE_SSID="Free_Public_WiFi"
CHANNEL="6"
INTERNET_IFACE="enp3s0"
AP_IFACE="wlan0"
GATEWAY_IP="10.0.0.1"
sudo ./fake_ap.sh
O script:
wlan0) no modo gerenciado na phy sem fio.hostapd com um SSID aberto no canal escolhido.dnsmasq (DHCP + encaminhador DNS para 1.1.1.1 / 8.8.8.8).sudo journalctl -t dnsmasq -f # leases DHCP + todas as consultas DNS dos clientes
sudo wireshark -i wlan0 # captura o tráfego L3 dos clientes (use sua AP_IFACE)
sudo iw dev wlan0 station dump # estado L2 do cliente (RSSI, taxa, tráfego)
cat /var/lib/misc/dnsmasq.leases # leases ativos
Abra o Wireshark na interface do AP (ex.: wlan0) e aplique o filtro de exibição necessário.
| O que você descobre | Filtro |
|---|---|
| Hostname e fabricante (opções DHCP 12/55/60) | dhcp |
| Nome do dispositivo + serviços (Bonjour/AirPlay/Chromecast) | mdns |
| Hostname Windows / SMB | nbns |
| Modelo do dispositivo (UPnP) | ssdp |
| Fabricante pelo MAC | eth.addr == aa:bb:cc:dd:ee:ff |
| Todo o tráfego de um cliente | ip.addr == 10.0.0.X |
| O que você descobre | Filtro |
|---|---|
| Domínios resolvidos via DNS | dns.qry.name |
| Domínios HTTPS (SNI no ClientHello) | tls.handshake.type == 1 |
| Respostas DNS com IPs resolvidos | dns.flags.response == 1 |
| Conexões QUIC (Google, YouTube, Meta) | quic |
| HTTP puro (URL completa) | http.request |
| User-Agent do app/navegador | http.user_agent |
| O que você descobre | Filtro |
|---|---|
| Apenas SYN (novas conexões TCP) | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
| Handshakes TLS em andamento | tls.handshake |
| Transferências grandes (HTTP/2 sobre TLS) | tcp.len > 1000 |
| ICMP (pings de diagnóstico do cliente) | icmp |
| O que você descobre | Filtro |
|---|---|
| HTTP POST (login em sites http://) | http.request.method == "POST" |
| Credenciais FTP | ftp.request.command in {"USER","PASS"} |
| Telnet | telnet |
| SMTP/IMAP/POP3 sem criptografia | `smtp |
| Strings suspeitas no payload | frame contains "password" |
# tráfego criptografado de um cliente + domínios contatados
ip.src == 10.0.0.42 && (dns || tls.handshake.type == 1)
# descoberta passiva do modelo do telefone
ip.src == 10.0.0.42 && (dhcp || mdns || ssdp || nbns)
# tráfego para um domínio específico (ex.: redes sociais)
tls.handshake.extensions_server_name contains "instagram"
# excluir ruído de broadcast/multicast
not (eth.dst == ff:ff:ff:ff:ff:ff) && not (ip.dst >= 224.0.0.0 && ip.dst <= 239.255.255.255)
sudo tshark -i wlan0 -Y 'tls.handshake.type==1 && ip.src==10.0.0.42' \
-T fields -e tls.handshake.extensions_server_name
sudo tcpdump -i wlan0 -w /tmp/capture.pcap
journalctl -t dnsmasq -f sem o Wireshark.MIT — consulte LICENSE.
Use somente em redes e dispositivos que você possui ou para os quais tem autorização por escrito para testar. Interceptar o tráfego de terceiros é ilegal.