?? readme_by_alexe
字號:
改寫目的:編寫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 + -