こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

パス付きサイトのjavascript解析

とある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');">

投稿日時 - 2008-10-16 17:22:52

QNo.4406255

SK0

暇なときに回答ください

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

パスワードを知っているから解析しても良いというものではありません。
この質問は禁止事項の一覧に明記はされていませんが、
ソフトウェアの逆アセンブルと同様の作業であり、著作権法に反する可能性も高いと思われます。

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

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

投稿日時 - 2008-10-17 19:18:23

お礼

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

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

投稿日時 - 2008-10-19 20:23:22

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問