This page looks best with JavaScript enabled

Automatización - ReConquistando a la novia con Python + Cowsay + Fortune

 ·   ·   5 min read

http://4.bp.blogspot.com/-yBOxDxixfRA/UQpq8IT-YUI/AAAAAAAAiCQ/JbLJoqrdQJw/s1600/gmailpythonsimple.jpg

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

Share on
Support the author with

Avatar
WRITTEN BY