按照我对QQ通讯协议的理解,我分别把在不暴露IP的情况下纯文字交流和在不暴露IP的情况下可以自由传递图片定为QQiPPro的最低和最高目标,QQiPPro1.0和QQiPPro2.0分别实践了这些目标。不过这个项目进行的很不顺利,期间进行了多次调整,最大的调整就是通讯协议。出于直觉,我在SOCKETS5代理协议和HTTP代理协议之中优先选择了SOCKETS5代理协议,可惜在推出了QQiPPro1.0后就发现了两个问题:1.QQ2005在使用SOCKETS5代理的时候一传送图片就内存溢出,这是致命的问题;2.使用UDP的通讯方式可能导致收发数据包错乱,这也是一些朋友反映的在使用1.23以前版本一段时间后会出现IP暴露的最终原因。因此,使用QQiPPro的用户可能注意到QQiPPro从1.0到2.0 经历了从只支持SOCKETS5到不推荐使用SOCKETS5以至全面禁止SOCKETS改用HTTP的发展过程。不过我要承认,QQiPPro最终能够在隐藏IP的情况下,进行音频甚至视频聊天也大大超出我的设想。
最初我只想把QQiPPro设计成保护IP的强大盾牌,而不是富有攻击的工具。可惜人本身就是“矛盾”的,在大家的要求下,我在QQiPPro加入了显示好友IP的功能,后来为了显示使用代理上线的好友的真实IP,又引入IP虚拟技术;至于显示好友是否在线的功能,纯粹是偶然在开发中发现QQ通讯协议的结构缺陷后,才加入的——--QQiPPro探测好友是否在线的原理和其他工具是完全不同的。尽管QQiPPro的某些功能超出我的预想,但是还是希望大家只把QQiPPro当作“盾”来使用,而不要拿起“矛”。这也是QQiPPr把一些功能设置为默认情况下不启用的真正原因,希望大家能够理解。
在开发QQiPPro过程中,我也纠正了一些以前使用QQ中的错误认识:
- 误区1.只要隐身上线,对方好友就无法知道你是否在线的。不幸的是由于QQ协议结构性的缺陷,QQ并没有提供真正意义上的“隐身”,利用QQiPPro有60—80%可以知道你的好友是否正在隐身,假如对方使用了珊瑚虫等显示IP的外挂,那么可以100%获知对方是否隐身。我之所以强调结构性缺陷,是因为目前没有任何办法可以保证你的好友不能获知你当前隐身在线。因此以后大家使用隐身时,态度要端正,不要自欺欺人,“掩耳盗铃”。
- 误区2.只要把QQ设置通过服务器转发,并且使用TCP通讯方式就可以隐藏IP了,这是一些介绍隐藏IP的文章的介绍的方法。不用我说,大家现在都知道这种方法没有一点效果。这或许也是QQ2005再也没有出现"服务器转发"的选项的原因吧。
- 误区3.使用代理服务器就可以隐藏IP,这是现在大多数人使用隐藏IP的方法,可惜我不得不遗憾的宣布,这种方法不起作用,哪怕使用的是高度匿名的代理服务器。使用QQiPPro就可以取到代理后的真实IP(我相信还有很多工具可以做到),而且方法简单,不必借用任何黑客技术,因此大家要小心了。
- 误区4.使用内网就是绝对安全的。的确使用内网是比较安全的方式,QQiPPro之所以能保护IP就是采用内网虚拟技术。也正是这种考虑QQiPPro不提供穿透防火墙能力,因为我也找不出在内网里使用QQiPPro的理由。不过单纯从QQ的通讯协议本身来看(不论一些黑客技术),还是有可能取到网关IP的,而且方法不难,只是我目前好像没发现这类工具。尽管如此QQiPPro也作了一些防备,因此使用QQiPPro还是比内网安全的多。