qq通过什么连接到网上的?

来源:百度知道 编辑:UC知道 时间:2024/05/15 05:36:34

QQ通信 原理

一、口令加密

每个oicq帐号的口令都保存在本地的一个文件中。登录oicq时,先将输入的口令与本地的文件进行比较。如果口令与文件中保存的不符,将提示"输入的密码与上次成功登录的密码不一致,是否到服务器验证?"。

OICQ 99c的口令文件为matrix.cnt。OICQ 99b的口令文件为matric.ewh。

口令加密算法的函数原型为:
void CalcPassword(char *password ,int len ,char *outbuffer)

参数:
password为输入的明码口令
len: password长度
outbuffer:固定16个字节长度的加密后的口令。

说明:该函数用调试工具查到入口地址为15f:456718。在口令加密和用户之间通讯时都要用到这个函数。已知能够计算的最长口令为20个字节,见下文用户之间加密通信。

Oicq99b的口令文件就是将口令进行一次CalcPassword计算后保存在每个oicq帐号目录中的matrix.ewh,该文件正好为16个字节。因此有这个文件就可以使用暴力进行口令破解了。

Oicq99c的口令文件就复杂多了,第一次将明码的口令用CalcPassword进行计算,然后将结果再作为口令进行计算,迭代计算很多次。计算次数用4个字节的双字表示。将4个字节的次数和计算后的口令保存在每个oicq帐号的matrix.cnt文件中,这个文件正好为20个字节长度。因为迭代计算了很多次,使口令计算时间极大地延长了,使用暴力破解oicq99c的口令几乎不太可能。

二、聊天历史的查看

与每个人聊天的历史都存在自已的oicq号目录下,文件名为对方的oicq号.msh(99b)或.msj(99c)文件中。

核心解密函数的原型为:

BOOL Decode(char *src ,int srclen ,char *decodekey, char outbuffe