私は専門家ではないです(No.4では「どんな人」の選択ミスりました)が、あちこちのサイトで調べたり自分でテストしたりして、ある程度の知識はあると思います。
でもこれは暗号を解いた訳じゃなく、そのコードが処理される様子を追ってるだけなので、コツさえ知ってれば簡単にできます。
例えばオークションテンプレートのスクリプトにはevalがあるので、それが実行しようとしている内容を表示してみます。
ただ、evalを単にdocument.writeに置き換えると、内容に < や > が入っていた時にそれがタグとして認識されて表示されないので、それらを<などに置換して表示する関数(escape_print)を作って、それと置き換えます。
function escape_print(text) {
text = text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/\n/g, "<br>");
document.write(text);
}
そのHTMLを開いたところ、下のように表示されました。
Chart="";et="";et2="";codID=80;for(i=35;i<127;i++){Chart+=String.fromCharCode(i);}Chart+=" !ABCDEFG";for(i=0;i<g.length;i++){ts=(Chart.indexOf(g.charAt(i))-codID%100+100)%100;codID++;if(ts<10){et+="0"+ts;}else{et+=ts;}}for(i=0;i<et.length/6;i++){et2+=String.fromCharCode(parseFloat(et.substr(i*6,6)));}if(location.href.match(et2.substr(et2.length-13,13))){document.write(et2.substr(0,et2.length-13));et2=null;et=null;}else{et2=null;et=null;document.write("M");}
これが実行されるはずのコードだったので、これをさっきのコードの下にコピペします。
この中にはdocument.writeが2つあり、そのうち1つ目の方は重要そうなので、document.writeをescape_printに置き換えて表示してみます。
ただ、その部分はif文(URLを見て盗用をチェックしているようです)の中なので、条件に || 1 などと付け加えて強制的に実行させます。
それで表示されたのがNo.8のコードな訳です。
このコードはフォームに入力された文章をコピーライト付きでプレビューさせるもののようですね:-)
お礼
回答いただきありがとうございました。 私が思っていたよりも、相当早く習得してとくことができるレベルの難読化だとは全く思っていませんでしたので、とても驚いています。 たくさんの、発見に満ちた回答をいただきありがとうございました!!