(self, message, ntlm_token)
| 1922 | |
| 1923 | |
| 1924 | def _handleSessionChallenge_SMB1(self, message, ntlm_token): |
| 1925 | assert message.hasExtendedSecurity |
| 1926 | |
| 1927 | if message.uid and not self.uid: |
| 1928 | self.uid = message.uid |
| 1929 | |
| 1930 | server_challenge, server_flags, server_info = ntlm.decodeChallengeMessage(ntlm_token) |
| 1931 | if self.use_ntlm_v2: |
| 1932 | self.log.info('Performing NTLMv2 authentication (with extended security) with server challenge "%s"', binascii.hexlify(server_challenge)) |
| 1933 | nt_challenge_response, lm_challenge_response, session_key = ntlm.generateChallengeResponseV2(self.password, |
| 1934 | self.username, |
| 1935 | server_challenge, |
| 1936 | server_info, |
| 1937 | self.domain) |
| 1938 | |
| 1939 | else: |
| 1940 | self.log.info('Performing NTLMv1 authentication (with extended security) with server challenge "%s"', binascii.hexlify(server_challenge)) |
| 1941 | nt_challenge_response, lm_challenge_response, session_key = ntlm.generateChallengeResponseV1(self.password, server_challenge, True) |
| 1942 | |
| 1943 | ntlm_data, signing_session_key = ntlm.generateAuthenticateMessage(server_flags, |
| 1944 | nt_challenge_response, |
| 1945 | lm_challenge_response, |
| 1946 | session_key, |
| 1947 | self.username, |
| 1948 | self.domain, |
| 1949 | self.my_name) |
| 1950 | |
| 1951 | if self.log.isEnabledFor(logging.DEBUG): |
| 1952 | self.log.debug('NT challenge response is "%s" (%d bytes)', binascii.hexlify(nt_challenge_response), len(nt_challenge_response)) |
| 1953 | self.log.debug('LM challenge response is "%s" (%d bytes)', binascii.hexlify(lm_challenge_response), len(lm_challenge_response)) |
| 1954 | |
| 1955 | blob = securityblob.generateAuthSecurityBlob(ntlm_data) |
| 1956 | self._sendSMBMessage(SMBMessage(ComSessionSetupAndxRequest__WithSecurityExtension(0, blob))) |
| 1957 | |
| 1958 | if self.security_mode & NEGOTIATE_SECURITY_SIGNATURES_REQUIRE: |
| 1959 | self.log.info('Server requires all SMB messages to be signed') |
| 1960 | self.is_signing_active = (self.sign_options != SMB.SIGN_NEVER) |
| 1961 | elif self.security_mode & NEGOTIATE_SECURITY_SIGNATURES_ENABLE: |
| 1962 | self.log.info('Server supports SMB signing') |
| 1963 | self.is_signing_active = (self.sign_options == SMB.SIGN_WHEN_SUPPORTED) |
| 1964 | else: |
| 1965 | self.is_signing_active = False |
| 1966 | |
| 1967 | if self.is_signing_active: |
| 1968 | self.log.info("SMB signing activated. All SMB messages will be signed.") |
| 1969 | self.signing_session_key = signing_session_key |
| 1970 | if self.capabilities & CAP_EXTENDED_SECURITY: |
| 1971 | self.signing_challenge_response = None |
| 1972 | else: |
| 1973 | self.signing_challenge_response = blob |
| 1974 | else: |
| 1975 | self.log.info("SMB signing deactivated. SMB messages will NOT be signed.") |
| 1976 | |
| 1977 | |
| 1978 | def _handleNegotiateResponse_SMB1(self, message): |
nothing calls this directly
no test coverage detected