ネットワークに接続する系の電子機器を買ったとき、うちでは毎回毎回テレビの裏に置いてあるルーターを手にとってパスワードを確認している。こういうとき手元の MBP でさくっとパスワードが確認できるとはやくて便利なんだけどなーと思っていたのだが、この前簡単に確認できることを知ったのでメモ。
SSID 確認
macOS に標準で入っている airport
というコマンドを使用する。 Apple では Wi-Fi 関連のプロダクトに AirPort という呼称を使用1しており、このコマンドは AirPort 管理のインターフェースとして使うことができる。コマンドは以下のパスにあり、普通はパスが通っていないので、フルパスで指定するかリンクを作るかディレクトリにパスを通して使う。
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
使用方法は --help
で確認できるがそこまでオプションは多くない。今回は利用している Wi−Fi のパスワードが知りたいので、 MBP がつないでいる SSID などの情報を取得する -I
オプションを使う。
% /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
agrCtlRSSI: -49
agrExtRSSI: 0
agrCtlNoise: -95
agrExtNoise: 0
state: running
op mode: station
lastTxRate: 540
maxRate: 600
lastAssocStatus: 0
802.11 auth: open
link auth: wpa2-psk
BSSID: ************
SSID: ************
MCS: 9
channel: 136,-1
まあ SSID はメニューバー(画面上部)から Wi−Fi アイコンをクリックすれば確認できるので、こんなパスも通っていない深い階層にあるコマンドを使わなくてもよい。
パスワード確認
先のコマンドで利用している SSID が確認できた。今度は security
コマンドを使用してこの SSID のパスワードを確認する。
security
コマンドには多くのサブコマンドがあるが、今回はキーチェーンに保存されているパスワードを平分で取得する find-generic-password
を使用する。 -l
オプションで SSID を指定し、 -w
オプションでパスワードのみ出力する。
security find-generic-password -l <SSID> -w
security
コマンドが認証情報にアクセスしてよいかという確認ダイアログが出るので、ユーザー名とパスワードを入力して許可もしくは常に許可を指定する。
CLI 化
これらの情報は、 Python で Wi-Fi のパスワードを確認するスクリプトを作ったレポジトリを見つけて知った。これは Linux でも Windows でも確認できるようになっていて便利そう。
https://github.com/sdushantha/wifi-password
そこまで大きいプロジェクトでもないし、やっていることは実行環境がどの OS なのか判断して外部コマンドを実行しているだけなので、 Go で同じように書いてみた。まだ macOS のみ対応なので、そのうち気が向いたら他の OS も追加する。
https://github.com/matsuyoshi30/go-wifi-password