def test_create_message(self): message = SMB2PreauthIntegrityCapabilities() message['hash_algorithms'] = [HashAlgorithms.SHA_512] message['salt'] = b"\x01" * 16 expected = b"\x01\x00" \ b"\x10\x00" \ b"\x01\x00" \ b"\x01\x01\x01\x01\x01\x01\x01\x01" \ b"\x01\x01\x01\x01\x01\x01\x01\x01" actual = message.pack() assert len(message) == 22 assert actual == expected
def test_parse_message(self): actual = SMB2PreauthIntegrityCapabilities() data = b"\x01\x00" \ b"\x10\x00" \ b"\x01\x00" \ b"\x01\x01\x01\x01\x01\x01\x01\x01" \ b"\x01\x01\x01\x01\x01\x01\x01\x01" actual.unpack(data) assert len(actual) == 22 assert actual['hash_algorithm_count'].get_value() == 1 assert actual['salt_length'].get_value() == 16 assert actual['hash_algorithms'].get_value() == [ HashAlgorithms.SHA_512 ] assert actual['salt'].get_value() == b"\x01" * 16
def test_create_message_3_1_1(self): message = SMB2NegotiateResponse() message['security_mode'] = SecurityMode.SMB2_NEGOTIATE_SIGNING_ENABLED message['dialect_revision'] = Dialects.SMB_3_1_1 message['server_guid'] = uuid.UUID(bytes=b"\x11" * 16) message['capabilities'] = 39 message['max_transact_size'] = 8388608 message['max_read_size'] = 8388608 message['max_write_size'] = 8388608 message['system_time'] = datetime(year=2017, month=11, day=15, hour=11, minute=32, second=12, microsecond=1616) message['server_start_time'] = datetime(year=2017, month=11, day=15, hour=11, minute=27, second=26, microsecond=349606) message['buffer'] = b"\x01\x02\x03\x04\x05\x06\x07\x08" \ b"\x09\x10" int_cap = SMB2PreauthIntegrityCapabilities() int_cap['hash_algorithms'] = [HashAlgorithms.SHA_512] int_cap['salt'] = b"\x22" * 32 negotiate_context = SMB2NegotiateContextRequest() negotiate_context['context_type'] = \ NegotiateContextType.SMB2_PREAUTH_INTEGRITY_CAPABILITIES negotiate_context['data'] = int_cap message['negotiate_context_list'] = [negotiate_context] expected = b"\x41\x00" \ b"\x01\x00" \ b"\x11\x03" \ b"\x01\x00" \ b"\x11\x11\x11\x11\x11\x11\x11\x11" \ b"\x11\x11\x11\x11\x11\x11\x11\x11" \ b"\x27\x00\x00\x00" \ b"\x00\x00\x80\x00" \ b"\x00\x00\x80\x00" \ b"\x00\x00\x80\x00" \ b"\x20\xc5\x0d\x61\x05\x5e\xd3\x01" \ b"\x7c\xbb\xca\xb6\x04\x5e\xd3\x01" \ b"\x80\x00" \ b"\x0a\x00" \ b"\x90\x00\x00\x00" \ b"\x01\x02\x03\x04\x05\x06\x07\x08" \ b"\x09\x10" \ b"\x00\x00\x00\x00\x00\x00" \ b"\x01\x00\x26\x00\x00\x00\x00\x00" \ b"\x01\x00\x20\x00\x01\x00\x22\x22" \ b"\x22\x22\x22\x22\x22\x22\x22\x22" \ b"\x22\x22\x22\x22\x22\x22\x22\x22" \ b"\x22\x22\x22\x22\x22\x22\x22\x22" \ b"\x22\x22\x22\x22\x22\x22" \ b"\x00\x00" actual = message.pack() assert len(message) == 128 assert actual == expected