Mobil Menü

Python ile Kayıtlı Wifi Ağları Bilgi Uygulaması

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 şifresi
    • Authentication → 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 veya Powershell‘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.

Osman Bayrak
Osman Bayrak

Yazılım Mühendisiyim. Teknoloji ve yazılıma meraklıyım.

Articles: 154