MSNMessenger口令怎么来的?还原演示过程是什么
/* MSNMessenger的口令是经过DPAPI加密后保存在注册表中的
* 这个程序演示解码过程
* tombkeeper[0x40]nsfocus[0x2e]com
* tombkeeper[0x40]xfocus[0x2e]net
* 2004.08.11
*/ #include
#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教你抵御网站攻击?
目前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盘对病毒的传播要借助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漏洞分析研究报告
海康威视是一个致力于不断提升视频处理技术和视频分析技术,面向全球提供领先的监控产品、技术解决方案与专业优质服务,物联网发展和安全威胁总是如影随形。两个月前,我想研究一下网络摄像机,然后就在亚马逊上
详情2018-01-15 15:26:02责编:llp 来源:驱动管家如何进行qq密保设置?qq密保令牌不能使用怎么办?
腾讯公司在2009年5月7日上午9点推出全新的QQ安全中心,特别推出密保令牌服务。密保令牌是二代密保其中的一个密保手段,需要安装在手机上,可以显示6位动态密码。当您成功绑定密保令牌后,令牌将会出现在“统一安
详情2018-01-17 12:20:54责编:llp 来源:驱动管家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版本提权的新方法
适用环境:服务器禁用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 来源:驱动管家
- win8系统安装未签名驱动arduino驱动的安装方法
- 安装cad的时候提示已经安装了有什么办法解决
- 教你在wps表格中快速制作男女性别的下拉菜单
- 微星N460GTXHawk支持什么接口输出 DVI转VGA
- 怎么在电脑上直接打开tga格式文件?tga文件介绍
- 微软Windows设备用户增多 份额比去年增长了6.5%创历史新高
- 京东非常愿意回来A股 只要制度允许
- 2018年底比特币可以冲击25000美元
- 美国开展首次氢弹实验“喝彩城堡” 场面十分惊人
- 亚马逊宣布Alexa语音助手将支持语音和视频通话
- 笔记本电脑无法关机的故障有什么办法解决
- BIOS常见字母对照表附带含义解释
- 升级谷歌nexus 4出现哪些漏洞?如何修复?
- 谷歌nexus 5如何截图?2秒搞定!
- IE8浏览器占用资源太大却无法关闭进程的解决方法
- windows7共享失败的解决方法
- 未来企业安全有哪些方面的危机?如何保护网络数据安全?
- 微软win95有哪些中文命令?它们的用法是什么?
- Win8磁盘驱动器号丢失的解决方法
- Win8如何解决性能问题