見出し画像

接続済みの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

いいなと思ったら応援しよう!