您的位置:首页 > 其它

QQ的通讯安全机制部分细节

2006-09-29 18:00 141 查看
这段东西不是为了说明QQ的通讯细节,重点是通讯本身的安全机制。这是可以学习借鉴的部分
QQ通讯能保证:即使你知道整个QQ通讯细节,并能截取别人的通讯包时,也不能获得通讯的内容(除非你有对方的登录密码)。

QQ通讯安全机制核心在于登录机制
登录机制中
发送包
QQ密码不可截取,QQ密码采用两次MD5加密。服务器通过QQ密码的两次md5来比对包中的
接收包
接收包的内容须用QQ登录密码解密。解密获得以后通讯的新密码,该新密码应该是动态的。

一、通讯包

A. 发送包
1。包头
包头格式:
包体长度 2字节
包Tag 1字节 常量
version 2字节
command 2字节
sequence 2字节
QQ号码 4字节

说明:所有包的包头都是明码

2。包体
包体都是加密的,在不同时段,加密的方式、加密的密码有一定的变化,具体的加密方式看下一段

B.接收包
1。包头
包头格式:
包体长度 2字节
包Tag 1字节 常量
version 2字节
command 2字节
sequence 2字节
2。包体
包体以QQ_PACKET_TAIL(0x03)作为结尾,一般都是加密的,在不同时段,加密的方式、加密的密码有一定的变化,具体的加密方式看下一段

二、通讯过程

1。请求登录令牌:
向服务器发送请求也就是发一个请求登录令牌的包,服务器返回LoginToken(登录令牌)
发送包的细节:此包为明包,所有包头遵循统一规格,包体为空
包头:

名称 长度
包体长度2字节0
包Tag1字节0x02
version2字节不同QQ版本值不同(常量)
command2字节0x0062
sequence2字节可自定义起始值
QQ号码4字节
返回包:
包头:

名称 长度
包体长度2字节
包Tag1字节
version2字节
command2字节
sequence2字节
包体:以QQ_PACKET_TAIL(0x03)作为结尾。
包体没有加密,包体的第一个字节是响应的值,正常应该为0,包体的第二个字节为登录令牌的长度。登录令牌从包体的第三个字节开始,长度为第二个字节内的值。

2.登录
发送包:

包体:
16字节初始key
encrypt( encrypt(NULL,0,doMd5Md5(passwordkey) )+36字节常量+LoginMode+16字节常量+登录令牌+100字节常量+补齐0)
返回响应包,包括SessionKey,FileSessionKey,FileShareToken,ClientKey等

3.根据Sessionkey处理相应消息包(发送的IM包,接收系统消息包)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐