人才交流

标 题读者披露CNNIC投票内幕:我们是这样作弊的!
作 者 发表时间2000/6/13 9:22:09

 







 【ChinaByte 综合消息】随着整个网络界对CNNIC投票舞弊事件的日益关注,近日,我们收到了一位读者的来信,他在信中披露了有些网站如何编写投票程序以在CNNIC评选过程中进行作弊的过程,并要求通过Chinabyte将这些真相告诉大家。我们非常感谢这位“不能具名的程序员”,并应他的要求将这些真相公之于众。下面就是他给Chinabyte的来信:    -------------------------------------------------------------------------------- 主编先生:   您好!   自从复旦大学里CNNIC投票事件被暴光之后,整个网络界对投票舞弊事件的关注从地下走到了地上。做为一个在上海各大网络公司里混了近四年的人,有一些话想对您说说,也希望您和chinabyte能够将这些真相公布给全体的网络用户。   我在公司内主要从事技术工作,也就是说在历次的CNNIC调查中,我主要负责最后的投票环节。CNNIC的投票虽然有非常严格的认证,虽然有IP的限制,但对于我们这样熟悉各种流行加密技术的程序员来说,还是非常简单的。我一共编写过三次投票程序。其中两次是和CNNIC有关的,另一次则是互联网大赛。   去年12月的CNNIC的程序分析是我写的,下面是从我的笔记中找到的几个技术细节。   1.编辑和其他人员收集的用户资料是存放在我们的数据库中的,几乎所有的资料都是非上网用户的,所以没有Email地址。所以在投票的同时,我们必须在各种不同的WebMail上为他们申请Email,当然最简单的方法就是在我们自己的Server上申请。所以必须有一个动态申请地址的模块。   2.CNNIC的申请页面中包含了几个隐藏字段,一个是记录发起申请的时间,一个是最长为40位的变长字符串,该字符串无法解开,但估计和时间ip有关,也就是说可能是这个页面加密的密文。从算法来看,估计CNNIC将用这个字符串来验证用户的ip和时间,防止在http post的时候人为改动这两个数值。所以必须把此数值予以保留。   3.投票后期CNNIC将采取用户Email认证,所以必须有程序浏览所有我们提交的用户信箱,确保确认信笺能够收到并自动回复。   4.基于以上3点,我们必须采用拨号和固定IP共同使用的方法,拨号IP用来提交表单,我们外部的Server中要有一台空闲出来保证查询Email的程序顺利运行。   所以最后我们的程序是这样写的:   模块一:从数据库中取得用户资料,在自己或其他mail上上申请Email用户,邮件地址密码重新写入数据库。该部分由一台连接在163主干上的UnixServer负责,由Perl编写。   模块二:自动拨号,从CNNIC服务器上申请页面,得到发起申请时间和那个加密字符串。从外部数据库中取得用户完整资料,延时后post出去。然后断线,再次拨号。此部分用C++编写,同时注意post时候http head必须模拟成IE或Netscape,该程序可以分布处理,以避免占用过多电话线。   模块三:扫描所有用户的Email信箱,发现确认Email后自动回复,然后删除此用户信息,避免再次扫描。perl或php都可。   这样的程序我们两个人花了三天才写完,其实大部分功能是在去年七月以后就写好的,因为从那次投票之后公司就指示我们要准备好程序,研究分析CNNIC可能采取的机密方法,以准备舞弊。   至于选票的部分,去年的时候是从员工中征集的,一个身份证和名字10块钱,然后由打字小姐编成TXT文件,再转入数据库。至于今年更是公司发文件要求三地的员工统一填写表格,交由一个独立小组来完成。   我知道其他公司还有更厉害的手法,我见过用手工的方法投票,全部的员工都停止手中的一切工作,每个人发一个帐号回家投票,这部分的电话费公司报销。   今年投票采用了邮政的方法,所以要写一个连贯的程序几乎是不可能的,但我估计还会有许多公司在取得选票后继续采用程序post的方法。因为数万张选票表单用人来投,真的是很累的。   网络公司曾经是让人向往的地方,但当你在这里呆了超过三年,你就会明白所谓的“注意力“是怎么形成的,比如制造假用户数,编写程序提升page view,做财务假帐增加营业额等等。而CNNIC的评比只不过是所有做假工夫中最基本的一项。   以上是我所知道的投票的内幕,请您务必将这些消息告诉给广大的网络用户,让他们知道一个真实的网络经济到底是什么样子的。 不能具名的程序员

返  回        回    贴