QQ协议之开始上线!登录/应答

有了请求登录包返回的密钥(CQQUser::m_pbInitKey),就可以开始构造登录包了(这里顺便提一下,登录包里带有QQ最重要的数据——密码,没有登录密钥直接发送密码原文是极不安全的,这也是为什么登录包之前还要请求登录/应答过程的原因)。


登录和登录回复包是用登录密钥加密/解密的


登录包构造(CLoginPacket::PutBody)和登录回复解析(CLoginReplyPacket::ParseBody)的每一步在源代码中注释都有说明,其中着重注意:


登录包构造中:没什么好说的,看代码


登录回复包解析中:


很 多请况下不会直接登录成功,而是由服务器返回一个登录重定向包(回复码是QQ.QQ_REPLY_LOGIN_REDIRECT),而且不止一次重定向服 务器,所谓重定向即——你向一个QQ服务器发送登录请求,而这个服务器会告诉你另一个QQ服务器地址和端口(不要告诉我你认为腾讯只有一个服务器

),这时你就要向后者重发登录包(但是登录密钥都是一样的)。至于为什么不直接在这个服务器登录,这你就要问腾讯的客服了(取决于服务器的策略)


如果登录失败,会返回失败消息的字符串


最后就是登陆成功的消息,登录成功会返回很多重要信息,包括你想到的和没想到的,其中session key(会话密钥)是下一个密钥,你今后发送的大多数消息和接收的大多数消息,都是用这个密钥加密解密的



代码SVN

http://vcye23.SVN.sourceforge.net/SVNroot/vcye23/qqprotocol/

引用请注明出处,谢谢

Tags:  qq传输协议 qq2008协议 qq远程协议 qq协议分析 qq协议

延伸阅读

最新评论

发表评论