treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

(1/2)記号が含まれるSSIDのパスフレーズでハマる

コマンドプロンプトでSSID設定。知っていると何かと便利です。
そのコマンドは、「netsh wlan」でサブコマンドを指定して利用しますが、いままではうまく動作していた記述が、なぜかうまくいかなくなった動作があったのでご報告。

以前Windows環境でSSIDをコマンドラインから追加したりバックアップしたりといったことを何度か話題としていました。

バッチファイルでSSID一括追加(要事前準備) - treedown’s Report

無線LANのSSID(プロファイル)を書き出すバッチ - treedown’s Report

対象の環境は…

例えば、抜き出したSSID設定の.xmlファイルを指定してSSIDを設定するコマンドを二行でバッチファイル化して実行しています。

-------------------------------------------------------
netsh wlan add profile filename="生成した.xmlファイル名" user=all
netsh wlan set profileparameter name=%SSID名% nonBroadcast=yes keymaterial=%設定するSSIDのPSK%
-------------------------------------------------------
Windows10で実行するとうまくいかない、その原因を探ったら、「keymaterial=%設定するSSIDのPSK%」の部分でエラーになっていることが分かりました。
このkeymaterial=の部分設定するセキュリティキーに記号が含まれていた場合、注意が必要です。
[.]とか[/]とか[<]とか[@]とか[;]とか[,]とか[%]とか[']とか…、何でもかんでも記号を入れてしまっているセキュリティキーだとコマンドプロンプトでセキュリティキーを指定するときに、シェル側で変な受け取り方をしてしまうようです。
(先に結論を述べてしまうと、今回はどうやら[<]が引っ掛かったようなエラーでした。)

どう対策しようか…

例えばSSIDが「WiSSID」セキュリティキーが「ABC.acb<k@g;,0」という記号含むセキュリティキーの場合。

※当然ですが、上記のキーは実際には存在しません、この記事をアップするために仮のSSIDとキーにしてあります。

以前ご紹介したやり方でバックアップすると生成される.xmlファイルは「Wi-Fi-WiSSID.xml」で保存されています。これをコマンドで追加するとなると、
-------------------------------------------------------
netsh wlan add profile filename="Wi-Fi-WiSSID.xml" user=all
netsh wlan set profileparameter name=WiSSID nonBroadcast=yes keymaterial=ABC.acb<k@g;,0
-------------------------------------------------------
とりあえずのところは、コマンドプロンプトで手動実行する際に、
keymaterial="ABC.acb<k@g;,0"
という感じで[" "]ダブルコーテーションで括るとうまくいくようなので、さっそくバッチファイルを修正。
でもこのバッチを人に渡して実行してもらうと、なんかうまくいかないよ、って言われる…。うーん。

f:id:treedown:20180901160816p:plain
症状としては、SSIDの追加まではできているのだが、接続時にパスフレーズを入れてね、ってWindowsがメッセージを出してくるそうなので
「keymaterial=」の部分が上手くWindowsで認識できていないんだろうなぁ、ってことがなんとなく思う、とはいえ確証はない、という状況。

切り分けも含め…

キーの入力の部分の処理が問題かどうかを知りたいので、キーの入力方法を別の方法で実施してみると、問題を切り分けできるんじゃないか、と思い、ひとつ試してみました。

編集するのは「Wi-Fi-WiSSID.xml」ファイル。
このファイルには、SSIDの接続情報が格納されていて、当然セキュリティキーも含まれています。

Wi-Fi-WiSSID.xmlを開いて、セキュリティキーの部分
-------------------------------------------------------
<protected>true</protected>
<keyMaterial>9D7A0AEF000002006</keyMaterial>
-------------------------------------------------------
が、このような記述だったとすると、これを書き換え
-------------------------------------------------------
<protected>false</protected>
<keyMaterial>ABC.acb<k@g;,0</keyMaterial>
-------------------------------------------------------
protectedタグの部分を「true」⇒「false」と書き換えます。これでセキュリティキーを意味するkeyMaterialタグにそのままセキュリティキーを記述する、と言う具合に.xmlファイルを書き換え。

こうしたあと、セキュリティキーの部分は.xmlファイルにお任せとなるので、バッチファイル上ではセキュリティキーの部分であるkeymaterialオプションの記述を削除
-------------------------------------------------------
netsh wlan add profile filename="Wi-Fi-WiSSID.xml" user=all
netsh wlan set profileparameter name=WiSSID nonBroadcast=yes
-------------------------------------------------------
これで動作を確認してみると、やっぱりうまくいかない。同様に、「SSIDの追加まではできているのだが、接続時にパスフレーズを入れてね、ってWindowsがメッセージを出してくる」という挙動をみせるそうです。

結局、手動で.xmlファイルを編集して平文でセキュリティキーを入力しただけでは今回の症状は解決しませんでした。
※他のキー文字列ならこれで症状に改善はみられるはず

続きます。

いちおう解決したのですが、まだまとめきってないので、続きは次回。