def test_challenge_with_target_info(self): test_target_info = TargetInfo() test_target_info[ TargetInfo.MSV_AV_NB_DOMAIN_NAME] = ntlmv2_netbios_domain_name test_target_info[ TargetInfo.MSV_AV_NB_COMPUTER_NAME] = ntlmv2_netbios_server_name expected_message_type = MessageTypes.NTLM_CHALLENGE expected_negotiate_flags = ntlmv2_negotiate_flags expected_server_challenge = server_challenge expected_signature = NTLM_SIGNATURE expected_target_info = test_target_info.get_data() expected_target_name = None expected_version = struct.unpack( "<q", HexToByte('06 00 70 17 00 00 00 0f'))[0] actual = ChallengeMessage(ntlmv2_challenge_message) actual_message_type = actual.message_type actual_negotiate_flags = actual.negotiate_flags actual_server_challenge = actual.server_challenge actual_signature = actual.signature actual_target_info = actual.target_info.get_data() actual_target_name = actual.target_name actual_version = actual.version assert actual_message_type == expected_message_type assert actual_negotiate_flags == expected_negotiate_flags assert actual_server_challenge == expected_server_challenge assert actual_signature == expected_signature assert actual_target_info == expected_target_info assert actual_target_name == expected_target_name assert actual_version == expected_version
def test_nt_v2_response_no_target_info(self, random_function, timestamp_function): test_challenge_message = ntlmv2_challenge_message test_challenge_message.target_info = None expected_response = HexToByte('39 56 f2 e5 69 d9 af a3 ac 2d 4f 36 7d 38 b9 c5' '01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00' 'aa aa aa aa aa aa aa aa 00 00 00 00 00 00 00 00' '00 00 00 00') expected_exchange_key = HexToByte('e3 35 1f 5b e0 a0 2b c2 ee b8 76 52 f7 e0 77 75') expected_target_info = TargetInfo() actual_response, actual_exchange_key, actual_target_info = ComputeResponse(user_name, password, domain_name, test_challenge_message, 3).get_nt_challenge_response(ntlmv2_lmv2_response, None) assert actual_response == expected_response assert actual_exchange_key == expected_exchange_key assert actual_target_info.get_data() == expected_target_info.get_data()
def test_challenge_message_with_target_name(self): # Same as the test above but with the flags modified to show it has the target name for coverage test_target_info = TargetInfo() test_target_info[ TargetInfo.MSV_AV_NB_DOMAIN_NAME] = ntlmv2_netbios_domain_name test_target_info[ TargetInfo.MSV_AV_NB_COMPUTER_NAME] = ntlmv2_netbios_server_name test_challenge_message = HexToByte( '4e 54 4c 4d 53 53 50 00 02 00 00 00 0c 00 0c 00' '38 00 00 00 37 82 8a e2 01 23 45 67 89 ab cd ef' '00 00 00 00 00 00 00 00 24 00 24 00 44 00 00 00' '06 00 70 17 00 00 00 0f 53 00 65 00 72 00 76 00' '65 00 72 00 02 00 0c 00 44 00 6f 00 6d 00 61 00' '69 00 6e 00 01 00 0c 00 53 00 65 00 72 00 76 00' '65 00 72 00 00 00 00 00') expected_message_type = MessageTypes.NTLM_CHALLENGE expected_negotiate_flags = 3800728119 expected_server_challenge = server_challenge expected_signature = NTLM_SIGNATURE expected_target_info = test_target_info.get_data() expected_target_name = ntlmv2_netbios_server_name expected_version = struct.unpack( "<q", HexToByte('06 00 70 17 00 00 00 0f'))[0] actual = ChallengeMessage(test_challenge_message) actual_message_type = actual.message_type actual_negotiate_flags = actual.negotiate_flags actual_server_challenge = actual.server_challenge actual_signature = actual.signature actual_target_info = actual.target_info.get_data() actual_target_name = actual.target_name actual_version = actual.version assert actual_message_type == expected_message_type assert actual_negotiate_flags == expected_negotiate_flags assert actual_server_challenge == expected_server_challenge assert actual_signature == expected_signature assert actual_target_info == expected_target_info assert actual_target_name == expected_target_name assert actual_version == expected_version