发新话题
打印

[翻译]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版权所有,转载请注明版权
信息来源:邪恶八进制信息安全团队(www.eviloctal.com
  上个月本本去送修了,我把MSN密码保存在上面,结果拿回来后我忘了密码,去网上寻了一晚上都没有合适的MSN本地密码读取软件,最可气的是找到一些小软件密码超过10位居然经收15$,不过还好,终于被我找到MSN本地密码读取的源码了,支持MSN8.0,方便忘了密码的兄弟们使用,最主要是完全免费:)
Code Language : C++
  1. /**
  2.  ** Windows Live Messenger v8.0 Password Finder for Windows XP & 2003
  3.  ** (Compiled-VC++ 6.0 SP6, tested on WinXP SP2, Windows Live Messenger 8.0.0812.00)
  4.  **   - Gregory R. Panakkal & [email]pt007@vip.sina.com[/email]
  5.  **    [url]http://www.crapware.tk/[/url]
  6.  **    [url]http://www.infogreg.com/[/url]
  7.  **/
  8.  
  9. #define WIN32_LEAN_AND_MEAN //解决error C2011: 'fd_set' : 'struct' type redefinition问题
  10.  
  11. #include <windows.h>
  12. #include <stdio.h>
  13. #include <tchar.h>
  14.  
  15. //Following definitions taken from wincred.h
  16. //[available only in Oct 2002 MS Platform SDK / LCC-Win32 Includes]
  17.  
  18. typedef struct _CREDENTIAL_ATTRIBUTEA {
  19.   LPSTR Keyword;
  20.   DWORD Flags;
  21.   DWORD ValueSize;
  22.   LPBYTE Value;
  23. }
  24. CREDENTIAL_ATTRIBUTEA,*PCREDENTIAL_ATTRIBUTEA;
  25.  
  26. typedef struct _CREDENTIALA {
  27.   DWORD Flags;
  28.   DWORD Type;
  29.   LPSTR TargetName;
  30.   LPSTR Comment;
  31.   FILETIME LastWritten;
  32.   DWORD CredentialBlobSize;
  33.   LPBYTE CredentialBlob;
  34.   DWORD Persist;
  35.   DWORD AttributeCount;
  36.   PCREDENTIAL_ATTRIBUTEA Attributes;
  37.   LPSTR TargetAlias;
  38.   LPSTR UserName;
  39. } CREDENTIALA,*PCREDENTIALA;
  40.  
  41. typedef CREDENTIALA CREDENTIAL;
  42. typedef PCREDENTIALA PCREDENTIAL;
  43.  
  44.  
  45. ////////////////////////////////////////////////////////////////////
  46. //定义typeCredEnumerate为指向函数的指针类型,函数返回值为BOOL型:
  47. typedef BOOL (WINAPI *typeCredEnumerate)(LPCTSTR, DWORD, DWORD *, PCREDENTIAL **);
  48. typedef VOID (WINAPI *typeCredFree)(PVOID);
  49.  
  50. typeCredEnumerate pfCredEnumerate = NULL;
  51. typeCredFree pfCredFree = NULL;
  52.  
  53. ////////////////////////////////////////////////////////////////////
  54.  
  55. void showBanner() //程序说明与程序作者
  56. {
  57.   _tprintf(_T(\"Windows Live Messenger v8.0   Password Finder for Windows XP & 2003\n\"));
  58.  _tprintf(_T(\"  - Gregory R. Panakkal, [url]http://www.infogreg.com[/url] \n\n\"));
  59. }
  60.  
  61. ////////////////////////////////////////////////////////////////////
  62. int main()
  63. {
  64.  PCREDENTIAL *CredentialCollection = NULL;
  65.  HMODULE hAdvapi32DLL = NULL;
  66.  DWORD dwCount = 0;
  67.  DWORD dwTempIndex = 0;
  68.  BOOL bOK = FALSE;
  69.  
  70.  showBanner();
  71.  
  72.  do
  73.  {
  74.    //函数将指定的advapi32.dll映射到调用进程的地址空间中并返回此DLL的句柄:
  75.    hAdvapi32DLL = LoadLibrary(_T(\"advapi32.dll\"));
  76.  
  77.    if(hAdvapi32DLL==NULL)
  78.    {
  79.      _tprintf(_T(\"Error loading advapi32.dll\n\"));
  80.      break;
  81.    }
  82.  
  83. //获取DLL文件中的导出函数或变量的指针地址,使用返回的函数指针来调用DLL函数:
  84. #ifdef _UNICODE
  85.    pfCredEnumerate = (typeCredEnumerate)GetProcAddress(hAdvapi32DLL, \"CredEnumerateW\");
  86. #else
  87.    pfCredEnumerate = (typeCredEnumerate)GetProcAddress(hAdvapi32DLL, \"CredEnumerateA\");
  88. #endif
  89.  
  90.    pfCredFree = (typeCredFree)GetProcAddress(hAdvapi32DLL, \"CredFree\");
  91.  
  92.  
  93.    if( pfCredEnumerate == NULL||
  94.      pfCredFree == NULL )
  95.    {
  96.      _tprintf(_T(\"Error loading Cred APIs\n\"));
  97.      break;
  98.    }
  99.  
  100.  
  101.    //Get an array of 'credential', satisfying the filter
  102.    bOK = pfCredEnumerate(
  103.          _T(\"WindowsLive:name=*\"),//返回以WindowsLive:name=字符串开头的所有字符(*号代表所有字符)
  104.          0,
  105.          &dwCount,//返回在信任数组中的信任个数
  106.          &CredentialCollection //指向信任数组结构的指针
  107.          );
  108.  
  109.  
  110.    if(FALSE == bOK)
  111.    {
  112.      _tprintf(_T(\"Error enumerating credentials\n\"));
  113.      break;
  114.    }
  115.  
  116.  
  117.  
  118.    for(dwTempIndex=0; dwTempIndex<dwCount; dwTempIndex++)
  119.    {      
  120.  
  121.      _tprintf(
  122.        _T(\"Username : %s\n\"),
  123.        CredentialCollection[dwTempIndex]->UserName //取得MSN的登录用户名
  124.        );
  125.      
  126.      _tprintf(
  127.        _T(\"Password : %ws\n\n\"),
  128.        CredentialCollection[dwTempIndex]->CredentialBlob //取得MSN的密码
  129.        );
  130.    }
  131.  
  132.    //Free credential collection
  133.    pfCredFree(CredentialCollection);
  134.  
  135.  
  136.  } while(false);
  137.  
  138.  
  139.  //Free lib
  140.  if(NULL != hAdvapi32DLL)
  141.  {
  142.    FreeLibrary(hAdvapi32DLL);//释放DLL库句柄
  143.  }
  144.  
  145.  return TRUE;
  146. }
Parsed in 0.013 seconds

附件

msn 8.0 password finder.rar (12 KB)

2007-6-1 17:42, 下载次数: 426

每个人都有属于自已的世界,人生因此而精彩,HACK就是我的世界!

TOP

不错的东西,vista+wlm 8.5一样成功了。
btw:这个漂亮的代码效果是论坛自带的么?我怎么一直就不知道。。

TOP

不错,XPSP2 MSN8.1下成功,请问知道怎么样获取MSN的联系人吗?
努力才会成功! http://www.klmyt.net 有空,欢迎光临我的小站

TOP

是用什么来编译呢?

TOP

引用:
引用第3楼zyh5515555于2007-07-13 09:07发表的 :
是用什么来编译呢?
VC++ 6.0 SP6

TOP

我测试了一下,没有成功,可能我的版本高些。但是不知道怎么查看我的版本号

TOP

引用:
引用第5楼xpzhou于2007-08-02 22:00发表的 :
我测试了一下,没有成功,可能我的版本高些。但是不知道怎么查看我的版本号
版本高?我wlm 8.5beta都成功了。。。。。

TOP

不会吧,楼上的,我自己测试了8。0的英文版本和繁体版本,都没有成功啊?

TOP

要看登陆的时候是不是选择了保存密码,如果没有保存就不会获取得到。

TOP

发新话题