VBScriptの暗号化
暗号化によるコード改変防止
VBScriptを組織内の不特定多数で使用する場合にはコードを改変される可能性がある。改変されると最悪の場合、PCのシステムファイルを破壊したり、機密情報を外部へ送信したりと有害な動作をする可能性がある。コードの改変を簡単にできないようにする手段として、コードを暗号化するという選択肢がある。
ドラッグ&ドロップで暗号化するスクリプト
次のコードはhttps://gallery.technet.microsoft.com/scriptcenter/16439c02-3296-4ec8-9134-6eb6fb599880からの転載である。
2020年にTechNetギャラリーが廃止された為、転載元は無くなっている。
dim->Dim、set->Setなど元の表記から一部変更した。
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
使い方
- このコードをencode.vbsなどの名前で保存する。
- 暗号化したいvbsファイルをencode.vbsにドラッグ&ドロップすると、暗号化されて拡張子vbeのファイルが作成される。
- 複数のvbsファイルをまとめてドラッグ&ドロップすることもできる。
暗号化したコードを復号化するツールも存在するらしいので、コードの改変を完全に防げるわけではない。