⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme_by_alexe

📁 perl qq
💻
字号:
改写目的:编写qq-irc的互通程序,本程序为qq部分。由于旧程序的协议对于qq的群支持很少,所以被迫改写。版本定为 Net::OICQ 0.9.27改写说明:本版本改自http://sourceforge.net/projects/perl-oicq/ 的Net::OICQ 0.9版。参照最新的openq0.3.2的源代码,对于Net::OICQ里的qq协议作了相应的升级,从过去的2000英文版升级到2003版,升级后主要支持了字体属性的设置与qq群。所有的改动可以参照下面的工作日程记录。文件说明:qq_test.pl可以用来测试,以及写程序的参照。用户名与密码需进入程序更改。doc/qq_protocol_ref.txt保存了从openq中提取的一部分协议格式。doc/qq_handler_return_hash.txt保存了add_handler回调返回的hash数据结构。doc/qq_command_queue.txt命令队列的调用方法。OICQ.pm为主模块。OICQ/ServerEvent.pm为处理服务器返回信息部分。OICQ/Event.pm为返回的事件分类模块.oicq_data/为日志记录目录,每个登录的qq号码会有相应的目录,目录下user.log里面有解密后的原始数据包,去掉了7字节包头,利于分析qq的协议。安装:首先安装目录下的Crypt-OICQ模块。然后perl Makefile.plmake make install运行环境:perl5.6以上版本linuxfreebsdwindows需要稍微的调整,Crypt-OICQ模块少包含一个winsock.h头文件。Todo:对windows平台进行调整测试。补充各个命令的调用以及返回。补充协议的完整性。################### 工作日程记录 ###################2005-5-1星期天开始openq的全面分析,并将net::oicq进行升级,与openq同步。2005-5-2星期一开始进展缓慢。对于Net::oicq的程序结构不是十分的清晰。而且它的纪录包的程序也是有>些难于理解。2005-5-3星期二添加了qq_reference.txt文件来纪录在openq中的相应协议的数据字段定义。对于qq的组发现了其有内部组号与外部组号的分别。对于老版本的qqclient可以直接用内>部号来发送组信息。2005-5-4星期三对于openq的0.3.2版本与net::oicq用的加密算法作了比较,发现这两个加密的算法相同,>不用重新编写加密的部分。开始将过去的版本从0x0801升级到0x0b37,从而让qq的群对话趋于正常,返回的数据包没有大量的无用信息。对于老的登陆程序作出更新,将过去的一次md5加密改为两次加密。2005-5-5星期四更改了net::opicq的数据包纪录程序,将process中的两个分类sever与client部>分在new部分就开始进行纪录数据包,以便于自己更好的分析数据包。去除了老的debug部分,以便让纪录下的数据更利于自己分析,过去的纪录格式让我难以区分数据。添加了group_send。发送group信息正常。更改了recv_mesg,让他能正确分析返回的数据包。在这里首先添加了分析服务器返回的groupim信息与已知好友或陌生人im信息的。测试了add del friends部分,测试了search online user部分,都正常。2005-5-6星期五完成了group方面的模块,基本清楚了openq的模块结构,以及相关的perl程序的>对应。在group方面添加了group_search,这样可以使用group的外部组名来得到group的内部组名。更改了set_mode的发送代码,并对于他的返回代码作了相应的处理。2005-5-7星期六更改了net::oicq的send_mesg子模块。完成了get_online_friends的返回程序的显示。完成了get_friends_list的返回显示。去除了所有关于friends_face的返回。个人认为在命令行下无用。添加了关于seq的识别部分,这样对于服务器多次重复发送的同一信息,只对于第一条有反应。(原程序也有相应的部分)2005-5-8星期天添加了group_info,get_group_online_member功能。添加了在命令行下调用group的各种的相应命令。完成了net::oicq程序的更改。完全将老的协议升级到2003版的协议,主要的支持font属性、qq组会话,如果必要还可以添加tcp协议的支持。使用tcp协议时比udp协议在包头添加了2个字节,用于纪录整个包的长度。tcp包头的长度为9字节。udp包头的长度为7字节。首先是0x02,然后是0x0b37(客户端的版本),然后是cmd两字节(这个包的命令),最后是seq两字节(包的序列号)。2005-5-9至2005-5-15减少了timeout值,加大了事件队列值.send2srv添加了发送无响应重新发送。添加了对于几个命令的返回hash引用的数据,参见qq_doc。参照Net::IRC模块,在OICQ.pm中添加了add_handler,以供程序回调。添加了reply_process,以供循环。添加了Print参数,以供是否在运行中显示命令返回数据。基本完成了qq-irc的互通。将Net::OICQ的版本从0.9.17升级到0.9.272005-5-16至2005-5-22完成整个结构的调整,去除了ClientEvent.pm与TextConsole.pm两个模块。添加了命令队列。2005-5-23至2005-5-29对于新的结构做测试,并相应的调整各个网络性能相关值。网络性能及稳定性已经大幅度提升,基本完全满足各种qq相应的附加开发的要求。放出0.98版。至此结构的调整已经完成,剩下的就是功能的修补与协议的补充。################### 关于作者:alexe,一个无业的自由计算机者,热爱自由软件,正在努力编写im与web相关的协议mail:alexe@alexe.cn

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -