QQ密码的加密方法 ( 积分: 0 )

  • 主题发起人 主题发起人 860
  • 开始时间 开始时间
8

860

Unregistered / Unconfirmed
GUEST, unregistred user!
QQ密码是采用什么方法加密?是标准的MD5吗?从QQ登录发出的UDP包中十六进制密码每次都不一样,同一个密码,为什么每次登录显示的十六进制的密码不一样?
 
QQ密码是采用什么方法加密?是标准的MD5吗?从QQ登录发出的UDP包中十六进制密码每次都不一样,同一个密码,为什么每次登录显示的十六进制的密码不一样?
 
高手在哪里?给出答案给100分。
 
正在分析登录协议.......
 
QQ2003与QQ2005的登录协议基本一致,只是QQ2005的密码加密比QQ2003更为复杂。登录协议都是以“02”开头,“03”结尾。(“02”、“03”为十六进制)。请看下一步......
 
网上讲QQ协议实际上的东西不多。下面以QQ2003为例......
 
请看十六进制编码:
02 0B 37 00 22 7B 9A 00 00 00 00 01 01 01-01 01 01 01 01 01 01 01 01 01 01 01 01
......03
协议以02开头03结尾,0B 37 00 22 表示版本为2003的QQ登录,00 00 00 00 是我的QQ号
用00代替(以防万一.......),后面的16位01是随机加入的只作为加密用(谜糊你的),没有实在意思。
 
快速启动QQ的方法是:
QQ.exe /START QQUIN:QQ号码 PWDHASH:加密后的密码

加密的密码为 原密码 先MD5加密,然后一个函数加密 后 Base64 加密

中间函数为商业机密,不予泄露~~~(我要对朋友说过每一句话负责)[:)]
若需要此函数,请加QQ快速群启动作者:224261098(冷月无声)
 
to yangshiqiang:
你也没有公布后面的加密方法,请你公布吧。我就是不知道后面的加密方法。
 
我先去"开源网站"找一下。
 
tea 16
你说的那变化的16位其实是随机密钥 是用你密码的2次MD5后的字符串用TEA加密的一个空字符串 其实没什么作用 主要是登陆解密后面的包的

如果验证成功他回返回所谓的登陆令牌 这个令牌仅用一次 就是你的登陆包
登陆包里含有你的密码密钥passwordKey(其实就是你的密码的2次MD5) 和登陆令牌 以及其他相关信息
服务器如果验证成功的话就返回一个成功的包 里面含有一个session密钥
那么这个session密钥就用到以后所有和服务器交换信息的加密中
还有一个密钥就是filesessionkey 主要用于P2P加密!


说到底QQ密码的加密方法其实就是标准的MD5+TEA
 
QQ的密码是不是在客户端也有保存,因为在离线状态下可以检查出密码错误。
 
当然保存 但是加密后的 基本没什么用 除非穷举
 
to yangshiqiang:
你是?为什么要联系我?不要扯我撒!我汗啊,什么商业机密,你不知道是不是?我虽然知道,也是朋友告诉我的,我也不能说啊。
 
[:(]to moonight59:
晕倒,居然我都不知道,还跟你每天聊QQ呢,你的朋友告诉了你,你再告诉你,但我没有说,够朋友吧
 
哈哈,我错了嘛![:D]
 
我做了一个QQ登录器是基于QQ2003的协议,协议及加密是抄别人的,协议是二进制的流,八位数的QQ可以登录,九位数的QQ不能登录,不知道是什么原因。
 
TO wqy888:
我要试试你说方法。我已有了TEA的加密模块,谁有TEA的加密例子?
 
QQ2003的通讯协议(十六进制的,抄别人的):
const
QQ_LOGIN_DATA_LENGTH = 69;
QQ_PACKET_TAG = $02; // 发送消息时的定义字符(用在最前面)
QQ_PACKET_TAIL = $03; // 所有QQ发送消息使用的结束字符(用在最后面)
QQ_LOGIN_MODE_NORMAL = $0A;
QQ_LOGIN_MODE_HIDDEN = $28;
QQ_CMD_KEEP_ALIVE = $0002; //保持连接
QQ_CMD_GET_USER_INFO = $0006; // 获得使用者通知
QQ_CMD_ACK_SYS_MSG = $0012; //正确应答系统消息
QQ_CMD_SEND_IM = $0016; //发送消息
QQ_CMD_RECV_IM = $0017; //收到消息
QQ_CMD_LOGIN = $0022; // 登录
QQ_CMD_GET_FRIENDS_LIST = $0026; //恢复我的朋友列表
QQ_CMD_GET_FRIENDS_ONLINE = $0027; //获得我的联机朋友列表
QQ_CMD_RECV_IM_SYS = $0080; //收到系统消息
QQ_CMD_IM_STATUS_CHANGE = $0081; //朋友改变状态
QQ_LOGIN_REPLY_OK = $00;
QQ_LOGIN_REPLY_REDIRECT = $01;
QQ_LOGIN_REPLY_PWD_ERROR = $02;
QQ_SEND_IM_REPLY_OK = $00;
QQ_RECV_IM_TO_BUDDY = $0009;
QQ_RECV_IM_TO_UNKNOWN = $000A;
QQ_SERVER_0100 = $0100; //服务器
QQ_CLIENT =$0A1D; //$0B37; { QQ 2003 III }
QQ_INFO_FIELD_COUNT = 36;
 
后退
顶部