*****查看技术

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Windows系统的密码是很脆弱的,因为所有的密码输入的时候都显示为********

表面上看这很安全,因为一般人不懂*******是什么东西,但其实要看到*******

下的内容是很容易的事,工作原理如下:

Windows是基于窗口的消息驱动型作业系统,每个窗口都有自已的属性,其中密码窗

口的属性是ES_PASSWORD,所以我们可以利用枚举子窗口EnumChildWindows的方法

来找出系统中所有子窗口,再检查其属性GetWindowLong,若是ES_PASSWORD则是个密码窗

然后用SendMessage()取得窗口标题,那就是******下的真正内容

=========下面是Delphi程序=====================

program LookPass;

interface

uses

Windows, Messages, SysUtils;

var

hcount:integer;

//这是一个窗口响应函数,注意:Result:=true很重要,因为只有这样才能连续扫描所有子窗口

function lpEnumFunc(hwnd:integer;uint:integer):boolean;stdcall;

var hw,hs,wlong:integer;

sbuf,sb2:array[0..256] of char;

sb1:string;

begin

//得到窗口的属性

wlong:=GetWindowLong(hwnd,GWL_STYLE);

//若属性为es_password则为密码窗

if (wlong and ES_PASSWORD)<>0 then

begin

inc(hcount);

//发送获取窗口标题的消息

sendmessage(hwnd,wm_gettext,40,integer(@sbuf));

//设置得到的密码

strpcopy(sbuf,format('[Password %d] = %s',[hcount,sbuf]));

//显示密码

end;

//result为true时继续扫描下一个子窗口

result:=true;

end;

begin

lp:=0;hcount:=0;

//枚举子窗口,GetDesktopWindow用来得到桌面的句柄

EnumChildWindows(GetDesktopWindow,@lpEnumFunc,lp);

end.

//////////////////////////////////////////////////////////////////////////////

作者:倪建华

Copyright (C) 2001-6-27 Allright Reserved.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航