MCPcopy Create free account
hub / github.com/PierreGode/Ragnar / _handleSessionChallenge_SMB2

Method _handleSessionChallenge_SMB2

pager_lib/smb/base.py:363–415  ·  view source on GitHub ↗
(self, message, ntlm_token)

Source from the content-addressed store, hash-verified

361
362
363 def _handleSessionChallenge_SMB2(self, message, ntlm_token):
364 server_challenge, server_flags, server_info = ntlm.decodeChallengeMessage(ntlm_token)
365
366 self.log.info('Performing NTLMv2 authentication (on SMB2) with server challenge "%s"', binascii.hexlify(server_challenge))
367
368 if self.use_ntlm_v2:
369 self.log.info('Performing NTLMv2 authentication (on SMB2) with server challenge "%s"', binascii.hexlify(server_challenge))
370 nt_challenge_response, lm_challenge_response, session_key = ntlm.generateChallengeResponseV2(self.password,
371 self.username,
372 server_challenge,
373 server_info,
374 self.domain)
375
376 else:
377 self.log.info('Performing NTLMv1 authentication (on SMB2) with server challenge "%s"', binascii.hexlify(server_challenge))
378 nt_challenge_response, lm_challenge_response, session_key = ntlm.generateChallengeResponseV1(self.password, server_challenge, True)
379
380 ntlm_data, session_signing_key = ntlm.generateAuthenticateMessage(server_flags,
381 nt_challenge_response,
382 lm_challenge_response,
383 session_key,
384 self.username,
385 self.domain,
386 self.my_name)
387
388 if self.log.isEnabledFor(logging.DEBUG):
389 self.log.debug('NT challenge response is "%s" (%d bytes)', binascii.hexlify(nt_challenge_response), len(nt_challenge_response))
390 self.log.debug('LM challenge response is "%s" (%d bytes)', binascii.hexlify(lm_challenge_response), len(lm_challenge_response))
391
392 blob = securityblob.generateAuthSecurityBlob(ntlm_data)
393 self._sendSMBMessage(SMB2Message(SMB2SessionSetupRequest(blob)))
394
395 if self.security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED:
396 self.log.info('Server requires all SMB messages to be signed')
397 self.is_signing_active = (self.sign_options != SMB.SIGN_NEVER)
398 elif self.security_mode & SMB2_NEGOTIATE_SIGNING_ENABLED:
399 self.log.info('Server supports SMB signing')
400 self.is_signing_active = (self.sign_options == SMB.SIGN_WHEN_SUPPORTED)
401 else:
402 self.is_signing_active = False
403
404 if self.is_signing_active:
405 self.log.info("SMB signing activated. All SMB messages will be signed.")
406 self.signing_session_key = session_signing_key
407 if self.log.isEnabledFor(logging.DEBUG):
408 self.log.info("SMB signing key is %s", binascii.hexlify(self.signing_session_key))
409
410 if self.capabilities & CAP_EXTENDED_SECURITY:
411 self.signing_challenge_response = None
412 else:
413 self.signing_challenge_response = blob
414 else:
415 self.log.info("SMB signing deactivated. SMB messages will NOT be signed.")
416
417
418 def _listShares_SMB2(self, callback, errback, timeout = 30):

Callers

nothing calls this directly

Calls 4

SMB2MessageClass · 0.85
infoMethod · 0.80
debugMethod · 0.80

Tested by

no test coverage detected