简易的星号密码查看器(对话框版+网页版)
基本都是別人寫的,我居然有臉寫原創。
玩路路解密破解游戲的時候用到過一個工具,可以用來查看窗口的星號密碼以及網頁中的星號密碼,頓覺得很牛x,找了一下它們的原理,依葫蘆畫瓢也自娛自樂了一番。就當是驗證一下實踐一下快活一下悲哀一下吧。
?
對話框的星號密碼查看原理是基于密碼框都有個EM_SETPASSWORDCHAR屬性。通過安裝鼠標鉤子監視鼠標動作,如果用戶單擊的是密碼框那么就發送一個去除密碼屬性的消息。
?
mfc工程,對話框
HHOOK g_hMouse;//鼠標鉤子函數 LRESULT CALLBACK HookProc( int code, WPARAM wParam,LPARAM lParam ) {HWND hwnd;POINT point;GetCursorPos(&point);//得到鼠標位置hwnd=::WindowFromPoint(point);//得到包含鼠標的窗口句柄long nStyle=::GetWindowLong(hwnd,GWL_STYLE);// 得到窗口風格EVENTMSG *event=(EVENTMSG *)lParam;if(event->message==WM_LBUTTONDOWN)//是否為鼠標左鍵{if(nStyle & ES_PASSWORD)//是否為密碼框{::PostMessage(hwnd, EM_SETPASSWORDCHAR,0,0);//去掉密碼屬性}}return CallNextHookEx(g_hMouse,code,wParam,lParam); }void CGetPwdDlg::OnStart() {// TODO: Add your control notification handler code hereg_hMouse = SetWindowsHookEx(WH_JOURNALRECORD,HookProc,GetModuleHandle(NULL),0);if(!g_hMouse){MessageBox("設置鉤子失敗!");return;}MessageBox("設置成功!");}void CGetPwdDlg::OnEnd() {if(!UnhookWindowsHookEx(g_hMouse)){MessageBox("釋放鉤子失敗!");return;}MessageBox("釋放成功!"); }
↑良好習慣,從我做起,哇咔咔
?
這個程序讓我知道了不用dll也可以弄全局鉤子呵呵,測試了一些基本的對話框還是可以的,qq的密碼框當然是不行了。
解密這么容易那防范也同樣簡單,可以從TEdit派生一個新的組件,名字為TBugEyesEdit,然后修改其消息定義。那再發送取消EM_SETPASSWORDCHAR消息它就不會理你了。
?
網頁版的需要寫一個VBScript腳本,保存為htm文件
<Script language="VBScript"> On Error Resume Next '設置錯誤陷阱 Dim ObjDocument,ObjEvent,ObjElement '聲明對象 Set ObjDocument = external.menuArguments.document '使用DOM方式枚舉元素 Set ObjEvent = external.menuArguments.event Set ObjElement=ObjDocument.elementFromPoint(ObjEvent.clientX,ObjEvent.clientY ) '通過當前鼠標指針坐標得到網頁元素 If ObjElement.type ="password" then '如果網頁元素類型為密碼框 If ObjElement.value="" then Alert("獲取文本為空") else Alert("獲取文本為:"+ObjElement.value) '顯示密碼 End If End If </Script>
?
然后在注冊表的“HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt”下面的那個字串值改為腳本的路徑就可以了
這樣右鍵點擊輸入密碼的框框,就有一個獲得密碼的選項了
經測試,百度、人人什么的網站全都失效。。。但是試了CSDN之后讓我不淡定了。。。。。。
?
?
總結
以上是生活随笔為你收集整理的简易的星号密码查看器(对话框版+网页版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js距离米转换为千米_公里和千米的换算(
- 下一篇: u盘数据恢复的原理_U盘格式化了怎么恢复