Hace un rato un usuario de Underc0de pregunto como adjuntar un archivo obteniendo los datos del sistema previamente y que sea enviado por mediO de Python, asi que me puse a revisar un poco de la librería smtplib y con ella a jugar un poco, el código anda medio chanchito pero sirve para el cometido principal, tras lograr hacerlo funcional se me vino a la mente darle un uso diferente al script original, el cual sería un Python Mail Sender Love ;).
Ando romántico y porque no modificar un poquito y sacar provecho al script?
Lo primero que necesitamos es tener instalado cowsay y fortune a continuacion una pequeña muestra de cada uno, ya para instalarlos y demas todo es segun su distribución ;).
Un ejemplo de Cowsay la variable -f (tux) nos permite mostar la forma del muñequito, si nos vamos a la terminal y realizamos el siguiente comando cowsay -l nos listara todos los bichitos, en vez de tux ponen el que les agrade.
\[snifer@rizel\]$ cowsay -l
Cow files in /usr/share/cows:
beavis.zen bong bud-frogs bunny cheese cower daemon default dragon
dragon-and-cow elephant elephant-in-snake eyes flaming-sheep ghostbusters
head-in hellokitty kiss kitty koala kosh luke-koala meow milk moofasa moose
mutilated ren satanic sheep skeleton small sodomized stegosaurus stimpy
supermilker surgery telebears three-eyes turkey turtle tux udder vader
vader-koala www
Ahora, tras lanzar hacemos la prueba con el texto a mostrar al final y tenemos lo siguiente:
$\[snifer@rizel\]$ cowsay -f tux "Romantico Snifer ;)"
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
< Romantico Snifer ;) >
----------------------
\\
\\
.--.
|o\_o |
|:\_/ |
// \\ \\
(| | )
/'\\\_ \_/\`\\
\\\_\_\_)=(\_\_\_/
Tras instalar fortune solo debemos de ir a la terminal e ingresar el comando fortune, que nos da una frase de manera aleatoria entre todas que tiene.
\[snifer@rizel\]$ fortune
"You should, without hesitation, pound your typewriter into a plowshare,
your paper into fertilizer, and enter agriculture"
-- Business Professor, University of Georgia
Lo que nos permite hacer fortune es crear nuestras frases personalizadas, hace un tiempo jugue con fortune y el bashrc si mal no recuerdo pero creo que es mas de 2 años atras.
Se preguntan de donde saca las frases? el directorio es:
Arch y Derivados: /usr/share/fortune
Debian y Derivados: /usr/share/games/fortunes
Así que nos dirigimos al directorio y podemos lanzar un ls al directorio.
\[snifer@rizel fortune\]$ ls
off/ education law.dat news rizel.dat
archlinux education.dat linux news.dat science
archlinux.dat ethnic linuxcookie paradoxum science.dat
art ethnic.dat linuxcookie.dat paradoxum.dat songs-poems
art.dat food linux.dat people songs-poems.dat
ascii-art food.dat literature people.dat sports
ascii-art.dat fortunes literature.dat perl sports.dat
computers fortunes.dat love perl.dat startrek
computers.dat goedel love.dat pets startrek.dat
cookie goedel.dat magic pets.dat translate-me
cookie.dat humorists magic.dat platitudes translate-me.dat
debian humorists.dat medicine platitudes.dat wisdom
debian.dat kids medicine.dat politics wisdom.dat
definitions kids.dat men-women politics.dat work
definitions.dat knghtbrd men-women.dat riddles work.dat
drugs knghtbrd.dat miscellaneous riddles.dat zippy
drugs.dat law miscellaneous.dat rizel zippy.dat
Podemos ver archivos con su dat respectivo entonces nosotros procedemos a crear uno nuevo, para ello tenemos que tener uno con la siguiente estructura.
Creando nuestras frases personalizadas para Fortune
Frase 1
-- autor
%
Frase 2
%
Visita SniferL4bs!
%
Tras tener las frases en el archivo que deseemos en mi caso cree uno como rizel, así que hacemos uso de strfile.
strfile rizel rizel.dat
Tras ello ya tenemos lo necesario para usar en nuestro script**.**
**Funcionamiento**:
Envia un correo electrónico, a la señorita dueña de mi corazón con el archivo generado en temporal :), previamente creado con cowsay y fortune.
Necesitamos dos cuentas una nuestra y otra de la novia, prometida chequeo, yo le envio a RizelTane ;). Y ahora el pequeño frankeinsteingther :3 muajajajjjaja.
#!/usr/bin/env python2.7
\# -\*- coding: utf-8 -\*-
#maillove.py
#Realizado por Jose Moruno Cadima a.k.a Snifer
\# www.sniferl4bs.com
import smtplib
import mimetypes
import os
import sys
from email.MIMEMultipart import MIMEMultipart
from email.Encoders import encode\_base64
from email.mime.text import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders
gmail\_to = 'xxxx@gmail.com' #Correo a enviar
gmail\_from = 'xxxxxx@gmail.com' #Correo de donde se envia
password='\*\*\*\*\*\*\*' #Contraseña
os.system("rm /tmp/log")
#os.system("acpi -i | tee /tmp/log.txt")<
os.system("fortune rizel | cowsay -f kiss | tee /tmp/log")
msg = MIMEMultipart()
msg\['From'\]= (gmail\_from)
msg\['To'\]= (gmail\_to)
msg\['Subject'\]="Subject"
file = open("/tmp/log.txt", "rb") #Direccion del Archivo
attach\_file = MIMEBase('multipart', 'encrypted')
attach\_file.set\_payload(file.read())
file.close()
attach\_file.add\_header('Content-Disposition', 'attachment', filename='Una Frase al Día.txt')#NOMBRE DEL ARCHIVO A ENVIAR QUE SE VERA
msg.attach(attach\_file)
mailServer = smtplib.SMTP('smtp.gmail.com',587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmail\_from, password)
mailServer.sendmail(gmail\_from, gmail\_to, msg.as\_string())
mailServer.close()
El código por si solo se explica, ahora basta con meterlo en un cron y listo.. mensajes diarios!!!
Para ejecutarlo basta con ir a la terminal y python2 + script:
\[snifer@rizel Desktop\]$ python2 correoLove.py
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
/ De ti estoy enamorado \\
\\ :) te quiero mucho . /
-----------------------------------------
\\
\\
,;;;;;;;,
;;;;;;;;;;;,
;;;;;'\_\_\_\_\_;'
;;;(/))))|((\\
\_;;((((((|))))
/ |\_\\\\\\\\\\\\\\\\\\\\\\\\
.--~( \\ ~))))))))))))
/ \\ \`\\-(((((((((((\\\\
| | \`\\ ) |\\ /|)
| | \`. \_/ \\\_\_\_\_\_/ |
| , \`\\~ /
| \\ \\ /
| \`. \`\\| /
| ~- \`\\ /
\\\_\_\_\_~.\_/~ -\_, (\\
|-----|\\ \\ ';;
| | :;;;' \\
| / | |
| | |
PD: Ya dije tiene falencias de código, no uso lo correcto por ahi deberia de haber un os.remove :$, pero ando flojo luego mejoro o alguien se anima mejor! ;), quizas es hasta codigo spaguetti como dice el gringo, pero esta funcional xD.
PD2: Debido a que en RadioHack me dijerón drogadicto :3 .. aqui esta el repositorio de GITHUB con las herramientas de SniferL4bs ;)
Regards,
Snifer