浪漫部落 - 浪漫森林

标题: 学会QQ密码的算法~你就可以破解任何一个QQ密码 [打印本页]

作者: fireboy38    时间: 2008-4-30 23:06
标题: 学会QQ密码的算法~你就可以破解任何一个QQ密码
在QQ对应号码目录下user.db文件从800h起20字节为与密码相关数据,其中后16个字节和Hash后摘要有关.这20个字节后4个字节是QQ号码。

下列是一些常用的Hash算法(从微软加密头文件中提取出来的)

#define CALG_MD2 1 MD2算法

#define CALG_MD4 2 MD4算法

#define CALG_MD5 3 MD5算法

#define CALG_SHA 4 SHA算法

#define CALG_SHA1 4 SHA1算法

#define CALG_MAC 5 MAC算法

#define ALG_SID_RIPEMD 6 RIPEMD算法

#define ALG_SID_RIPEMD160 7 RIPEMD160算法

#define ALG_SID_SSL3SHAMD5 8 SSL3SHAMD5算法

#define CALG_HMAC 9 HMAC算法


而MD5算法中需要使用下面几个初始值

context->state[0] = 0x67452301;

context->state[1] = 0xefcdab89;

context->state[2] = 0x98badcfe;

context->state[3] = 0x10325476;

呵呵,在QQ中一搜索,果然几个特征值赫然在目。但是显然QQ使用了上述20个字节中的前四个字节对MD5密文又做了处理,我跟了两天还是没有头绪(头晕脑胀)。但是我发现把这四个字节改成00 00 00 00,然后登陆输入正确密码,仍然会提示密码不一致是否到服务器验证,选择是,然后验证成功后,这20个字节的后16个字节恰好就是密码的MD5密文。有兴趣的高手可以继续看看奥(其中密码比较函数地址为:004A7E0C)

例:

1B D5 01 00 5D D7 87 19 0D 92 6D E2 0A 56 E9 19 63 0F 5A E1 DF CA 20 05

DF CA 20 05即是我的QQ号。不过可不要暴力破解我的奥:)

1B D5 01 00 5D D7 87 19 0D 92 6D E2 0A 56 E9 19 63 0F 5A E1就是和口令相关的数据

如果把1B D5 01 00改为00 00 00 00,然后按上述步骤登陆后,5D D7 87 19 0D 92 6D E2 0A 56 E9 19 63 0F 5A E1即变为口令的MD5密文。


算法源代码如下:

头文件:


// Decrypt.h: interface for the CDecrypt class.

//

//////////////////////////////////////////////////////////////////////

#define AFX_DECRYPT_H__916D97B8_C120_4435_BE23_2CF35B8763A2__INCLUDED_


#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000


#define _WIN32_WINNT 0x0400

#include <afxpriv.h>

#include <Wincrypt.h>


class CDecrypt

{

public:

BOOL EncryptMessage(const TCHAR *Message,TCHAR *pHashData,int *pHashLen,int Algorithm);

CDecrypt();

virtual ~CDecrypt();


};


#endif // !defined(AFX_DECRYPT_H__916D97B8_C120_4435_BE23_2CF35B8763A2__INCLUDED_)


CPP文件:

// Decrypt.cpp: implementation of the CDecrypt class.

//

//////////////////////////////////////////////////////////////////////


#include stdafx.h

#include Decrypt.h


#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif


//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////


CDecrypt::CDecrypt()

{


}


CDecrypt::~CDecrypt()

{


}


BOOL CDecrypt::EncryptMessage(const TCHAR *Message,TCHAR *pHashData,int *pHashLen,int Algorithm)

{

BOOL bResult = TRUE;


HCRYPTPROV hProv = NULL;

HCRYPTKEY hKey = NULL;

HCRYPTKEY hXchgKey = NULL;

HCRYPTHASH hHash = NULL;

DWORD dwLength;

// Get handle to user default provider.

if (CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0))

{

// Create hash object.

if (CryptCreateHash(hProv, Algorithm, 0, 0, &hHash))

{

// Hash password string.

dwLength = sizeof(TCHAR)*_tcslen(Message);

if (CryptHashData(hHash, (BYTE *)Message, dwLength, 0))

{

CryptGetHashParam(hHash,2,(BYTE*)pHashData,(DWORD*)pHashLen,0);

}

else

{

// Error during CryptHashData!

bResult = FALSE;

}

CryptDestroyHash(hHash); // Destroy session key.

}

else

{

// Error during CryptCreateHash!

bResult = FALSE;

}

CryptReleaseContext(hProv, 0);

}


return bResult;

}



使用:

TCHAR Hash[255];

int Len=-1;

CString Message=Your Message;

m_decrypt.EncryptMessage((LPCSTR)(Message),Hash,&Len,CALG_MD5);

Hash中存放的就是MD5密文。你可以使用上述算法

#define CALG_MD2 1 MD2算法

#define CALG_MD4 2 MD4算法

#define CALG_MD5 3 MD5算法

#define CALG_SHA 4 SHA算法

来替换CALG_MD5参数.
作者: 々诗人々    时间: 2008-5-1 00:48
看天书
不懂``
作者: Ayx抽刀断水    时间: 2008-5-2 20:42
又是火星文.....为了突出学问大么
作者: prom1se    时间: 2008-5-3 18:42


我记得好象没有那么复杂的。
作者: Ayx+心酸    时间: 2008-5-4 15:50
那个~~
是不是天书啊??
看晕忽了

[发帖际遇]: Ayx+心酸诚心感动佛祖,接受点化,继续烧香花费金币2.

作者: Ayx贱男    时间: 2008-5-4 18:56
哎,我们这些“文盲”
作者: Ayx幻灵    时间: 2008-5-4 23:00
标题: .........................
我晕 外新人哈

[发帖际遇]: Ayx幻灵黑心商人携款潜逃,奋勇擒获,奖励金币18.

作者: Ayx月吨夏若    时间: 2008-5-5 10:09
  楼主,我编程学的不是很好,好多地方都看不懂的,能否写简单点

[发帖际遇]: Ayx月吨夏若贩卖军火, 不小心赚到佣金金币6.

作者: 狼风    时间: 2008-5-5 22:47
一样 `不懂`  涉及太专业了`

[发帖际遇]: 狼风在路边摆摊子, 赚到金币3.

作者: fuhaichuan    时间: 2008-5-8 13:49
看不懂!!再说了,怎么去看别人的电脑里的密码呢?
作者: shaiya    时间: 2008-5-8 15:17
哈希算法,不过还是没有谁能把MD5码翻译成密码的
作者: _____翎    时间: 2008-5-29 10:56
==============================
一个个字母拆开来看还可以···
作者: c57630980    时间: 2008-6-10 08:15
天才。。。。。。。。。。。。。。。。。。佩服
作者: Ayx梦命神    时间: 2008-6-10 16:53
神啊 救救我吧
作者: Ayx魔爱    时间: 2008-6-10 17:12
看不懂,看着头晕.
作者: love小爱    时间: 2008-6-14 11:13
标题: 回复 楼主 的帖子
什么都不懂 等于白说
作者: zhankun315    时间: 2009-3-11 20:15
不懂呀

作者: 孤独的牛X人    时间: 2009-3-12 20:47
不懂...................................也学不会..
作者: chenwang6823    时间: 2009-3-13 02:38
我晕``这么复杂``看就看不懂
作者: cyrist    时间: 2009-3-13 11:29
角动量深刻房间里的萨芬的身份
作者: 浪漫♂绝版    时间: 2009-3-14 09:09
哎,我们这些“文盲”
作者: 106153315    时间: 2009-3-14 12:40
你在搞笑哟......不会写程序能看懂这个嘛




欢迎光临 浪漫部落 - 浪漫森林 (http://bbs.weet.com.cn/) Powered by Discuz! X3