Selamlar arkadaşlar her hafta pazar günleri yeni bir tool tanıtma ve bu tool üzerine çalışmalar paylaşacağım bir maceraya çıkmadım istedim, beğenildiği ve yararlı olduğu süre boyunca bu tarz konuları açıklayıcı şekilde anlattıktan sonra beraber projeler yapacağımız bir platform hazırlıyorum en kısa sürede bu platformun ilk ayağı olan Python Challenge (Orijinal sitenin bir benzeri) ı sizlere sunacağım şimdiden okuduğunuz için teşekkür ederim.
Öncelikle NetStumbler ve Multi-Purpose Pentest tool nedir ona bakalım, kablosuz ağlar (Wireless Local Area Network- WLAN) günümüzde hem kişisel kullanım hemde kurumlar arası iletişim iskeletini oluşturmaktadır. Ancak Wİ-Fİ teknolojisinin sunduğu bu ayrıcalık aynı zamanda güvenlik açıklarını da beraberinde getirdi bildiğiniz üzere, bu noktada Wireless Discovery Tool ve Pentesting Frameworks, ağların güvenliğini test etmek için kritik bir çözüm sunar.
Peki Net Stumbler Nedir ?
Net Stumbler, Windows işletim sistemi destekli bir Wireless Network Discovery Tool’dur. Amacı , bir bölgede yayın yapan kablosuz erişim noktalarını (Access Point) tespit etmektir.
NetStrumbler kullanımında elde edebileceğiniz verilerin bir kısmı şunlardır:
- SSID (Network Name)
- BSSID (MAC Address of AP)
1 - Channel
- Signal Strength (dBm)
- Encryption Type (WEP, WPA, WPA2)
- Vendor (Cisco, TP-Link vb.
NetStumbler, active scanning tekniğini kullanır bu da ağlara probe request göndererek iletiyi sorgular bu da güvenlik sistemlerine takılarak iz bırakmasına sebebiyet verir.
Bunu görsel olarak açıklamak gerekirse çalışma mantığı/prensibi aşağıdaki şema gibi düşünebilirsiniz.
Kod:
Laptop + Wi-Fi Adapter
|
NetStumbler
|
---------------------
| | | |
AP-1 AP-2 AP-3 Rogue AP
NetStumbler, ortamdaki tüm kablosuz ağları tarar ve bir tablo halinde listeler bu süreç Wardriving olarak adlandırılır. Yani araçla ve yürüyerek bir bölgede Wİ-Fİ ağlarını haritalama gibi düşünebilirsiniz.
Peki Multi-Purpose Pentesting Tools nedir ne yapıyoruz bu tool’s ile diye düşünebilirsiniz.Şöyle anlatayım Netstumbler, tek başına yalnızca gözlem yapar gerçek bir güvenlik analizi için (multi-purpose) araçlar gereklidir.
Bunlar genellikle Kali Linux gibi sistemlerde bulunur birkaçına örnek vermek gerekirse:
| Tool | Fonksiyon |
| Kismet | Passive sniffing |
| Aircrack-ng | WPA/WEP cracking |
| Wireshark | Packet analysis |
| Bettercap | MITM attack |
| Nmap | Network scanning |
| Metasploit | Exploit framework |
Bu araçlar birlikte kullanıldığında Bir Wİ-Fİ ağı için şu dizini çıkarabilir:
Kod:
Discovery → Vulnerability → Exploit → Access
Peki NetStumbler ile Pentesting Süreci nasıl oluyor derseniz sizlere küçük bir örnekle göstereyim elimden geldiğince:
Öncelikle NetStumbler ile hedef ağ adresini bulmamız gerekmekte sonrasında encryption türünü tespit etmemiz gerek (Hash mi, Encryption mı, Encoding mi?) tespit ettikten sonra ise Channel ve signal strength tespit edilir, akabinde Kismet ile passive traffic yakalanır en son ise Aircrack-ng ile handshake analiz edilir. Bu genel olarak bir pentest sürecinin temelidir.
Güvenlik açısından önemi ne ,niye bu kadar önemli ?
Çünkü NetStumbler özellikle şunları sizlere gösterir:
- Rogue Access Point (Yetkisiz Wi-Fi)
- Weak encryption (WEP, no-password)
- Interference
- Coverage gaps
Bu bilgiler neticesinde bir kurumun Wİ-Fİ güvenliğini sağlaması için hayati öneme sahiptir.
Genelleme yaptığımızda ise NetStumbler, kablosuz ağ güvenliğinin ilk adımı olan Discovery aşamasında bizlere yardımcı olacak olan çok güçlü bir araçtır. Ancak modern güvenlik analizleri için Kismet,Aircrack ve Metasploit gibi multi-purpose pentesting frameworks ile birlikte kullanılması gerekmektedir . Bu kombinasyon ile bir ağın hem savunma hem de zayıflıkları bilimsel şekilde analiz edilebilir.
Son olarak buna benzer bir şeyi python ile yapmamız mümkün mü derseniz evet yapabiliriz ama biraz uğraştırır aşağıda aynı mantığa benzer bir kod bırakayım
Python ile kablosuz ağ keşfi (NetStumbler Mantığı şöyle yapabiliriz.)
Python:
import subprocess
import re
import time
from datetime import datetime
class WiFiNetwork:
def __init__(self, ssid, bssid, signal, channel, encryption):
self.ssid = ssid
self.bssid = bssid
self.signal = signal
self.channel = channel
self.encryption = encryption
def security_level(self):
if "WEP" in self.encryption:
return "CRITICAL"
elif "WPA2" in self.encryption:
return "STRONG"
elif "WPA" in self.encryption:
return "MEDIUM"
else:
return "OPEN"
def __str__(self):
return f"{self.ssid:20} | {self.bssid:17} | {self.signal:6} | Ch:{self.channel:2} | {self.encryption:10} | {self.security_level()}"
# Wi-Fi scan command
def raw_scan():
cmd = ["netsh", "wlan", "show", "networks", "mode=Bssid"]
result = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8")
return result.stdout
# Parse networks from netsh output
def parse_networks(raw):
networks = []
ssid = None
encryption = None
for line in raw.split("\n"):
line = line.strip()
if line.startswith("SSID"):
ssid = line.split(":",1)[1].strip()
elif "Authentication" in line:
encryption = line.split(":",1)[1].strip()
elif "BSSID" in line:
bssid = line.split(":",1)[1].strip()
elif "Signal" in line:
signal = line.split(":",1)[1].strip()
elif "Channel" in line:
channel = line.split(":",1)[1].strip()
if ssid and bssid:
net = WiFiNetwork(ssid, bssid, signal, channel, encryption)
networks.append(net)
return networks
# Print a table like NetStumbler GUI
def print_report(networks):
print("\n" + "="*90)
print("SSID | BSSID | Signal | Channel | Encryption | Risk")
print("="*90)
for n in networks:
print(n)
print("="*90)
# Detect rogue or dangerous networks
def detect_threats(networks):
print("\n[!] Threat Analysis\n")
for n in networks:
if n.security_level() == "OPEN":
print(f"⚠️ OPEN NETWORK FOUND: {n.ssid} ({n.bssid})")
elif n.security_level() == "CRITICAL":
print(f"🔥 WEAK WEP NETWORK: {n.ssid} ({n.bssid})")
# Log results to file
def save_log(networks):
filename = f"wifi_scan_{datetime.now().strftime('%Y%m%d_%H%M%S')}.log"
with open(filename, "w", encoding="utf-8") as f:
f.write("SSID,BSSID,Signal,Channel,Encryption,Risk\n")
for n in networks:
f.write(f"{n.ssid},{n.bssid},{n.signal},{n.channel},{n.encryption},{n.security_level()}\n")
print(f"\n[+] Log saved as {filename}")
# Main scanning loop
def main():
print("=== NetStumbler Python Edition ===")
print("Scanning wireless environment...\n")
raw = raw_scan()
networks = parse_networks(raw)
if not networks:
print("No networks detected.")
return
print_report(networks)
detect_threats(networks)
save_log(networks)
if __name__ == "__main__":
main()
Hatta eğer isterseniz bu projeye beraber de başlayabiliriz?
Saygılarımla DrEngerek.

