用 Python 寫一個電腦監控程序
繼打游戲、看視頻等摸魚行為被監控后,現在打工人離職的傾向也會被監控。最近有網友表示,所在企業安裝了行為感知系統,該系統可以提前獲知員工跳槽念頭。
一時間,“打工人太難了”“毫無隱私可言”的討論層出不窮。
有些小伙伴就問了:這種監控技術上可行嗎?復雜嗎?今天就帶大家嘗試用幾行 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 語言處理,才能復原你的聊天記錄。
當然,我們這里僅僅是從技術上討論可行性,各位切莫做有損別人隱私的事情。再說了,僅憑這個代碼,別人一眼就會發現有程序在記錄操作……