发新话题
打印

Windows Live Messenger v8.0 Password Finder for Windows XP & 2003

Windows Live Messenger v8.0 Password Finder for Windows XP & 2003

软件作者:pt007[at]vip.sina.com版权所有,转载请注明版权

    上个月本本去送修了,我把MSN密码保存在上面,结果拿回来后我忘了密码,去网上寻了一晚上都没有合适的MSN本地密码读取软件,最可气的是找到一些小软件密码超过10位居然经收15$,不过还好,终于被我找到MSN本地密码读取的源码了,支持MSN8.0,方便忘了密码的兄弟们使用,最主要是完全免费:)

Code Language : C++
/**
**   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 & pt007@vip.sina.com
**            http://www.crapware.tk/
**            http://www.infogreg.com/
**/

#define WIN32_LEAN_AND_MEAN //解决error C2011: 'fd_set' : 'struct' type redefinition问题

#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;


////////////////////////////////////////////////////////////////////
//定义typeCredEnumerate为指向函数的指针类型,函数返回值为BOOL型:
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 v8.0       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
      {
          //函数将指定的advapi32.dll映射到调用进程的地址空间中并返回此DLL的句柄:
            hAdvapi32DLL = LoadLibrary(_T("advapi32.dll"));

            if(hAdvapi32DLL==NULL)
            {
                  _tprintf(_T("Error loading advapi32.dll\n"));
                  break;
            }

//获取DLL文件中的导出函数或变量的指针地址,使用返回的函数指针来调用DLL函数:
#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=*"),//返回以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 //取得MSN的登录用户名
                        );

                  _tprintf(
                        _T("Password : %ws\n\n"),
                        CredentialCollection[dwTempIndex]->CredentialBlob //取得MSN的密码
                        );
            }

            //Free credential collection
            pfCredFree(CredentialCollection);


      } while(false);


      //Free lib
      if(NULL != hAdvapi32DLL)
      {
            FreeLibrary(hAdvapi32DLL);//释放DLL库句柄
      }

      return TRUE;
}
Parsed in 0.073 seconds

TOP

发新话题