eval残照…エピローグ
<script>
for(Q in{a06Cert028022Hello022029:0})
for(J in{join:0})
for(S in{split:0})
(function(x){Function(unescape(x))()})
(Q[S](0)[J](escape(Array(2)[J]())[S]([])[0]))
</script>
この頃続けていた、いわゆる3大ブラウザonWindowsで、英文字と数字および3種類の括弧とコロンとを使って任意のスクリプトを走らせようという遊び、そろそろ中締めということになりました。上がその解のひとつです。今、頭の中からヒネリ出したので多少タイポがあるかもしれませんが、アイデアを汲み取ってくださいませ。ええと、上記解の中で[]
とあるのは文法的に疑問かもしれません。その時にはString()
で代用してください。一般論では、Qの中身において、%
の代わりに$
を使った文字列を作ったほうがラクチンなはずです。join
と同様に$
も作れますので$を%に差し替えることに特に問題はないでしょう。
特に説明を要するところは無いかと思いますが、ここまでくるのに数ヶ月を要したあたり、私の頭の中身はどうなっているのだというところが疑問かもしれませんね。私はJavaScriptでプログラムらしきものを作ったのは2本しかあありません。ひとつはモンティ・ホール問題のシミュレートで本日記で公開しました。もうひとつは、encodeの差し替えを行ってくれちゃうステキなプログラムです。こっちは事実上パクリ&ツギハギでした。というわけでドシロウトですので…
中締めということなのですが、今後の課題として、あきらかに危険文字列であるところescape
なりを陽に含まないようにするためにはどうしたら良いのかという工夫をなんとかヒネリダシタイと思っております。 おそらく、鍵となるのは%
です。または、obj.callee
あたりを上手に使って括弧などのさまざまな記号を取り出してFunction
に食わせるあたりでしょうか。Function
の入れ子をトライしたいと思っております。そうすればunescape
あたりもどうにかなりそうなのではないでしょうか。
上記の構想は脳内妄想を入院中にずっと続けていた結果ですからアテにはなりません。