Codebase list pysmb / 218c9ce
Merge #166 into dev-1.2.x Michael Teo 3 years ago
1 changed file(s) with 13 addition(s) and 2 deletion(s). Raw diff Collapse all Expand all
88 from nmb.base import NMBSession
99 from .utils import convertFILETIMEtoEpoch
1010 from . import ntlm, securityblob
11 from six import b
12 import random
13 import string
14 from Crypto.Cipher import ARC4
1115
1216 try:
1317 import hashlib
370374 self.log.info('Performing NTLMv1 authentication (on SMB2) with server challenge "%s"', binascii.hexlify(server_challenge))
371375 nt_challenge_response, lm_challenge_response, session_key = ntlm.generateChallengeResponseV1(self.password, server_challenge, True)
372376
377 session_base_key = session_key
378 session_sign_key = b("".join([random.choice(string.digits+string.ascii_letters) for _ in range(16)]))
379 cipher = ARC4.new(session_key)
380 cipher_encrypt = cipher.encrypt
381 session_encrypted_key = cipher_encrypt(session_sign_key)
382 self.log.info("SMB keys = %s:%s:%s", session_encrypted_key.hex(), session_base_key.hex(), session_sign_key.hex())
373383 ntlm_data = ntlm.generateAuthenticateMessage(server_flags,
374384 nt_challenge_response,
375385 lm_challenge_response,
376 session_key,
386 session_encrypted_key,
377387 self.username,
378388 self.domain,
379389 self.my_name)
396406
397407 if self.is_signing_active:
398408 self.log.info("SMB signing activated. All SMB messages will be signed.")
399 self.signing_session_key = (session_key + b'\0'*16)[:16]
409 self.signing_session_key = session_sign_key
410 self.log.info("SMB signing key = %s", self.signing_session_key.hex())
400411 if self.capabilities & CAP_EXTENDED_SECURITY:
401412 self.signing_challenge_response = None
402413 else: