Skip to content

Commit eadf5f1

Browse files
authored
Create mailer.py
1 parent 14c1924 commit eadf5f1

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

mailer.py

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#!/usr/bin/env python
2+
import argparse
3+
import subprocess
4+
import tempfile
5+
import smtplib
6+
import email.mime.multipart
7+
from email.MIMEText import MIMEText
8+
import logging
9+
10+
11+
def set_log():
12+
logger = logging.getLogger()
13+
logger.setLevel(LOG_LEVEL)
14+
15+
fm = logging.Formatter('%(filename)s [LINE:%(lineno)d]# %(levelname)-8s [%(asctime)s] %(message)s')
16+
17+
console = logging.StreamHandler()
18+
console.setLevel(LOG_LEVEL)
19+
console.setFormatter(fm)
20+
21+
logger.addHandler(console)
22+
23+
24+
def get_body_msg():
25+
logging.info("[!] Opening vim to write the body ..")
26+
tmp = tempfile.NamedTemporaryFile(mode='w+t', delete=False)
27+
tmp_name = tmp.name
28+
tmp.close()
29+
subprocess.call(['vim', tmp_name])
30+
31+
with open(tmp_name) as body_:
32+
body_ = body_.read()
33+
34+
return body_
35+
36+
37+
def send(server, port, sender, to, reply_to, subject, body, priority):
38+
msg = email.mime.multipart.MIMEMultipart()
39+
msg['to'] = to
40+
msg['from'] = sender
41+
msg['subject'] = subject
42+
msg['X-Priority'] = priority
43+
msg.add_header('reply-to', reply_to)
44+
45+
server = smtplib.SMTP(server, int(port))
46+
msg.attach(MIMEText(body))
47+
server.sendmail(sender, to, msg.as_string())
48+
server.close()
49+
50+
51+
def parse_args():
52+
parser = argparse.ArgumentParser(description='Send spoofed email message')
53+
54+
parser.add_argument('--server', type=str,
55+
help='SMTP Server (default localhost)', default="localhost")
56+
parser.add_argument('--port', type=int,
57+
help='SMTP Port (defaut 25)', default=25)
58+
parser.add_argument('--sender', type=str,
59+
help='Sender -> from who we send email', required=True)
60+
parser.add_argument('--to', type=str,
61+
help='Receiver-> to who we send email', required=True)
62+
parser.add_argument('--priority', type=int,
63+
help='Message priority (default 3)', default=3)
64+
parser.add_argument('--reply-to', type=str, help='Reply-To', required=True)
65+
parser.add_argument('--subject', type=str, help='Message subject', required=True)
66+
67+
return parser.parse_args()
68+
69+
70+
if __name__ == '__main__':
71+
LOG_LEVEL = 'INFO' # 'DEBUG'
72+
set_log()
73+
74+
config = parse_args()
75+
76+
msg_body = get_body_msg
77+
try:
78+
send(config.server, config.port, config.sender, config.to,
79+
config.reply_to, config.subject, msg_body, config.priority)
80+
logging.info("[-] E-mail successfully spoofed.")
81+
except Exception as e:
82+
exit('Error: %s' % e)

0 commit comments

Comments
 (0)