Kodun Genel Amacı
Bu Python programı, Windows işletim sisteminde kayıtlı Wi-Fi ağlarının isimlerini (SSID), şifrelerini ve diğer bazı bilgileri listelemek için netsh
komutunu kullanır.
Windows’ta netsh
Komutu Nedir?
netsh wlan show profiles
→ Kayıtlı Wi-Fi profillerini gösterir.netsh wlan show profile name="WiFi_Adi" key=clear
→ Belirli bir Wi-Fi profilinin detaylarını (şifre dahil) gösterir.
Detaylı Python Kodu
import subprocess
import re
def get_saved_wifi_profiles():
"""Windows'ta kayıtlı Wi-Fi profillerini listeler."""
try:
# Netsh komutunu çalıştırarak kayıtlı Wi-Fi profillerini al
cmd_output = subprocess.run(["netsh", "wlan", "show", "profiles"], capture_output=True, text=True, check=True).stdout
# Profillerin isimlerini (SSID) düzenli ifadeyle (regex) bul
profiles = re.findall(r"All User Profile\s*:\s(.*)", cmd_output)
# Eğer profil bulunamazsa boş liste döndür
return [profile.strip() for profile in profiles] if profiles else []
except subprocess.CalledProcessError:
print("Wi-Fi profilleri alınırken bir hata oluştu.")
return []
def get_wifi_details(profile):
"""Belirtilen Wi-Fi profilinin detaylarını alır."""
try:
# Belirtilen profil için detayları çek
cmd_output = subprocess.run(["netsh", "wlan", "show", "profile", profile, "key=clear"], capture_output=True, text=True, check=True).stdout
# Şifreyi (Key Content) bulmaya çalış
password_match = re.search(r"Key Content\s*:\s(.*)", cmd_output)
password = password_match.group(1) if password_match else "Şifre Bulunamadı"
# Bağlantı türü (WPA2, WPA3 vb.)
auth_match = re.search(r"Authentication\s*:\s(.*)", cmd_output)
authentication = auth_match.group(1) if auth_match else "Bilinmiyor"
# Şifreleme türü (AES, TKIP vb.)
cipher_match = re.search(r"Cipher\s*:\s(.*)", cmd_output)
cipher = cipher_match.group(1) if cipher_match else "Bilinmiyor"
# SSID'nin otomatik bağlanma ayarı
auto_connect_match = re.search(r"Auto connect\s*:\s(.*)", cmd_output)
auto_connect = auto_connect_match.group(1) if auto_connect_match else "Bilinmiyor"
return {
"Wi-Fi Adı": profile,
"Şifre": password,
"Kimlik Doğrulama": authentication,
"Şifreleme Türü": cipher,
"Otomatik Bağlanma": auto_connect
}
except subprocess.CalledProcessError:
print(f"{profile} profil bilgileri alınırken hata oluştu.")
return None
def main():
"""Kayıtlı Wi-Fi ağlarını ve detaylarını ekrana yazdırır."""
profiles = get_saved_wifi_profiles()
if not profiles:
print("Kayıtlı Wi-Fi ağı bulunamadı.")
return
print("\n📶 Kayıtlı Wi-Fi Ağları ve Detayları:")
print("=" * 50)
for profile in profiles:
details = get_wifi_details(profile)
if details:
print(f"🔹 Wi-Fi Adı: {details['Wi-Fi Adı']}")
print(f"🔑 Şifre: {details['Şifre']}")
print(f"🛡️ Kimlik Doğrulama: {details['Kimlik Doğrulama']}")
print(f"🔒 Şifreleme Türü: {details['Şifreleme Türü']}")
print(f"⚙️ Otomatik Bağlanma: {details['Otomatik Bağlanma']}")
print("-" * 50)
if __name__ == "__main__":
main()
Kod Açıklamaları
1. get_saved_wifi_profiles()
Fonksiyonu
netsh wlan show profiles
komutunu çalıştırır.- Çıktıyı
re.findall()
ile regex kullanarak işler ve kayıtlı Wi-Fi isimlerini (SSID) bulur. - Eğer profil yoksa boş liste döndürür.
2. get_wifi_details(profile)
Fonksiyonu
netsh wlan show profile name="WiFi_Adi" key=clear
komutuyla belirli bir Wi-Fi profilinin detaylarını alır.- Düzenli ifadelerle (Regex) aşağıdaki bilgileri çeker:
Key Content
→ Wi-Fi şifresiAuthentication
→ Kimlik doğrulama türü (WPA2, WPA3, vb.)Cipher
→ Şifreleme türü (AES, TKIP, vb.)Auto Connect
→ Otomatik bağlanma ayarı
3. main()
Fonksiyonu
get_saved_wifi_profiles()
ile kayıtlı ağları alır.- Eğer kayıtlı ağ varsa, her biri için
get_wifi_details(profile)
fonksiyonunu çağırır ve bilgileri yazdırır.
Örnek Çıktı
Eğer sisteminizde Wi-Fi Ev
ve Wi-Fi İş
adında iki kayıtlı ağ varsa, aşağıdaki gibi bir çıktı alırsınız:
📶 Kayıtlı Wi-Fi Ağları ve Detayları:
==================================================
🔹 Wi-Fi Adı: Wi-Fi Ev
🔑 Şifre: 12345678
🛡️ Kimlik Doğrulama: WPA2-Personal
🔒 Şifreleme Türü: AES
⚙️ Otomatik Bağlanma: Yes
--------------------------------------------------
🔹 Wi-Fi Adı: Wi-Fi İş
🔑 Şifre: WiFiIs2023!
🛡️ Kimlik Doğrulama: WPA3-Personal
🔒 Şifreleme Türü: AES
⚙️ Otomatik Bağlanma: No
--------------------------------------------------
Ekstra Bilgiler
- Bu kod sadece Windows için çalışır. Linux ve macOS için farklı komutlar kullanılmalıdır.
- Yönetici izni gerektirebilir. Komutları çalıştırırken
cmd.exe
veyaPowershell
‘i yönetici olarak açmanız gerekebilir. - Şifreler sadece
key=clear
parametresiyle görülebilir. Eğer bu parametre olmazsa, şifreler gizli kalır. - Gizlilik ve güvenlik açısından dikkatli kullanılmalıdır. Bu tür bilgileri başkalarıyla paylaşmak yasa dışı olabilir.
Sonuç
Bu program, kayıtlı Wi-Fi ağlarını detaylarıyla listeleyerek şifreleri de dahil olmak üzere tüm bilgileri görüntülemenizi sağlar. Eğer bu kodu kendi sisteminizde çalıştıracaksanız, güvenlik önlemlerini göz önünde bulundurun.