• λ我爱Aspx >> Asp.Net >> OICQ 99c版本加密方法研究报告
  • OICQ 99c版本加密方法研究报告

  • :未知  Դ:internet  :2007-5-5 19:47:59  ؼ:
  • 从0起第17个字节,长度为32个字节,解出16个字节的密钥为keycode2。

    3、 用keycode2为密钥,可以解开跟任何人聊天的历史。

    例如要查看oicq号为123456的聊天历史记录,算法为:

    BYTE keycode1[16];

    BYTE filebuffer[32];

    //读文件matrix2.ewh,从0起第17个字长,长度为32的内容读出保存在filebuff

    er。

    ReadToBuffer(filebuffer);

    //用当前的oicq号计算keycode1

    CalcPassword('123456', 6 , keycode1)。

    //计算keycode2

    BYTE keycode2[16];

    int len = 16;

    Deocode(filebuffer , 32 , keycode1,keycode2,&len);

    //现在keycode2就是能看任何聊天历史的密钥了。

    //如看跟888888的聊天历史,将文件888888.msj读到缓冲区largerbuffer

    Decode(largerbuffer,largerbufferlen,keycode2,outbuffer,*outlen),成功后

    outbuffer中为解密后的聊天记录。

    三、 与服务器通信的加密

    与Decode相对应,是一个加密函数Encode。

    void Encode(char *src,int srclen,char *encodekey,char *outbuffer,int *

    poutlen)

    参数:

    src:明文缓冲区。

    Srclen: 明文缓冲区的长度。

    Encodekey:固定16个字节的加密的密钥。

    Outbuffer:输出加密缓冲区。

    Poutlen:输出长度的保存地址。

    说明:该函数入口地址:15f:456b62。将明文进行加密,密钥为encodekey。用d

    ecode函数和同样的密钥可以进行解密。

    l 登录服务器:

    发送的数据包为

    {BYTE b1;固定为0x2

    BYTE b2;固定为0x3

    BYTE b3;固定为0XA

    BYTE b4;固定为0X0

    BYTE cmd; 登录服务器为0X15。

    WORD seq; 顺序号,从高到低存放

    DWORD oicq号;以从高到低顺利存放二进制的OICQ号。

    BYTE key[16] ;随机产生的16个字节的密钥。

    BYTE buffer[64];64字节的加密内容。

    BYTE endchar ;固定为0x3。

    最核心的是buffer[64]的内容。用口令调用CalcPassword进行一次计算,然后作

    为密钥对0长度的明文进行加密,得出16个字节的结果,再进行加密发送。例如口

    令为'abc123',算法为

    BYTE passkey[16]

    CalcPassword('abc123',6',passkey)

    Ҷƪл˵?
  • һƪ用 Delphi 编写 VxD 设备驱动程序(转)
    һƪ源码推荐:一个使用C#绘制图形引擎的Framework