我爱Aspx >> Asp.Net >> OICQ 99c版本加密方法研究报告OICQ是Internet网上常用的通信软件,本文将给出OICQ最新版99c的口令加密方法
、与服务器进行通讯的加密方法和用户之间的加密加信方法。
一、 口令加密
每个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(9
9b)或.msj(99c)文件中。
核心解密函数的原型为:
BOOL Decode(char *src ,int srclen ,char *decodekey, char *outbuffer,in
t * poutlen)
参数:
src:存放加密数据的缓冲区。
Srclen:src字节数。
Decodekey:固定16个字节的密钥。
Outbuffer:输出明文缓冲区的地址。
Poutlen:解密后的长度存放地址。
说明:该函数入口地址:15f:456D33。这个函数以密钥进行解密。如果成功返回
TRUE,否则返回FALSE。
显而易见,解密的关键是如何得到16个字节的密钥decodekey。
查看聊天历史的密钥生成不需要口令。算法为:
1、用当前使用的oicq号为口令,调用口令计算函数CalcPassword,得出一个临
时密钥keycode1。
2、用keycode1为密钥,进行解密。数据为文件matrix2.ewh(99b为matrix.ewh)
Ҷƪл˵?
源码推荐:一个使用C#绘制图形引..[05-05]
如何写系统分析书[05-05]
一个统一的链表结构[05-05]
优化delphi5.0秘籍大曝光[05-05]
在C#里如何调用标准DLL函数[05-05]
开放源代码的定义[05-05]
MMX Instructions[05-05]
Opcodes of intel[05-05]
程序员与MM[05-05]
用CTI实现与Web交谈[05-05]