MyQQ3.30发布

声明
MyQQ is a cross-platform library for communication which uses a TencentQQ-like protocol to communicate with friends on the Internet. It can work well now and maintained by Xiaoxia.

Current Version: 3.30
Protocol Verison: 2011 Beta2

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
myqq3是个实验品,仅供研究和探讨,勿用于其他用途。它的不稳定性以及时效性可能会导致灾难性的后果!!!

Win32 & Win64 Package 下载
myqq3.30

Source Code:
See http://code.google.com/p/myqq3/

Update History:
Version 3.30(2011-04)
1. Update to qq2011beta2 Protocol.
2. See SVN Changes.

Version 3.21(2010-06)
1. 修正了一些东西。

Version 3.20(2009-10-27)
1. QQInternational Beta1 Protocol.
2. Random packet seqno.

Older Version
MyQQ3.19 http://xiaoxia.org/1222.html

MyQQ3.30发布》有285个想法

  1. theboy

    还是跟大家说一下吧。之前我用过这个软件一段时间。后来腾讯就把我的QQ给封了。永不解封,登陆时会提示联系工作人员的。我也打过电话给TX。也不给解封。极度郁闷,这个软件是挺好用,也好玩,可是TX变态,会封号。TMDTX!

    回复
    1. _______________Cc

      登录的时候要联系客服什么的,然后后面还有个电话对吧,这个去腾讯客服中心提交问题就能解封。

      回复
  2. theboy

    想当年,用MyQQ3.0 把一个新的QQ挂到了两个太阳。谁知道某一天用不到了。
    后来用QQ客户端登陆,一看,挂了。号码被GANG掉了。挺怀念这段时光的。

    回复
  3. Mike Ma

    如果大虾一直做下去,就不怕协议过期咯咯咯。。。

    另外。。。如果协议不完善要注明是testing版,别当release稀里糊涂放出来导致咱们都不好看。。。

    回复
    1. Xiaoxia 文章作者

      md5是可以暴力破解的,需要时间比较长。
      你可以去找一些专门进行md5破解的网站,一般都会有一个庞大的字典库。

      回复
      1. 海子

        用PHP写了一个MD5批量生成的工具~原理就是提供一密码字典(或者直接生成) 然后生成对应的MD5 ~不过穷举10位以内的组合都要运行好半天。

        回复
      1. 海子

        我是90年的,我们年纪差不多吧,来凑个热闹。顺便说下,我在win7下编译通过了,但是登陆的时候提示网络错误。压缩包里原有的EXE登陆是正常的。不知为何原因。

        回复
  4. Divinitus

    请教个问题,你们那儿用锐捷不,Linux下怎么解决锐捷的问题?我们这几个人尝试了多种方法都没成功!可以的话给点你们的方法或者解决思路!

    回复
  5. Jack Liney

    小虾,能不能把你的源码发下给我。我看了上面myqq3的源码,似乎跟myqq3.19是一样的。
    不知道你改了哪里。。或是有点东西没有在里面。。我想是否可以把完全的源码发下给我呢!
    邮箱:[email protected]
    QQ:411216438
    万分感谢!因为比较感兴趣,所以想研究下@

    回复
  6. 元谷

    今天花了一天的时间封装它!想做个UI~~~~~~要是能提供一个专门的lib就好了!也方便我们大家二次开发!!!!

    回复
      1. 元谷

        我把它做成dll和so文件。可是那结构体怎么导出来呀!你的项目是用的什么gui呀?能加入么?我想用gtk来做ui

        回复
        1. Mike Ma

          我用的也是GTK。。。项目在 github.com/gqqdev/gkiu
          现在只是核心稳定下来了,一个关键功能还是没好,好了后就打算开始向虾哥的代码膜拜 XD

          回复
                1. Mike Ma

                  另外。。gkiu主要的亮点是,gui也是按插件提供的,所以如果没事干,可以用OpenFetion那样的NB界面(类twitter的)。。。

                  回复
  7. 璋公子

    你好,小虾。我也是一个学生,可以请教你一个问题么?我在互联网上一直没有找到答案,老师也说不知道如何实现……
    就是类似于3q大战时360推出的web qq端用dev c++如何实现啊,不要太多功能。仅需要出现网页就好》希望你能帮助我。谢谢。
    另外,可以和你交个朋友么,你的myqq3.17我还一直收藏,在noip集训的时候我们就是用它来聊天的(学校机子太破,而且这个也不太容易发现,可以混在我们的题目中,嘿嘿)

    回复
    1. Xiaoxia 文章作者

      Tx的产品就是一堆IE Core的组合,没有多少技术含量,你也可以用一个IE控件来拼凑一个webqq程序。

      回复
  8. rover

    能不能写一个基于腾讯TM协议的?QQ协议老更新,然后就不能用了,TM稳定些,TM2009到现在没更新,一直能用。

    回复
  9. echo

    配置文件qqconfig.txt里的QQHttpProxyServerList是用来设置HTTP代理的吧,但是设了还是提示Failed to send the packet. command: 91
    网络错误.

    回复
      1. echo

        谢谢,没仔细看配置文件,另外是PROXY_HTTP,不是HTTP_PROXY,但还是连不上,不知道是不是我的HTTP代理问题。

        回复
        1. Xiaoxia 文章作者

          删掉登录服务器里的IP地址,使用域名地址登录,应该能够解决这个网络出错的问题。

          回复
  10. John

    请问下次可以考虑用VS2010,或2005编写吗?用DEV-C修改编写太慢了,还乱码,每个Code 文件还要重新编码,麻烦。谢谢!

    回复
        1. 听见

          然后我编译 得到这个:
          ———-Build Started——–
          ———-Building project:[ myqq – Debug ]———-
          /home/sandsea/Desktop/Q/trunk/src/debug.c
          63:3: warning: format not a string literal and no format arguments
          86:3: warning: format not a string literal and no format arguments
          /home/sandsea/Desktop/Q/trunk/src/myqq.c
          159:2: warning: format not a string literal and no format arguments
          218:2: warning: format not a string literal and no format arguments
          /home/sandsea/Desktop/Q/trunk/src/webqq.c
          79:58: error: macro “DBG” passed 4 arguments, but takes just 1
          78:5: error: ‘DBG’ undeclared (first use in this function)
          78:5: note: each undeclared identifier is reported only once for each function it appears in
          ———-Build Ended———-

          回复
    1. Xiaoxia 文章作者

      IP地址失效了吧。删掉登录服务器里的IP地址,使用域名地址登录,应该能够解决这个网络出错的问题。

      回复
  11. jash

    你好,qqclient结构中的auto_accept有用吗?为什么我设置为1还是不能被允许自动加为好友呢?是不是这个功能还有其他地方需要设置?

    回复
    1. sos

      prot_login_touch_reply(113): redirecting to 119.147.45.192
      qqconn_connect(192): connecting to 119.147.45.192:8000
      prot_login_request_reply(211): process verify password
      prot_login_get_info_reply(370): Hello, 失败者
      packetmgr_check_packet(376): [2506515223] resend packet cmd: 30
      prot_login_send_info_reply(527): login result = 44
      网络错误.
      qqclient_detach(199): process = 4
      qqclient_logout(216): joining keepalive
      qqclient_keepalive(151): end.

      回复
  12. Pingback引用通告: vps(虚拟服务器)挂QQ(桌面版+shell版) - 飞翔的翅膀pp的资源库

  13. 3.19的版本.. 为什么编译会有
    til.o crc32.o qqconn.o -lpthread -s -o ../myqq
    utf8.o: In function `utf8_to_gb’:
    utf8.c:(.text+0x50): undefined reference to `libiconv_open’
    utf8.c:(.text+0x80): undefined reference to `libiconv’
    utf8.c:(.text+0xb3): undefined reference to `libiconv_close’
    utf8.o: In function `gb_to_utf8′:
    utf8.c:(.text+0x10d): undefined reference to `libiconv_open’
    utf8.c:(.text+0x13d): undefined reference to `libiconv’
    utf8.c:(.text+0x170): undefined reference to `libiconv_close’
    collect2: ld returned 1 exit status
    make: *** [../myqq] Error 1

    这样的错误呢..

    我确定 libiconv 已经安装了

    回复
    1. 的确很奇怪.. 好累.. 终于编译成功了..
      在windows下提供的bin可以登录

      但在linux 下就会出现网路错误.. config修改过几次

      回复
  14. 扑兔

    我正要做一个黑莓的QQ客户端,打算专注聊天,其他什么都不要。。是不是手机QQ协议稳定一些呢?TM的协议怎么没见过呢?请小虾指点迷津啊

    回复
  15. 一零八八

    gcc qqsocket.o qqcrypt.o md5.o debug.o qqclient.o memory.o config.o packetmgr.o qqpacket.o prot_login.o protocol.o prot_misc.o prot_im.o prot_user.o list.o buddy.o group.o qun.o prot_group.o prot_qun.o prot_buddy.o loop.o utf8.o myqq.o util.o crc32.o qqconn.o -lpthread -s -o ../myqq
    done.
    make: Leaving directory `/root/qq/src’
    这是什么意思?

    回复
  16. zxj

    我从svn上下载了代码,在windows下编译能成功,但是登陆的时候会出现网络错误,请指教一下吧!谢谢

    回复
  17. 精英王子

    我想在你的3.30(反正就是svn上的那个)的基础上进行二次开发,既然你使用GPL协议,那应该没啥问题吧,不过还是来给你打个招呼
    当然我的作品也会开源,而且会注明使用了你的技术

    回复
  18. Creke

    linux编译后,在提示激活的消息后会进入死循环提示“bad descriptor”。而且有的用户名会出现乱码并提示libconv不可用。
    如果有时间我会修复LINUX下的这些bug,但不知道怎么提交源码到google code……

    回复
  19. myqqfans

    一点也不会编程 只会在网上找答案照着做
    最开始我是在这里找到http://www.right.com.cn/forum/viewthread.php?tid=50409并使用 后来知道有你的原版
    所以尝试玩玩编译 什么都不懂只能网上找答案 http://blog.cn00.net/post/vps-gua-qq.html
    http://xiaoxia.org/upfiles/2011/05/myqq3.30.zip 和 google code 的 starkwong r24都会网络错误
    后来我使用r13 Version information.Apr 24, 2011 gdxxhg 就可以了,就是登陆时常常要激活, T X 可能检测出协议不正常(我都不懂这些)
    另外myqq能否增加一个断网重连后自动再连接,垃圾电信adsl拨号用户会48小时断网一次.虽然路由会自动重拨,但ip变了没用.
    我是路由tomatoduanwan的,挂载FTP,开启mldonkey和使用wget.比现在xp下高效省电实用.

    回复
    1. Xiaoxia 文章作者

      你好,myqq因为用的是不完整的pc客户端协议,所以不稳定性很大。如果有兴趣,可以组织一些人开发一个webqq协议的版本,可能会稳定很多。

      回复
    1. Xiaoxia 文章作者

      这个目前估计不行吧,因为访客没有帐号,要是能够修改,把别人的评论都给修改了咋办呢!

      回复
  20. snowcraft

    您好,看了您的工作成果非常感动,我想把这QQ移植到windows mobile 6.5
    使用.net compact framework 3.5,请问有可能吗?对于非托管代码没什么概念啊。望指点迷津,谢谢啦!

    回复
  21. VL

    登陆日志 如下:
    16:20:43 [qqsocket.c]qqsocket_init(48): WSA Startup.
    16:20:58 [qqclient.c]qqclient_login(177): login
    16:20:58 [qqsocket.c]netaddr_set(154): Get IP: 121.14.80.220
    16:20:58 [qqconn.c]qqconn_connect(192): connecting to 121.14.80.220:8000
    16:20:58 [qqclient.c]qqclient_keepalive_proc(162): keepalive
    16:20:59 [prot_login.c]prot_login_touch_reply(115): redirecting to 119.147.45.253
    16:20:59 [qqconn.c]qqconn_connect(192): connecting to 119.147.45.253:8000
    16:20:59 [prot_login.c]prot_login_request_reply(173): result = 0x3
    16:20:59 [prot_login.c]prot_login_request_reply(214): process verify password
    16:20:59 [qqpacket.c]get_data(125): packet p->pos(50)+36760 > p->len(103)

    回复
        1. Xiaoxia 文章作者

          呃,现在很少有时间来给myqq写gui了,安排了别的事情还没有完成。我现在也用gtalk,越来越少用qq。

          回复
  22. wence

    看了这上面的qq2010登录协议, http://www.xueit.com/webdeveloper/show-9319-1.aspx
    一共分为6步, 而myqq中好像只有5步, 缺少了发送0x00E3命令的发送包。 不知道为什么。
    而Myqq登录后经常会出现这样的错误。
    11:12:41 [prot_im.c]process_sys_im(289): sysim(type:1): 您所在的网络可能存在危害其他QQ用户的行为,您的号码被迫下线。您重新登录时可能会被要求输入验证码,建议您换一个安全的环境上网。
    不知道和少发这个命令有没有关系?

    回复
    1. Xiaoxia 文章作者

      MyQQ没有使用过2010的协议。只有2009和2011的。出错基本上和协议不完整有莫大的关系。

      回复
    1. Xiaoxia 文章作者

      你好!出现这个问题很大可能是网络问题引起的。可能是因为你所在的网络无法连接到配置文件里指定的服务器地址,你可以尝试更换一个登录地址。

      回复
  23. Wgl

    19:06:54 [qqclient.c]qqclient_detach(224): process = 4
    19:06:54 [qqclient.c]qqclient_logout(241): joining keepalive
    19:06:54 [qqclient.c]qqclient_keepalive_proc(170): end.
    19:06:54 [packetmgr.c]packetmgr_recv(313): end.
    19:06:54 [packetmgr.c]packetmgr_end(339): packetmgr_end
    23:40:32 [qqclient.c]qqclient_login(177): login
    23:40:32 [qqconn.c]qqconn_connect(192): connecting to 58.60.15.39:8000
    23:40:32 [qqclient.c]qqclient_keepalive_proc(162): keepalive
    23:40:38 [packetmgr.c]packetmgr_check_packet(379): [171868446] resend packet cmd: 91
    23:40:44 [packetmgr.c]packetmgr_check_packet(379): [171868446] resend packet cmd: 91
    23:40:50 [packetmgr.c]packetmgr_check_packet(379): [171868446] resend packet cmd: 91
    23:40:56 [packetmgr.c]packetmgr_check_packet(379): [171868446] resend packet cmd: 91
    23:41:02 [packetmgr.c]packetmgr_check_packet(363): [171868446] Failed to send the packet. command: 91

    23:41:03 [qqclient.c]qqclient_detach(224): process = 4
    23:41:03 [qqclient.c]qqclient_logout(241): joining keepalive
    23:41:03 [qqclient.c]qqclient_keepalive_proc(170): end.
    23:41:03 [packetmgr.c]packetmgr_recv(313): end.
    23:41:03 [packetmgr.c]packetmgr_end(339): packetmgr_end

    小侠好,我在google code 上下的代码 在LINUX 还有WINDOWS下 编译后都是会报上面的错误 反而 用你上面http://xiaoxia.org/upfiles/2011/05/myqq3.30.zip 下载的东西 里面的可执行文件WIN32中的myqq.exe就可以正常登录 当然编译后也是报网络错误 我看EXE是今年4月25日生成的 里面的代码都是09年的呢 请问有没有最新的代码 google上的代码 编译出来也是错误

    回复
        1. Xiaoxia 文章作者

          哦,似乎很多人都说这个问题,也希望解决了的朋友快点出补丁吧。
          另外,你能填写一个正确的Email地址么???

          回复
    1. leon

      我也遇到这个问题,用http://xiaoxia.org/upfiles/2011/05/myqq3.30.zip 下载的东西里面的可执行文件WIN32中的myqq.exe也不可以正常登录。请问正常登录情况下log里面是什么内容?可以比较一下,看看哪里有问题。谢谢。

      回复
    2. leon

      可能是跟服务器有关系。好像myqq会在服务器列表里面选一个来登陆,如果服务器没有回应,可能就出现网络问题。需要再测试确认一下。

      回复
      1. leon

        提示“遇到问题需要关闭”。好像是pthreadgc2.dll的问题。截屏我已经回复给那个blog邮箱了,供您参考。

        回复
  24. leon

    虾子,你水平这么高,不如参与libqq-pidgin项目(http://code.google.com/p/libqq-pidgin/)。这个项目是真正可以使用的,只是QQ目前还是问题多多,需要优化。这样子可以同时用QQ和gtalk了。而且还可以锻炼一下团队协作能力。现在libqq-pidgin项目的作者更新比较慢,或者你在libqq-pidgin项目的基础上另起一个项目,搞好一点,做团队的领导者。团队协作很重要,因为一个人再厉害,力量毕竟有限的,只有团结一批人,才能够实现你远大的目标。一点建议,不要介意,呵呵

    回复
    1. Xiaoxia 文章作者

      libqq-pidgin跟myqq是差不多的,用的协议也是差不多的,遇到的有待解决的问题也是差不多的,继续维护和完善的难度很大。
      协议不完善不是一个人能解决的问题,如果大家都能贡献一份力量当然很好了。但是代码复杂了也不好维护。
      所以我在想一个好的方法来解决这一个问题,我在筹备myqq4,也希望有志者加入来参与一下讨论。

      回复
      1. leon

        算我一份,呵呵。我们应该先确定一下myqq4的目标,然后逐步实现就可以了。你现在考虑myqq4准备大概实现哪些功能?

        回复
        1. Xiaoxia 文章作者

          ok~ 我加你到讨论组里去吧,你可以把你的想法通过邮件发送到 myqq.developers AT xiaoxia.org

          回复
      1. leon

        公司的proxy是8081端口的,我又看到QQ里面设置的默认TCP端口是443,不知道这两个端口应该设置哪个?因为对http proxy不是很了解,所以还希望您指点一下。

        回复
        1. Xiaoxia 文章作者

          要设置8081来抓包,http代理需要支持CONNECT命令。
          CONNECT之后,就是正常的tcp通信了。
          遇到什么问题随时可以找我帮忙看看的。

          回复
    1. Xiaoxia 文章作者

      验证方式吧,reject是直接被拒绝了,question是需要回答问题,你需要提交一个answer才能得到添加权限。

      回复
  25. wgl

    Failed to send the packet. command: 58
    Failed to send the packet. command: 58
    Failed to send the packet. command: 58
    Failed to send the packet. command: 58
    Failed to send the packet. command: 58
    Failed to send the packet. command: 58

    时间长了就会出现这个 不能发送 QQ_CMD_KEEP_ALIVE = 0x0058
    为什么会出现这个问题呢 谢谢

    回复
    1. Xiaoxia 文章作者

      会不会是掉线了?尝试加快发送心跳包的频率会否有好转呢? 你使用的是哪一个版本?

      回复
  26. fengleiqi

    在linux下编译时,出现如下错误,请问该如何解决,谢谢。
    (下载自http://xiaoxia.org/upfiles/2011/05/myqq3.30.zip )
    myqq.c:214:12: error: conflicting types for ‘getline’

    回复
  27. wence

    经常遇到登录某一个号码,如果需要有验证码, 就会不停地获取验证码,直至失败。
    我下载了一个2011beta2的QQ客户端,抓了个BA发送包如下:
    [NO.3 2011-11-07 14:35:19 393 SEND]
    02 22 27 00 BA 21 AD 68 FB C2 9F 02 00 00 00 01
    01 01 00 00 64 EF 37 6B A5 66 08 E7 AA 30 61 F2
    86 E2 B0 14 30 EF 99 30 9F A9 6A 7B 91 23 6E 0F
    42 20 9C CC 21 01 2A C2 73 DE 85 DD 62 1F 8E D8
    80 91 49 1D D6 61 81 8F 7F 18 C5 99 64 12 2F 2B
    2B 07 40 42 BA 76 BB 0A C5 38 E8 22 6F 07 63 73
    6B 0E 31 C6 AE 06 15 E8 9C B8 0F 49 9B 51 FB 0B
    32 26 5C E5 FA 55 16 D5 08 CE 06 25 FE 57 09 58
    C7 95 38 C0 E5 CC 9C 16 AC A0 54 91 A5 27 D3 94
    D1 D3 4C A2 FA 05 11 96 D3 2D E5 BA DD DD 2C EE
    96 69 D3 25 A1 75 FD 24 5A 91 27 C4 18 CD 8F 37
    04 BC 66 13 CC 81 B8 7E 3B 4C 57 4D 1F EE DA 10
    BD 7C 75 AA 67 0C 03

    但在MYQQ中,同样的发送包长度却小于上面的包,抓包如下:
    02 22 27 00 ba 0a 01 99 35 a5 71 02 00 00 00 01 01 01 00 00 64 ef
    只填充了put_data( buf, unknown_packet_flags, 11 );这一句后面就没有了。
    但有的QQ也能成功获取验证码登录, 不知道为什么?

    回复
    1. wence

      不好意思, 抓包长度错了,长度应该是正确地, 但是还是存在不停获取验证码的情况。
      在prot_login_request_reply中, next = get_byte( buf );始终为1,直到错误退出。

      回复
        1. wence

          SVN上的, 协议版本号是0X2227,2011beta2, 这两天分析了下腾讯2011beta2的包.
          修改了协议,prot_login_request函数
          if( code )
          put_byte( buf, 4 );
          else
          put_byte( buf, 0x13 );//这里原来为3

          并加上这么一段数据到BA包最后
          static uchar BA_data2[] = {0x4A, 0xB8, 0x34, 0xE3, 0x16, 0xE3,
          0xDA, 0xBF, 0xEF, 0x0B, 0xF6, 0x91, 0xF7, 0xD0, 0xF4, 0x42,
          0x23, 0x4E, 0x6A, 0x12, 0x52, 0xDD, 0x4D, 0xDF, 0x31, 0x4A,
          0x34, 0x49, 0xBE, 0x05, 0x33, 0x6C, 0x51, 0x89, 0x11, 0x90,
          0x6D, 0x4A, 0xBC, 0x30, 0xDE, 0xFF, 0x47, 0x31, 0xB3, 0xB2,
          0x95, 0x3D, 0xEB, 0x80, 0x0E, 0x11, 0xC6, 0x23, 0xD3, 0x22
          };
          put_word(buf, sizeof (BA_data2));
          put_data(buf, BA_data2, sizeof (BA_data2));
          现在能正常登陆,由于测试了N个QQ都没有出现需要验证码的情况,所有暂时还不知道需要验证码的时候对不对。

          回复
          1. wence

            哦,对了, 之前下载的2011beta2不能使用,腾讯要求升级才能使用。 升级以后,抓包后分析了一下,修改发送包static uchar unknown_packet_flags[] = {0x02,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x64,0xef};

            回复
              1. Xiaoxia 文章作者

                不容易。以前的版本的bug比较多,不过现在应该比较完善了。除非你真的有耐心去找协议的bug。

                回复
          2. Xiaoxia 文章作者

            qq协议的结构变化莫测,所以一个版本的协议也永不长久。如果你有google帐号,我可以加你到committer里,更新一下SVN上的代码。

            回复
  28. wgl

    侠,你好
    请问有没有办法可以使QQ客户端收到myqq发送的时候有表情呢?
    case 02: //face
    len_str = get_word( buf );
    buf->pos += len_str; //
    get_byte( buf ); //FF
    len_str = get_word( buf );
    if( len_str == 2 ){
    get_byte( buf );
    if( outlen-i > 15 )
    i += sprintf( &tmp[i], “[face:%d]”, get_byte( buf ) );
    如果把tmp 转发给一个正常的QQ 客户端 现在也只是FACE%D 这个是怎么转换的呢
    如果只发送一个 /吓 这两个东西给QQ正常客户端也只是上面的 /吓 并不会出现表情 不知道 这个怎么转换的,先谢谢了哈

    回复
      1. wgl

        是的啊,所以我想把这个东西转换一下,如果那个微笑的表情是 face79 就是说有没有什么格式的数据发送给正常的QQ 把face79 对应一个转换变成别人能收到的 微笑呢

        回复
  29. Edwin

    很感谢你的MyQQ。学校的电脑室不能安装QQ。我也讨厌官方的客户端和WebQQ,它占用太多资源。
    但是在英文的系统下显示不了任何中文,只看到一堆问号。不知是否有什么办法?(学校的电脑都是英文的Windows7 32bit)

    回复
  30. 好像 0xdd c->s发出去的用来解 0xdd s->c 的 randomkey 都是全0 哦 可能这样比较容易被腾讯认为是 非法的终端。另外请问下你们有没有什么交流群? 是否能让我加一个 嘿嘿

    回复
  31. leon

    老大是不是在更新http://code.google.com/p/myqq3/,我现在更新发现只有几个文件,呵呵

    A myqq3-read-only\myqq4.project
    A myqq3-read-only\.hgignore
    A myqq3-read-only\source
    A myqq3-read-only\source\main.cpp
    A myqq3-read-only\myqq4.txt
    U myqq3-read-only
    而且里面基本上是空的。

    回复
  32. leon

    myqq3里面有点小bug
    line 575 DBG ((“got qun: %d”, number ));
    line 581 DBG ((“got buddy: %d”, number ));
    里面的“%d”应该改为“%u”,会对调试有点小影响。

    回复
    1. Xiaoxia 文章作者

      谢谢指出!!!这个应该是在初期版本就没有注意到的问题,后来基本换成%u,但是有的地方可能没有更新过来。

      回复
      1. leon

        小侠对图片传输有了解吗?或者之前有没有哪个开源的QQ代码实现了这个功能?大家可以一起研究一下。听说EVA QQ有这个功能,不知道是不是真的。

        回复
        1. Xiaoxia 文章作者

          以前用过eva的确可以传文件,但是现在不知道还行不行了。文件传输有点复杂,虽然我没实践过,但是也感觉不简单。因为是tx自己用udp实现的可靠传输协议。我还搞不明白,为何我在局域网用http下载文件有10MB/s,用它的UDP文件传输协议才6MB/s呢。

          回复
          1. leon

            看错了。我以为是数据量,原来是速度。影响速度的可能是协议不同。应该是它的应用层协议比http慢一些。

            回复
  33. vinegar

    xia,我是用java写的,想请教下,我发送的包是02 21 07 00 91 … 03的byte[]数组,但是服务器就是没反应,这会是怎么回事啊?

    回复
  34. vinegar

    服务器地址是什么啊?我想的是UDP,sz的,端口8000,但是没用,然后我登了扣,在dos下看了IP,是TCP,我用的这个,能连上,获得session,但包发过去还是没反应;至于数据包,应该不会错,还是,顺序错了,反过来?03 … 91 00 07 21 02?

    回复
    1. vinegar

      我用cmd下获得的IP,执行结果:
      receiveMessage大小:166
      ClientDecoder处,receiveMessage:
      400 Bad Request

      400 Bad Request
      nginx

      回复
        1. vinegar

          Xiaoxia:
          我用QQAnalyzer抓包试了下,用扣扣登陆,抓到的包是UDP,8000端口,而在CMD下看到的IP是TCP,80端口,这是什么原因啊?
          我把代码里的地址换成TCP的地址,发送包,只抓到一个我发送的包,而换成UDP的地址,一个包都抓不到,这是什么原因啊?

          回复
            1. vinegar

              哦,那我要怎么来标识登陆方式是什么呢?是靠端口号?如果我用UDP方式,地址是多少啊?

              回复
              1. Xiaoxia 文章作者

                udp和tcp的传输层协议不同。应用层协议也有点差别。tcp多发一个包长度。你抓包看看吧。

                回复
          1. vinegar

            不知道方不方便,我想耽误你一点时间问你几个问题,因为也是刚开始玩这个,还几个忙点一直越不过去,呵呵,我也是学生的,我的扣扣:1329392274 ,如果不方便也没关系

            回复
  35. 小纪

    这个贴我看了很多遍了。
    这个贴提供的源码能编译,但登录的时候,却是[1151264686] resend packet cmd: 91错误。。我改用域名登录,不知道该改,改了几趟都是网络错误。
    而在SVN那里下载的,却是编译不了。。。。
    mingw32-make: Entering directory `D:/svn/branches/myqq3/src’
    gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqsocket.o qqsocket.c
    gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqcrypt.o qqcrypt.c
    gcc -c -Wall -O -Werror -I”../lib/pthread” -o md5.o md5.c
    gcc -c -Wall -O -Werror -I”../lib/pthread” -o debug.o debug.c
    gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqclient.o qqclient.c
    In file included from qqclient.c:34:
    protocol.h:8: warning: malformed ‘#pragma pack(push[, id], )’ – ignored
    protocol.h:17: warning: #pragma pack (pop) encountered without matching #pragma
    pack (push, )
    mingw32-make: *** [qqclient.o] Error 1
    mingw32-make: Leaving directory `D:/svn/branches/myqq3/src’

    我是新手,刚刚学习,不知道该从那里入手,能发一个配置好的到我邮箱。

    回复
      1. 小纪

        我用默认的那个,会说网络错误

        # 登录方式
        # TCP or UDP or PROXY_HTTP
        QQNetwork = UDP
        # 禁止使用色彩。true表示禁止色彩文字
        NoColor = false

        配置:
        下面为QQ服务器列表,每个服务器用|来隔开,IP和端口用:来给开。
        电信服务器
        #QQTcpServerList = 219.133.60.173:80|219.133.38.232:80|219.133.40.177:80
        最多允许添加16个
        QQTcpServerList = 219.133.60.173:443|219.133.49.125:443|58.60.15.33:443
        QQUdpServerList = 219.133.49.171:8000|58.60.14.37:8000|219.133.60.36:8000|sz6.tencent.com:8000|sz7.tencent.com:8000|sz8.tencent.com:8000|sz9.tencent.com:8000

        HTTP代理服务器
        QQHttpProxyServerList = 148.233.239.24:80

        log记录
        13:09:04 [qqsocket.c]qqsocket_init(48): WSA Startup.
        13:09:49 [qqclient.c]qqclient_login(158): login
        13:09:49 [qqconn.c]qqconn_connect(192): connecting to 58.60.14.37:8000
        13:09:49 [qqclient.c]qqclient_keepalive(117): keepalive
        13:09:56 [packetmgr.c]packetmgr_check_packet(376): [1151264686] resend packet cmd: 91
        13:10:02 [qqclient.c]qqclient_detach(199): process = 4
        13:10:02 [qqclient.c]qqclient_logout(216): joining keepalive
        13:10:02 [packetmgr.c]packetmgr_recv(308): end.
        13:10:02 [qqclient.c]qqclient_keepalive(151): end.
        13:10:02 [packetmgr.c]packetmgr_end(334): packetmgr_end

        回复
      2. 小纪

        如果改成PROXY_HTTP登记录,我的配置如下:
        # 登录方式
        # TCP or UDP or PROXY_HTTP
        QQNetwork = PROXY_HTTP
        # 禁止使用色彩。true表示禁止色彩文字
        NoColor = false

        下面为QQ服务器列表,每个服务器用|来隔开,IP和端口用:来给开。
        电信服务器
        #QQTcpServerList = 219.133.60.173:80|219.133.38.232:80|219.133.40.177:80
        最多允许添加16个
        QQUdpServerList = sz6.tencent.com:8000|sz7.tencent.com:8000|sz8.tencent.com:8000|sz9.tencent.com:8000

        HTTP代理服务器
        QQHttpProxyServerList = sz6.tencent.com:8000

        LOG日志是这样的
        13:15:37 [qqsocket.c]qqsocket_init(48): WSA Startup.
        13:16:07 [qqclient.c]qqclient_login(158): login
        13:16:07 [qqsocket.c]netaddr_set(154): Get IP: 183.60.48.168
        13:16:07 [qqconn.c]qqconn_connect(192): connecting to 0.0.0.0:0
        13:16:07 [qqsocket.c]qqsocket_connect2(137): qqsocket connect failed.
        13:16:07 [qqconn.c]qqconn_connect(194): can’t not connect server 0.0.0.0
        13:16:07 [qqclient.c]qqclient_detach(199): process = 4
        13:16:07 [qqclient.c]qqclient_logout(216): joining keepalive
        13:16:08 [packetmgr.c]packetmgr_recv(308): end.
        13:16:08 [packetmgr.c]packetmgr_end(334): packetmgr_end

        回复
        1. Xiaoxia 文章作者

          代理不是这样设置的。
          不使用代理,使用UDP和域名地址登录吧。顺便ping一下那个域名看能不能通 😛

          回复
          1. 小纪

            用UPD登录,并把IP的地址去掉。但还是提示网络错误。
            而我看LOG日志,是曾经连接到的了。(小易是我QQ的昵称)
            好头晕啊。。。。

            16:38:25 [qqsocket.c]qqsocket_init(48): WSA Startup.
            16:38:50 [qqclient.c]qqclient_login(158): login
            16:38:50 [qqsocket.c]netaddr_set(154): Get IP: 112.90.86.202
            16:38:50 [qqconn.c]qqconn_connect(192): connecting to 112.90.86.202:8000
            16:38:50 [qqclient.c]qqclient_keepalive(117): keepalive
            16:38:51 [prot_login.c]prot_login_touch_reply(113): redirecting to 112.90.86.241
            16:38:51 [qqconn.c]qqconn_connect(192): connecting to 112.90.86.241:8000
            16:38:52 [prot_login.c]prot_login_request_reply(211): process verify password
            16:38:53 [prot_login.c]prot_login_get_info_reply(370): Hello, 小易
            16:38:53 [prot_login.c]prot_login_send_info_reply(527): login result = 44
            16:38:53 [qqclient.c]qqclient_detach(199): process = 4
            16:38:53 [qqclient.c]qqclient_logout(216): joining keepalive
            16:38:53 [packetmgr.c]packetmgr_recv(308): end.
            16:38:53 [qqclient.c]qqclient_keepalive(151): end.
            16:38:53 [packetmgr.c]packetmgr_end(334): packetmgr_end

            回复
      1. Xiaoxia 文章作者

        这么神奇~~你看看这里的评论,看能不能找到解决方案,我记得之前有人提到这个问题,也给出了问题原因。

        回复
      2. zeng

        你是不是下错了,网上有两个版本的MYQQ3.3 一个是完整版 一个是不完整版。。。。
        不过我这个编译了是能登录,不过有登录过程也有问题,随时出现错误,而且账号随时容易被冻结

        回复
  36. zeng

    我终于知道为什么用你的MYQQ登录之后会被封了,看了你的源代码之后知道你很多地方漏了RANDOM_KEY过程,直接使用16位0作为KEY,估计腾讯有专门的检查机制,相同的KEY用多了就需要激活,如果相同的KEY的出现达到一定次数,就会视为数据异常,将QQ号的登录转人工处理或者其他方式处理,估计一眼就能看出来使用第三方登录工具登录的

    回复
  37. 范晨嘉

    你好,我最近在使用qqdicebot4这个软件,他是基于你的myqq而做的机器人。但是这个机器人不能在2开头的9位数的qq群中回复,这是为什么?

    回复
  38. john

    手机版QQ使用TCP协议,与UDP协议有多少不同?
    myqq的各版本中,TCP协议均会报【网络错误】,只有UDP协议正常。
    TCP连接何时可用?
    谢!

    回复
    1. Xiaoxia 文章作者

      按理来说,这个UDP、TCP不受QQ协议的影响,只是连接方式不同。
      提示的“网络错误”,应该是TCP的服务器地址有问题了。如果是连接的服务器用了IP,可以试试改为域名。

      回复
  39. nob0dy

    xiaoxia,我对myqq很感兴趣,我也在分析tm的协议,我用svn上下载的源码编译,登入myqq发消息时都会提示超时,实际上是能别人是能收到消息的,能把我加入到讨论组中去么?

    回复
  40. wangbin

    你好,xiaoxia,请教一个问题就是在发送0X30包的时候,总是收到提示:您的网络环境可能发生了变化,为了您的帐号安全,请重新登录 请问是发送的数据包有什么问题吗

    回复
    1. Xiaoxia 文章作者

      这个还是一个谜,但是就目前经验来看,是跟有些协议数据包没有发送给服务器有关的。
      同时也跟号码是否在常用IP登录有关。

      回复
  41. bunlion

    下载来用,64位显示网络错误。
    我是华南理工大学教育网,会不会只是我的网络问题……
    我后来用了一个vpn也不能登登录。
    想不明白。

    回复
  42. 小和

    小虾,你好,用了你这机器人,是海沙改版的,可以用上API,但是POST到API的QQ群ID号却是不对的。不知是哪里获取QQ群ID号的?谢谢指点,下面是两段代码,POST到网站用的,就这里的群号是错的,有的还是负数。
    void CallBackmsg(char* msg)//POST信息到网页,开发:海沙
    {
    char* Sendmsgurl, tapys[]=”POST”,*callbackmsg,tmp[22];
    uint uid;
    int is_qun=0;

    char sestr[10]=”&KeyChar=”,char_Null[]=”NULL”;
    if(strstr(msg,sestr))
    {
    mid_value( msg, “qunid=”, “&sendid=”, tmp, 20 );
    }else{
    mid_value( msg, “sendid=”, “&robotid=”, tmp, 20 );
    }
    uid=strtol(tmp,NULL,10);

    free(tmp);
    NEW( char*, Sendmsgurl, 256 );
    NEW( char*, callbackmsg, KB(10) );
    Sendmsgurl=config_readstr( g_conf, “CallbackURL” );
    if(Sendmsgurl==char_Null)*Sendmsgurl=NULL;
    if(*Sendmsgurl!=NULL)
    {
    callbackmsg=http_request_form(tapys,Sendmsgurl,msg,strlen(msg));

    if(*callbackmsg!=NULL){
    if(strstr(msg,sestr))is_qun=1;
    Sendmsg_to(is_qun,uid,callbackmsg);
    }
    }
    free(Sendmsgurl);free(callbackmsg);
    _endthread();
    }
    void socket_listen()//作者:海沙
    {
    struct sockaddr_in cliet;
    char *header,*post_msg,*temp;
    int listen_sock,iLen,sac,len,Port,is_qq_qun,qq_num;
    Port=strtol(config_readstr( g_conf, “Port” ),NULL,10);
    if(Port>0){
    listen_sock = qqsocket_create( 1, NULL, Port );
    listen(listen_sock,5);
    printf(“Listening PORT:[%d]\n”,Port);
    iLen=sizeof(cliet);
    while(1)
    {
    sac=accept(listen_sock,(struct sockaddr*)&cliet,&iLen);
    NEW( char*, header, KB(10) );
    len=recv(sac,header,KB(10),0);
    if(len>0)
    {
    NEW( char*, temp, 50 );
    NEW( char*, post_msg, KB(10) );
    mid_value( header, “a” , “\n”, temp, 50 );
    is_qq_qun=strtol(temp,NULL,10);

    post_msg=strstr(header,”\n”);
    post_msg+=strlen(“\n”);
    mid_value( post_msg, “a” , “\n”, temp, 50 );
    qq_num=strtol(temp,NULL,10);

    post_msg=strstr(post_msg,”\n”);
    post_msg+=strlen(“\n”);

    free(temp);
    if(qq_num<=10000)
    {
    send(sac,"QQ Number Is Error!",sizeof("QQ Number Is Error!"),0);
    }else{
    Sendmsg_to(is_qq_qun,qq_num,post_msg);
    send(sac,"ok",sizeof("ok"),0);
    }
    }

    free( header );free( post_msg );
    qqsocket_close( sac );
    }
    qqsocket_close( listen_sock );
    }
    _endthread();
    }

    回复
  43. 王美聪

    用3.30的代码,登录时QQ服务器反馈:
    尊敬的用户,您当前使用的产品版本过旧,为保证您正常使用,请您到官网下载并安装最新的版本。谢谢!下载地址:http://im.qq.com/qq/dlqq.shtml
    xiaoxia,有没有更新的代码啊? SVN上的我取不下来,总是出错。。。
    我的Q: 470997
    多谢!!!

    回复
  44. 王美聪

    终于在VC6下编译可以运行了。。。
    但是登录似乎不顺畅,总是网络错误,总得试多次才能登录。。。

    回复
  45. Pingback引用通告: MyQQ:可以在终端里面上的QQ | ubuntu 啦

  46. 鲁翔

    QQ账号:253605712
    QQ密码:
    是否隐身登陆?(y/n)n
    loginGet IP: 111.30.131.174connecting to 111.30.131.174:8000登陆中…
    keepaliveredirecting to 123.151.13.82connecting to 123.151.13.82:8000process verify passwordDenied.尊敬的用户,您当前使用的产品版本过旧,为保证您正常使用,请您到官网下载并安装最新的版本。谢谢!下载地址:http://im.qq.com/qq/dlqq.shtml您的QQ需要激活(http://jihuo.qq.com).

    回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据