防止密碼被非法獲取 (轉)
防止密碼被獲取
作者:郝峰
----雖然是一個功能強大的操作,但其存在的一些先天性不足給
留下了許多可乘之機,著名的BO就是利用Windows的這些來危害的
。筆者最近發現了一個很流行的專門獲取Edit框Pass的工具,甚至其源代
碼已在某報紙上發表了,這無疑是對Edit的Password功能的完全否定。本文將首先
分析非法獲取Password的原理,然後給出用VisualC++來實現保護Edit框中的
Password不被非法獲取的對策。
一、非法獲取Password的原理
----Edit是Windows的一個標準,當把其Password屬性設為True時,就會將輸入的
內容遮蔽為星號(*),從而達到保護的目的。而Edit框中的內容可透過發
WM_GETTEXT,EM_GETLINE訊息來獲取。駭客程式就是利用Edit的這個特性,首先列舉當
前程式的所有子視窗,當發現列舉的視窗是EDIT並且具有ES_PASSWORD屬性時,則通
過SendMessage向此視窗傳送WM_GETTEXT或EM_GETLINE訊息,這樣Edit框中的內容就一目了
然了。
二、對Password進行保護
----由上述分析可看出,Edit的漏洞在於沒有檢查傳送WM_GETTEXT或EM_GETLINE訊息者
的身份,只要找到Edit視窗控制程式碼,任何程式都可獲取其內容。這裡給出一種簡單
的方法來驗證傳送訊息者的身份是否合法。
----1.建立新CEdit類
----從CEdit繼承一個子類CPasswordEdit,申明全域性變數g_bAuthorntity表明訊息傳送者
的身份:
BOOLg_bAuthorIdentity;
----然後響應CWnd的虛DefWindowProc,在這個回撥函式中進行身份驗證:
LRESULTCPasswordEdit::DefWindowProc
(UINTmessage,WPARAMwParam,LPARAMlParam)
{
//對Edit的內容獲取必須透過
以下兩個訊息之一
if((message==WM_GETTEXT)
||(message==EM_GETLINE))
{
//檢查是否為合法
if(!g_bAuthorIdentity)
{
//非法獲取,顯示資訊
AfxMessageBox(_T
(“我的密碼,可不能讓你看!"));
//
return0;
}
//合法獲取
g_bAuthorIdentity=FALSE;
}
returnCEdit::DefWindowProc
(message,wParam,lParam);
}
----2.在資料輸入對話方塊中做處理
----在對話方塊中申明一個類成員m_edtPassword:
CPasswordEditm_edtPassword;
----然後在對話方塊的OnInitDialog()中加入下列程式碼:
m_edtPassword.SubclassDlgItem(IDC_EDIT_PASSWORD,this);
----其目的是將控制與新類做關聯。
----之後在對話方塊的資料中將身份設為合法:
voidCDlgInput::DoData
(CDataExchange*pDX)
{
//如果獲取資料
//注意:對於CPropertyPage類這裡不需要if
(pDX->m_bSaveAndValidate)條件
if(pDX->m_bSaveAndValidate)
{
g_bAuthorIdentity=TRUE;
}
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgInput)
DDX_Text
(pDX,IDC_EDIT_PASSWORD,m_sPassword);
//}}AFX_DATA_MAP
}
----這樣,Password輸入框就會受到保護。
三、需要注意的問題
----以上的方法僅針對VC程式,對於VB程式,需要藉助VC做一個Password的控
件,實現方法與上類似。以上程式在VisualC++6.0上透過,並且用駭客程式
PWBTool測試透過。完整演示程式碼請到的“技巧”。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996102/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 非法探取密碼的原理及其防範 (轉)密碼
- msn密碼獲取軟體密碼
- 密碼是如何被竊取的密碼
- 駭客非法探取密碼的原理及安全防範(轉)密碼
- 如何防止應用因獲取IDFA被AppStore拒絕APP
- UNIX防止非法使用者註冊的技術大全(轉)
- 友盟SDK如何防止應用因獲取IDFA被AppStore拒絕APP
- 如何防止Google Voice號碼被回收Go
- 通過PowerShell獲取Windows系統密碼HashWindows密碼
- 獲取網頁中的密碼和文字輸入框的內容 (轉)網頁密碼
- 如何有效防止網站資料被竊取、篡改?網站
- 防止資料庫被下載後,暴出Dv_Log表中明文密碼資料庫密碼
- 被曝光的密碼密碼
- 如何防止網站被侵入,如何防止網站被掛馬,如何防止網站被入侵?網站
- 國外免費代理ip地址密碼如何獲取?密碼
- 如何讓Python不回顯獲取密碼輸入Python密碼
- 防止網頁被嵌入框架的程式碼網頁框架
- 防止網頁被複製的程式碼網頁
- 光貓超級帳號密碼,重置光貓獲取超級帳號密碼密碼
- 直播系統程式碼,Android獲取、設定鎖屏密碼Android密碼
- php中將驗證變數,,防止非法變數PHP變數
- 獲取系統帳戶密碼週期的例項密碼
- 利用滑鼠鍵盤鉤子截獲密碼。 (轉)密碼
- 程式碼混淆防止APP被反編譯指南APP編譯
- js防止網站被映象程式碼例項JS網站
- 防止網頁被嵌入框架的程式碼(續)網頁框架
- php 獲取函式被呼叫位置PHP函式
- tasklist 遠端獲取程式報錯賬號密碼錯誤密碼
- win10怎麼獲取wifi 密碼_win10系統wifi密碼怎麼檢視Win10WiFi密碼
- 爬取資料時防止爬蟲被限制的四種方法爬蟲
- js 獲取被選中核取方塊的值JS
- 忘記APPS密碼 - EBS從資料庫中反編譯獲取APPS密碼APP密碼資料庫編譯
- Androidapk如何加固防止被破解(防止逆向編譯)AndroidAPK編譯
- 防止API被惡意呼叫API
- 獲取AOSP原始碼原始碼
- Springboot(1)----動態獲取資料庫密碼進行使用Spring Boot資料庫密碼
- 獲取特定的字串 (轉)字串
- 一些防止java程式碼被反編譯的方法Java編譯