diff --git a/servers/SMTP.py b/servers/SMTP.py index b2a5d8a..cf8f903 100644 --- a/servers/SMTP.py +++ b/servers/SMTP.py @@ -26,28 +26,16 @@ class ESMTP(BaseRequestHandler): self.request.send(str(SMTPGreeting())) data = self.request.recv(1024) - if data[0:4] == "EHLO": + if data[0:4] == "EHLO" or data[0:4] == "ehlo": self.request.send(str(SMTPAUTH())) data = self.request.recv(1024) if data[0:4] == "AUTH": - self.request.send(str(SMTPAUTH1())) - data = self.request.recv(1024) - - if data: - try: - User = filter(None, b64decode(data).split('\x00')) - Username = User[0] - Password = User[1] - except: - Username = b64decode(data) - - self.request.send(str(SMTPAUTH2())) - data = self.request.recv(1024) - - if data: - try: Password = b64decode(data) - except: Password = data + AuthPlain = re.findall(r'(?<=AUTH PLAIN )[^\r]*', data) + if AuthPlain: + User = filter(None, b64decode(AuthPlain[0]).split('\x00')) + Username = User[0] + Password = User[1] SaveToDb({ 'module': 'SMTP', @@ -56,7 +44,36 @@ class ESMTP(BaseRequestHandler): 'user': Username, 'cleartext': Password, 'fullhash': Username+":"+Password, - }) + }) + + else: + self.request.send(str(SMTPAUTH1())) + data = self.request.recv(1024) + + if data: + try: + User = filter(None, b64decode(data).split('\x00')) + Username = User[0] + Password = User[1] + except: + Username = b64decode(data) + + self.request.send(str(SMTPAUTH2())) + data = self.request.recv(1024) + + if data: + try: Password = b64decode(data) + except: Password = data + + SaveToDb({ + 'module': 'SMTP', + 'type': 'Cleartext', + 'client': self.client_address[0], + 'user': Username, + 'cleartext': Password, + 'fullhash': Username+":"+Password, + }) except Exception: + raise pass