防止密碼被非法獲取 (轉)
防止密碼被獲取
作者:郝峰
----雖然是一個功能強大的操作,但其存在的一些先天性不足給
留下了許多可乘之機,著名的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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 防止程式碼被竊取,Python程式碼加密常用方案Python加密
- 密碼是如何被竊取的密碼
- URL引數獲取/轉碼
- 瀏覽器儲存密碼獲取與解密瀏覽器密碼解密
- 如何讓Python不回顯獲取密碼輸入Python密碼
- 如何防止Google Voice號碼被回收Go
- 直播系統程式碼,Android獲取、設定鎖屏密碼Android密碼
- 2024年移動光貓獲取超級密碼密碼
- 無影雲電腦獲取windows密碼的方法Windows密碼
- 國外免費代理ip地址密碼如何獲取?密碼
- 如何有效防止網站資料被竊取、篡改?網站
- 光貓超級帳號密碼,重置光貓獲取超級帳號密碼密碼
- 如何防止網站被侵入,如何防止網站被掛馬,如何防止網站被入侵?網站
- 獲取支付連結轉化為二維碼
- 程式碼混淆防止APP被反編譯指南APP編譯
- Springboot(1)----動態獲取資料庫密碼進行使用Spring Boot資料庫密碼
- tasklist 遠端獲取程式報錯賬號密碼錯誤密碼
- 編碼轉換統一防止亂碼
- win10怎麼獲取wifi 密碼_win10系統wifi密碼怎麼檢視Win10WiFi密碼
- 草船借箭:透過ssh蜜罐來獲取常用密碼本密碼
- 爬取資料時防止爬蟲被限制的四種方法爬蟲
- Python的“祕密”被曝光,GitHub斬獲20000星PythonGithub
- 快速獲取 Wi-Fi 密碼——GitHub 熱點速覽 v.21.06密碼Github
- 獲取AOSP原始碼原始碼
- 防止API被惡意呼叫API
- 在Windows, Mac, Linux三種系統中分別獲取wifi密碼的方式WindowsMacLinuxWiFi密碼
- PHP獲取IP地址的方法,防止偽造IP地址注入攻擊PHP
- HarmonyOS原始碼獲取大全原始碼
- 前端獲取驗證碼前端
- 獲取 NodeJS 程式退出碼NodeJS
- phpstrom 註冊碼獲取PHP
- 如何防止他人竊取我的原始碼或圖片?原始碼
- 【Azure Developer】使用 Microsoft Authentication Libraries (MSAL) 如何來獲取Token呢 (通過使用者名稱和密碼方式獲取Access Token)DeveloperROS密碼
- 移動光貓 UNG853H 獲取超級管理員賬號密碼密碼
- JQuery 獲取select被選中的value和textjQuery
- C#獲取HTML原始碼C#HTML原始碼
- android 獲取手機號碼Android
- QWebView獲取網頁原始碼WebView網頁原始碼
- Hack The Box 獲取邀請碼