键盘及鼠标记录程序 - Python

这里主要是记录一个库-pynput。 并不是教做坏事。使用Python的库对鼠标和键盘进行记录,pygame也可以记录,但是对于主需腰针对键盘和鼠标进行记录,就很笨重。

首先对键盘进行记录:

"""
    python对键盘进行监控
"""

from pynput import keyboard

def on_press(key): # 键盘上的键被按下
    print(f'{key} : 被按下了!')

def on_release(key): # 键盘上的键被松开
    # print(f'{key} : 被松开了!')

    # 结束程序的按键
    if key == keyboard.Key.esc: # 如果按下esc键,我们结束记录
        return False

with keyboard.Listener(on_press=on_press, on_release=on_release) as listner:
    listner.join()

  

程序运行后的截图:

 其次是对鼠标进行记录:

from pynput import mouse
 
def on_click(x, y, button, pressed):
    # 左键
    if button == mouse.Button.left:
        print('左键被点击了!') # 会被打印两次,按下和弹起都会各打印一次
    # 右键
    elif button == mouse.Button.right:
        print('邮件被点击了!') # 原则上讲只是打印按下
        return False # 这里才是弹起
    # 鼠标中键
    else:
        print('鼠标中键被点击了!') # 只是按下
        return False # 弹起
# 检测事件
with mouse.Listener(on_click=on_click) as listener:
    listener.join()

 

程序运行后截图如下:

 

运行程序发现,每次点击左键都会在终端上被打印两次。是因为鼠标左键按下和弹起均被打印了。

还有就是记录了之后,可以做成日志,然后利用邮件发送到我们的邮箱里(我一般是记录小朋友上网课的情况)。

from pynput import keyboard,mouse # 鼠标键盘
from loguru import logger # 日志
from threading import Thread # 多线程

#  首先打开日志文件
logger.add('20211027.log') # 我一般以时间定义

# 键盘事件
def on_press(key):
    logger.debug(f'{key} : 被敲击了!')

def on_release(key):
    # print(f'{key} : 被释放了!')
    # 如果敲击了esc键,就退出
    if key == keyboard.Key.esc:
        return False

# 鼠标事件
def on_click(x, y, button, pressed):
    # 鼠标左键
    if button == mouse.Button.left:
        logger.debug('鼠标左键被敲击了!')
    elif button == mouse.Button.right:
        logger.debug('鼠标右键被敲击了!')
        return False
    else:
        logger.debug('鼠标中键被敲击了!')

# 开启第一个线程用于记录键盘操作
def threadFirst():
    with keyboard.Listener(on_press=on_press, on_release=on_release) as lsn:
        lsn.join()

# 开启第二个线程用于记录鼠标操作
def threadSecond():
    with mouse.Listener(on_click=on_click) as listner:
        listner.join()

if __name__ == "__main__":
    # 启动两个线程
    t1 = Thread(target=threadFirst)
    t2 = Thread(target=threadSecond)
    t1.start() # 启动第一个线程
    t2.start() # 启动第二个线程

  

日志文件会被保存在当前文件夹下。经过上述处理,所有的键盘和鼠标记录都会被记录在日志文件里,后面只需要经过NLTK还原一下场景就行了。

再次申明:此程序会占用cpu大量的资源,别拿去做坏事。有常识的人在自己电脑被占用大量cpu资源的时候肯定知道电脑有异常!

 

posted @ 2021-10-27 15:15  、一叶孤城  阅读(942)  评论(0编辑  收藏  举报