日语演讲比赛黄了 斗病毒(2)

领导们再一次将朝令夕改这个中国领导的传统精神发挥到了极致!
最开始演讲比赛宣传的是,谁都可以参加,参加了就能拿到“创业学分”,谁知上周改成了参加了不一定能有学分,加多少分也不知道。最开始暧昧不明的创业学分获的方法也逐渐明了起来,读书工程给4分(这个我已经完成了),过了大学英语四级给2分(我已经过了),剩下两分可以通过选修创业教育学院的选修课来获得(我已经选了“摄影技术”课,2分Get!)。这样一来,8分的“创业学分”我早就拿满了,还参加什么演讲比赛。
后来,“演讲比赛”又传出了无限期推迟的消息,原因似乎是参加的人过多,要改成只允许修不够学分的人来参加。这样一来,学生们和老师的辛苦工作全都浮云了(只要学习成绩稍好的同学都准备好了稿子并且找老师修改了)。好好的演讲比赛被搅黄,不知道是谁的错。
如果正式确定没办法参加比赛,我就把演讲稿发出来,给需要的人。
===========================
今天继续说病毒的事情。
服务器似乎感染了落雪病毒,从昨天开始就关掉了,因此网摘服务、电子邮箱服务、交流FTP服务、统计服务都要停止,NY、EM、BT也没法用了。我每天用远程桌面连接服务器,手动升级瑞星的努力也都白费了。因为瑞星从始至终一次都没有报告过有病毒,一次都没有。
这太令我伤心了,如果我用的是盗版的软件,出什么问题我也心甘情愿了,但是家里的和学校的电脑,包括安徽同学的电脑,全都是花钱买的正版瑞星,而且是三套正版的瑞星,并且严格按照最终用户许可协议,每个正版序列号只用在一台电脑的一个操作系统中,乖乖的每天升级,但是最后换来的却是这个结果。

出师未捷身先死 斗病毒(1)

今天上午英语期中考试,新四级模拟,本来最具重量级的“Fast Reading”却出了一篇关于笔记本电脑的文章,被渲染得紧乎其紧的“15分钟答题时间”到了我这里不到5分钟就做完了。所以这次考试没什么太值得关注的地方。要关注的是我下面要说的。
===========================
周飞的电脑感染了病毒,说是要我格式化给他重做。我一想,全盘格式化,病毒倒是解决了,只是数据全部浮云怪可怜的,我就想了个办法,把硬盘摘到我这里用正版瑞星给他杀。于是我把硬盘拿到宿舍,挂到安徽同学的电脑上,开机,成功点亮,进BIOS,设置,一切顺利。从电脑原来的硬盘引导,xp启动画面,依然顺利。进入Windows登陆界面,让人奇囧无比的画面出现了,windows提示硬件已经安装完毕,要求重新启动,之后没过两秒钟突然弹出来内存地址xxxx不能为read。按要求重起,系统变得异常缓慢,瑞星监控中心竟然根本没有启动,手动启动瑞星监控中心,竟然发现所有的监控项目都不见了,选择启动全部监控没有反应。
没办法,通过快捷方式启动“瑞星杀毒软件”,本来以为这样就能解决,但是启动之后本来应该列出磁盘列表的地方竟然空空如也。这下大骇,好在rising提供了U盘查杀工具,通过U盘加载最新的病毒库用光盘启动自带的linux系统来杀毒。
在我自己的电脑上用U盘查杀工具复制好病毒库,用光盘启动,顺利加载病毒库,开始杀毒,扫描速度奇慢无比,慢也没办法,只好等,等了半个多小时,再回到电脑旁边的时候我彻底懵了。列出了十多个病毒竟然全部清除失败。再仔细一看,安徽同学自己的那块SATA硬盘竟然没有出现在分区列表中,也就是说Rising的基于Linux的杀毒程序竟然不支持SATA硬盘(还是其他什么地方出了问题?)!
现在的心情只能用万念俱灭来形容了,不果既然祸是我闯下来了(把安徽同学的电脑弄崩溃了),只能自己善后了。现在正常的机器还剩下自己的电脑,那么只能利用自己的电脑来解决了。
为了避免瑞星再次被杀掉,我先把我的电脑上的正版瑞星拆卸(安徽同学和我的瑞星都是花钱买的正版,序列号不同,天天升级),下载360安全卫士,获得卡巴的序列号,安装卡巴,重新启动。这回我没敢直接挂周飞的硬盘,首先挂上了安徽同学的硬盘,顺利启动,查杀,杀出来4个木马。之后又挂上周飞硬盘,杀出来26个带病毒的文件。
至此事件基本解决,联想到之前的“误判”,看来瑞星是精力都花在了“对内”上,“对外”就有所疏忽了?

附带,周飞硬盘上的病毒列表:
Trojan-Downloader.VBS.Psyme.cn
Trojan.Win32.Agent.zl
Rootkit.Win32.Agent.cu
Trojan.Win32.Agent.abe
Trojan-Downloader.Win32.QQHelper.ft
Trojan.Win32.Qhost.ir
Trojan.VBS.RotNet.a
Trojan-Downloader.Win32.Agent.bbb

其中,安徽同学和周飞都有一个共同的文件带毒:
Trojan.Win32.Qhost.ir cmqqbeta3v144a.exe/stream/data2073/data0003
Trojan.VBS.RotNet.a cmqqbeta3v144a.exe/stream/data2073/data0004

呵呵,cmqqbeta3v144a.exe这个东西……大家都知道了吧~哈哈~希望只是卡巴“误判”而已。

我对Ajax的一些看法

昨天跟秋实通电话的时候,他突然提起来了Ajax,无奈通话质量实在是糟糕(不知道是澳洲的电话网关糟糕,还是联通的通话质量糟糕),总之就是我听不清他说的话。因为这个话题技术性比较高,我实在是“猜”不出来他在说什么,只好自己瞎应和了几句便换了别的话题。
学Ajax也有一段日子了,也在Waki-Blog上进行了一些小小的应用,作为弥补昨天的“交流不足”,今天就来谈一下我对Ajax的一些看法。
继续阅读我对Ajax的一些看法

好事不经说

就在我们庆祝Wiki终于恢复访问的时候,今天各国语言的Wiki重新被封,手法和以往一样,与服务器的链接被重置。
至于从前天开始的访问恢复,有可能是GFW抽了,或者是Wiki的服务器正在调整IP之类的动作,出现了暂时能够访问的情况。

Javascript的小把戏

今天听秋实说,他写好Blog之后没有备份,提交失败后文字全部浮云。于是我立即想起了以前数次类似的“惨痛教训”。于是就在Blog程序的编辑器中加入了自动将内容备份到剪贴板的功能。这样,除非系统崩溃剪贴板中的内容消失,否则浏览器崩溃(尤其是Maxthon)、网络断流等等的问题都可以轻松应付。
其实将值复制到剪贴板非常简单,只需要一句Javascript即可。代码如下:
window.clipboardData.setData('Text', document.input.message.value);
setData方法的第一个参数是数据类型,可以是URL或者Text,使用Text会将内容存储为文本格式。第二个参数是要复制到剪贴板里的内容,这里指定为document.input.message.value的意思是name为“input”的表单中的name为“messgae”的文本框中的内容(value)。
只要将这段代码加在表单的onSubmit属性中即可,这样就能做到表单提交的时候自动执行这段代码,将文本框的内容复制到剪贴板,免得出现辛苦写的东西全部浮云的“囧”境。

其实这段代码只要稍加变通,即可实现更加丰富的功能。
将上面的代码放进函数,方便调用:
function backup_msg2clip() {
window.clipboardData.setData('Text', document.input.message.value);
}
之后再在页面中加入:
window.setInterval("backup_msg2clip()",10000);
通过setInterval方法设定每10(把10000改成600000就是60秒了)秒钟执行一次backup_msg2clip(),这样就相当于每10秒钟备份一次。但是这样也有缺点,那就是在编写文章的时候,剪贴板被文章内容独占,如果此时想从别的文章中copy一些内容过来,那可真要做到“眼疾手快”,要在10秒钟内ctrl+c,回到编辑器再ctrl+v,可真够紧张的。
既然这样,我们就同样将上面代码放进函数,只在需要的时候执行。
function start_backup() {
window.setInterval("backup_msg2clip()",10000);
}
之后再创建一个链接:
<A href="javascript:start_backup()">(每10秒钟自动将内容备份至剪贴板)</a>
只有点击这个链接后,自动备份功能才会启动。

如果觉得这样还不保险,可以通过#default#savehistory防止后退清空文本框。
在表单的HTML标签中加入style属性,值为“behavior:url(#default#savehistory);”,这样提交表单之后再后退,文本框就不会被清空,依然保持着提交之前的样子。

怎么样,如此一来,无论是在CMS还是Blog中写东西,安全感都大多了吧。

题外话:
今天更新了Waki-Blog,除了前面提到的后台编辑器更新以外,还修改了bbcode解析部分。解析code代码的时候,自动将代码中引号前面的斜杠去掉,并将特殊字符转换为html标号,以防止引用的代码中的html语句被浏览器执行。

回归Maxthon

阅读这篇日志前,请Firefox的Fans先冷静自己,不要生气。
前些日子终于因为再也无法忍受Maxthon常常停止响应,将其请出了本本。之后,将备受称赞的Firefox请了进来,并高高地供在了快速启动栏里面。
但是,还没坚持一个星期,就把Firefox清出了快速启动栏,迎回了Maxthon。原因是再也无法忍受Firefox的兼容性问题。在我的使用过程中,发现很多网站的页面代码不被Firefox兼容,浏览体验相当糟糕,比如背景图片无法显示、Javascript无法执行、广告屏蔽功能把正常内容过滤等等。不仅如此,在这不到一个星期的使用中,竟然出现了两次跟Maxthon一模一样的停止响应现象,都是窗口停止响应、内存占用升高、CPU占用100%。
哎……对Maxthon恨铁不成钢啊,你什么时候才能解决内存问题呢?

这个世界清静了

昨天我退出了两个QQ群,都是本学校的学生组织的。
本来,是一个跟我想当要好的同学把我加进去的,他同时也在群里担任管理员。我退出这两个群不是不给他面子,而是我觉得我无法融入群里的气氛,加入群半年多了,甚至我在里面一次发言都没有过。所以说,如果我在这得罪了这个同学,那么我要先向他说声对不起。

直接让我下决心退出这两个群的,是昨天下午突然收到这样一条信息:

请大家打开GOOGLE首页,搜索”南京大屠杀”或”钓鱼岛”,你们自己看看能搜出结果吗?出现的无非是:”该页无法显示”的提示,而且在以后的短时间内,你将不能使用GOOGLE进行搜索。
但是如果你先搜索”尖阁列岛”(即我中国钓鱼岛的鬼子叫法),就可以搜到结果。(我建议你先搜尖阁列岛,再搜南京大屠杀,这样不至于因为搜了南京大屠杀后,被停了网页,导致尖阁列岛也无法试了)
这摆明是对我中华人民共和国,对所有华夏儿女的蔑视!
丑恶的美国鬼子企图从互联网上对我国进行信息封锁!用心极其险恶!
请大家亲身实验一下,如果我说的对,就转发一下,让所有中国人都知道!坚决抵制googLe,用我们中国人自己的搜索引擎-百度!!! 把googLe赶出中国!
我自己刚验证www.google.com确实不能搜索南京大屠杀,并且导致一段时间内无法登陆\现在已有很多人试过了,确实不能,可见险恶用心,所以大家应该统一起来共同抵抗GOOGLE,大家都不要用了,反对他,相信你是一个有良知,有血性的中国人,为中国人争口气吧,发到你所有在线的朋友,让他们在发,发到你所有的群中,让在线的在发,各种论谈也可以加贴,为了让各多人知道,请大家发一下吧,不相信你可以试下,真实有效,是中国人就发吧,没有人说你,为了国家请复制吧!!! 声明:不信,你自己试试

这种无聊的信息,马上有人响应。
“自从我电脑坏了之后,就再也不用这只狗了!”
云云。
我随手丢了个Williamlong的一篇文章的链接上去就退出了该群。因为,我不想也没有那个胆量去看群里下面的讨论,我不想也没有胆量也没有信心向他们解释清楚什么事GFW。

为什么这几年国人的爱国热情变得如此盲目肤浅失去理智,甚至因为“爱国”变得失去对事情真伪对错的判断力。一件小事就足以触动人们敏感的神经,进而引发轩然大波。这种心理,逐渐被某些人利用,用作不可告人的目的。单单上半年,就爆出了“网易屏风门”(了解事件:文章 1 2 3)、“Google钓鱼岛门”(了解事件: 文章 1 2 3)等等的事件。我们是时候冷静下来思考一下了!

Blogger.com解封了?

我们终于迎来了这一天,虽然不知道是临时解封还是真正解封,但是千真万确的是,今天早晨,被封了三年多的BlogSpot竟然可以访问了!
虽然我自己不用BlogSpot(曾经用过),但是无论怎么说,这依然是一件值得高兴的事情,这是不是标志着我们又朝着和谐社会的目标迈进了一步呢?

再次说说Blog的人身安全

上次写了一篇文章叫“Blog的人身安全”。今天月光博客又发表了一篇文章,提到了Trakcback的问题。今天就再次来谈谈我在反SPAM上的一些小招数。

1.首先要做到的,也是最简单能做到的,就是将Trackback地址复杂化。
回顾今年3月份的Donews Trackback SPAM事件,正是因为Donews的Trackback地址采用了连续的ID作为Trackback的URL,所以才会使系统变得易被攻击。(话说Donews现在的TB URL貌似依然是连续ID,比如:http://tb.donews.net/TrackBack.aspx?PostId=930641)
一个方法是在TB URL中加入验证字串,比如tb.php?id=123&auth=78q34f,验证字串的算法可以使用标题或者文章内容的MD5 Hash中的一部分来充当。然而,这样增加了URL的长度和本来不应该有的信息量,似乎并不是最好的办法。那么,我们为什么不连ID一起加密掉呢?
我的做法是采用一个可逆加密算法(目前Waki-Blog使用的是我自己写的z-Enc),加密URL中的ID,Trackback程序收到字符串之后,解密、验证,若合格则继续,不合格则拒绝。同时起到了提高URL复杂度、隐藏ID、验证提交的作用。我的Blog中的TB URL中类似“response.php?tb::0a2MTc%3D”的部分,就是z-Enc编码的结果。
z-Enc的详细说明和源代码都可以在上面的链接中找到,希望能给Blog程序的作者们提供一丁点思路。

2.进行敏感关键词过滤。
为了进一步防止通过人工方式对某个Blog(甚至某个Blog系统)进行某些有“特殊目的”的SPAM,需要对Trackback以及留言评论的内容进行过滤。具体到程序上,就是检查接收到的信息中是否有规定的词汇。再细分,则是检查敏感词汇出现的次数是否超过了规定的次数(即敏感度,或者说宽容度)。如果出现违规的词汇,则予以拒绝。
为什么要采用一个“宽容度”设定呢?请看下面两句话:“Google Earth是Google提供的免费地图服务”、“免费激情小电影 观看免费电影”。同样是“免费”这个词语,出现在正常的句子当中和出现在广告SPAM中的频率是不同的。经过观察,在正常句子中“免费”出现的频率较小,而出现在广告中的时候则很可能大量出现。若没有宽容度,只要出现“免费”就一律杀掉,未免错杀无辜;若不过滤,则很可能漏掉广告。
下面是Waki-Blog的过滤代码:
function bad_word_detect($str){
include_once("./include/badword.php");
//英语垃圾词检查
$message_for_check_en = str_word_count(strtolower(preg_replace('~[^A-Z ]~i', '', $str)),1);
if(count(array_intersect($message_for_check_en,$bad_word_en)) > 0) return true;

//中文垃圾词检查
$message_for_check_cn = str_replace($bad_sign,"",preg_replace('~[A-Za-z0-9 ]~i', '', $str));
for ($i=0;$i<count($bad_word_cn);$i++){
if (substr_count($message_for_check_cn, $bad_word_cn[$i][0]) >= $bad_word_cn[$i][1]) {
return true;
}
}
}
Waki-Blog分别对英文和非英语敏感词汇进行过滤。敏感词汇列表储存在badword.php中,可以随时扩充。
(1)英文关键字过滤:
首先使用正则表达式过滤掉除大小写英文字母外的全部字符。之后使用PHP内建函数strtolower将全部字母转换为小写(防止使用类似pORn的乱序大小写来蒙混过关)。之后用str_word_count来分词,全部词语转换为数组$message_for_check_en,之后用array_intersect求其与$bad_word_en数组的交集,若存在交集,则判断内容中包含敏感词语,函数返回true。
(2)中文关键词过滤:
比起英文关键词过滤,因为中文关键词过滤引入了宽容度问题,所以要稍微复杂一些。
首先将所有的英文字母、0~9的阿拉伯数字、英文符号、中文符号都过滤掉组成纯非英语字符串$message_for_check_cn。之后进入循环,逐个检查每个敏感关键词在字符串中的含量。若发现超过宽容度的出现次数,则立即返回true中止循环。
这种方法虽然有些花费系统资源,但是过滤效果和灵活度方面都好一些。而且,这种方式的应用不仅限于此,如果将某些经常发广告的网站的网址列入敏感字符列表中,将容忍度设置为1(只要出现一次就block),那么敏感字符列表便充当了黑名单的作用。
当然,这种过滤方式当然也存在一些不足。比如无法防止汉字同音字代替,偏旁部首拼字等等的比较极端的办法,但防护一般的SPAM还是足够的。因为语言天生的复杂性,除非使用机器分词、语法语义分析、统计学分析过滤等等的技术,SPAM是没办法从根本上过滤的。然而遗憾的是,目前这些技术本身就不是很成熟,应用在SPAM过滤上就更有难度了。

越高级复杂的过滤与防护只能催生出来更加变本加厉的SPAM办法。在想办法不断对付没完没了的SPAM的同时,为什么不倡导响应中央“文明办网”的号召,让广大网站的发展都“文明”起来,不要SPAM呢?