MB_ICONERROR);
return;
}
} else
{
ac[j] = s[i];
j++;
}
j = 0;
for(i = 0; i < Total; i++)
{
char c = Key[j];
c >>= 3;
ac[i] = (char)(ac[i] ^ c);
if(j < lstrlen(Key) - 1)
j++;
else
j = 0;
}
ac[Total] = 0;
Decrypted->SetTextBuf(ac);
}
二、PassMaster.class
这个applet的保护方式为:把用户名、密码和要保护的URL以明文形式保存在Web服务器的password.log文件中。Applet初始化的时候要读取密码文件,即password.log要被读到客户端浏览器的cache里,则它必须被配置成任何人都可以读取的,而且它与applet放在同一虚拟目录下。这样就没有秘密可言了。假定applet的URL为
http://www.somewhere.com/PassMaster.class,则只需要在浏览器中输入http://www.somewhere.com/password.log就可以把密码文件存盘,或者直接在浏览器的cache中可以搜索到password*.log。下面是密码文件的样本:
name: = "guest";
password: = "guest";
URL: = "demo.html";
name: = "guest";
password: = "test";
URL: = "done.html";
END_FILE
下面是它操作密码文件的代码片断:
public void parseFile()
{
_fld0102.setText("Reading password log. . .");
try
{
URL url = new URL(_fld0108.getCodeBase(), "password.log");
.........
}
即使网站管理员修改了密码文件的存放位置并对密码文件进行了变换,还是可以得到被保护的URL的明文(根本不需要关心用户名和密码),因为我们可以将applet的class文件下载回来分析其所操作的密码文件以及解码算法。
通过搜索引擎,我们可以找到一些嵌有上述applet的页面。由于Java Applet在保护网页的机制方面有先天性缺陷,因此建议不要采用这种相对来说比较偷懒的办法。
关键词:用Java Applet保护页面的缺陷