Python ile WİFİ Şifresi Nasıl Öğrenilir

Bazen hafızamızda tutamadığımız veya not almayı unuttuğumuz Wİ-Fİ şifreleriyle karşılaşabiliriz. Endişelenmeyin, size yardımcı olacak basit bir yöntem mevcut. Öncelikle belirtmeliyim ki bu yazıda internet hackleme değil, unuttuğunuz bir Wİ-Fİ şifresini kolayca bulma yöntemine odaklanacağız.


CMD Yardımı ile Kayıtlı Wİ-Fİ Şifrelerini Bulma

Çok basit bir yöntem olarak wifi şifrelerini kontrol etmek için cmd komutlarını kullanacağız.

Bilgisayarınızda bağlandığınız ağları görmek için kullanmanız gereken komut:
>netsh wlan show profile
Bilmek istediğiniz ağın şifresini görmek için:
netsh wlan show profile AĞ-İSMİ key=clear

Python ile Kayıtlı Wİ-Fİ Şifrelerini Bulma

Komut satırından yaptığımız bu işlemi birkaç satır daha fazla kod ile Python'dan da yapabiliriz. Tabi bunun için "subprocess" modülünü  kullanmamız gerekiyor. Bu modül, sistem komutlarını veya diğer harici uygulamaları çalıştırma, çalıştırdığınız programlara parametreler geçirme ve bu programlarla etkileşim kurma gibi işlemleri kolayca gerçekleştirmenizi sağlar.

Örnek olarak daha önce bağlandığınız bir ağın şifresini görmek için:
import subprocess

network_name = "X98X_5Ghz"

result = subprocess.run(['netsh', 'wlan', 'show', 'profile', network_name, 'key=clear'], stdout=subprocess.PIPE)
output = result.stdout.decode()

for line in output.split('\n'):
    if "Key Content" in line:
        password = line.split(":")[1].strip()
        print(f"Şifre: {password}")
Daha önce bağlandığınız bütün ağları ve şifrelerini görmek için:
import subprocess

data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles']).decode('utf-8', errors="backslashreplace").split('\n')
profiles = [i.split(":")[1][1:-1] for i in data if "All User Profile" in i]
for i in profiles:
    try:
        results = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', i, 'key=clear']).decode('utf-8', errors="backslashreplace").split('\n')
        results = [b.split(":")[1][1:-1] for b in results if "Key Content" in b]
        try:
            print ("{:<30}|  {:<}".format(i, results[0]))
        except IndexError:
            print ("{:<30}|  {:<}".format(i, ""))
    except subprocess.CalledProcessError:
        print ("{:<30}|  {:<}".format(i, "ERROR"))
input("")


Ancak unutmayın şifreleri almak için bazı ağlarda başarılı olamayabilirsiniz, çünkü bazı ağlar şifrelerini göstermeyebilir. Oturum açarak erişim sağladığınız bağlantılarda şifre gösterilmez çünkü şifre kişiye özeldir. Ayrıca daha önce bağlandığınız ağın şifresi değişmişse şifreyi yine göstermez.

Yorumlar