
نقطة اتصال Wi-Fi مفتوحة مارقة لالتقاط حركة المرور المتحكم بها باستخدام 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, iptables, , .rfkillwiresharkعدّل المتغيرات في أعلى الملف fake_ap.sh.
INTERNET_IFACE — الاتصال الصاعد المتصل بالإنترنتهذه هي الواجهة التي تمتلك مسارًا افتراضيًا بالفعل (إيثرنت، محول USB، عميل Wi‑Fi، إلخ). تختلف الأسماء حسب الجهاز (eth0, enp3s0, wlp3s0, …).
ip route | grep default
# default via 192.168.1.1 dev enp3s0 ...
# ^^^^^^
# استخدم هذا الاسم
عيّن INTERNET_IFACE إلى الواجهة التي تلي dev.
AP_IFACE — البطاقة اللاسلكية لنقطة الوصول المزيفةاستخدم الواجهة اللاسلكية الفعلية من iw dev. غالبًا ما تكون wlan0، لكن قد تكون wlp2s0 أو ما شابه.
iw dev
# phy#0
# Interface wlan0
# ^^^^^
# استخدم هذا الاسم
اختر الواجهة على 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) في وضع managed على phy اللاسلكي.hostapd مع SSID مفتوح على القناة المختارة.dnsmasq (DHCP + موزع DNS نحو 1.1.1.1 / 8.8.8.8).sudo journalctl -t dnsmasq -f # عقود DHCP + كل استعلام DNS من العملاء
sudo wireshark -i wlan0 # التقاط حركة مرور العملاء من الطبقة 3 (استخدم AP_IFACE الخاص بك)
sudo iw dev wlan0 station dump # حالة العملاء من الطبقة 2 (RSSI، المعدل، الحركة)
cat /var/lib/misc/dnsmasq.leases # العقود النشطة
افتح Wireshark على واجهة نقطة الوصول الخاصة بك (مثل wlan0) وطبّق عامل التصفية الذي تحتاجه.
| ما تتعلمه | الفلتر |
|---|---|
| اسم المضيف والمورّد (خيارات DHCP 12/55/60) | dhcp |
| اسم الجهاز + الخدمات (Bonjour/AirPlay/Chromecast) | mdns |
| اسم مضيف ويندوز / 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 |
| ما تتعلمه | الفلتر |
|---|---|
| POST عبر HTTP (تسجيل دخول على مواقع http://) | http.request.method == "POST" |
| بيانات اعتماد FTP | ftp.request.command in {"USER","PASS"} |
| Telnet | telnet |
| SMTP/IMAP/POP3 نصي صريح | `smtp |
| سلاسل مشبوهة في الحمولة | frame contains "password" |
# حركة مرور مشفرة لعميل واحد + النطاقات التي تواصل معها
ip.src == 10.0.0.42 && (dns || tls.handshake.type == 1)
# اكتشاف سلبي لطراز الهاتف
ip.src == 10.0.0.42 && (dhcp || mdns || ssdp || nbns)
# حركة مرور إلى نطاق محدد (مثل وسائل التواصل)
tls.handshake.extensions_server_name contains "instagram"
# استبعاد ضوضاء البث/broadcast متعدد
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.
استخدم فقط على الشبكات والأجهزة التي تملكها أو لديك إذن كتابي لاختبارها. اعتراض حركة مرور الآخرين غير قانوني.