躲开QQ的本地密码验证

原创 2003年12月18日 00:10:00

首先申明,笔者写这篇文章并非针对某人或某物,只是提出当前在广大用户以为安全的某些环境下,存在着一些潜在的危机。目的在于指出漏洞,交流技术,望高手指点。

Tencent的QQ估计是国内个人上网用户的必备工具了,虽然现在的QQ比起三年前的版本,在安全方面有了长足的进步,但总觉得这些安全措施总是比不上Hacker的动作。

由于笔者的朋友的QQ号掉了,想找回,但忘记了密码保护的提示问题答案,所以跑来找到笔者,希望能帮他解开被盗的QQ密码。很遗憾,纵所周知,现在的QQ已经是2003版了,若是以前的版本,到可以尝试从在先用枚举的方法向服务器发包来打开QQ,利用的是计算机的运算速度暴力破解。但如今,一来笔者这里网速太慢,二来现在的QQ对向服务起连续发送TCP包的第三方程序封杀的很彻底,所以这样行不通。笔者告诉朋友可以想办法和Tencent的网管联系说明情况,或者干脆重新申请一个QQ号。但笔者的朋友说太麻烦,还是想让我帮他解开密码,因为就算他要重新申请也要记下现在这个QQ上的一些重要的网友。于是笔者边告诉他,如果只记下网友,那本地破解就OK了,可能有办法。

笔者以前有过类似的经验,因为在QQ的低版本的数据文件加密不太好,所以曾经在里面捞到过“好处”,但是如今的QQ已是今非昔比,好有那么容易吗?我报着尝试的态度开始解密。首先,每个被登录过的QQ根目录文件夹下都有对应的号码文件夹,于是我先要他机器里以前的登录的号码文件佳,以及里面的所有文件,里面有4个文Autologin.dat,Loginuinlist.dat,dlg.0和QQwry.dat从名字和大小分析,Autologin.dat和dlg.0太小,可以排除。QQwry.dat太大,虽然不敢直接排除但可放后考虑。Loginuinlist.dat从名字可以看出,大小也差不多。为了验证我的判断,我做了一个实验。我先将此文件备份,然后登录一个列表中没有的QQ号,结果再把此文件和备份文件比较,前者增加了58字节。
 

为了进一步证明我的想法,我把这个文件删了再启动QQ,发现列表里的历史号码就消失了。可以判定历史号码就放在这个文件里。用VC的二进制打开它,里面是一堆乱七八糟的0和1。刚才新加了一个号码后这个文件增加了58字节,现在这个文件大的大小是108字节,约为50*4+8。我有用注册向导新登录一个号码,回来一看,158字节,可以看出这个号码占用了50字节。假设这50字节是连续的,那多余的8字节必然在头或尾,作用要吗是作统计,要吗是做效验和。经过笔者诸多的排查,判断是在头。于是把8字节的文件头去掉后,剩余150字节每50字节一份很容易看出规律来,每份都可以隐约看出写规律。如图:


 

经过笔者几番努力,小总结了写规律:文件的前8字节为总述字段,其中地5个字节的内容是登录框中号码的数量,其他字节内容固定。随后的每50个字节描述一个号码的信息,都是以09  2d开头,以04  00  00  00  0x  00  00  00结尾的,其中x表示的是前次登录形式,隐身为1,否则为0。可以发现每个号码不同的只有9e  8d  af  93  94

  04  00  00  00后的4个字节,假设这4个字节存放的是QQ号码,对逐个字节进行测试,就是分4次,每次把每个字节的内容增加1,结果发现这4个字节正是存放号码的,而且是以UINT形式存放。但字节存放是颠倒的,即高字节在后,低字节在前。

尝试将此处换为另一个号码启动QQ虽然发现登录框中出现了这个号码,但是下面的登录按扭变成了注册向导,也就是不允许登录。接着本人强行将一个号码的目录名改成这个号码,启动QQ这次可以登录了但提示密码错。由此可知,QQ的主程序读取了同号码文件夹里的东西。这些东西与号码和密码有关。

进入号码文件夹,将各个文件一一改名登录,发现ewh.db和msgex.db这两个文件任何一个文件改名后无法本地登录,user.db改名后可以本地登录但好友列表是空的,note.db改名后可以本地登录但消息系统是空的。所以和号码密码有关的文件就是ewh.db和msgex.db。从名字可以知道,后者是存放的是聊天记录。

集中精力搞定ewh.db里密码验证信息。

ewh.db只有60字节,用VC打开多个号码的ewh.db文件,这样方便比较异同,很明显的发现60字节里大多数都是固定的,也就是与密码无关的,只有17,18,19字节,31—46字节是不同的,而且最后4个字节就是QQ号码的UINT形式保存,和在Loginuinlist.dat文件里的一样。

希望Tencent是用明文保存密码,最好连特征植方式都不用,那就HAPPY了!但是如果登录方式是号码+密码一起运算那就没那么简单了。既然都到了这一步一定要赌一赌。结果我赢了,登录通过了!哈哈但是回到了登录界面,本地登录没成功。不过没关系可能在另外的文件(Loginuinlist.dat)里有些验证不一致,只要没有报密码错就可以了。到此可明白一点就是本地登录四硝烟密码没有号码参与运算,仅是对密码运算,一个简单的替换就可以搞定密码。前面已经查出ewh.db中17,18,19,31—46字节与密码可能与密码有关,将它门当中任意一个字节改变都会报密码错,这些字节都与密码有关。重装一遍QQ,新登录这个号,发现ewh.db一点也没变,相同的密码会计算出相同的特征值,保存相同的位置。这个方法处了让Hacker没那么容易拿到明文密码以外,没什么安全性可言。我当时手里没什么接码的

首先申明,笔者写这篇文章并非针对某人或某物,只是提出当前在广大用户以为安全的某些环境下,存在着一些潜在的危机。目的在于指出漏洞,交流技术,望高手指点。

 


 

js正则表达式用法实例:验证邮箱格式、密码复杂度、手机号码、QQ号码

js正则表达式用法实例:验证邮箱格式、密码复杂度、手机号码、QQ号码 源代码下载地址:http://www.zuidaima.com/share/1762404461333504.htm...
  • springmvc_freemarker
  • springmvc_freemarker
  • 2016年03月18日 09:51
  • 1145

腾讯webqq最新密码加密算法,hash算法

经常在做webqq机器人,但是最头痛的问题就是腾讯经常加一些验证串来防止robot,现在共享出最新的腾讯密码加密算法和hash 算法 hash算法 def webqq_hash(i, a): ...
  • zhujunxxxxx
  • zhujunxxxxx
  • 2014年06月30日 20:56
  • 7365

js正则表达式:验证邮箱格式、密码复杂度、手机号码、QQ号码

$(function () {            $("input[name='sub']").on("click", function () {                if (!isEm...
  • hfmbook
  • hfmbook
  • 2014年07月09日 16:47
  • 26521

关于社工高强度的QQ密码

想必很多偷密码的人对一个高强度密保的QQ 都无能为力,(他的密保程度:手机验证,手机令牌,邮箱独立密码,3个密保)我要说的经历就是攻破这个高密保QQ  大家不要笑话哈,我文采很差,说的不好大家尽管调戏...
  • u012762797
  • u012762797
  • 2014年06月08日 00:52
  • 1247

键盘记录器,可截获到 QQ 的密码

虽然 QQ 的密码框经过了特殊的处理,但是通过一些特殊手段仍然可以得到输入过程中键盘输入的内容。代码仅供娱乐使用!...
  • Henzox
  • Henzox
  • 2014年06月25日 08:57
  • 10976

常见的 JQuery 正则表达式以及验证方法

常见的正则表达式 一、校验数字的表达式  1 数字:^[0-9]*$  2 n位的数字:^\d{n}$  3 至少n位的数字:^\d{n,}$  4 m-n位的数字:^\d{m,n}$  5 零和非...
  • Jasyca503
  • Jasyca503
  • 2016年09月06日 14:49
  • 3526

SQL注入全过程,含实例初步注入--绕过验证,直接登录安全较低公司网站登陆框如下:可以看到除了账号密码之外

SQL注入全过程,含实例初步注入--绕过验证,直接登录安全较低公司网站登陆框如下:...
  • qq_24884955
  • qq_24884955
  • 2017年04月13日 10:28
  • 1185

JS的常用正则表达式 验证密码

JS的正则表达式强:字母+数字+特殊字符   ^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@...
  • x_i_y_u_e
  • x_i_y_u_e
  • 2015年08月17日 19:31
  • 25812

简易QQ登录实现账号密码保存

package com.itheima.qqlogin; import java.io.BufferedReader; import java.io.File; import java.io.Fi...
  • wyqihsj
  • wyqihsj
  • 2015年11月03日 21:10
  • 1189

QQ密码输入框(防键盘钩子)原理分析

1.网上看到的一些防星号查看器的代码大多是在后台维护一个字符串(真实的密码),界面则不显示真实的密码,这样做,维护那个字符串很费事,就因为我之前那样做过,我才在看到WM_GETTEXT后想要重做一个 ...
  • zhubosa
  • zhubosa
  • 2016年04月20日 11:51
  • 2300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:躲开QQ的本地密码验证
举报原因:
原因补充:

(最多只允许输入30个字)