|
发表于 2007-7-11 20:41:25
|
显示全部楼层
看吧!这个世界!大家都怎么了?!
注:我是csyfek<SHiNE CsyFeK>,也是s3e,也是星星伴我行。
cc也就是ccpaging。
本来想发一张帖子,把这场误会在阳光下融解,但似乎到现在,什么东西都变质了,甚至鱼婆她老人家也出来说话。似乎我真的无能为力了。一直以来,群里面都是好好好好要好的朋友。cc是为了讨论openq的开发而问我openq的群在哪里,我十分高兴,就邀请他加入了群。不想说什么,我知道群里面的人都是很好的人,现在我就把我这些天和cc在openq上说的记录贴一次。让大家都知道,你们眼中的人,究竟是何许人也。
2007-07-04.103724+0800HKT.txt
Conversation with at 2007-07-04 10:37:24 on (qq)
(10:38:16) CsyFeK: cc,我更新了补丁,麻烦你打上后重新测试一次,把结果发给我.谢谢!^_^
2007-07-05.100950+0800HKT.txt
Conversation with at 2007-07-05 10:09:50 on (qq)
(10:07:04) Huy: ?
(10:07:21) Huy: 在吗?我好像找到问题了
2007-07-05.102454+0800HKT.txt
Conversation with at 2007-07-05 10:24:54 on (qq)
(10:17:03) 519840: 我改过程序了,是个程序错误
(10:44:56) CsyFeK: cc有msn么?
(10:45:04) CsyFeK: 我可以用gaim来传.
(10:42:37) Huy: ***@hotmail.com
(10:44:15) Huy: 不对,msn出毛病几天了
(10:48:08) CsyFeK: 我能够等陆啊
(10:46:06) Huy: 怪啦,正规msn反而登录不了
(10:50:14) CsyFeK: 那还是发到邮箱吧.
(10:51:28) CsyFeK: 应该给云帆说说这个附件问题.
(10:51:46) CsyFeK: 总是附件有问题.
(10:51:04) Huy: 收到了吗?gmail邮箱
(10:59:32) CsyFeK: 还没有
(10:59:43) Huy: gint create_packet_b(guint8 *buf, guint8 **cursor, guint8 b) { /* show me the address! */ purple_debug(PURPLE_DEBUG_INFO, "QQ_m_CREATE_byte", "buf addr: %x\n", (gpointer)buf); /* using gpointer is more safe, s3e, 20070704 */ if ((gpointer)*cursor
(10:59:43) Huy: } else { return -1; } }
(10:59:50) Huy: 这样能看出来吗?
(11:00:18) Huy: 是packet_parse.c的函数
(11:05:43) CsyFeK: *cursor应该不为空吧.
(11:03:21) Huy: 这个没改,只是修改了debug信息
(11:03:33) Huy: /* pack two bytes as "guint16" into buf * return the number of bytes packed, otherwise return -1 */ gint create_packet_w(guint8 *buf, guint8 **cursor, guint16 w) { purple_debug(PURPLE_DEBUG_INFO, "QQ_m_CREATE_word", "buf addr: %x\n", (gpointer)buf); if ((gpointer)*cursor
(11:03:33) Huy: LE_DEBUG_INFO, "QQ_m_CREATE_word", "data 0x%04x->%04x\n", w, wDest); *cursor += sizeof(guint16); return sizeof(guint16); } else { return -1; } }
(11:03:50) Huy: 原来的//**(guint16 **) cursor = g_htons(w);有问题
(11:04:20) Huy: 在我机器上编译,写入的位置好像被重新安排过了
(11:07:13) CsyFeK: 呵呵~这个g_htons就直接关系到cpu的问题了~
(11:07:25) CsyFeK: 没错
(11:04:56) Huy: 我给你看前后2个log
(11:05:15) Huy: (12:56:15) QQ_SEND_PACKET: 0000: 00 0E 00 00 00 07 EE A0 00 00 00 00 03 ......n .....
(11:08:02) CsyFeK: 所以我才把每一个构造的细节逐个逐个显示出来
(11:05:22) Huy: 这个是改之前了
(11:08:17) CsyFeK: 对,和以前的一样.
(11:05:44) Huy: (23:45:48) QQ_m_CREATE_byte: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED280, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x02 (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed281, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0x0e02 (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed283, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0x001b (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed285, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0x0f62
(11:05:44) Huy: (23:45:48) QQ_m_CREATE_dword: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_dword: *cursor addr: bffed287, buf expected addr: bfffd27b (23:45:48) QQ_m_CREATE_dword: data 0x******00 (23:45:48) QQ_m_CREATE_byte: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED28B, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x00 (23:45:48) QQ_m_CREATE_byte: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED28C, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x03 (23:45:48) QQ_SEND_PACKET: 0000: 02 0E 1B 00 ** ** ** 00 07 EE A0 00 03 ....b.^..n ..
(11:06:35) Huy: (00:17:38) QQ_m_CREATE_word: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_word: *cursor addr: bffed6dc, buf expected addr: bfffd6d9 (00:17:38) QQ_m_CREATE_word: data 0x0000->0000 (00:17:38) QQ_m_CREATE_byte: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_byte: *cursor addr: BFFED6DE, buf expected addr: BFFFD6DA (00:17:38) QQ_m_CREATE_byte: data 0x02 (00:17:38) QQ_m_CREATE_word: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_word: *cursor addr: bffed6df, buf expected addr: bfffd6d9 (00:17:38) QQ_m_CREATE_word: data 0x0e1b->1b0e (00:17:38) QQ_m_CREATE_word: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_word: *cursor addr: bffed6e1, buf expected addr: bfffd6d9 (00:17:38) QQ_m_CREATE_word: data 0x0062
(11:06:35) Huy: ->6200 (00:17:38) QQ_m_CREATE_word: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_word: *cursor addr: bffed6e3, buf expected addr: bfffd6d9 (00:17:38) QQ_m_CREATE_word: data ****** (00:17:38) QQ_m_CREATE_dword: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_dword: *cursor addr: bffed6e5, buf expected addr: bfffd6d7 (00:17:38) QQ_m_CREATE_dword: data ****** (00:17:38) QQ_m_CREATE_byte: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_byte: *cursor addr: BFFED6E9, buf expected addr: BFFFD6DA (00:17:38) QQ_m_CREATE_byte: data 0x00 (00:17:38) QQ_m_CREATE_byte: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_byte: *cursor addr: BFFED6EA, buf expected addr: BFFFD6DA (00:17:38) QQ_m_CREAT
(11:06:35) Huy: E_byte: data 0x03 (00:17:38) QQ_m_CREATE_word: buf addr: bffed6dc (00:17:38) QQ_m_CREATE_word: *cursor addr: bffed6dc, buf expected addr: bfffd6d9 (00:17:38) QQ_m_CREATE_word: data 0x000f->0f00 (00:17:38) QQ_SEND_PACKET: 0000: 00 0F 02 0E 1B 00 ** ** ** 00 07 EE A0 00 03 ......b.#..n ..
(11:09:50) CsyFeK: 不要用tcp登陆,他有很大问题!!!
(11:07:41) Huy: 不知道为什么我用udp登录始终不能收到返回包,tcp倒是可以
(11:10:51) CsyFeK: 你的udp包的结果那?
(11:08:49) Huy: (23:45:48) QQ_m_CREATE_byte: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED280, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x02 (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed281, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0x0e02 (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed283, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0x001b (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed285, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0x0f62
(11:08:49) Huy: (23:45:48) QQ_m_CREATE_dword: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_dword: *cursor addr: bffed287, buf expected addr: bfffd27b (23:45:48) QQ_m_CREATE_dword: data 0x**** (23:45:48) QQ_m_CREATE_byte: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED28B, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x00 (23:45:48) QQ_m_CREATE_byte: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED28C, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x03 (23:45:48) QQ_SEND_PACKET: 0000: 02 0E 1B 00 ** ** ** 00 07 EE A0 00 03 ....b.^..n .. (23:45:48) QQ: 13 bytes written to the socket. (23:45:48) QQ: worl
(11:08:49) Huy: d< [03934] send again for 1 times! (23:46:03) QQ: < [03934] send again for 2 times! (23:46:08) QQ: < [03934] send again for 3 times! (23:46:13) QQ: < [03934] send again for 4 times! (23:46:18) QQ: < [03934] send again for 5 times! (23:46:23) QQ: < [039
(11:08:50) Huy: 34] send again for 6 times! (23:46:28) QQ: < [03934] send again for 7 times! (23:46:33) QQ: < [03934] send again for 8 times! (23:46:38) account: Disconnecting account 0xefe38 (23:46:38) connection: Disconnecting connection 0x2e3dc0 (23:46:38) QQ: 1 packets in sendqueue are freed!
(11:12:22) CsyFeK: (09:30:50) QQ_SEND_PACKET:
0000: 02 0E 1B 00 ** ** ** ** 21 A2 0B 00 03 ....bMz.!"...
(11:12:27) CsyFeK: 这个是我的.
(11:12:18) Huy: ==
(11:15:06) CsyFeK: 你的应该没错
(11:16:02) CsyFeK: udp很多时候都不能够登上的,要多试几次.
(11:15:20) Huy: 嗯,我多try几次
(11:19:35) CsyFeK: 能够到这一步就有戏了~呵呵
(11:19:37) CsyFeK: (09:30:50) QQ_RECV_PACKET:
(11:19:40) CsyFeK: 这个.
(11:17:28) Huy: [ 1] 2007-7-5 11:15:17 Unexpected Incoming Packet on UDP (63749) from 219.133.49.206 (8000) [ 2] 2007-7-5 11:15:17 Unexpected Incoming Packet on UDP (63749) from 219.133.49.206 (8000) [ 3] 2007-7-5 11:15:17 Unexpected Incoming Packet on UDP (63749) from 219.133.49.206 (8000)
(11:17:39) Huy: 路由器把他们屏蔽了
(11:22:19) CsyFeK: shit
(11:22:45) CsyFeK: 那只能够继续完善tcp不分了.
(11:22:46) CsyFeK: 部分
(11:20:45) Huy: 嗯,奇怪我的miranda怎么没这种事
(11:26:12) CsyFeK: miranda应该是tcp会不会自动切换的吧?
(11:24:05) Huy: miranda也是tcp才能连,udp也被我路由器屏蔽啦
(11:32:29) CsyFeK: tcp部分总是有问题,只能够找时间完善了.
(11:32:56) CsyFeK: 不过可以看看群里面有哪个兄弟udp可以用的,找他试试也是可以得哦
(11:30:22) Huy: 嗯,我这有miranda qq2的源程序
(11:31:50) Huy: 不过他也是参照eva做的
(11:41:34) CsyFeK: 是直接调用libeva
(11:39:34) Huy: 嗯
(11:42:25) CsyFeK: 所以miranda升级基本上不用它们烦恼.
(11:40:01) Huy: 我们怎么版,也根据libeva重新整理过tcp协议?
(11:42:51) CsyFeK: 终于收到你的邮件了,咔咔~
(11:43:12) CsyFeK: 不用.tcp部分应该只是一些小问题.
(11:43:19) CsyFeK: 小安可以搞定的.
(11:43:24) Huy: 好的,静候佳音啦
(11:43:57) Huy: 不过还是建议你们用struct来做协议部分,也很容易检查问题
(11:46:43) CsyFeK:
(11:46:55) CsyFeK: 谢谢cc!
(11:44:19) Huy: 客气啦
(11:44:47) Huy: 记得,read部分也要修改哦
(11:48:26) CsyFeK: 嗯嗯!一定会的.争取周六日有个好消息
(11:49:14) CsyFeK: 准备吃饭!
(11:49:18) CsyFeK: 888888888888888888888888888888888
(11:49:22) CsyFeK:
(11:46:37) Huy: 888
2007-07-05.151713+0800HKT.txt
Conversation with at 2007-07-05 15:17:13 on (qq)
(15:17:33) CsyFeK: cc,你试试再上传附件,注意格式
(15:21:47) Huy: 哦,好的
(15:25:42) CsyFeK: 因为你之前连图片都能够上传,估计传附件应该没问题
(15:25:06) Huy: 我用的是rar,就停在正在从myswear接收数据那个地方
(15:25:32) Huy: 刚才写了短文章,也是发不上去
(15:29:37) CsyFeK: 直接提交帖子应该可以阿
(15:27:16) Huy: 可能是我文章拷贝了程序代码,提交不了
(15:27:30) Huy: 写个test倒是提交成功了
(15:30:38) CsyFeK: 噢~你在你的代码前后分别加上- [/code]标记
- (15:31:05) CsyFeK: 就像[bold][/bold]那些加粗的一样.
- (15:31:25) CsyFeK: 附件大小不超过2m
- (15:29:34) Huy: 经常发帖子,这2天古怪,我经常写东西的一个国外的网站,也是这样
- (15:32:51) CsyFeK: 传输途中被中止了?
- (15:30:10) Huy: 嗯
- (15:30:21) Huy: 您试图访问的地址 [url]http://www.myswear.net/forum/post.php?action=edit&extra=page%3D1&editsubmit=yes[/url] 目前不可用。请确保网址(URL)拼写和标点符号使用都正确,然后试着重新装入页面。 请确定您的 Internet 连接处于活动状态,然后再检查一下同一连接上的其它应用程序是否工作正常。 检查 Internet 安全防护软件的设置是否正确,是否阻碍了普通的 Web 浏览。 如果您在局域网的防火墙之后,而您认为防火墙可能给您带来各种问题,请联系您的系统管理员。 除非您确定您需要使用代理服务器才能连接到 Internet,否则请按键盘上的 F12 键,然后禁用代理服务器。重新装入页面。
- (15:33:46) CsyFeK: 在什么地方上网都一样?
- (15:31:58) Huy: 别地方没办法测试,但是myswear和oesf前天都还好的
- (15:36:15) CsyFeK: 那你先发一篇短帖子,然后再修改,看看可不可以
- (15:33:45) Huy: 试过还是不行
- (15:34:01) Huy: 这样我把内容发给你,你试试看
- (15:34:25) Huy: 终于查出问题啦,是一个编译器相关的问题, 问题出在packet_prase.c,下面是修改以后的程序: 原来: **(guint16 **) cursor = g_htons(w); 改成: guint16 wDest = g_htons(w); guint8 *pDest = (guint8 *)&wDest; g_memmove(*cursor, pDest, sizeof(guint16)); 原来: **(guint32 **) cursor = g_htonl(dw); 改成: guint32 dwDest = g_htonl(dw); guint8 *pDest = (guint8 *)&dwDest; 注意中间的一个指针转换**(guint32 **) cursor,设计者的意图是把guint8转换成guint32。 下面是修改之前的log: [code] (12:56:15) QQ_SEND_PACKET: 0000: 00 0E 00 00 00 07 EE A0 00 00 00 00 03 ......n .....
复制代码 下面是修改之后的log: - (23:45:48) QQ_m_CREATE_byte: buf addr: -
- (15:34:25) Huy: 1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED280, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x02 (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed281, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0x0e1b (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed283, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0x0062 (23:45:48) QQ_m_CREATE_word: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_word: *cursor addr: bffed285, buf expected addr: bfffd27d (23:45:48) QQ_m_CREATE_word: data 0xd77e (23:45:48) QQ_m_CREATE_dword: buf addr
- (15:34:26) Huy: : -1073819008 (23:45:48) QQ_m_CREATE_dword: *cursor addr: bffed287, buf expected addr: bfffd27b (23:45:48) QQ_m_CREATE_dword: data 0x0007eea0 (23:45:48) QQ_m_CREATE_byte: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED28B, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x00 (23:45:48) QQ_m_CREATE_byte: buf addr: -1073819008 (23:45:48) QQ_m_CREATE_byte: *cursor addr: BFFED28C, buf expected addr: BFFFD27E (23:45:48) QQ_m_CREATE_byte: data 0x03 (23:45:48) QQ_SEND_PACKET: 0000: 02 0E 1B 00 62 D7 7E 00 07 EE A0 00 03
复制代码 对比前后的结果可以发现,在指针转换过程中,很可能出现了Align问题。即我们使用的是32位的CPU,当指针指到中间时,编译器可能会
(15:34:26) Huy: 自作聪明的做一个对齐的处理,这样当你想指向32位中的后16位,实际上却对齐到第0位了,这样所有的数据就都写错啦。
(15:38:47) CsyFeK: /ka
(15:38:07) Huy: 对事,不是对人哦
(15:40:58) CsyFeK: ==
(15:41:31) CsyFeK: 傻的,这是科学的态度!
(15:41:41) CsyFeK: 千万不要客气~
(15:39:14) Huy: 嗯
(15:42:36) CsyFeK: 如果你不介意的话,我帮你贴出来了
(15:40:18) Huy: 这个错误确实非常隐晦,很难预防,不过老练的程序员,通常不喜欢使用多级指针
(15:40:22) Huy: 贴啊
(15:43:04) Huy: evaland能根据这些数据计算我的密码吗?
(15:47:44) CsyFeK: 两次的md5,要破解应该不是容易的事,我还是把敏感的部分删掉算了
(15:48:27) CsyFeK: 哦,这部分根本和密码无关,只和你的QQ号有关
(15:48:43) CsyFeK: 只会知道你的QQ号码~
(15:46:00) Huy: 嗯,嘿嘿
(15:48:58) CsyFeK: 我已经发出来了,呵呵
(15:49:28) CsyFeK: /ka
(15:46:46) Huy: 古怪,我这不知道有什么问题
(15:47:27) Huy: 那我再做个建议
(15:51:19) CsyFeK: 这样,如果你在别的地方依旧不能够发帖子的话,就告诉云帆,让他帮你调整
(15:51:32) CsyFeK: 直接说啊,什么建议都可以说啊.
(15:49:34) Huy: 嗯
(15:55:39) CsyFeK: ??
(15:55:45) CsyFeK: cc说啊
2007-07-05.160652+0800HKT.txt
Conversation with at 2007-07-05 16:06:52 on (qq)
(16:03:54) Huy: 看过,openq的程序设计,感觉对协议格式生成的部分不是很好。qq的协议格式是binary格式,按照经验通常应该使用struct来定义,这样对格式的具体内容,可以做到一目了然。 例如在openq中,要了解login_token的格式需要看login_logout.c, packet_parse.c, 和send_core.c,如果使用struct格式,只要看login_logout.c就可以了,检查错误也是一个列表式的,非常方便。 - void qq_send_packet_request_login_token(PurpleConnection *gc) { qq_data *qd; guint8 *buf, *cursor; guint16 seq_ret; gint bytes; qd = (qq_data *) gc->proto_data; buf = g_newa(guint8, MAX_PACKET_SIZE); struct { guint8 cTag; guint16 wClient; guint16 wCmd;
- (16:03:54) Huy: guint16 wSeqNum; guint32 dwUID; guint8 cZero; guint8 cEnd; } login_token; login_token.cTag = QQ_PACKET_TAG; login_token.wClient = QQ_CLIENT; login_token.wCmd = QQ_CMD_REQUEST_LOGIN_TOKEN; ....... /* cursor = buf; bytes = 0; bytes += _create_packet_head_seq(buf, &cursor, gc, QQ_CMD_REQUEST_LOGIN_TOKEN, TRUE, &seq_ret); bytes += create_packet_dw(buf, &cursor, qd->uid); bytes += create_packet_b(buf, &cursor, 0); bytes += create_packet_b(buf, &cursor, QQ_PACKET_TAIL); */ if (bytes == (cursor - buf)) /* packet creation OK */ _qq_send_packet(gc, buf,
- (16:03:54) Huy: bytes, QQ_CMD_REQUEST_LOGIN_TOKEN); else purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Fail create request login token packet\n"); }
复制代码
(16:05:39) Huy: 上面示例的是一种临时格式,如果大家通用的格式,可以做typedef
(16:09:04) CsyFeK: /qiang
(16:09:14) CsyFeK: 好啊!
(16:08:25) Huy: typedef struct { char userno[11]; // 用户号码. 如
(16:11:23) CsyFeK: 其实如果你有看过eva的代码,你就会发现eva很大程度上对于协议的描述和openq的方法差不多,都是逐个逐个部分填进去的,然后通过一个额外的pos指针来确定位置.
(16:08:49) Huy: 这个是我们公司程序里边的一个示例
(16:08:55) Huy: 不好,非常不好
(16:09:44) Huy: 一个是效率不高,一个是填的时候,b和w,要是写错了很难发现的
(16:11:10) Huy: 你可以看看yahoo的协议部分,用到现在yahoo是最稳定的
(16:14:23) CsyFeK: 对,而且从以前开始,QQ协议每次变化,许多字节的含义也会变化,一旦动起来,很多时候修改量会比较大
(16:14:35) CsyFeK: 好的
(16:12:31) Huy: 这个我考虑到了,不同的qq协议,应该视作不同的协议组
(16:13:01) Huy: 不要混合在一起,例如插件1=qq2003,插件2=qq2006
(16:13:56) Huy: 通常可以保持2个可选的协议就OK啦,再以前的可以删除掉
(16:16:44) CsyFeK: 这个什么意思?
(16:16:53) CsyFeK: 插件1=qq2003,插件2=qq2006
(16:17:02) CsyFeK: 是写成不同的结构么?
(16:14:59) Huy: 在源代码里边,把一个QQ目录,改成2个,一个是qq2003,一个是qq2006
(16:15:38) Huy: 源代码各改各的,这样不会纠缠在一起
(16:16:14) Huy: 明白我意思了吗?
(16:17:09) Huy: 你看pidgin, libpurple, protocols里边的silc和silc10目录就知道啦
(16:20:27) CsyFeK: 嗯,我今天加入了部分原来袁青云的2006协议,我设想是用条件编译来达到不同的协议共存.就是说如果我们想要不同版本的qq,就在编译的时候指定即可.
对,我也发现怎么有个slic和slic10..原来这样~
(16:21:36) CsyFeK: 我明白你的意思
(16:22:37) Huy: 还是你来贴吧
(16:26:14) CsyFeK: 没问题,我一会就把今天我们的聊天记录整理好,然后贴上去.
(16:26:18) CsyFeK: /tp
(16:26:23) Huy: 记得看书,《代码大全》
(16:29:34) CsyFeK: 嗯嗯!谢谢cc!!!/ka
(16:29:41) CsyFeK: 我已经订了~
2007-07-06.111325+0800HKT.txt
Conversation with at 2007-07-06 11:13:25 on (qq)
(11:13:30) CsyFeK: cc怎么了?
2007-07-06.112434+0800HKT.txt
Conversation with at 2007-07-06 11:24:34 on (qq)
(11:15:21) : 还是不能发帖子
(11:15:43) : 总结一下: 1、在C语言中,一颗星表示生活幸福,两颗星表示还好,三颗星以上就是生活苦难啦。 2、struct是处理binary协议的标准处理方式,复杂一点的协议格式,可能在一个包里边有2-3个struct,想想办法,变长格式也非常容易处理。再复杂一点,再加上union,绝对可以啦。 3、目前这种逐个byte, word, dword填写的方式效率不高,而且程序里边还有4颗星,老程序员会说:这里好像味道不好! 4、看来确实QQ的不同时期的变化比较大,甚至用编译开关都无法适应。那么意味着,很可能tencent是采用了2套班子在处理协议,一个班子负责维护老协议,一个班子负责开发新的。openq要适应这种变化,要考虑采用对应的策略。也就是说在pidgin保留一个qq 2006 plugin和qq 2007 plugin。 以上为一点浅见,供大家讨论。
(11:15:54) : 麻烦看看,帮贴吧
(11:25:42) CsyFeK: 一颗星两颗星是什么意思??
(11:26:44) CsyFeK: 不行~你的帖子我觉得都应该标精华啦~昨天的帖子连Thruth都觉得很好,所以还是你保留着,然后贴上去.^_^
(11:27:09) CsyFeK: 我刚刚和云帆说了,他说会查的.
(11:31:20) CsyFeK: 哦~明白了!是指针.
2007-07-09.112934+0800HKT.txt
Conversation with at 2007-07-09 11:29:34 on (qq)
(11:29:39) CsyFeK: cc在么?
(11:31:00) CsyFeK: 能够发帖子么?
2007-07-09.141045+0800HKT.txt
Conversation with at 2007-07-09 14:10:45 on (qq)
(2007-07-09 11:36:34) : 是我们的ISP问题,发不了帖子
(2007-07-09 11:37:25) : pidgin的tcp怎么样了?
2007-07-09.154337+0800HKT.txt
Conversation with at 2007-07-09 15:43:37 on (qq)
(15:26:57) : 在吗?
(15:43:56) CsyFeK: 我知道tcp的问题了.
(15:44:17) CsyFeK: 还好,问题不是出在连接上面.
(15:44:32) CsyFeK: 是出在tcp包的分割传输上.
(15:44:48) CsyFeK: 按着eva修改一下协议,应该可以
(15:44:52) CsyFeK: 呵呵~
(15:46:39) CsyFeK: cc在么
(15:46:59) CsyFeK: 还有你说是你的tcp问题,那解决没有呢?
(15:51:30) Huy: 不是说我的,是问什么时候能出支持tcp连接的openq
(15:52:02) Huy: udp包被路由器拒绝,这个问题很古怪,我没有去深入的查
(15:52:52) Huy: 另外,OPENQ有qq群吗?是多少?
(15:54:33) CsyFeK: 当用tcp登陆的时候,腾讯会把一个大的包分割为两个包,在其中设置一些标志.而openq没有这个机制,以为两个都是命令包,然后就出错了.
(15:54:42) Huy: 哦,修改麻烦吗?
(15:55:12) CsyFeK: openq以前有一个群,不过只有两个人.后来袁青云就取消了.
(15:55:33) CsyFeK: 现在都集中在云帆论坛的群里面讨论
(15:55:26) Huy: 哦,把我也加进去?
(15:56:46) CsyFeK: 当然没问题
(16:00:26) CsyFeK: ==
(16:05:28) CsyFeK: ***
(16:06:04) CsyFeK: 这个是群的外部ID
(16:06:15) CsyFeK: ***
(16:06:21) CsyFeK: 这个是内部ID
2007-07-09.163013+0800HKT.txt
onversation with at 2007-07-09 16:30:13 on (qq)
(16:29:49) Huy: 已经加入啦
(16:32:44) CsyFeK: 哈哈哈!
(16:32:46) CsyFeK: 太好了!
(16:35:05) CsyFeK: 怎么不见你发言?
(16:35:13) CsyFeK: 回应一下我也好吗
(16:36:02) Huy: 我在改群名片
(16:37:18) CsyFeK: /ka
(16:41:39) Huy: truth在改openq的tcp接口?
(16:42:34) CsyFeK: 喔?是么?
(16:42:29) Huy: 哦,你上次告诉我的
(16:43:13) CsyFeK: 他是在给suse打包
(16:43:40) CsyFeK: 是另外一个版主gnap(小安)
(16:43:27) Huy: 嗯,有人做就好啦
(16:44:03) CsyFeK: 不过他很久没有露面了.可能忙于找工作吧
(16:44:16) CsyFeK: 啊..现在只有我做啊!/dk
(16:44:04) Huy: 你已经工作啦?
(16:44:44) CsyFeK: 是啊,我24差不多25拉~
(16:44:49) CsyFeK: 毕业两年了~
(16:45:01) CsyFeK: cc你那?
(16:45:05) CsyFeK: 呢?
(16:44:42) Huy: 上海
(16:45:13) CsyFeK: 多大啦?
(16:45:20) CsyFeK: 我在广州
(16:45:24) CsyFeK: /ws
(16:45:30) Huy: 多大啦? 不好意思,痴张几岁
(16:45:42) Huy: 痴长几岁
(16:50:02) CsyFeK: /ka
(16:52:45) CsyFeK: 逃跑先~
2007-07-10.150357+0800HKT.txt
Conversation with at 2007-07-10 15:03:57 on (qq)
(15:04:01) CsyFeK: cc在么?
(15:04:04) ccpaging: 在啊
(15:04:55) CsyFeK: 要不要测试一下?
(15:04:38) ccpaging: 嗯,好啊
(15:05:06) CsyFeK: 不过tcp问题还没有完全解决
(15:04:47) ccpaging: 把补丁email给我
(15:05:11) ccpaging: 哦,不着急,一步步来吧
(15:06:13) CsyFeK: 好的.之前你所说的问题,我应该改好了.
(15:07:16) CsyFeK: 顺便加入了以前的调试功能.
(15:22:48) CsyFeK: cc,今天你和yuking吵架啦
(15:22:42) ccpaging: 没啊
(15:23:15) ccpaging: 昨天晚上是吧,我早睡觉了,是我侄子在上这个QQ号
(15:24:18) CsyFeK: ...............
(15:24:37) CsyFeK: 他昨天晚上闯大祸了!
(15:25:29) ccpaging: 今天早上他把群退了,没说是什么事
(15:27:10) CsyFeK: 天啊!!!
(15:26:44) ccpaging: 是什么事啦?
(15:27:25) CsyFeK: 你很冤啊.
(15:27:18) ccpaging: 什么?
(15:28:11) CsyFeK: 昨天晚上自以为很牛,说fcitx 很幼稚,被我们说了一通后,花了2,3个小时挑了个BUG出来,虽然我到现在都不认为这是个bug
(15:28:30) CsyFeK: 这段话是云帆发给我的聊天记录中的一段.
(15:28:08) ccpaging: 哦
(15:28:51) CsyFeK: 后来还说了一些很难听的话.
(15:28:39) ccpaging: 怎么说到fcitx啦,你不是在openq的讨论组吗?
(15:29:30) CsyFeK: 是啊,你看看下面这一段.
(15:29:49) CsyFeK: 翩然雪海间 (281262870) 14:56:24
应该说,云帆论坛上各位与yuking的关系都不错。至于那个说fcitx很差的家伙我还不清楚是谁。据昨晚在线的人说是最近加入的什么zhcon的作者Huyong。此人后来又退出了。
(15:30:05) CsyFeK: 我不清楚fcitx与scim之间有什么竞争关系,这两个项目本来就是可以相互借鉴的。
大家都是GPL,至于scim的拥趸来攻击fcitx吗?
(15:30:18) CsyFeK: 我必须说fcitx是我最喜欢的输入法,yuking是我很尊敬的一位大哥。至于说fcitx的代码质量如何如何,fcitx的高效便捷是大多数人所了解的。
(15:30:30) CsyFeK: 批评者应该把精力用于帮助开发者修正程序上,而不是不负责任地抵毁。
希望yuking留下来,fcitx为Linux在中国的扎根起到了无可比拟的作用。我不希望它就此结束。
(15:30:53) CsyFeK: 知识待业青年 (150502172) 15:01:27
自以为很牛,说fcitx 很幼稚,被我们说了一通后,花了2,3个小时挑了个BUG出来,虽然我到现在都不认为这是个bug
(15:31:20) CsyFeK: topup 18:59:19
啊, 他在哪里说的?
topup 18:59:33
丫丫, yuking就在群里啊
知识待业青年 (150502172) 15:02:11
云帆群里
知识待业青年 (150502172) 15:02:43
所以啊,今天人家直接说不再开发fcitx
(15:31:39) CsyFeK: yuking说不再开发fcitx了.
(15:32:45) ccpaging: 哦,是吗?
(15:33:03) ccpaging: 我回去问问
(15:34:17) ccpaging: zhcon是ejoy和我开发的,我侄子刚读大学2年纪,没有参与开发啊
(15:35:38) ccpaging: 不过zhcon是C++的,而且是linux console下面用,跟fcitx没关系啊
(15:36:31) CsyFeK: cc,麻烦你重新加入云帆论坛的群吧.
(15:37:09) CsyFeK: fcitx因为昨晚的一番话,今天就结束了.
(15:37:12) ccpaging: 啊,那我去说什么呢?
(15:38:30) CsyFeK: 我觉得这已经造成了严重后果
(15:41:37) ccpaging: 我看了一下你前面回的,好像没看出我侄子说了什么?
(15:43:45) ccpaging: 不过他们老师跟我是同学,记得是选GIS for linux的项目,没说要研究输入法啊
(15:45:52) CsyFeK: 问题是他对别人造成了很大的上海.
(15:45:55) CsyFeK: 伤害.
(15:46:39) ccpaging: 我侄子才15、6岁,你也知道,这个年龄就是张狂的年龄
(15:47:14) CsyFeK: 我知道.
(15:48:22) ccpaging: 原来云帆讨论组是fcitx的fans群,我想,他太笨了,一点人情事故也不懂
(15:49:27) CsyFeK: 我是很反感这次误会,外面的人对你抵毁
(15:52:16) ccpaging: 哦,我其实倒是无所谓啦,麻烦你劝劝yuking吧
(15:55:10) CsyFeK: 我劝是没用的拉...群里面的都是Linux的fans,每样关于Linux的东西它们都很关心.
(15:56:29) CsyFeK: http://www.fcitx.org/main/
(15:59:48) ccpaging: 你是说这一段吧? 昨晚云帆论坛上某个编程高手说小企鹅这儿不好那儿不好,比如,代码写的很差,用中文配置文件就说明我本人很“幼稚”等等。也许某些能人的确能从程序代码上看出作者的本性来吧。 但,也许现在我就是在做一个“幼稚”的决定,即决定终止这个程序的开发。 从最初的“G五笔”到现在的fcitx,已经经历6年左右的时间了,感情还是有那么一些的。不过,作为一个业余的编程爱好者,以GPL的方式发布这样一个软件,那些编程高手们自然有很多理由来BS我,比如坚持使用中文配置文件,代码写的一塌糊涂等。我也可以选择找个高手重新构建整个程序,但实在不想了,至少是现在不想了,让它就这样终止吧──反正主要也只是我一个人的东西。 这种想法其实由来已久,这次这事只不过是个导火索而已,终于决定让自己彻底离开这个圈子──我本来就不
(15:59:49) ccpaging: 该属于这个圈子的。 如果您真的喜欢这个小程序,那真的不好意思啊,请使用其它的输入法吧……
(16:01:04) CsyFeK: 嗯.
(16:01:20) CsyFeK: 我也才刚刚知道整件事.
(16:01:45) ccpaging: 我倒是没看过fcitx的代码
(16:03:06) CsyFeK: 我也没有.
(16:03:28) ccpaging: 不过写代码是一个过程,像我们公司的几个人都是写了十几年代码,也只能说是入门而已
(16:04:16) ccpaging: 不过倒是经常看他们吵架
(16:05:14) CsyFeK: /tx
(16:05:53) ccpaging: 不知道你接触过他们这帮少年班的就知道啦,张狂的厉害
(16:06:39) ccpaging: 而且他们老师整天挂在嘴边的就是“少要张狂,老要稳”
(16:07:44) CsyFeK: 是啊,现在的DD们,那种老子天下第一的信念,实在是要命.
(16:09:33) CsyFeK: yuking似乎把所有关于fcitx的东西都del掉了
(16:09:48) ccpaging: 不过,想想咱们也是从这个年龄走过来的,回过去想想,也一样
(16:10:41) CsyFeK: 嗯嗯!/ka
(16:12:06) ccpaging: yuking昨天是在论坛上吗?
(16:12:17) ccpaging: 哦,在群里边吗?
(16:12:49) CsyFeK: 是的
(16:13:00) ccpaging: 那么讨论了技术问题没有啦?还是就这么说来说去?
(16:14:00) CsyFeK: 是有女孩子的时候才是这样的~
(16:14:04) CsyFeK: /cy
(16:16:19) CsyFeK: cc2那本书已经到了.
(16:16:49) ccpaging: 哦,感觉如何?
(16:17:49) CsyFeK: 很有趣!
(16:18:01) CsyFeK: 深入浅出
(16:18:01) ccpaging: 不需要按顺序,可以随便翻
(16:19:55) CsyFeK: 是啊,既像手册又像教材,很不错的!而且许多事情都合乎工作需要.
(16:21:24) CsyFeK: 但我还没有翻到你上次举出我的错误的那个地方.
(16:21:36) ccpaging: 嘿嘿,不告诉你,得你自己找
(16:22:59) CsyFeK: 哼~
(16:23:02) CsyFeK: /tx
(16:24:48) CsyFeK: 昨天开始,每天的必修课.
(16:24:51) CsyFeK: cc2
(16:31:09) ccpaging: 323开始
(16:31:14) ccpaging: page 323
(16:31:51) CsyFeK: ??
(16:32:01) CsyFeK: 例子的开始页数?
(16:31:35) ccpaging: cc2-p 323
(16:32:23) CsyFeK: 不用~还是我慢慢找,这样更有趣!
(16:32:24) ccpaging: 我只看过第一版,这版还真没看过,感觉比第一版更好
(16:33:05) CsyFeK: 啊?那你怎么也有?
(16:33:13) CsyFeK: 新买了么?
(16:33:16) ccpaging: 是啊,第一版只出了1000本,我买了至少3本
(16:33:56) CsyFeK: /jk
(16:34:11) CsyFeK: 好夸张.用来送人还是做教材?!
(16:34:01) ccpaging: 都不是,都被人拿跑了
(16:35:06) CsyFeK: 正如那个封面上所说的那个笑话:同事看了以后,就在也没有还我了~
(16:35:09) CsyFeK: /tx
(16:35:15) ccpaging: 确实如此,碰上真正的程序员,无一幸免
(16:36:31) CsyFeK: 其实那天你指出那个bug的时候,我真的觉得很神奇!
(16:37:17) CsyFeK: 当时我的思路就是随着那两个星号流走,根本没有发现什么问题.
(16:37:29) ccpaging: 我相信吗?我原来在的一个软件室,有一个资源泄漏的BUG,十几个人找了半年,还是foxpro的程序
(16:37:40) ccpaging: 你相信吗?
(16:39:33) CsyFeK: 半年...
(16:39:44) CsyFeK: 后来是怎么发现的呢?
(16:39:58) CsyFeK: 不会又是cc2吧?
(16:39:33) ccpaging: 代码格式化的时候发现的
(16:40:02) CsyFeK: /fad
(16:41:29) ccpaging: 资源泄漏最难查了,因为是DOS程序,所以在主循环里边加了一个资源检查的函数,才查出来。问题的起因是程序的书写没有很好的格式化
(16:42:30) ccpaging: 后来停工一个月,把程序的tab从2改成3,全部调整格式来检查的
(16:44:36) CsyFeK: 用修改tab的间隔来查错,真是闻所未闻!~
(16:45:12) CsyFeK: 我觉得每个自己找到的问题,都会有很深印象.
(16:45:41) CsyFeK: 以后每次碰到类似问题,就会自然而然的警惕起来
(16:50:29) ccpaging: 还没收到你的补丁,是论坛上还是mail?
(16:51:11) CsyFeK: ==
(16:59:48) CsyFeK: 已经更新.改动比较大
(17:00:01) CsyFeK: 20070710.patch.gz
(17:02:15) CsyFeK: 坛上的帖子.
(17:02:22) ccpaging: 看到了
(17:03:11) CsyFeK: 如果要debug的话,可能会产生更大的日志.
(17:03:33) CsyFeK: 重新加入了任意命令调试功能
(17:03:11) ccpaging: 肯定要debug的
(17:03:57) CsyFeK: 把qq协议稍微细分了一下.
(17:03:33) ccpaging: tcp能用到哪一步?
(17:04:44) CsyFeK: 肯定要你debug的拉!呵呵~
tcp应该能够到获取列表的一步.
(17:05:14) CsyFeK: tcp的问题,已经明白怎样修改的了.
(17:05:55) CsyFeK: 不过,今天晚上还要和老婆大人去还书,没有时间了
(17:07:07) CsyFeK: cc我先下了.
(17:06:47) ccpaging: 886
(17:07:19) CsyFeK: 8888888888888888
2007-07-11.113048+0800HKT.txt
Conversation with at 2007-07-11 11:30:48 on (qq)
(2007-07-11 11:02:36) : 在吗?
(11:31:22) CsyFeK: 在
2007-07-11.140613+0800HKT.txt
Conversation with at 2007-07-11 14:06:13 on (qq)
(2007-07-11 11:44:48) : 昨天的补丁,编译不成功
(2007-07-11 11:45:27) : 可能是Makefile没有改的缘故,麻烦您改一下,我这小机器这些东西很难弄
(2007-07-11 11:45:33) : 而且我不熟悉
(14:05:26) : 在吗?
(14:06:58) CsyFeK: 在.
(14:07:16) ccpaging: 刚看了linuxsir的论坛
(14:07:27) ccpaging: 你是三翻领吗?
(14:08:45) CsyFeK: 当然不是啦~我是**,shine csyfek.
(14:08:31) ccpaging: 嗯
(14:09:06) CsyFeK: 三翻是另外一个.
(14:08:58) ccpaging: 昨天我跟他们老师一起看了那天的聊天记录
(14:10:00) CsyFeK: 编译到哪里出错啦?哦!我明白了.是makefile.am没改.
(14:09:56) ccpaging: 少了login_logout.c
(14:10:39) CsyFeK: 怎么了?我没有看过他们的聊天记录
(14:11:22) CsyFeK: 只改了Makefile.mingw
(14:11:19) ccpaging: 肯定是makefile.am没改,但是我对makefile.am一点都不熟悉,要是你有linux环境测试一下,最好了
(14:11:30) ccpaging: 小机器上编译要4个小时
(14:12:57) ccpaging: 我们看了聊天记录,他们老师,当然也是我同学,只跟我说了一句话
(14:14:34) ccpaging: “如果你不喜欢一个程序员,最好的办法是永远也不要告诉他哪里有BUG”
(14:17:41) CsyFeK: ==
(14:35:31) ccpaging: 是啊,而且,我机器上一直都是miranda,根本看不到yuking这个签名
(14:37:01) CsyFeK: 我就更不要说了,那天晚上我和女友一直在玩大富翁.
(14:37:15) CsyFeK: 唉.
(14:37:16) ccpaging: 嗯,估计你当时要是在,这事定能消于无形
(14:38:46) CsyFeK: 是的,因为它们彼此都不熟悉.你侄子也比较年轻.只是猪肝他觉得当时说话的语气不是你ccpaging.
(14:39:22) CsyFeK: 他后来跟我说,他看了你的帖子,感觉和当时不是同一个人.
(14:40:03) CsyFeK: 你侄子才16岁啊?读大学了?!
(14:39:48) ccpaging: 少年班
(14:40:43) CsyFeK: 哇.....是不是跳级的那种?
(14:40:55) ccpaging: 有跳级的,有数学竞赛拿浆的
(14:41:03) ccpaging: 晕,拿奖的
(14:42:35) CsyFeK: /ka
(14:42:22) ccpaging: 他们同学蛮好玩的,都厉害,但也难免碰上问题解决不了,还拉不下面子问,就在那里冒充自言自语
(14:43:03) ccpaging: 其他听见了,就装没听见
(14:43:29) ccpaging: 所以他说那里最流行的话就是,“别告诉他,让他笨死”
(14:48:14) CsyFeK: 既然这样的话.我在云帆论坛上和sir上发一张帖子,把事情说清楚吧,毕竟没必要因为这不是问题的问题把整件事情弄僵.
(14:48:41) ccpaging: 让我想想
(14:52:41) CsyFeK: 然后cc你上去劝劝yuking.大家都不是小孩子,应该都能够理解的.无论怎样,一切都应该过去了.
(14:53:20) CsyFeK: 毕竟这事情本来就不是冲着yuking的.
(14:54:11) ccpaging: sir上面吗?才发现,我早就登录过sir,而且签名还真是ccpaging
(14:55:56) CsyFeK: /lh
(15:08:14) CsyFeK: 已经更新了
(15:08:19) CsyFeK: 补丁
(15:09:44) ccpaging: 嗯
to cc: 我没有得到你的同意贴聊天记录,对不起了!但我真的希望没有必要为这件事而伤害大家的感情,也更不愿意看到一个如此出色的项目无辜夭折。但我相信,真正出色的程序背后必定是伤痕累累的。 |
|