• ベストアンサー

「\x3C\x42\x52\x3E\x3C\x42\...」等の謎の文字

あるサイトのソースを閲覧していたところ、「<script language="javascript">document.write(unescape("\x3C\x42\x52\x3E...」で始まり「...x52\x3E\x3C\x42\x52\x3E"));</script>」で終わる謎の文字列を発見いたしました。 この「\x3C」「\x42」などはひとつひとつ意味があるのでしょうか?返信お願いします。<(_ _)>

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

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

例えば、 アドレスバーで javascript:void(alert(unescape("\x3C\x42\x52\x3E"))) と入力してみると、 件の部分は"<BR>"であったとわかります。

Massa092
質問者

お礼

なるほど!アドレスバーを使えばいいんですね。有難う御座います。他の皆さんも本当に有難う御座います<(_ _)>

その他の回答 (5)

  • mr_kjapan
  • ベストアンサー率63% (29/46)
回答No.6

追記:::::: 別法として、「\x」を「%」で始まるASCII形式文字に置き換えてみます。 \x3C\x62\x72\x3E(暗号) = %3C%62%72%3E(ASCII形式文字) = <br> 「\x3C\x53\x43\x52\x49\x50\x54\x20\x4C\x41\x4E\x47\x55\x41\x47\x45\x3D\x22\x4A\x61\x76\x61\x53\x63\x72\x69\x70\x74\x22\x3E」は、ASCII形式文字だと 「%3C%53%43%52%49%50%54%20%4C%41%4E%47%55%41%47%45%3D%22%4A%61%76%61%53%63%72%69%70%74%22%3E」となり、通常文字では <SCRIPT LANGUAGE="JavaScript">です。 ::結果(同じになりました):: 「\x」は、「%」を表します 例:\x4C = %4C ここで出来上がったものは、ASCII形式文字です。 ようは、通常文字を、例えばSは、ASCII形式文字の「%53」 に変換し、「%」を「\x」に置き換え羅列させていると考えても良いでしょう。

  • mr_kjapan
  • ベストアンサー率63% (29/46)
回答No.5

http://music.j-total.net/」のサイトのソースコードと思います。 さだまさしの「かかし」:http://music.j-total.net/data/011sa/005_sada_masashi/004.html内のソースコードをを例に取って見ましょう。 右クリック禁止のJSが仕組まれているので、ショートカットメニューからではなく、ツールバーから表示させます。 歌詞の部分を見てみます。 「凩\x28こがらし\x29が雑木林を」の部分を見ると、 実際の歌詞は、「凩(こがらし)が雑木林を」となっているところから、\x28=( \x29=)であることが判明します。 今一度、ソースコードをじっくり眺めてみます。 歌詞の部分の所々に、ひらがな、漢字が有ります。 ようは、歌詞の部分はそのままです。 で、歌詞の部分の暗号はと言うと、HTMLタグ(アンカー、改行など)、コードネーム、空白などです。 本題に入り、とりあえず、「(」を10進文字コードで表してみましょう。 「(」となり、おかしいようです。 では、「\x28」に「x」を含んでいるから、「(」を16進文字コードで表してみましょう。 「&#x28;」となり、「\x28」と似ています。 同様に、「)」を16進文字コードで表すと「&#x29;」となり、「\x29」と似ています。 \x28 = &#x28; = ( \x29 = &#x29; = ) となります。 同様にデコードしてみると、 \x3C\x62\x72\x3E = &#x3C;&#x62;&#x72;&#x3E; = <br> 「\x3C\x53\x43\x52\x49\x50\x54\x20\x4C\x41\x4E\x47\x55\x41\x47\x45\x3D\x22\x4A\x61\x76\x61\x53\x63\x72\x69\x70\x74\x22\x3E」は、 「&#x3C;&#x53;&#x43;&#x52;&#x49;&#x50;&#x54;&#x20;&#x4C;&#x41;&#x4E;&#x47;&#x55;&#x41;&#x47;&#x45;&#x3D;&#x22;& #x4A;&#x61;&#x76;&#x61;&#x53;&#x63;&#x72;&#x69;&#x70;&#x74;&#x22;&#x3E;」となり、 <SCRIPT LANGUAGE="JavaScript"> です。 ::結果:: 「\」は、「&#」を表します 3C、53は16進数・・3C;、53; 例:\x4C=&#x4C; ここで出来上がったものは、16進文字コードです ようは、通常文字を、例えばSは、16進文字コードの「&#x53;」 に変換し、「&#」を「\」に置き換え「;」を外して羅列させているのです。 ちなみに <head>内にある暗号化されたスクリプトをデコードすると <SCRIPT LANGUAGE="JavaScript"> <!-- hp_ok=true; function hp_d00(s) { if(!hp_ok)return;document.write(s) } //--> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!-- function hp_ne() { return true } onerror=hp_ne;function hp_dn(a) { return false } function hp_cm() { alert("著作権保護の観点より、右マウスボタンを禁止しております。");return false } function hp_de(e) { ・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・

参考URL:
http://music.j-total.net/data/011sa/005_sada_masashi/004.html
noname#19206
noname#19206
回答No.4

#2 で御座います。ちょっと頑張ってアルゴリズムを解析してみました(笑) 多分コレで合ってると思います。 \x25\x75\x33\x30\x34\x32 = あ 半角文字の場合はひとつの\x**が、全角文字の場合は6つの\x**がそれぞれ暗号化されたもののようです。 「ひとつひとつに意味があるのか」という質問の答えとしては、 ひとつひとつに意味がある場合と複数で意味を成す場合と両方があるということですね。 ちょっと難しい技術かも知れませんが、ご理解いただけたでしょうか…?

noname#19206
noname#19206
回答No.2

このようなコードには%20%2C...みたいな感じのものもありますが、例示の\x3C\x42みたいな形式もあります。 何をしているのかというと通常のソースをエンコードしてページソースを暗号化しています。 \で始まる4つの文字それぞれはそれぞれ文字が1バイト分だけ暗号化された姿です。 何らかの事情でページソースを見られたくないときにこの方法が用いられます。 例えば、マルチメディアファイルのストリーミング配信。 プレーヤーのコンテキストメニューを無効化すれば、プロパティからメディアファイルのアドレスを参照できなくなります。 ソースを暗号化すれば HTML が指定したマルチメディアファイルのファイルパスも分かりません。 ストリーミング配信だから、本体もブラウザの一時ファイルには保存されません。 そうするとメディアファイルを保存することが多少なり困難になるのです。 まぁ多少技術がある人にとっては全く無意味なものですが、 そこまでいろいろ詳しくない人にはもの凄く険しい壁の役割を果たすこととなります。

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.1

¥で区切っていますか? %じゃないですか? http://www.broadband-xp.com/hidesource/escape.html

関連するQ&A

  • このjavascriptは何をしているのでしょうか

    <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-7994748-1"); pageTracker._trackPageview(); } catch(err) {} </script> 今の知識ではこのスクリプトがどんな処理をしているのか読めません。 (出典はcanvasとprocessing.jsのデモページのソースです) ご回答よろしくお願いします。

  • document.writeの文字列が実行されるタイミング

    javascriptで<script>タグの表示をdocument.writeで行ったところ、 直後に、<script>ソースの関数呼び出しでリンク切れになったのですが、 なぜでしょうか。 document.writeの文字列が実行されるタイミングっていつなんでしょうか。 <script> document.write('<script type="text/javascript" src="hoge.js"></script>'); hoge(); </script> ※hoge()はhoge.js内で定義されています。

  • PHPのコード内でjavascriptを使いたい

    例えば"%u30dd%u30fc%u30bf%u30eb"という文字列を"ポータル"にunescapeしたいとき、javascriptでしたら <script language="JavaScript"> <!-- document.write(unescape("%u30dd%u30fc%u30bf%u30eb")); //--> </script> でいけますが、PHPでやるならば http://dozo.matrix.jp/pear/index.php?PEAR%2FHTML_AJAX%2Funescape のように長いコードを使わなければいけません。 PHPの処理中にjavascriptを使用することができたら大変便利だと思うのですが、 処理の一部にjavascriptの関数を使用するよい方法はないでしょうか。 どなたかご存知の方、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • javascriptでの大文字小文字の区別

    前に質問をし、大文字と小文字の区別があることはわかりました。そこで、日にちを出すために <script language="javascript"> <!-- mydate=new Date(); ye=mydate.getFullYear()+"年"; mo=mydate.getMonth()+1+"月"; da=mydate.getDate()+"日"; day=mydate.getDay(); day2=new Array(7); day2[0]="日";day2[1]="月";day2[2]="火"; day2[3]="水";day2[4]="木";day2[5]="金"; day2[6]="土"; document.write("<font style='font-size : 16px; color : #666666'>"); document.write("本日は"+ye+mo+da+"("+day2[day]+") "); document.write("です</font>"); //--> </script> とすることはわかったのですが、一番初めの<script language="javascript">は物によって<SCRIPT LANGUAGE="JavaScript">や<SCRIPT language="Javascript">となっていたり、年数などのyeはYeとなっていたりします。javascriptにも大文字と小文字を区別しないものがあるということですか。もしそうならどういったものがどちらでもいいのですか。

  • ページは表示されたけれど、エラーが出ます。

    過去の質問を調べたのですが、見つけられなかったので、質問させてください。 自社サイトのページを開くと、ステータスバーに 「ページが表示されましたが、エラーがあります。」と表示されました。 エラーの詳細は下記のとおりです。 ライン:18 文字:51 エラー:')'がありません コード:0 ソースに問題があるのかと思ったのですが、 下記がそのソースです。 <SCRIPT language="javascript" type="text/javascript" src="../js/common_lib.js"></SCRIPT> <SCRIPT type="text/javascript" src="../js/css_junction2.js"></SCRIPT> <SCRIPT language="JavaScript"> <!-- document.write("<img src='http://700700.jp/acc/acclog.cgi?"); document.write("referrer="+document.referrer+"&"); document.write("width="+screen.width+"&"); document.write("height="+screen.height+"&"); document.write("color="+screen.colorDepth+"' alt="">"); // --> </SCRIPT> どこをどう直せばよいのかよくわからないので、 もしお分かりの方がいらっしゃいましたら、 お教えいただけますでしょうか? よろしくお願いいたします。

  • Tracker でエラーが出ます

    以下の処理の部分のうち、2つめのところで 時々エラーが出て、ブラウザーの表示が止まります。 なにか対策はないでしょうか? <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-3292047-2"); pageTracker._initData(); pageTracker._trackPageview(); </script>

  • '<SCR' + 'IPT>' なぜ分割?

    JavaScript が使われているページのソースを見ると たまに document.write('<SCR' + 'IPT LANGUAGE="JavaScript… という感じに SCR と IPT をわざわざ結合しているページが見受けられます。 なぜ <SCRIPT … と書かずにこのようなことをするのでしょうか? どのような効果があるのでしょうか?

  • javascript 初心者です。

    下記のソースのどこが間違っているのでしょうか。 <body> <script type="text/javascript" language="javascript"> <!-- var us; us = document.getElementById("uuss"); if ( us == 0 ){ document.write("オッケーです。"); }else if ( us == 1 ){ document.write("エヌジーです"); }else if ( us == 2 ){ document.write("未定です"); }else if ( us == 3 ){ document.write("空欄です"); } // --> </script> <div id="uuss">1</div> </body> 例えば<div id="uuss"> </div>の部分に1と入力すると、 「エヌジーです」という文字列を表示させたいのですが ブラウザで見ると「1」と出てしまいます。 よろしくお願いします。

  • 小窓ウィンドウについて

    リンク先をソースに表示せずに小窓ウィンドウを立ち上げるにはどうすればいいのでしょうか? 何かの関数ですか <script language=JavaScript> document.write(" <a onclick=openi() href="javascript:d()"> よろしくお願いします。

  • 変数に入れた文字列をindexOfで解釈したい

    すみません、質問したいと思います。 自身のURLを参照して、それを変数に格納し、その文字列中にある #の位置をindex.Ofで解釈したいと思います。 なので、以下のようなjavaScriptを書いたのですが、うまくいきません。 なぜでしょう、よければ教えてください。 <script language=javascript> var loc = this.window.location; var sharp_pos = loc.indexOf("#");//#がなければ-1を返す document.write(loc); </script> 以上のものを実行したら、URL中の#の位置がブラウザ上で数字で 確認できると思ってたのですが・・・。 javascriptって、変数に格納した文字列は解釈できないのでしたっけ? perlだったら出来てたような気がしますが・・。 本を見たら、直接文字列をいじっているサンプルしかありませんでした。  "abcde".indexOf("c"); ⇒2を返す よろしくお願いします。