【VBS】Wi-Fiパスワードをコマンドから変更したい【VBE】

vbs
スポンサーリンク

社内のWi-Fiパスワードを変更するときに、PCの数が多かったり営業所をまたいだりすると、1台1台手作業でPCの設定変更するのは現実的ではありません。なのでSEはバッチファイルなどでコマンドをたたいてWi-Fiパスワードを変更できるツールを作成します。

スポンサーリンク

コマンド作成

バッチファイル(.bat)を作成し、以下のコマンドをたたけば簡単にPC内のWi-Fiパスワードは変更できます。

netsh wlan set profileparameter name="papa-wifi" keymaterial=****** connectionmode=auto

keymaterial にWi-Fiパスワードを入力してください。これで完成です!
しかし、この作業をVBSでやらせたいと思います。なぜ??

なぜVBSでやるの?

簡単にいいますとソースコードを見られたくないからです。バッチファイルを右クリック→編集で簡単にソースコードを見ることができます。それはつまりWi-Fiパスワードが簡単に見ることができるということです。これを回避するためにVBSで書きます。以下おソース。

Option Explicit
Dim objShell, wsh

Set objShell = CreateObject("Shell.Application")

'管理者権限で実行
If WScript.Arguments.length = 0 Then
    objShell.ShellExecute "wscript.exe", WScript.ScriptFullName+" uac","","runas"
    WScript.Quit
End If

Set wsh = WScript.CreateObject("WScript.Shell")

'Wi-Fiパスワード変更
wsh.Run "cmd.exe /c netsh wlan disconnect"
wsh.Run "cmd.exe /c netsh wlan set profileparameter name=""papa-wifi"" keymaterial=************ connectionmode=auto"
wsh.Run "cmd.exe /c netsh wlan connect name=""papa-wifi"""

Set wsh = Nothing
Set objShell = Nothing

プログラムの前半はこのVBSを管理者権限で実行するためのおまじないです。
大切なのはプログラム後半です。disconnect でいったんWi-Fiを切断しパスワードを変更します。その後 connect でパスワードを変更したWi-Fiに接続させます。

しかしVBSで書いたところでバッチファイルと一緒なのでは?と思われたでしょうか。右クリック→編集でソースコードが見えてしまいます。その通りです。でもここからが本番です。VBEの登場です!

VBEとは?

VBEとは、VBSを暗号化(難読化という)したファイルのことです。どのように暗号化するのでしょうか?それもVBSで行います。以下のソースコードを保存してください。

Option Explicit 

dim oEncoder, oFilesToEncode, file, sDest 
dim sFileOut, oFile, oEncFile, oFSO, i 
dim oStream, sSourceFile 

set oFilesToEncode = WScript.Arguments 
set oEncoder = CreateObject("Scripting.Encoder") 
For i = 0 to oFilesToEncode.Count - 1 
    set oFSO = CreateObject("Scripting.FileSystemObject") 
    file = oFilesToEncode(i) 
    set oFile = oFSO.GetFile(file) 
    Set oStream = oFile.OpenAsTextStream(1) 
    sSourceFile=oStream.ReadAll 
    oStream.Close 
    sDest = oEncoder.EncodeScriptFile(".vbs",sSourceFile,0,"") 
    sFileOut = Left(file, Len(file) - 3) & "vbe" 
    Set oEncFile = oFSO.CreateTextFile(sFileOut) 
    oEncFile.Write sDest 
    oEncFile.Close 
Next

ソースコードからもわかるとおり Scripting.Encoder というのが標準で準備されています。これが EncodeScriptFile 関数を実行して暗号化しています。

上記ソースコードを保存したファイルをencode.vbsとします。暗号化したいVBSをドラッグアンドドロップでencode.vbsへ持っていきます。そうするとあら不思議、拡張子が.vbeとなったファイルが現れるではありませんか。ソースコードをのぞいてみるとちゃんと暗号化されて読むことができません!

そしてこのVBEの素晴らしいところはどの社内PC(うちはWindows10です)でもなんの設定もすることなく実行できるという点です。

注意点

暗号化(エンコード)はあくまでエンコードであり、復元化(デコード)されるとソースコードが読めるようになります。デコードするVBSのソースは載せませんでしたが、インターネッツにから簡単に探すことができます。

今回のスタンスはさすがに社内にデコードするスキルを持ち合わせている人はいないであろうという想定で作成しています。社内に昼は営業、夜はハッカーとかやっている人がいたらアウトです。そんな人は昼間からハッカーしてください。このファイルが実行されたら、このファイル自身を削除するようにするとよいかもしれませんね。

コメント

タイトルとURLをコピーしました