摘要:目前具有此类功能的库有很多,比如等游戏库,但是当我们只需要监控键盘和鼠标时,它们就显得过于笨重了,我们可以选择轻量,快速的。
今天有位同事和我吐槽关于公司 XX 的问题,我告诉他不要在公司电脑上说这些,因为很可能会被狙击,这位同事刚开始还不信,直到我写了这边文章,他才恍然大悟。
pynput 可以监控我们的键盘和鼠标。目前具有此类功能的库有很多,比如 pygame 等游戏库,但是当我们只需要监控键盘和鼠标时,它们就显得过于笨重了,我们可以选择轻量,快速的 pynput。
假设公司想要静默为我们的电脑常驻一个后台进程去实现监控我们的键盘输入并记录下来,他们大概可以这样做:
from pynput import keyboarddef on_press(key): print(f"{key} :pushed")def on_release(key): #print(f"{key} released") if key == keyboard.Key.esc: # Stop listener return Falsewith keyboard.Listener(on_press=on_press,on_release=on_release) as lsn: lsn.join()复制代码
控制台打印:
from pynput import mousedef 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 releasedwith mouse.Listener(on_click=on_click) as listener: listener.join()复制代码
控制台打印:
你会发现,每条打印都被打印了两次,这是因为按下去和抬起来都会触发鼠标事件。
from pynput import keyboard,mousefrom loguru import loggerfrom 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用于线程1def 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用于线程2def 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()复制代码
查看日志内容:
如上,我们的键盘操作全部已经被记录,通过对这个日志文件进行简单的 NLTK
语言处理,就能复原你的聊天记录。
以上就是今天的全部内容了,感谢您的阅读,我们下节再会。
如果对软件测试、接口测试、自动化测试、持续集成、面试经验。感兴趣 可以进到806549072,群内会有不定期的分享测试资料。还会有技术大牛,业内同行一起交流技术
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122580.html
摘要:导读为数人云系列活动专题,本文是月日北京站线下活动当西方的遇上东方的互联网中京东金融王超老师的分享。王超京东金融企业高级目前在京东金融平台负责一个人左右的应用运维团队团队,也曾负责人人网团队。 导读:[GO SRE!] 为数人云SRE系列活动专题,本文是3月4日北京站线下活动当西方的SRE遇上东方的互联网中京东金融王超老师的分享。 他将从SRE,Devops, PE间的关系开始,介绍企...
摘要:导读为数人云系列活动专题,本文是月日北京站线下活动当西方的遇上东方的互联网中京东金融王超老师的分享。王超京东金融企业高级目前在京东金融平台负责一个人左右的应用运维团队团队,也曾负责人人网团队。 导读:[GO SRE!] 为数人云SRE系列活动专题,本文是3月4日北京站线下活动当西方的SRE遇上东方的互联网中京东金融王超老师的分享。 他将从SRE,Devops, PE间的关系开始,介绍企...
摘要:再如通过处理流数据生成简单的报告,如五分钟的窗口聚合数据平均值。复杂的事情还有在流数据中进行数据多维度关联聚合塞选,从而找到复杂事件中的根因。因为各种需求,也就造就了现在不断出现实时计算框架,而下文我们将重磅介绍我们推荐的实时计算框架。 前言 先广而告之,本文摘自本人《大数据重磅炸弹——实时计算框架 Flink》课程第二篇,内容首发自我的知识星球,后面持续在星球里更新,这里做个预告,今...
摘要:月日数人云在上海举办金融沙龙,邀请上交所和近二十家来自银行保险证券的技术专家一同探讨容器技术在金融业中的最佳实践。数人云肖德时在会上将传统金融行业通过容器可以解决的四大问题做了逐一解读。如何动态的分配,就是刚才上交所介绍的一些治理的方法。 7月29日数人云在上海举办金融沙龙,邀请上交所和近二十家来自银行、保险、证券的IT技术专家一同探讨容器技术在金融业中的最佳实践。数人云CTO肖德时在...
摘要:运维,哎,多么沉重的话题,初创公司的运维,哎,还能愉快的聊天吗初创公司的运维,如今其实兼技术支持系统管理员网管网络工程师研发工程师架构师,干着这些看似不相干甚至矛盾的工作。 运维,哎,多么沉重的话题,初创公司的运维,哎,还能愉快的聊天吗? showImg(https://segmentfault.com/img/remote/1460000004893272); 初创公司的运维,如今其...
阅读 975·2021-11-23 10:11
阅读 3813·2021-11-16 11:50
阅读 869·2021-10-14 09:43
阅读 2669·2021-10-14 09:42
阅读 2687·2021-09-22 16:02
阅读 1038·2019-08-29 10:57
阅读 3352·2019-08-29 10:57
阅读 2235·2019-08-26 13:52