驱动管家:安全、高效、精准的专业驱动下载站!

MSNMessenger口令怎么来的?还原演示过程是什么

2018-03-15 18:08:33责编:llp   来源:驱动管家     人气:

/* MSNMessenger的口令是经过DPAPI加密后保存在注册表中的

MSNMessenger口令怎么来的?还原演示过程是什么

* 这个程序演示解码过程

* tombkeeper[0x40]nsfocus[0x2e]com

* tombkeeper[0x40]xfocus[0x2e]net

* 2004.08.11

*/ #include#pragma comment(lib, "Advapi32.lib")

#define FCHK(a) if (!(a)) {printf(#a " failed\n"); return 0;}

typedef struct _CRYPTOAPI_BLOB {

DWORD cbData;

BYTE* pbData;

} DATA_BLOB;

typedef struct _CRYPTPROTECT_PROMPTSTRUCT {

DWORD cbSize;

DWORD dwPromptFlags;

HWND hwndApp;

LPCWSTR szPrompt;

} CRYPTPROTECT_PROMPTSTRUCT, *PCRYPTPROTECT_PROMPTSTRUCT;

typedef BOOL (WINAPI *PCryptUnprotectData)(

DATA_BLOB* pDataIn,

LPWSTR* ppszDataDescr,

DATA_BLOB* pOptionalEntropy,

PVOID pvReserved,

CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct,

DWORD dwFlags,

DATA_BLOB* pDataOut

);

PCryptUnprotectData CryptUnprotectData = NULL; int main(void)

{

int ret;

HMODULE hNtdll;

HKEY hKey;

DWORD dwType;

char Data[0x100] = {0};

DWORD dwSize;

DATA_BLOB DataIn;

DATA_BLOB DataOut;

ret = RegOpenKeyEx

(

HKEY_CURRENT_USER,

"Software\\Microsoft\\MSNMessenger",

0,

KEY_READ,

&hKey

);

if( ret != ERROR_SUCCESS ) return 1;

ret = RegQueryValueEx

(

hKey,

"Password.NET Messenger Service",

NULL,

&dwType,

Data,

&dwSize

);

if( ret != ERROR_SUCCESS ) return 1;

FCHK ((hNtdll = LoadLibrary ("Crypt32.dll")) != NULL);

FCHK ((CryptUnprotectData = (PCryptUnprotectData)

GetProcAddress (hNtdll, "CryptUnprotectData")) != NULL);

DataIn.pbData = Data 2; //口令密文从第二位开始

DataIn.cbData = dwSize-2;

CryptUnprotectData

(

&DataIn,

NULL,

NULL,

NULL,

NULL,

1,

&DataOut

);

base64_decode (DataOut.pbData, Data, strlen(DataOut.pbData));

printf ( "MSN Password: %s\n", Data);

return 0;

}

//copied from GNU libc - libc/resolv/base64.c

int base64_decode (char const *src, char *target, size_t targsize)

{

static const char Base64[] =

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /";

static const char Pad64 = ’=’;

int tarindex, state, ch;

char *pos;

state = 0;

tarindex = 0;

while ((ch = *src) != ’\0’)

{

if (isspace (ch))

continue;

if (ch == Pad64)

break;

pos = strchr (Base64, ch);

if (pos == 0)

return (-1);

switch (state)

{

case 0:

if (target)

{

if ((size_t) tarindex >= targsize)

return (-1);

target[tarindex] = (pos - Base64) << 2;

}

state = 1;

break;

case 1:

if (target)

{

if ((size_t) tarindex 1 >= targsize)

return (-1);

target[tarindex] |= (pos - Base64) >>4;

target[tarindex 1] = ((pos - Base64) & 0x0f) << 4;

}

tarindex;

state = 2;

break;

case 2:

if (target)

{

if ((size_t) tarindex 1 >= targsize)

return (-1);

target[tarindex] |= (pos - Base64) >>2;

target[tarindex 1] = ((pos - Base64) & 0x03) << 6;

}

tarindex;

state = 3;

break;

case 3:

if (target)

{

if ((size_t) tarindex >= targsize)

return (-1);

target[tarindex] |= (pos - Base64);

}

tarindex;

state = 0;

break;

default:

abort ();

}

}

/*

* We are done decoding Base-64 chars.Let’s see if we ended

* on a byte boundary, and/or with erroneous trailing characters.

*/

if (ch == Pad64)

{

ch = *src;

switch (state)

{

case 0:

case 1:

return (-1);

case 2:

for ((void) NULL; ch != ’\0’; ch = *src)

if (!isspace (ch))

break;

if (ch != Pad64)

return (-1);

ch = *src;

case 3:

/*

* We know this char is an =.Is there anything but

* whitespace after it?

*/

for ((void) NULL; ch != ’\0’; ch = *src)

if (!isspace (ch))

return (-1);

/*

* Now make sure for cases 2 and 3 that the "extra"

* bits that slopped past the last full byte were

* zeros.If we don’t check them, they become a

* subliminal channel.

*/

if (target && target[tarindex] != 0)

return (-1);

}

}

else

{

/*

* We ended by seeing the end of the string.Make sure we

* have no partial bytes lying around.

*/

if (state != 0)

return (-1);

}

return (tarindex);

}

  • beyondtrust公司CTO教你抵御网站攻击?

    beyondtrust公司CTO教你抵御网站攻击?

    目前IT面临的主要困境是:安全工具就像一个黑洞,吸走企业的时间和金钱,以及企业应该如何适当地保护企业的信息系统和资产。强大的防御并不一定意味着高成本,企业应该从评估公开信息开始,并想办法保护这些公开

    详情2018-02-28 14:55:47责编:llp   来源:驱动管家     
  • 黑客破解散列密码很容易!散列口令是不是安全呢?

    黑客破解散列密码很容易!散列口令是不是安全呢?

    杀软公司的研究信息安全专业人员称,黑客破解密码就像我们当事人使用起来那么直接、简单。Avast的Antonín Hýža从事多年的密码安全研究工作,收集了近40000个密码样本,发现这些样本中只有10%的密

    详情2018-03-14 11:02:35责编:llp   来源:驱动管家     
  • u盘病毒的分析 u盘病毒的应对策略

    u盘病毒的分析 u盘病毒的应对策略

    分析: U盘对病毒的传播要借助autorun inf文件的帮助,病毒首先把自身复制到u盘,然后创建一个autorun inf,在你双击u盘时,会根据autorun inf中的设置去运行u盘中的病毒,我们只要可以阻止autorun inf文件的创建

    详情2018-01-06 14:21:52责编:llp   来源:驱动管家     
  • 怎么检测网站存在注入漏洞?防注入有哪些解决办法?

    怎么检测网站存在注入漏洞?防注入有哪些解决办法?

    1、加入单引号 ’提交,结果:如果出现错误提示,则该网站可能就存在注入漏洞。2、数字型判断是否有注入; 语句:and 1=1 ;and 1=2 (经典)、& 39; and & 39;1& 39;=1(字符型)结果:分别返回不同的页

    详情2018-03-02 09:46:57责编:llp   来源:驱动管家     
  • 海康威视远程监控存在的xxe漏洞分析研究报告

    海康威视远程监控存在的xxe漏洞分析研究报告

    海康威视是一个致力于不断提升视频处理技术和视频分析技术,面向全球提供领先的监控产品、技术解决方案与专业优质服务,物联网发展和安全威胁总是如影随形。两个月前,我想研究一下网络摄像机,然后就在亚马逊上

    详情2018-01-15 15:26:02责编:llp   来源:驱动管家     
  • 如何进行qq密保设置?qq密保令牌不能使用怎么办?

    如何进行qq密保设置?qq密保令牌不能使用怎么办?

    腾讯公司在2009年5月7日上午9点推出全新的QQ安全中心,特别推出密保令牌服务。密保令牌是二代密保其中的一个密保手段,需要安装在手机上,可以显示6位动态密码。当您成功绑定密保令牌后,令牌将会出现在“统一安

    详情2018-01-17 12:20:54责编:llp   来源:驱动管家     
  • fastcgi解析漏洞怎么修复?nginx处理fastcgi解析漏洞的方法

    fastcgi解析漏洞怎么修复?nginx处理fastcgi解析漏洞的方法

    FASTCGI是和HTTP协议类似的概念。无非就是规定了在同一个TCP连接里怎么同时传多个HTTP连接。这实际上导致了个问题,有个HTTP连接传个大文件不肯让出FASTCGI连接,在同一个FASTCGI连接里的其他HTTP连接就傻了。Fas

    详情2018-02-01 20:00:14责编:llp   来源:驱动管家     
  • serv-u 教程 serv-u 6.0版本提权的新方法

    serv-u 教程 serv-u 6.0版本提权的新方法

    适用环境:服务器禁用FSO,关掉Wscript shelll,没有执行权限。限制:没有更改管理员的密码,或者破解出了Serv-U的管理员的密码。Serv-U默认用户名:localadministrator 密码: |@$ak |k;0@p下面用MSWinsock。Wi

    详情2018-01-25 17:41:38责编:llp   来源:驱动管家     
  • 黑客常用哪些工具?这些工具有什么作用?

    黑客常用哪些工具?这些工具有什么作用?

    webadv:针对iis+sp3的溢出成功率很高(溢出后system权限!)ipscan:大范围网段快速ipc猜解svc:远程安装 删除Win2k服务3389 vbs:远程安装Win2k终端服务不需i386arpsniffer:arp环境sniffer(需要Winpcap2 1以上)as

    详情2018-02-10 18:57:50责编:llp   来源:驱动管家     
  • 加密方案可以分为哪两类?加密方案涉及的主要技术

    加密方案可以分为哪两类?加密方案涉及的主要技术

    当前软件加密方法多种多样,已经不可能找出一种分类方法来把各种加密方案很好地区分开来。基本上来说可以分为依赖特定硬件的加密方案和不依赖硬件的加密方案。一、依赖硬件的加密方案软盘加密这是在计算机上最为

    详情2018-02-06 18:01:57责编:llp   来源:驱动管家