MSN 密码获取
来源:互联网 发布:中银淘宝校园卡能干嘛 编辑:程序博客网 时间:2024/06/06 09:01
**
** Windows Live Messenger v8.0 Password Finder for Windows XP & 2003
** (Compiled-VC++ 6.0 SP6, tested on WinXP SP2, Windows Live Messenger
8.0.0812.00)
** - Gregory R. Panakkal
** http://www.crapware.tk/
** http://www.infogreg.com/
**/
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
//Following definitions taken from wincred.h
//[available only in Oct 2002 MS Platform SDK / LCC-Win32 Includes]
typedef struct _CREDENTIAL_ATTRIBUTEA {
LPSTR Keyword;
DWORD Flags;
DWORD ValueSize;
LPBYTE Value;
}
CREDENTIAL_ATTRIBUTEA,*PCREDENTIAL_ATTRIBUTEA;
typedef struct _CREDENTIALA {
DWORD Flags;
DWORD Type;
LPSTR TargetName;
LPSTR Comment;
FILETIME LastWritten;
DWORD CredentialBlobSize;
LPBYTE CredentialBlob;
DWORD Persist;
DWORD AttributeCount;
PCREDENTIAL_ATTRIBUTEA Attributes;
LPSTR TargetAlias;
LPSTR UserName;
} CREDENTIALA,*PCREDENTIALA;
typedef CREDENTIALA CREDENTIAL;
typedef PCREDENTIALA PCREDENTIAL;
////////////////////////////////////////////////////////////////////
typedef BOOL (WINAPI *typeCredEnumerate)(LPCTSTR, DWORD, DWORD *,
PCREDENTIAL **);
typedef VOID (WINAPI *typeCredFree)(PVOID);
typeCredEnumerate pfCredEnumerate = NULL;
typeCredFree pfCredFree = NULL;
////////////////////////////////////////////////////////////////////
void showBanner()
{
_tprintf(_T("Windows Live Messenger Password Finder for Windows XP &
2003/n"));
_tprintf(_T(" - Gregory R. Panakkal, http://www.infogreg.com
/n/n"));
}
////////////////////////////////////////////////////////////////////
int main()
{
PCREDENTIAL *CredentialCollection = NULL;
HMODULE hAdvapi32DLL = NULL;
DWORD dwCount = 0;
DWORD dwTempIndex = 0;
BOOL bOK = FALSE;
showBanner();
do
{
hAdvapi32DLL = LoadLibrary(_T("advapi32.dll"));
if(NULL == hAdvapi32DLL)
{
_tprintf(_T("Error loading advapi32.dll/n"));
break;
}
#ifdef _UNICODE
pfCredEnumerate =
(typeCredEnumerate)GetProcAddress(hAdvapi32DLL,
"CredEnumerateW");
#else
pfCredEnumerate =
(typeCredEnumerate)GetProcAddress(hAdvapi32DLL,
"CredEnumerateA");
#endif
pfCredFree = (typeCredFree)GetProcAddress(hAdvapi32DLL,
"CredFree");
if( pfCredEnumerate == NULL||
pfCredFree == NULL )
{
_tprintf(_T("Error loading Cred APIs/n"));
break;
}
//Get an array of 'credential', satisfying the filter
bOK = pfCredEnumerate(
_T("WindowsLive:name=*"),
0,
&dwCount,
&CredentialCollection
);
if(FALSE == bOK)
{
_tprintf(_T("Error enumerating credentials/n"));
break;
}
for(dwTempIndex=0; dwTempIndex<dwCount; dwTempIndex++)
{
_tprintf(
_T("Username : %s/n"),
CredentialCollection[dwTempIndex]->UserName
);
_tprintf(
_T("Password : %s/n/n"),
CredentialCollection[dwTempIndex]->CredentialBlob
);
}
//Free credential collection
pfCredFree(CredentialCollection);
} while(false);
//Free lib
if(NULL != hAdvapi32DLL)
{
FreeLibrary(hAdvapi32DLL);
}
return TRUE;
}
/*
* MSN Messenger v7.5 Password Decrypter Source Code for Windows XP & 2003
* (Compiled - VC++ 2005, Tested on WinXP SP2, MSN Messenger v7.5.0324)
* - Gregory R. Panakkal
* http://www.infogreg.com/
*/
#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>
#include <WinCred.h>
#include <tchar.h>
#pragma comment(lib, "Crypt32.lib")
void showBanner()
{
_tprintf(_T("MSN Messenger v7.5 Password Decrypter for Windows XP/2003/n"));
_tprintf(_T(" - Gregory R. Panakkal, http://www.infogreg.com /n/n"));
}
////////////////////////////////////////////////////////////////////
int main()
{
PCREDENTIAL* CredentialCollection = NULL;
DATA_BLOB blobCrypt;
DATA_BLOB blobPlainText;
DATA_BLOB blobEntropy;
DATA_BLOB blobDynEntropy;
HKEY hKeyDynSalt = NULL;
HKEY hKeyCreds = NULL;
HKEY hKeyUserCred = NULL;
DWORD dwRet = 0;
DWORD dwType = 0;
DWORD dwDataSize = 0;
DWORD dwTemp = 0;
PBYTE pDynamicSalt = NULL;
PBYTE pEncPassword = NULL;
TCHAR szMsgrUserName[MAX_PATH];
DWORD dwCount = 0;
REGSAM RegSAM = KEY_READ;
WCHAR szEntropy[] = L"%GKP$^%^&LL(%^$^O&TR$^%^GV6;lxzd";
ZeroMemory(&blobCrypt, sizeof(blobCrypt) );
ZeroMemory(&blobPlainText, sizeof(blobPlainText) );
ZeroMemory(&blobEntropy, sizeof(blobEntropy) );
ZeroMemory(&blobDynEntropy, sizeof(blobDynEntropy) );
showBanner();
do
{
//
// Allocate some memory!
//
pEncPassword = (PBYTE)malloc( MAX_PATH );
if(NULL == pEncPassword)
{
_tprintf(_T("ERROR: malloc failed!"));
break;
}
//
// Fetch & Calculate Dynamic Salt
//
dwRet = RegOpenKeyEx(
HKEY_CURRENT_USER,
_T("SOFTWARE//MICROSOFT//IdentityCRL//Dynamic Salt"),
0,
RegSAM,
&hKeyDynSalt
);
if(ERROR_SUCCESS != dwRet)
{
_tprintf(_T("ERROR: Cannot opening dynamic salt reg key!"));
break;
}
dwTemp = sizeof(dwDataSize);
dwRet = RegQueryValueEx(
hKeyDynSalt,
_T("Size"),
NULL,
&dwType,
(LPBYTE)&dwDataSize,
&dwTemp
);
if( ERROR_SUCCESS != dwRet ||
REG_DWORD != dwType ||
sizeof(DWORD) != dwTemp )
{
_tprintf(_T("ERROR: Cannot fetch dynamic salt data size!"));
break;
}
pDynamicSalt = (PBYTE)malloc( dwDataSize );
if(NULL == pDynamicSalt)
{
_tprintf(_T("ERROR: malloc failed!"));
break;
}
dwTemp = dwDataSize;
dwRet = RegQueryValueEx(
hKeyDynSalt,
_T("Value"),
NULL,
&dwType,
(LPBYTE)pDynamicSalt,
&dwTemp);
if( ERROR_SUCCESS != dwRet ||
REG_BINARY != dwType ||
dwDataSize != dwTemp )
{
_tprintf(_T("ERROR: Cannot fetch dynamic salt data!"));
break;
}
//Initial Crypt Blob
blobCrypt.pbData = (LPBYTE)pDynamicSalt;
blobCrypt.cbData = dwDataSize;
//Initialize Entropy Blob
blobEntropy.pbData = (LPBYTE)&szEntropy;
blobEntropy.cbData = 0x40;
if(FALSE == CryptUnprotectData(
&blobCrypt,
NULL,
&blobEntropy,
NULL,
NULL,
1,
&blobPlainText
))
{
//something
break;
}
//
// Construct the 128 Char long Entropy value
//
memcpy(
blobCrypt.pbData,
blobEntropy.pbData, blobEntropy.cbData
);
memcpy(
blobCrypt.pbData + blobEntropy.cbData,
blobPlainText.pbData,
blobPlainText.cbData
);
blobEntropy.cbData += blobPlainText.cbData;
blobEntropy.pbData = blobCrypt.pbData;
//Free memory & Zero-off Blob structure
LocalFree(blobPlainText.pbData);
ZeroMemory(&blobPlainText, sizeof(blobPlainText));
//
// Enumerate all the stored credentials in the registry
//
dwRet = RegOpenKeyEx(
HKEY_CURRENT_USER,
_T("SOFTWARE//MICROSOFT//IdentityCRL//Creds"),
0,
RegSAM,
&hKeyCreds
);
if(ERROR_SUCCESS != dwRet)
{
_tprintf(_T("ERROR: Cannot opening credential key!"));
break;
}
while( true )
{
dwRet = RegEnumKey(
hKeyCreds,
dwCount,
(LPTSTR)&szMsgrUserName,
MAX_PATH
);
if( ERROR_SUCCESS != dwRet )
{
break;
}
dwRet = RegOpenKeyEx(
hKeyCreds,
szMsgrUserName,
0,
RegSAM,
&hKeyUserCred
);
if(ERROR_SUCCESS == dwRet)
{
dwTemp = MAX_PATH;
//
// Read encrypted passsword
//
dwRet = RegQueryValueEx(
hKeyUserCred,
_T("ps:password"),
NULL,
&dwType,
(LPBYTE)pEncPassword,
&dwTemp);
if( ERROR_SUCCESS == dwRet &&
REG_BINARY == dwType )
{
blobCrypt.pbData = (LPBYTE)pEncPassword;
blobCrypt.cbData = dwTemp;
//
// Decrypt & Display Credential Info!
//
if(TRUE == CryptUnprotectData(
&blobCrypt,
NULL,
&blobEntropy,
NULL,
NULL,
1,
&blobPlainText
))
{
_tprintf(
_T("Username : %s/nPassword : %ws/n/n"),
szMsgrUserName,
blobPlainText.pbData
);
LocalFree(blobPlainText.pbData);
}
}
//Close User Cred Key
RegCloseKey(hKeyUserCred);
hKeyUserCred = NULL;
}
dwCount++;
}
}while(false);
if(NULL != pDynamicSalt)
{
free(pDynamicSalt);
}
if(NULL != pEncPassword)
{
free(pEncPassword);
}
if(NULL != hKeyCreds)
{
RegCloseKey(hKeyCreds);
}
if(NULL != hKeyDynSalt)
{
RegCloseKey(hKeyDynSalt);
}
}
- MSN 密码获取
- MSN 密码获取
- MSN 密码获取
- 通过 DPAPI 获取当前帐号保存的 MSN Messenger 密码
- 通过 DPAPI 获取当前帐号保存的 MSN Messenger 密码
- 通过 DPAPI 获取当前帐号保存的 MSN Messenger 密码
- 修改MSN密码
- msn改密码
- msn如何修改密码
- msn 修改密码,msn 改密码的方法,MSN 密码破解,MSN密码保护软件-Alasend下载
- msn 修改密码,msn 改密码的方法
- Android获取MSN邮件列表
- java 获取 MSN用户列表
- Gaim 不能登录 MSN,原来密码太长
- 关于MSN的密码验证漏洞
- 新版php获取MSN好友列表,邀请MSN好友
- 转一个获取MSN口令的代码
- 如何获取msn的好友列表
- 试验网站#3搜索引擎优化收录情况记录2007-9-6
- SQL server锁的机制
- SQL事务概念
- 数据库程序设计-SQL Server 2000数据库程序设计
- 一日一摸之第二日:原型模式
- MSN 密码获取
- topcoder problem - DifDif
- 修改引入表打造穿透KIS6的下载者
- 让你在网吧玩霸王网
- WinRAR 7z压缩包处理溢出分析和利用
- The C++ Programming Language 读书笔记 ch12(1)
- MS-07004分析和利用
- 引用--编程之道
- flash背景