黑客非法探取密碼的原理及安全防範

2021-04-12 22:03:19 字數 2127 閱讀 1155

一、非法獲取password的原理:

edit控制項是windows的乙個標準控制項,當把其password屬性設為true時,就會將輸入的內容遮蔽為星號,從而達到保護的目的。雖然我們看來都是星號,但程式中的edit控制項實際仍是使用者輸入的密碼,應用程式可以獲取該控制項中的密碼,其他應用程式也可以通過向其傳送wm_gettext或em_getline訊息來獲取edit控制項中的內容。黑客程式正是利用edit控制項的這個特性,當發現當前探測的視窗是edit控制項並且具有es_password屬性時,則通過sendmessage向此視窗傳送wm_gettext或em_getline訊息,這樣edit框中的內容就一目了然了。

二、黑客軟體工作方法

首先要取得當前的視窗,並判斷是否是edit控制項,一般多通過滑鼠來指定要探測的視窗,例如在wm_mousemove訊息的響應函式中進行判斷,現列舉**片段如下:

//將客戶座標轉換成螢幕座標

clienttoscreen(&point);

//返回乙個包含指定螢幕座標點的視窗

cwnd* pwnd = cwnd::windowfrompoint(point);

if (pwnd) }

} }

} 上述**中值得注意的有以下幾個關鍵地方:

clienttoscreen(&point);

cwnd* pwnd = cwnd::windowfrompoint(point);

hwnd hwndcurr = pwnd->getsafehwnd();

這三句**可以獲取當前滑鼠位置所在視窗的視窗控制代碼,在sendmessage中要用到的。

::sendmessage(hwndcurr, wm_gettext, 255, (lparam)sztext);

這便是真正起作用的sendmessage了,其第乙個引數指定了要接收訊息的視窗控制代碼,我們已經通過上面的**獲取到了,第二個引數就是讓edit控制項返回字元的wm_gettext訊息了,並將得到的內容儲存在sztext中。

三、防範措施

既然我們搞清除了黑客軟體普遍採取的手法,那我們自然能制訂出一套防範其攻擊的措施來。下面我們就要對password進行保護。

從以上分析我們可以看出:edit控制項的漏洞主要在於沒有對傳送wm_gettext或em_getline訊息者的身份進行檢查,只要能找到edit視窗控制代碼,任何程序都可獲取其內容。所以必須要對傳送訊息者的身份進行驗證,這裡給出一種方法來驗證傳送訊息者的身份是否合法:

1.建立新cedit類

從cedit繼承乙個子類cpasswordedit,申明全域性變數g_bsenderidentity表明訊息傳送者的身份: bool g_bsenderidentity;

然後響應cwnd的虛函式defwindowproc,在這個**函式中進行身份驗證:

lresultcpasswordedit:efwindowproc (uintmessage,wparamwparam,lparamlparam)

//合法獲取

g_bsenderidentity=false;

} return cedit:efwindowproc (message,wparam,lparam);

} 2.在資料輸入對話方塊中做些處理

在對話方塊中申明乙個類成員m_edtpassword:

cpasswordedit m_edtpassword;

然後在對話方塊的oninitdialog()中加入下列**:

m_edtpassword.subclassdlgitem(idc_edit_password,this);

將控制與新類做關聯。

之後要在對話方塊的資料交換函式中將身份設為合法:

void cdlginput:odataexchange (cdataexchange*pdx)

cdialog:odataexchange(pdx);

//}afx_data_map

} 這樣,password輸入框就擁有了合法身份,會受到保護。

結論:

以上的方法僅針對vc程式,對於其他語言如vb、delphi等語言,需要借助vc做乙個password的activex控制項,實現方法與上述方法基本類似。以上程式均用visualc++6.0編制除錯通過。

VC 中非法探取密碼的原理及其防範

引言 在windows下輸入密碼時,為了安全起見通常都以星號來遮蔽使用者輸入的密碼。如果需要在自己編寫的應用程式中需要使用者輸入密碼,通常的選擇就是選用edit控制項並設定其password屬性。雖然edit控制項的password屬性在一定程度上可以保護使用者的密碼不被視覺 但在許多窺探密碼的黑客...

VC 中非法探取密碼的原理及其防範

引言 在windows下輸入密碼時,為了安全起見通常都以星號來遮蔽使用者輸入的密碼。如果需要在自己編寫的應用程式中需要使用者輸入密碼,通常的選擇就是選用edit控制項並設定其password屬性。雖然edit控制項的password屬性在一定程度上可以保護使用者的密碼不被視覺 但在許多窺探密碼的黑客...

用MD5儲存密碼的安全防範

兩個不同的且均可正常執行的exe程式檔案,具有相同的md5校驗值,這不僅僅是理論上的可能,而是現實,已經有人寫出了這樣的兩個程式了,關於md5碰撞,據說是山東大學王小雲教授的一篇報告震驚國際密碼學界,他找到了一種能夠比較快速的計算md5碰撞的演算法。最早我聽到這個報道的時候還以為是忽悠呢,俺中國人被...