QQ有群,是个好事。虽然网上爆出了QQ监视电脑文件的传闻,有些网友也检测到不明的通信包,甚至还遇到莫名的截屏,但是QQ的群功能实在可爱,三五成群一聚,也是快事。也许MSN也有正式群以后,我也会改用MSN,毕竟安全第一,安全第二,第三还是安全。一想到有个眼睛偷偷地盯着你,心里就起毛。我曾加入一个群,或许有人传了点不好的图,说了几句不好的牢骚话,然后群就死掉了。里面说话没人听见,上群空间察看说群受到限制无法浏览,要退出又说服务器超时。这么一个死群头留在列表里面,烦人,不爽,不环保。 寒啊...这世上有一辈子不看色图,一辈子说话谨小慎微,一辈子没随地大小便的人吗?佛祖和耶稣说,世人都有罪,金庸老先生虽然给出了一个圣人-洪七公(真正的无产者啊),但是想来现在要找这么一个圣人过来,估计比处女还罕见。秦侩说过,欲加其罪,何患无词,“莫须有”便是有,想办你岳飞就办你,就算没有通金自大,也有经济问题吧,没有经济问题也有打过人吧,不信你连随地大小便都没有过,既然总有辫子能抓到,大家就懒得搞文字游戏了。秦侩真是一个实在人。 言规正传,大家去找几个PERL模块,Crypt::OICQ,Net::OICQ。当然他们还会用到Digest::MD5, Term:: ANSIColor,Term::ReadKey这些玩意,CPAN或者Google吧,下载以后就perl Makefile.PL,然后make或者nmake。如果实在没有PERL基础就自学,学不会就放弃。 Crypt::OICQ和Net::OICQ是纯perl的,不编译也行,里面找找有个qq文件,还有个win32qq文件,我喜欢在unix下的命令行操作,直接运行perl qq,这个东东在win32环境下不能接受命令的,只能用win32qq,因为后者还要WIn32::GUI模块支持,我就没理了。qq在win32下执行也可以,要修改一下Net::OICQ::TextConsole.pm文件,把loop()里面的<STDIN>读取从HANDLE循环中取出来,不要放在非堵塞操作循环里面,单独处理,具体怎么做就不多说了,要思考,学习。 设置环境变量,OICQ_PW=你的口令,然后用“perl qq 你的账号”来运行,QQ的组可以用这样的命令读取出信息来。下面假设群号是12345678,其它号码都是纯属虚构,请勿对号入座。 /gs 12345678 Jul 16 15:54:11 Net::OICQ::ServerEvent do_group 0x0085 Error: 无法查到该群 Reply: 02 SubCmd: 06 当然查不到,群被限制了。不急,把号码换换,加加减减个小数字,比如12345679,12345677,12345676等等,总不会被全限制了吧。 /gs 12345677 Jul 16 15:59:41 Net::OICQ::ServerEvent do_group 0x005a SubCmd: 06 GrpName: xxxx Reply: 00 GrpOwner: xxxxx GrpDesc: GrpIntId: 483345677 GrpExtId: 12345677 找到了,其实qq的群就是一个个人号码,往GrpIntId发送什么命令,就等于对GrpExtId做什么操作,群号和内部号之间有一个分段影射的关系,某段连续的群号会影射到某段内部号去,12345677影射到483345677,那么12345678(我们要处理的群号)很可能就是 483345678。 那么我们如果强行删除483345678这个联系人呢,会发生什么事?当然,这在qq界面可没法删,因为没有这个联系人,但是在行命令中就可以强行发送这个请求了。 /del 483345678 Jul 16 16:00:13 Net::OICQ::ServerEvent del_contact 0x005c 保险点,也发个退群命令,虽然未必有用,但是能让人安心,:-) /eval ->send2svr('do_group', pack('CN',0x09,483345678).''); 登录群空间,刷新一下,哈,死群头消失了。打开QQ,咦,怎么还在,缓存,一定是缓存,清除账号,包括本地文件选项,再登陆,OK了,咱们把那死群的肠子拉了出来,在它脖子上狠狠一绞,世界清净了。 后话得提一下,其实你也不能叫完全退出了那个群,服务器上肯定有残留数据的,只是群空间上没有显示,QQ里面也不出现,够了。