
악성 개방 Wi-Fi AP로, hostapd, dnsmasq, iptables NAT를 이용한 제어된 트래픽 캡처 도구입니다. 실시간 클라이언트 모니터링, DNS/DHCP 로깅, Wireshark 기반 트래픽 분석을 가능하게 합니다.
통제된 환경에서 트래픽 캡처를 위한 무단 개방 Wi-Fi AP입니다. hostapd (네이티브 nl80211 AP 모드) + dnsmasq (DHCP/DNS) + iptables NAT을 업링크 인터페이스로 사용합니다.

iw phy → Supported interface modes: ... AP).hostapd, dnsmasq, iw, iptables, rfkill, wireshark.fake_ap.sh 상단의 변수를 편집하세요.
INTERNET_IFACE — 인터넷이 있는 업링크기본 경로가 이미 있는 인터페이스입니다 (이더넷, 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 — 가짜 AP용 무선 카드iw dev에서 물리적 Wi‑Fi 인터페이스를 사용하세요. 보통 wlan0이지만 wlp2s0 등일 수 있습니다.
iw dev
# phy#0
# Interface wlan0
# ^^^^^
# use this name
AP 모드를 지원하는 phy의 인터페이스를 선택하세요 (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)를 생성합니다.hostapd를 시작합니다.dnsmasq (1.1.1.1 / 8.8.8.8로의 DHCP + DNS 포워더)를 시작합니다.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
AP 인터페이스 (예: wlan0)에서 Wireshark를 열고 원하는 디스플레이 필터를 적용하세요.
| 알 수 있는 내용 | 필터 |
|---|---|
| SYN만 (새 TCP 연결) | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
| 진행 중인 TLS 핸드셰이크 | tls.handshake |
| 대용량 전송 (TLS를 통한 HTTP/2) |
# 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에서 볼 수 있습니다.MIT — LICENSE 참조.
소유하거나 테스트에 대한 서면 승인을 받은 네트워크 및 기기에서만 사용하세요. 타인의 트래픽을 가로채는 것은 불법입니다.
| 알 수 있는 내용 | 필터 |
|---|
| 호스트명 및 벤더 (DHCP 옵션 12/55/60) | dhcp |
| 기기명 + 서비스 (Bonjour/AirPlay/Chromecast) | mdns |
| Windows 호스트명 / SMB | nbns |
| 기기 모델 (UPnP) | ssdp |
| MAC에서 벤더 | eth.addr == aa:bb:cc:dd:ee:ff |
| 한 클라이언트의 모든 트래픽 | ip.addr == 10.0.0.X |
| 알 수 있는 내용 | 필터 |
|---|
| DNS를 통해 확인된 도메인 | dns.qry.name |
| HTTPS 도메인 (ClientHello의 SNI) | tls.handshake.type == 1 |
| 확인된 IP가 포함된 DNS 응답 | dns.flags.response == 1 |
| QUIC 연결 (Google, YouTube, Meta) | quic |
| 일반 HTTP (전체 URL) | http.request |
| 앱/브라우저 User-Agent | http.user_agent |
tcp.len > 1000 |
| ICMP (클라이언트 진단 핑) | icmp |
| 알 수 있는 내용 | 필터 |
|---|
| HTTP POST (http:// 사이트 로그인) | http.request.method == "POST" |
| FTP 자격 증명 | ftp.request.command in {"USER","PASS"} |
| Telnet | telnet |
| 일반 SMTP/IMAP/POP3 | `smtp |
| 페이로드 내 의심스러운 문자열 | frame contains "password" |