#python #issue-tracking #keylogger
#python #отслеживание проблем #кейлоггер
Вопрос:
У меня есть файл python GUIApp.py
, который создает 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()
Ответ №1:
Создайте два сценария, один из которых является графическим интерфейсом, а другой — сценарием кейлоггера:
#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()
keylogger.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 вещи. 1. Вызовите кейлоггер 2. Откройте другое окно. Но и в вашем коде второе окно не вызывается, а также первое окно с кнопкой «Далее» переходит в состояние «Не отвечает»
2. Попробуйте подождать несколько раз, примерно минуту или около того, или откройте диспетчер задач и посмотрите, использует ли он процессор или оперативную память или меняются ли значения, если это так, то подождите некоторое время