diff --git a/impacket/examples/ntlmrelayx/servers/httprelayserver.py b/impacket/examples/ntlmrelayx/servers/httprelayserver.py index 78f3dd1a12..e58f6c47d1 100644 --- a/impacket/examples/ntlmrelayx/servers/httprelayserver.py +++ b/impacket/examples/ntlmrelayx/servers/httprelayserver.py @@ -361,12 +361,12 @@ def do_local_auth(self, messageType, token, proxy): authenticateMessage = ntlm.NTLMAuthChallengeResponse() authenticateMessage.fromString(token) - if authenticateMessage['flags'] & ntlm.NTLMSSP_NEGOTIATE_UNICODE: - self.authUser = ('%s/%s' % (authenticateMessage['domain_name'].decode('utf-16le'), + if not (authenticateMessage['flags'] & ntlm.NTLMSSP_NEGOTIATE_UNICODE): + authenticateMessage['domain_name'] = authenticateMessage['domain_name'].decode('ascii').encode('utf-16le') + authenticateMessage['user_name'] = authenticateMessage['user_name'].decode('ascii').encode('utf-16le') + + self.authUser = ('%s/%s' % (authenticateMessage['domain_name'].decode('utf-16le'), authenticateMessage['user_name'].decode('utf-16le'))).upper() - else: - self.authUser = ('%s/%s' % (authenticateMessage['domain_name'].decode('ascii'), - authenticateMessage['user_name'].decode('ascii'))).upper() self.target = self.server.config.target.getTarget(identity = self.authUser) if self.target is None: @@ -440,15 +440,14 @@ def do_relay(self, messageType, token, proxy, content = None): authenticateMessage = ntlm.NTLMAuthChallengeResponse() authenticateMessage.fromString(token) - if self.server.config.disableMulti: - if authenticateMessage['flags'] & ntlm.NTLMSSP_NEGOTIATE_UNICODE: - self.authUser = ('%s/%s' % (authenticateMessage['domain_name'].decode('utf-16le'), - authenticateMessage['user_name'].decode('utf-16le'))).upper() - else: - self.authUser = ('%s/%s' % (authenticateMessage['domain_name'].decode('ascii'), - authenticateMessage['user_name'].decode('ascii'))).upper() + if not (authenticateMessage['flags'] & ntlm.NTLMSSP_NEGOTIATE_UNICODE): + authenticateMessage['domain_name'] = authenticateMessage['domain_name'].decode('ascii').encode('utf-16le') + authenticateMessage['user_name'] = authenticateMessage['user_name'].decode('ascii').encode('utf-16le') + + self.authUser = ('%s/%s' % (authenticateMessage['domain_name'].decode('utf-16le'), + authenticateMessage['user_name'].decode('utf-16le'))).upper() - target = '%s://%s@%s' % (self.target.scheme, self.authUser.replace("/", '\\'), self.target.netloc) + target = '%s://%s@%s' % (self.target.scheme, self.authUser.replace("/", '\\'), self.target.netloc) if not self.do_ntlm_auth(token, authenticateMessage): LOG.error("Authenticating against %s://%s as %s FAILED" % (self.target.scheme, self.target.netloc,