星号密码查看 – 嗨软 https://ihacksoft.com/archive 分享最好用的常用软件 Tue, 22 Nov 2022 02:41:09 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.9.26 星号密码查看器密码获取原理+防范方法(实例分析) https://ihacksoft.com/archive/1414.html https://ihacksoft.com/archive/1414.html#respond Thu, 20 Jan 2022 08:48:15 +0000 https://ihacksoft.com/?p=2150   几乎所有软件在用户密码输入框都做了手脚,使得用户输入的密码显示为星号“*”,这样就无法使得恶意用户直接看到密码。但是,网上有很多版本的星号密码查看器,可以还原星号为真实的密码。我根据自己的一些想法写了星号查看器的源代码,并且根据其原理做了一些防范手段。使用本源代码写的程序可以查看到很多软件如popo、msn、qq低版本的密码,用户使用VC、VB、BCB编写的软件并且直接使用Edit或者Text组件的话,本代码也可以还原其真实密码。而使用本修改手法以后的软件,使用网上盛传的passxp以及前面的查看方法均失效。好了,进入正题。

密码获取原理、防范方法

一、星号查看器原理

  Edit或者Text组件有一个属性为“PasswordChar”,我们一般就是设置这个属性已实现把真实密码隐藏为星号的,但它们收到EM_GETPASSWORDCHAR消息以后,会返回其PasswordChar属性值,收到EM_SETPASSWORDCHAR消息后会修改其PasswordChar属性值,当然就可以取消原有的“*”设置,而使其显示真实字符,这时再向其发送WM_GETTEXT消息即可得到其真实密码,很多星号密码查看器都是根据这个原理写的。关键代码如下(以BCB为例):

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
POINT P;
::GetCursorPos(&P);//捕捉鼠标屏幕位置
//取得鼠标位置下窗口handle
HWND HWnd = ::WindowFromPoint(P);
//向此窗口送出"取得标题字符串"信息
char buffer[100];

char Char;
Char = SendMessage (HWnd,EM_GETPASSWORDCHAR,0,0);//获取密码字符
PostMessage (HWnd,EM_SETPASSWORDCHAR,0,0);//取消密码字符
Sleep (60);
SendMessage (HWnd,WM_GETTEXT,255,long(buffer));获取真实密码
PostMessage (HWnd,EM_SETPASSWORDCHAR,Char,0);还原密码字符

//显现在Form1窗口的字符串对象上
Caption = buffer;
}

  这里用了一个计时器,每隔100毫秒调用一次上面的代码。

二、防范星号密码查看器

  我们已经看出来了,主要是几个消息坏了我们的大事,如果我们能够屏蔽这几个消息,即可安全隐藏真实密码。网上有很多屏蔽消息的方法,但都显过于复杂,我的思路如下。

  我们可以从TEdit派生一个新的组件,名字为TBugEyesEdit,然后修改其消息定义。在头文件添加代码如下:

public:
        __fastcall TBugEyesEdit(TComponent* Owner);
        void __fastcall BugEyes(TMessage &Msg);//自定义消息处理函数
        BEGIN_MESSAGE_MAP   //消息影射
              VCL_MESSAGE_HANDLER(EM_GETPASSWORDCHAR,TMessage,BugEyes)
              VCL_MESSAGE_HANDLER(WM_GETTEXT,TMessage,BugEyes)
              VCL_MESSAGE_HANDLER(EM_SETPASSWORDCHAR,TMessage,BugEyes)
        END_MESSAGE_MAP(TEdit) //结束消息影射

   然后在其cpp文件中添加如下代码:

void __fastcall TBugEyesEdit::BugEyes(TMessage &Msg)
{
Msg.Result =0;
}

  最后安装这个新的组件,并添加到自己的程序中,设置其PasswordChar属性为“*”,然后运行程序,这时星号密码查看器就失效了,无法再看到真实密码。

  除了上述办法,还有一个常用的,就是利用程序消息泵来屏蔽消息,QQ对星号密码查看器有免疫作用,估计是做了类似处理。

]]>
https://ihacksoft.com/archive/1414.html/feed 0
绿色纯净的星号密码查看小工具 – 亲测完美获取密码明文! https://ihacksoft.com/archive/1410.html https://ihacksoft.com/archive/1410.html#comments Thu, 20 Jan 2022 07:41:36 +0000 https://ihacksoft.com/?p=2146 星号密码查看工具

  我的 FlashFXP 上存了好几个站点的 FTP 用户名和密码,因为密码可以自动保存(以星号*显示),所以每次连接都无需手工输入,非常方便!但是弊端是时间长了连自己都不记得密码了。这个时候就需要一款星号密码查看工具来辅助解决。

  网上找了几款都不太理想,要么不是绿色单文件,要么附带广告信息,索性自己试着做了一款,绿色纯净,仅200K大小。星号密码查看器的工作原理其实并不难,简单地说,就是密码框其实是一个 Windows 的一个子窗口,显示星号是因为密码框设置了 EM_SETPASSWORDCHAR 属性,只要我们把密码框的 EM_SETPASSWORDCHAR 属性给去掉那么密码就会以明文显示了,我们可以给程序发送消息去掉 EM_SETPASSWORDCHAR 属性。

星号密码查看工具

  亲测在 FlashFXP 和 Xshell 上成功获取密码明文!那有人肯定会问了,做为软件开发者,如何预防星号密码被查看?小站接下来马上会另外发文,详细说明获取原理及防范思路。

Note: There is a file embedded within this post, please visit this post to download the file. ]]>
https://ihacksoft.com/archive/1410.html/feed 1