接続済みのWiFiパスワードを全部調べたい(PowerShellを使って)
特定のWiFiのパスワードを知りたい
次のコマンドで知ることができます
netsh wlan show profiles name="wifiの名前" key=clear
実行すると下のようなメッセージが表示され
「主要なコンテンツ」のところにパスワードが表示されます。
PS C:\temp> netsh wlan show profiles name="wifiの名前" key=clear
インターフェイス Wi-Fi のプロファイル "wifiの名前":
=======================================================================
適用先: すべてのユーザー プロファイル
プロファイル情報
-------------------
バージョン : 1
種類 : ワイヤレス LAN
名前 : "wifiの名前"
コントロール オプション :
接続モード : 自動接続
ネットワーク ブロードキャスト : このネットワークがブロードキャスト配信している場合に限り接続
AutoSwitch : 他のネットワークに切り替えません
MAC ランダム化 : 有効
接続の設定
---------------------
SSID の数 : 1
SSID 名 : "wifiの名前"
ネットワークの種類 : インフラストラクチャ
無線の種類 : [ 任意の無線の種類 ]
ベンダー拡張 : 存在しません
セキュリティの設定
-----------------
認証 : WPA2-パーソナル
暗号 : CCMP
認証 : WPA2-パーソナル
暗号 : GCMP
セキュリティ キー : あり
主要なコンテンツ : password1234
コスト設定
-------------
コスト : 制限なし
混雑 : いいえ
データ制限間近 : いいえ
データ制限超過 : いいえ
ローミング : いいえ
コスト ソース : 既定
このままでは分かりにくいのでパスワード部分だけ抜き出してみます
$SSID = "wifiの名前"
$wifi_password = netsh wlan show profiles name=$SSID key=clear | Select-String -Pattern "主要なコンテンツ" | ForEach-Object { $_ -replace ".*:\s+", "" }
write-host "SSIDが" $SSID "のパスワードは" $wifi_password
実行すると
SSIDが hoge-wifi のパスワードは password1234
このようにプロンプトに表示されます。
※WiFiが証明書認証している場合はパスワードがありませんので抜き出すことはできません。
接続済みWiFiのパスワードを全部調べるには
# 接続済みWiFiのリスト (正規表現にしたかったけど上手くできなかった)
$wifi_list = netsh wlan show profiles key=clear | Where-object {$_ -match "すべてのユーザー プロファイル"} | %{$_.replace("すべてのユーザー プロファイル","").replace(":","").replace(" ","")}
# ループしてパスワードを抜き出す
foreach($i in $wifi_list){
$wifi_password = netsh wlan show profiles name="$i" key=clear | Select-String -Pattern "主要なコンテンツ" | ForEach-Object { $_ -replace ".*:\s+", "" }
if(-not ($wifi_password -eq $null)) {
write-host "SSIDが" $i "のパスワードは" $wifi_password
}
}
実行すると
PS C:\temp> $wifi_list = netsh wlan show profiles key=clear | Where-object {$_ -match "すべてのユーザー プロファイル"} |
%{$_.replace("すべてのユーザー プロファイル","").replace(":","").replace(" ","")}
PS C:\temp>
PS C:\temp> # ループしてパスワードを抜き出す
PS C:\temp> foreach($i in $wifi_list){
$wifi_password = netsh wlan show profiles name="$i" key=clear | Select-String -Pattern "主要なコンテンツ" | ForEach-Object { $_ -replace ".*:\s+", "" }
if(-not ($wifi_password -eq $null)) {
write-host "SSIDが" $i "のパスワードは" $wifi_password
}
}
SSIDが hoge-wifi のパスワードは password1234
SSIDが Buffalo-G-AB12 のパスワードは 1f5d5fc3d59
SSIDが elecom-f3dj3d のパスワードは 12345678
こうなります。
#PowerShell #コマンドレット #プログラミング #プログラミング初心者 #Windows #WiFiパスワード #netsh