• ベストアンサー

暗号化されたホームページソースを復号して見たい

ttp://super-movies.com/mv/wah-ken_vs_gan.htm のサイトですが ソースを見ると暗号化されています。 これを元のソースに復号する方法のわかる方はいませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1の方の書かれているので合っています。 もう少し具体的に書くと下のようになります。 まず,ブラウザ(IE)の「表示」→「ソース」でソースを見ます。 すると document.write(unescape("%3C%53%43%52%49%   ~~ %50%54%3E")); と書かれてある部分が見えますよね。 これが暗号化を解除するスクリプトです。 この中の % だらけになっている部分はエスケープされていますから このエスケープされた文字をアンエスケープします。 http://xweb.under.jp/i/x/code.php など,でURLデコードをすると良いです。 他にもURLデコードできるサイトはたくさんあります。 デコードすると下記のようなスクリプトが見えます。 -------------------------------- <SCRIPT LANGUAGE="JavaScript"> <!-- hp_ok=true; function hp_d01(s){ if(!hp_ok)return; var o="",ar=new Array(),os="",ic=0; for(i=0;i<s.length;i++){ c=s.charCodeAt(i); if(c<128)c=c^2;os+=String.fromCharCode(c); if(os.length>80){ar[ic++]=os; os="" } } o=ar.join("")+os; document.write(o) } //--></SCRIPT> -------------------------------- つまり,JavaScriptで暗号をブラウザに復元させているわけです。 これを使ってさらにエンコードするマシーンを自分で作れば良いのです。 というわけで作ってみたのがこれです↓。 ----------------------------- <html> <head> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <SCRIPT LANGUAGE="JavaScript"> <!-- hp_ok=true; function hp_d01(){ var s = document.aa.s.value; if(!hp_ok)return; var o="",ar=new Array(),os="",ic=0; for(i=0;i<s.length;i++){ c=s.charCodeAt(i); if(c<128)c=c^2; os+=String.fromCharCode(c); if(os.length>80){ar[ic++]=os; os=""; } } o=ar.join("")+os; document.aa.o.value=o; } //--> </SCRIPT> <title>暗号解除マシーン</title> </head> <body> <form name="aa"> <p><textarea rows="8" name="s" cols="54"></textarea></p> <p><a href="JavaScript:onClick=hp_d01();">暗号解除</a></p> <p><textarea rows="8" name="o" cols="54"></textarea></p> </form> </body> </html> ------------------------------- ↑メモ帳などテキストエディタに貼り付けて, 「任意の名前.html」で任意の場所に保存してみてください。 それでこのマシーンをブラウザで開き, 上のテキストエリアに, hp_d01(">JGCF\x3C    ~~ MF[\x3C");//--></SCRIPT> の部分の "" 内 つまり, >JGCF\x3C ~ MF[\x3C  まで を貼り付けて, 「暗号解除」をクリックすると下のテキストエリアに,解読されたものが表示されるはずです。 なぜか,復元が不完全です。 下のテキストエリアの部分をテキストエディタにコピペして, 「^z1A」 を 「>」 に置換 「^z00」 を 「 」(←半角空白文字)に置換 すれば,だいたいが見られると思います。 JavaScriptに関しては素人ですから変換されない文字がなぜできるのかはよくわかりません。 その他不具合もご容赦ください。 あとHTMLに関しても素人なので,解読したからといって何が書かれてあるのかは理解できません(爆)。 ご容赦ください。 結論:ブラウザを通して見るという制約がある以上,    HTMLは完全に解けない暗号化はできません。    でも私には結局理解できません。

123isao
質問者

お礼

完全には解読できませんでしたがローマ字部分が表示されていたので大体わかりました。ありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

例えば、 スクリプトを使って、 document.writeしている部分を textarea何かに書き出してあげます。 最初のunescape部分はスクリプトです。 そうして復活したスクリプトを使って、 またtextareaなんかに書き出してあげます。

123isao
質問者

補足

JavaScriptの関数を使っているようですが、ソース自体がバイナリファイルのように白抜きで表示されます。 Shift_JISではなくUTF-8で作られているのでしょうか。

関連するQ&A