【问题标题】:Calling a keylogger from a function in python goes to Not responding state从 python 中的函数调用键盘记录程序进入无响应状态
【发布时间】:2020-09-17 05:29:40
【问题描述】:

我有一个 Python 文件 GUIApp.py,它创建了一个基于 GUI 的 Tkinter 窗口,现在单击提交我希望 keylogger 在后台启动和运行,记录输入的键。当我尝试调用 keylogger 函数时,Tkinter 窗口消失 到无响应状态并且不执行其余操作。下面是代码。请帮忙。

from tkinter import *
import pynput
import logging
from pynput.keyboard import Key as key,Listener

def typingActivity():
    keys = []

    log_dir = r"C:/Users/navesh/desktop/"
    logging.basicConfig(filename=(log_dir + "kLog.txt"), level=logging.INFO, format='%(asctime)s: %(message)s')

    def on_press(key):
        keys.append(key)
        # write_file(keys)
        logging.info("Pressed " + str(key))

    def on_release(key):
        # print('{0} released'.format(key))
        keys.append(key)
        logging.info("Released " + str(key))

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

    typingAct = Tk()
    typingAct.title("Typing Activity")
    typingAct.geometry("1500x1500")
    userId = userTextbox.get()

    q1Label = Label(typingAct, text="1.    Why will you recommend this phone")
    q1Label.pack()

    q1Textbox = Entry(typingAct, width=90)
    q1Textbox.pack()

    log_dir = r"C:/Users/desktop/"
    logging.basicConfig(filename=(log_dir + userId+".txt"), level=logging.INFO, format='%(asctime)s: %(message)s')

root = Tk()
root.title("Data Collection")
root.geometry("1000x1000")

welcomeText = Text(root, height=20, width=50)
#welcomeText.configure('bold_italics', font=('Arial', 12, 'bold', 'italic'))
    #root, text="Open browser in desktop")
welcomeText.pack()
welcomeText.insert(END,"Welcome")

userLabel = Label(root, text="Enter UserID")
userLabel.pack()

userTextbox = Entry(root, width=30)
userTextbox.pack()`enter code here`

submitButton = Button(root, text ="Next", command=typingActivity)
submitButton.pack()

root.mainloop()

【问题讨论】:

    标签: python issue-tracking keylogger


    【解决方案1】:

    创建两个脚本,一个是 GUI,另一个是键盘记录器脚本:

    #GUI.py
    
    import tkinter as tk  
    import os 
    import time
    import pytesseract_capturer
      
    top = tk.Tk()
      
      
    top.geometry("200x50") 
    
    
     
    def opening():
        os.system("keylogger.py") #this runs the script keylogger.py when you click capture(or mention the location where your keylogger is)
    b = tk.Button(top,text = "quit",width=10, fg="red", command=quit)  
    b.pack(side=tk.RIGHT)
    a = tk.Button(top,text = "capture",width=10, fg="blue", command=opening)   
    
    a.pack(side=tk.LEFT)
    
    
    top.mainloop() 
    

    键盘记录器.py

    
    # keylogger using pynput module 
       
    import pynput 
    from pynput.keyboard import Key, Listener 
       
    keys = [] 
       
    def on_press(key): 
          
        keys.append(key) 
        write_file(keys) 
          
        try: 
            print('alphanumeric key {0} pressed'.format(key.char)) 
              
        except AttributeError: 
            print('special key {0} pressed'.format(key)) 
               
    def write_file(keys): 
          
        with open('D:/log.txt', 'w') as f: # This will save in D drive as log.txt
            for key in keys: 
                  
                # removing '' 
                k = str(key).replace("'", "") 
                f.write(k) 
                          
                # explicitly adding a space after  
                # every keystroke for readability 
                f.write(' ')  
                   
    def on_release(key): 
                          
        print('{0} released'.format(key)) 
        if key == Key.esc: 
            # Stop listener 
            return False
       
       
    with Listener(on_press = on_press, 
                  on_release = on_release) as listener: 
                          
        listener.join() 
    
    

    【讨论】:

    • 我试过你给的这段代码。这也只是创建一个不响应的窗口。在我指定的代码中单击下一步,我需要做两件事。 1. 调用键盘记录器 2. 打开另一个窗口。但是使用您的代码,第二个窗口也不会被调用,并且带有“下一步”按钮的第一个窗口也会进入未响应状态
    • 尝试等待一段时间,大概一分钟左右,或者打开任务管理器看看它是使用cpu还是ram或者值是否在改变,如果是则等待一段时间跨度>
    猜你喜欢
    • 2020-09-06
    • 2018-11-10
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2013-04-04
    • 2015-12-23
    • 2013-02-18
    相关资源
    最近更新 更多