Rogue open Wi-Fi AP для контролируемого перехвата трафика с использованием hostapd, dnsmasq и iptables NAT. Обеспечивает мониторинг клиентов в реальном времени, журналирование DNS/DHCP и анализ трафика на основе Wireshark.
Несанкционированная открытая Wi‑Fi точка доступа для перехвата трафика в контролируемых средах. Использует hostapd (встроенный режим AP nl80211) + dnsmasq (DHCP/DNS) + iptables NAT в сторону восходящего интерфейса.

iw phy → Supported interface modes: ... AP).hostapd, dnsmasq, iw, , , .iptablesrfkillwiresharkИзмените переменные в начале fake_ap.sh.
INTERNET_IFACE — аплинк с интернетомЭто интерфейс, у которого уже есть маршрут по умолчанию (Ethernet, USB-адаптер, Wi‑Fi клиент и т.д.). Имена различаются в зависимости от машины (eth0, enp3s0, wlp3s0, …).
ip route | grep default
# default via 192.168.1.1 dev enp3s0 ...
# ^^^^^^
# use this name
Установите INTERNET_IFACE на интерфейс, указанный после dev.
AP_IFACE — беспроводная карта для поддельной точки доступаИспользуйте физический интерфейс Wi‑Fi из вывода iw dev. Часто это wlan0, но может быть wlp2s0 или похожее.
iw dev
# phy#0
# Interface wlan0
# ^^^^^
# use this name
Выберите на phy интерфейс, который поддерживает режим AP (iw phy → Supported interface modes: ... AP). Не используйте мосты Docker (docker0, br-*) или виртуальные интерфейсы (veth*).
FAKE_SSID="Free_Public_WiFi"
CHANNEL="6"
INTERNET_IFACE="enp3s0"
AP_IFACE="wlan0"
GATEWAY_IP="10.0.0.1"
sudo ./fake_ap.sh
Скрипт:
wlan0) в управляемом режиме на беспроводном phy.hostapd с открытым SSID на выбранном канале.dnsmasq (DHCP + DNS-форвардер на 1.1.1.1 / 8.8.8.8).sudo journalctl -t dnsmasq -f # DHCP leases + every client DNS query
sudo wireshark -i wlan0 # capture client L3 traffic (use your AP_IFACE)
sudo iw dev wlan0 station dump # client L2 state (RSSI, rate, traffic)
cat /var/lib/misc/dnsmasq.leases # active leases
Откройте Wireshark на вашем AP-интерфейсе (например, wlan0) и примените нужный фильтр отображения.
| Что вы узнаёте | Фильтр |
|---|---|
| Hostname и вендор (DHCP-опции 12/55/60) | dhcp |
| Имя устройства + сервисы (Bonjour/AirPlay/Chromecast) | mdns |
| Windows hostname / SMB | nbns |
| Модель устройства (UPnP) | ssdp |
| Вендор по MAC | eth.addr == aa:bb:cc:dd:ee:ff |
| Весь трафик одного клиента | ip.addr == 10.0.0.X |
| Что вы узнаёте | Фильтр |
|---|---|
| Домены, резолвленные через DNS | dns.qry.name |
| HTTPS-домены (SNI в ClientHello) | tls.handshake.type == 1 |
| DNS-ответы с резолвленными IP | dns.flags.response == 1 |
| QUIC-соединения (Google, YouTube, Meta) | quic |
| Обычный HTTP (полный URL) | http.request |
| User-Agent приложения/браузера | http.user_agent |
| Что вы узнаёте | Фильтр |
|---|---|
| Только SYN (новые TCP-соединения) | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
| TLS-рукопожатия в процессе | tls.handshake |
| Большие передачи (HTTP/2 поверх TLS) | tcp.len > 1000 |
| ICMP (диагностические ping клиента) | icmp |
| Что вы узнаёте | Фильтр |
|---|---|
| HTTP POST (логин на сайтах с http://) | http.request.method == "POST" |
| Учётные данные FTP | ftp.request.command in {"USER","PASS"} |
| Telnet | telnet |
| SMTP/IMAP/POP3 без шифрования | `smtp |
| Подозрительные строки в полезной нагрузке | frame contains "password" |
# one client's encrypted traffic + contacted domains
ip.src == 10.0.0.42 && (dns || tls.handshake.type == 1)
# passive phone model discovery
ip.src == 10.0.0.42 && (dhcp || mdns || ssdp || nbns)
# traffic to a specific domain (e.g. social)
tls.handshake.extensions_server_name contains "instagram"
# exclude broadcast/multicast noise
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 без Wireshark.MIT — см. LICENSE.
Используйте только на сетях и устройствах, которыми вы владеете или на тестирование которых имеете письменное разрешение. Перехват чужого трафика незаконен.