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

这段东西不是为了说明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包,接收系统消息包)  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值