dポイントプレゼントキャンペーン実施中!

とあるwebサイトにjavascriptでパスがかかっていたので、ソースを読んだのですがなぜそうなるのかがわかりませんでした。
javascriptの勉強をするために、どういう仕組みでパスをかけているのかを教えて下さい。
(パスを教えてくださいと言っているわけではありません。私のそのサイトへの入室を許可されているのでパスは知っています。)

どの変数をどこへ渡してどうこう程度でいいのでお願いします。

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function _HpbChkPwd(keyin,escEncrypted,defaultUrl,target)
{
varencrypted = unescape(escEncrypted);
var indexbase = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
var passlen = keyin.length;
var enqlen = encrypted.length;
var decrypted = "";
var decryptedPassword = "";
var decryptedPath = "";
var targetUrl = "";
var i, j, k, chr1, chr2, nbase;
var needPassword = "%u30D1%u30B9%u30EF%u30FC%u30C9%u3092%u5165%u529B%u3057%u3066%u304F%u3060%u3055%u3044%u3002";
var badPassword = "%u30D1%u30B9%u30EF%u30FC%u30C9%u304C%u6B63%u3057%u304F%u3042%u308A%u307E%u305B%u3093%u3002";
if (passlen <= 0)
{
alert(unescape(needPassword));
return ;
}
for (i = 0, j = passlen - 1, k = 0 ; i < enqlen ; i++, j--, k=0)
{
if (j < 0)
{
j = passlen - 1;
}
chr1 = indexbase.indexOf(keyin.charAt(j));
chr2 = indexbase.indexOf(encrypted.charAt(i));
if (chr2 < (chr1 + j))
{
nbase = (chr1 + j - chr2) / 0x5f;
k += (0x5f * Math.ceil(nbase));
}
k += (chr2 - chr1 - j);
decrypted += indexbase.charAt(k);
}
if (typeof(opener) == "undefined")
{
window.close();
return ;
}
if ((typeof(opener.closed) == "unknown") || opener.closed)
{
window.close();
return ;
}
opener.document.isOpened = false;
decryptedPassword = decrypted.substring(decrypted.length - passlen, decrypted.length);
if (keyin == decryptedPassword)
{
decryptedPath = decrypted.substring(0, decrypted.length - passlen);
passlen = decryptedPath.length;
for (i = 0 ; i < passlen ; i++)
{
chr1 = decryptedPath.charAt(i);
if (chr1 == "%")
{
chr2 = decryptedPath.substring(i, i+6);
targetUrl += chr2;
i += 11;
}
else
targetUrl += chr1;
}
if ((typeof(opener.closed) != "unknown") && ! opener.closed)
opener.open(targetUrl,"_blank");
window.close();
}
else
{
if (defaultUrl.length)
{
if ((typeof(opener.closed) != "unknown") && ! opener.closed)
opener.open(defaultUrl,"_blank");
}
else
{
alert(unescape(badPassword));
}
window.close();
}
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="document.keyinform.keyin.focus()" onblur="document.keyinform.keyin.focus()" onerror="window.close();">
<DIV align="center">
<P>パスワードを入力してください。</P>
<FORM name="keyinform" method="POST" onsubmit="_HpbChkPwd(keyinform.keyin.value,'ztt%24syPF%5B%5E%5ErMaRUIPOFM','http://yahoo.co.jp/','nakami');return false;">
<INPUT size="20" type="password" name="keyin">
<INPUT type="button" name="CheckPassword" value="OK" onclick="_HpbChkPwd(keyinform.keyin.value,'ztt%24syPF%5B%5E%5ErMaRUIPOFM','http://yahoo.co.jp/','nakami');">

A 回答 (1件)

パスワードを知っているから解析しても良いというものではありません。


この質問は禁止事項の一覧に明記はされていませんが、
ソフトウェアの逆アセンブルと同様の作業であり、著作権法に反する可能性も高いと思われます。

また、この投稿は引用の範囲を超えていると思われます。

私のこの投稿も質問に対する回答ではありませんので、BBSの禁止事項に抵触すると思いますが、あえて投稿させていただきました。
    • good
    • 0
この回答へのお礼

軽率な行動をしてすいません。
今後はこれらのことに注意して投稿します。

忠告ありがとうございます。

お礼日時:2008/10/19 20:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!