解析QQ2004的本地加密技术

2016-02-21 00:16 6 1 收藏

下面是个简单易学的解析QQ2004的本地加密技术教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - QQ专区 】

    我的本意是写个暴力破解QQ本地密码的程序,不过分析之后才发现,QQ密码循环加密了n(n60000)次。虽然程序还是能写出来,不过可能需要很长时间才能算出一个短密码,所以并没有什么价值。唉!回去再看看自己写的MD5算法,看看什么地方可以大幅度改进的。再不行的话,就看看能不能写成万台机器联机的形式,这个可能需要从解密算法上入手了。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

  下面说明QQ本地文件加密的问题。QQ本地密码文件保存在文件ewh.db中,加密方式是MD5和简单位变换的结合。

  一:密码文件结构。

  密码文件结构可以表示如下:

    struct file_ewh.db
    {
    FileHeader *header; //文件头
    FileBlock *blocks; //文件块数组
    }

    文件的图形结构如下:
___________________________________
             
 文件头 文件块一 文件块二 .......  
         
-----------------------------------

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

  下面我们就分别分析文件头和文件块的结构。

  1.文件头。
  文件头共6字节,第一字节固定为51('Q'),第二字节固定为44('D'),第三、四字节都为01。第5个字节开始的16位数据表示文件块的个数。

  2.文件块。
  文件块的结构如下:
    struct FileBlock
    {
    int8 type; //块的类型(QQ里面只使用了4和7两种)
    int16 nameLen; //块名字的长度
    int8 name[nameLen];//块的名字
    int32 dataLen; //块数据长度
    int8 data[dataLen];//块数据
    }
    为了方便,这里的int8代表一个字节,余者类推。

  实际例子:
  我自己的QQ的密码文件(不要破解我的啊!),其数据如下:
    00000000: 51 44 01 01 03 00 04 03 00 bd af a8 04 00 00 00
    00000010: c9 6a 09 00 07 03 00 b9 ab b4 10 00 00 00 0f c5
    00000020: e9 d4 31 15 2f 12 c4 1c 0a 46 95 90 db 98 04 03
    00000030: 00 a9 b5 b2 04 00 00 00 69 f4 aa 02
  总共60个字节。

  看的出来,文件中有3块,类型分别为4,7,4。后面要说的,7代表密码块。

  ewh.db密码文件的第3个文件块的数据内容是密码文件对应的QQ号码。就是最后的4个字节的内容。

  大家可以随便分析一下,看看文件结构是否符合。

    二:QQ的加密算法

  ewh.db里面保存了密码加密后的结果。其中,第一个数据块的数据是密码进行MD5加密的轮次,第二个数据块是加密后的结果。

  其加密过程简单的描述如下:

    1)设密码为m[],加密轮次为n;
    2)for(i=0;i//上面文件中的n=0x96ac9;
    {
    m=MD5(m);
    }
    3)for(i=0;i16;i++)
    {
    m[i]=(!m[i])^al;//al在这里指的是密码块数据的长度
    //上面的文件中al=10h;
    }

  后记,QQ的加密算法和加密文件其实就这么简单。由于笔者第一次实际分析程序(以前只有理论水平),所以,花了3到4天才分析清楚,分析的汇编函数可能有30-40多个吧,反正写的笔记都有20多页了(A4的纸张),还打印了16张代码。

  另外,数据块的名字也是加密过的(算法类上),上面的例子中的3个块的名字分别为:"AST"、"EWH"和"UIN"。其实我还分析出了一些QQ的内存里面类的结构,只是没有什么大用处,但我还是明白了加深类的层次将给解密者带来极大的痛苦(QQ文件在内存中表示的有4层指针)。
一点补充:

    常常有人问怎么离线看本地电脑的聊天纪录。

    其实很简单,把你QQ密码文件的最后4字节修改成别人的QQ号码,然后,拷贝这个文件到别人的号码的目录下覆盖它的密码文件就可以了。当然了,登陆的密码就是你自己的QQ密码了。

    (这种方式想必没有杀毒软件检查的出来吧?想起上次一个网友修改QQ来看本地聊天纪录,结果被杀毒软件认为是QQ病毒!郁闷死了!)

来源:http://www.tulaoshi.com/n/20160221/1650299.html

延伸阅读
标签: flash教程
    首先我们来假设一个情况。 我们要做一个flash,里面存了一段话,只想给知道密码的人看。通常的做法是检测用户的输入是否等于密码,然后显示。但是由于Flash是开放结构,所以swf文件可以反汇编然后看到密码,这时候就可以非法的看到要保护的东西了。 但是如果通过一个不可逆的算法把密码加密,然后存在swf里面。然...
标签: 聊天软件
  文/software.pchome.net 网络硬盘是腾讯公司推出的在线存储服务。服务面向所有QQ 用户,提供文件的存储、访问、共享、备份等功能。只要你使用QQ2004Beta版就可以使用网络硬盘了。 开通服务 1.QQ免费普通用户 只需要点击QQ2004Beta版的最后一个面板图标 ,确认QQ免费用户使用协议,就可以享受16M免费网络硬盘空...
标签: Web开发
从我发布百度CSS import漏洞开始,就有人不断问我关于http://hi.baidu.com/edikid这个空间,到现在可能有上百人了吧!我曾经说过CSS内容原则上是不能被加密的——原因就是它需要被浏览器解析。但是当大家用我的http://dohi.cn/hisearchcss.asp对他的空间CSS进行查看时,看到的是乱码,似乎他创造了一个奇迹。 这里Monyer不对其本人以...
标签: windows系统
Win8.1系统休眠唤醒加密技巧   在使用过程中,我们会发现Win8.1系统休眠后,唤醒不提示输入密码,直接进入系统,感觉不是很安全。下面图老师小编就为大家介绍一下Win8.1系统休眠唤醒加密技巧! 1.移动鼠标到屏幕右上角,会出现超级按钮,选择设置; 2.在设置中,选择右下角的更改电脑设置; 3.点开后,点击左侧的账...
标签: Web开发
今天我们来一起看看Dreamweaver MX 2004在加密FTP 传送 方面的新功能。 我们一般在做FTP文件传送的时候,默认情况下传送过程是公开的,即我们FTP的用户名和密码都是可见的。这样在网络上传输缺乏安全性, Dreamweaver MX 2004 的FTP功能对此作了修改,增加了SFTP传送功能,即上传下载站点文件时可以有效保护FTP用户名、密码,保...

经验教程

359

收藏

90

精华推荐

QQ聊天记录保密技巧

QQ聊天记录保密技巧

yuyu_happy1314

QQ漏洞?破解加密的QQ空间的方法

QQ漏洞?破解加密的QQ空间的方法

beijingqizhigs

加快qq文件的传输速度的绝密技巧

加快qq文件的传输速度的绝密技巧

留春雷霆

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部