2,登陆
发送:
VER=1.4&CON=1&CMD=Login&SEQ=245&UIN=378779555&PS=3CEAFFE01068A5F9C0C5DD0000CBB067&M5=1&LG=0&LC=812822641C978097&GD=QU7YM68W72T5EJZF&CKE=
VER为版本,CMD是命令类型(后面的发包全部都是命令)。SEQ为3位随机数(大于200小于999),
1.1协议的是2位大于00小于99的随机数,我的版本QQ是第一次发包时随机一个200+2位随机数,
每次发送命令后QQ返回的包里面的SEQ都和对应包相同,以后发包时每次在上一个包的SEQ上+1作为新的。
我用易语言按照这个实现通过。
提示 : QQTCP通讯的编码全部为UTF-8,用易语言写的TX注意发包和接受后转换下。
UIN是QQ号,PS是密码用MD5加密的密文。易语言 设定密码为X,密文=到大写 (取数据摘要_MD5 (到字节集 (X)))
LG,M5,LC,GD全部固定值测试通过。
接受:
登陆成功:
VER=1.1&CMD=Login&SEQ=245&UIN=1625034920&RES=0&RS=0&HI=60&LI=300&SG=6522abd500000000642162f3c8f13928337d76f39fc025b6a2e11295d8eb631b&SSG=2618781619
下一步可以发送更新状态的命令来更改上线隐身等。
注意 返回的VER是1.1 其他的可以参考1.1的协议看看。RES=0代表你发送的数据服务器接受成功并不代表命令等正确。
有验证码:
VER=1.1&CMD=VERIFYCODE&SEQ=259&UIN=1747478650&RES=0&SC=1&NT=&VC=89504e470d0a1a0a0000000d4948445200000064000000280403000000fa56427000000030504c5445ffffff9f9f9f4f4f4f5f5f5f6f6f6f7f7f7f8f8f8fbfbfbfefefef0f0f0f2f2f2f3f3f3fcfcfcfafafafdfdfdf1f1f1fac7ca8040000022a49444154388ded943f4c137114c71f207057db4a3062ba99381d13834b3717069caa1112b62e0c4d1c186130b9cd38d9daaa7cdb7a270983b7185c482ed1c4d54143080e5d0c2b1b6cde627ceffd50dafb1798587cc3dde5f77b9fdffbbe3fbf234ab3d97b2bb75d221b4013ff2cd5f5af2db143db356ee7089a394855bd0d625f8c713a6b0fce748d20394cd8273b1549cfa738f793428fe4403b89a485b142e0536010ba1852908d688b5443bc6431c4ba79779f5f0dec38b2a3889d8f348097fc0a7c1a53443773916bb2709f1dda64012764eba61d4786836c62fb009e46a15b78a7fe49644457955505af44df1d2aa3b3f2081a68b464a3f5e2bad280238ca3e71675bfadad194662158eb4755c33071fa6d5e1bd28a32124de0f8952c12ed104fc6ff8b816745da2a9e639926c61b5452548fe9ccd6b2e5dc3975507eb41d34e7aab1decd3aa1f72fedc962e6a748c2ffcfd02bf96bc0c82a433bf37fdf2776d6a8d07a7c66bd3e8555ad9c8c03f2ae007ea3266759a34bd5945b5938d447d9ac21e16b8ce98e1f3b764f13ad0cb244aec6ca185379c80143b5241e5ac6b2536c96af80647588c80752e61dbc885d62113e181acf0b1be780dcce9131a32ddc678b858f94346e67144f45c42a9b2992cc442df0abb785b7afca420c8b8565906b99e998c8300de323bd30db83c2ca6ca94238cbe9a3b46e696b022cfe8cdf9b1f2887d365fc5a7f29c3f95e70039dda7671bc9b522ce52ba84857941d2edd0bd34f2dfae
c4fe0081184f53b008ff0c0000000049454e44ae426082
可见返回的MCD是VERIFYCODE,并且有VC段,试验证明需要输验证码才会出VC段,确定VC就是验证码。
试验证明这段是一个PNG图片。
把16进制的代码还原成字节集,写入文件后缀为PNG格式,就是验证码图片。
本例图片就是:

然后发送验证码:
VER=1.4&CON=1&CMD=VERIFYCODE&SEQ=260&UIN=378779555&SID=&XP=C4CA4238A0B92382&SC=2&VC=puty
注意:SC是验证码接收包的SC+1,XP固定不变。
错误的验证码则继续接受验证码包,正确后返回2个包:
VER=1.1&CMD=VERIFYCODE&SEQ=261&UIN=1747478650&RES=0&SC=2&RS=0
RS=0为确认标识 为0就为成功。
VER=1.1&CMD=Login&SEQ=261&UIN=1747478650&RES=0&RS=0&HI=60&LI=300&SG=a3125e629c6cb500000000ca8b01bc666218abec75d0118fdbf76003615a5089&SSG=415039481
登陆成功!和上面的直接成功差不多。