摘要
2005年1月初,我推出了一个如来神掌功能,从此以后,LumaQQ主页在线人数暴涨2倍,日平均下载次数更是屡创新高。于是乎,各种传言,揣测,谩 骂,赞扬纷至沓来;各种问题,意见,建议,邮件不断涌来。短短时间,听尽各种言论,实在是难得一见的人间活剧,但见人性昭彰,意味无穷也。此功能虽小,却 惹起这许多情绪,今日无聊,写写文章,说说感想,然后做壁上观。 Luma, 清华大学
更新时间: 2005/04/01 Note: 目前,如来神掌已经对QQ 2005 Beta1以上的版本失效,因为腾讯采取了一些方案
修改历史:
2005-04-01 就腾讯目前的应对措施,做了一些说明
2005-04-01 稍微详细解释了一下目前的状况,修改了一些以前表述错误的地方,根据目前的情况调整了一下文档内容 2004-04-01 补充了对目前状况分析不太全面的地方 2004-04-03 增加了"现在如来神掌还能干什么"一节 2004年的年末,《功夫》开始公映,不想等Rip,遂说服wqfox请客,同往五道口观之。片子如何大家各有各想法,好歹也是星爷的,怎么着也得 看那,就不做评论了。不久,wqfox为了练习Mac下的编程,开始开发iQQ,一路研究到了自定义表情阶段,突然问我是否可以利用自定义表情探测隐身, 我想了想,说:“应该是可以的,你去证明一下吧,我就等你的结果了”。某日,我正在working,wqfox从QQ发来消息,告诉我果然是可以的,我大 喜,立刻奋战几小时,实现了此功能,准备推出时,觉得应该为这个起一个名字,苦思之下,星爷给了我建议。于是万事俱备,smth上一推,一时间果然反响强 烈,我得意ing。 但是,之后而来的人性大讨论,才是这个功能最有趣的地方,当真是笑死我也。由于此功能吸引了Windows平台的用户,因此搞的soff论坛沸反盈 天,支持的说爽,不支持的大骂,然后两派对骂,各种各样的言论,层出不穷,唉,言论自由真是宝贵啊,不知何时才能这样公开大骂core,大骂jyb,大骂 zj呢? 当中有骂此功能缺德的,有骂显IP照样缺德的,有骂别人虚伪的,有骂别人sb的,有骂TX垃圾的,有骂QQ垃圾的,也有骂我的,哈,我觉得这比一片赞歌要好玩多了,而且更有趣,看到人的本性和思想的时候,心中真是一片清明啊。 先不扯这些精神世界的东西了,下面来说一点技术上的问题吧 何谓神掌 神掌为什么能探测隐身?这是很多人想知道的问题,其实很简单,为什么很简单而不是很复杂?因为如来神掌只卖10块钱,10块钱的东西能复杂吗?哦,错了,好像说了等于没说哈?那我给你看看如来神掌的主要实现代码,就知道为什么只卖10块钱了: /**
* 探测对方是否隐身,如来神掌,万无一失
*/
public void detectHidden(int receiver) {
if(user.isLoggedIn()) {
SendIMPacket packet = new SendIMPacket(user);
packet.setMessageType(QQ.QQ_IM_UDP_REQUEST);
packet.setReceiver(receiver);
packet.setTransferType(QQ.QQ_TRANSFER_FACE);
packet.setFileName("");
packet.setFileSize(0);
packet.setFakeIp(true);
monitor.putRequest(packet);
port.add(packet);
}
}
有的人看了之后,就以为如来神掌是传一个0字节大小的文件,这当然是不对的,传文件的话,如果对方不接受,又有什么用呢?就好像网上曾经流行的发视 频请求去探测隐身一样,如果别人不接受,那又有什么用呢?所以如来不能这么做,如来确实是要传东西,但是如来要传一个对方在线就无法拒绝的东西。这听上去 像是霸王硬上弓,又像是jyb qj smth,日,反抗没用的,闭上眼睛享受吧,唉,好了好了,不谈政治不谈政治了。 QQ里面什么东西是你无法拒绝的,显然有一个:自定义表情。你隐身的时候,你的好友给你发自定义表情,你能拒绝吗?不能。自定义表情能不能传过来,那是另外一回事,并不影响如来神掌,为什么,后面给你解释。 QQ的文件传输 文件传输有很多情况,可以直连,也可以通过服务器中转,还有什么UDP,TCP方式之分。但是一开始的时候是一致的:我要先发传送请求,然后对方会回答接受还是拒绝。刚才说过了,自定义表情是没有机会让你去拒绝的,所以,只要对方在线,我就会收到回复包。 如来神掌的适用条件 有些人说什么TCP登录啦,用代理啦,或者什么一个局域网之内等等等等是测不到隐身的,这些说法当然是错误的。他们如果测不到,那只能说明他们有人 品问题或者运气很好或者他的网络很糟或者防火墙之类的,总之,是偶然因素造成的。单从原理上分析,如来神掌是适用于所有登录情况的,不管有没有什么代理, 不管你TCP还是UDP,都没问题。因为,注意,我要说因为了,因为什么呢,因为传送请求和对方回复都是通过服务器转发的,这是什么意思,通过服务器转 发?简单哈,意思就是只要你能登录QQ,你就应该能收到我的请求,只要我能登录QQ,我就应该能收到你的回复,所以,如来神掌,万无一失。 但是如来神掌对非TX的QQ是无效的,原因不外乎分三种:
1. 对LumaQQ无效,那是我刻意为之
2. 对iQQ无效,废话,wqfox能不知道怎么回事吗
2. 对OpenQ,isQ,MirandaIM等等的无效,因为他们还不理解自定义表情的协议 如来神掌的局限性 使用神掌,可能会在对方的QQ上呈现一个上线状态(也不是肯定会出现),但是不会出现上线提示,所以,对方可能发现,也可能发现不了,所以,这个是 此功能的缺点,但是任何武功均有破绽,这个功能既然就是一个武功的名字,则有破绽,可以忍受,顺便说一句,这个名字,我觉得我取的真是太好了。完全和功夫 中的含义一致,10块钱表示它实现简单,同时又威力强大,而且也符合没有完美的武功,也没有完美的程序这一理念。 漏洞到底是什么? 注意,确实在QQ中,隐身用户是不能接收自定义表情的,但是这只能限制TX自己的客户端不会违规操作,它没有考虑到还有其他的客户端存在,比如俺的,所以2005前的客户端很傻,收到了自定义表情请求它就回复,不管是不是隐身,这就是漏洞所在。 说说Soff Soff和我的实现级别不一样,他实现显隐身应该会稍微容易一些,因为他的4.0拦截了所有网络包,应该是可以为所欲为的。除非腾讯修改服务器端,不然光修改客户端无法阻止soff实现显隐身,只要他想。 目前的现状 OK,腾许发布了QQ 2005 Beta1,填补了我说的漏洞,呵呵,这样当然可以是可以解决这个问题的了。不过有一点,如来神掌依然对2005 Beta1以下的版本有效,我想TX是在客户端保存了一份目前和谁接触过的列表,如果没接触过(也就是没说过话或者其他动作),它会不理睬自定义表情的请 求,这样就可以起到屏蔽的效果。由于2005以下的版本不具备此功能,自然还能检测到。 现在如来神掌还能干什么 既然已经堵上了,那这个功能没有用了?也不是,也还有点用。也就是发布2005 Beta1的这个时间段左右,TX在服务器端好像也修正了一个bug,以前我们通过得到在线好友列表可以得到好友的ip,现在不一样了,只有你设置了点对 点模式,才能得到ip,如果设置了服务器模式,没有ip了(注意以前是有的),所以,你要是和好友聊的起劲,突然发现好友的ip没有显示,哈,怎么办哪, 给它一掌就可以了。 总结 OK,腾讯已经基本屏蔽了这个功能,2004虽然还可以用,但是他老催着你升级,哈哈,也许这个功能就这样over了吧,有些人应该happy了,大家都 满意了。我无所谓,因为如来神掌不是LumaQQ的存在意义,没有是正常的,有就当是附加值,有些人总是说要不是如来神掌我才不用LumaQQ呢,嗨,我 也不稀罕你这样的人用,你根本没搞懂我这个软件到底是for哪些用户的。
阅读(985) | 评论(0) | 转发(0) |