Windows Script Encoderの使い方2

 Windows Script Encoderの使い方の続きです。

 Windows Script Encoderで最近、面白い使い方を見つけました。

 A要素のHREF属性に「javascript:」ではじまるURLを記述するとJavaScriptが実行できるのはご存じの方も多いかと思います。

 例えば、<a href="javascript:alert('Hello World!');">サンプルの実行</a>と記述すると、ページを移動するのではなくアラートで「Hello World!」と表示されます。下に例を用意しました。

 サンプルの実行

 さて、こんな始まりからして大体想像が付いたかも知れませんが、少し工夫することで、Windows Script Encoderで暗号化されたコードを同じような方法で実行することができるのです。

 それにはJScriptexecScriptメソッドを利用します。execScriptメソッドは引数にスクリプトのコードとスクリプトの言語を入れることで、その言語のスクリプトを実行することができます。

 例えば、次のコードはVBScriptを実行するものです。

<a href='javascript:if(window.execScript)execScript("Dim n\nn=MsgBox(\"賞味期限を大幅に過ぎていたことに気付きました!\",18,\"賞味期限が切れています!!\")\nIf n = 3 Then\nMsgBox(\"もう全部食べてしまいました!\")\nElseIf n = 4 Then\nMsgBox(\"やけ食いは良くないです!\")\nElse\nMsgBox(\"おなかを壊しました・・・\")\nEnd If","VBScript");'>食べる</a>

 これを設置すると、次のリンクのようになります(Internet Explorerでしか実行できません)。

 食べる

 本題の暗号化されたJScriptを実行するためのURLは、次のように記述します

javascript:if(window.execScript)execScript("暗号化されたコード","JScript.Encode");

 「暗号化されたコード」をWindows Script Encoderで暗号化されたJScriptに置き換えてください(つまり「#@~^〜〜〜^#~@」の部分に置き換えます)。

 ちなみに、「JScript.Encode」を「VBScript.Encode」に置き換えると、Windows Script Encoderで暗号化されたVBScriptが実行できます。

 下は暗号化されたJScriptを実行する例です(Internet Explorer専用)。

 暗号化されたJScriptを実行

 おそらくSCRIPT要素のLANGUAGE属性に対応しているのだろうと思います。

 これならMacromedia FlashのgetURLメソッドででも実行できそうです(試してないけど)。

 Windows Script Encoderの使い方[1] [2] [3]