Example #1
0
    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
Example #2
0
    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()
Example #3
0
    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