Example #1
0
        public Type3Message(Type2Message type2) : base(3)
        {
            _type2     = type2;
            _level     = NtlmSettings.DefaultAuthLevel;
            _challenge = (byte[])type2.Nonce.Clone();

            _domain   = type2.TargetName;
            _host     = "Xamarin.WebTests.TestMachine";
            _username = "******";

            Flags = (NtlmFlags)0x8200;
            if ((type2.Flags & NtlmFlags.NegotiateUnicode) != 0)
            {
                Flags |= NtlmFlags.NegotiateUnicode;
            }
            else
            {
                Flags |= NtlmFlags.NegotiateOem;
            }

            if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) != 0)
            {
                Flags |= NtlmFlags.NegotiateNtlm2Key;
            }
        }
Example #2
0
        public Type3Message(Type2Message type2) : base(3)
        {
            _type2     = type2;
            _level     = DefaultAuthLevel;
            _challenge = (byte[])type2.Nonce.Clone();

            _domain   = type2.TargetName;
            _host     = Environment.MachineName;
            _username = Environment.UserName;

            Flags = (NtlmFlags)0x8200;
            if ((type2.Flags & NtlmFlags.NegotiateUnicode) != 0)
            {
                Flags |= NtlmFlags.NegotiateUnicode;
            }
            else
            {
                Flags |= NtlmFlags.NegotiateOem;
            }

            if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) != 0)
            {
                Flags |= NtlmFlags.NegotiateNtlm2Key;
            }
        }
Example #3
0
        public Type3Message(Type2Message type2) : base(3)
        {
            _type2 = type2;
                        #if XAMARIN_WEBTESTS
            _level = NtlmSettings.DefaultAuthLevel;
                        #else
            _level = DefaultAuthLevel;
                        #endif
            _challenge = (byte[])type2.Nonce.Clone();

            _domain = type2.TargetName;
                        #if XAMARIN_WEBTESTS
            _host     = "Xamarin.WebTests.TestMachine";
            _username = "******";
                        #else
            _host     = Environment.MachineName;
            _username = Environment.UserName;
                        #endif

            Flags = (NtlmFlags)0x8200;
            if ((type2.Flags & NtlmFlags.NegotiateUnicode) != 0)
            {
                Flags |= NtlmFlags.NegotiateUnicode;
            }
            else
            {
                Flags |= NtlmFlags.NegotiateOem;
            }

            if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) != 0)
            {
                Flags |= NtlmFlags.NegotiateNtlm2Key;
            }
        }
Example #4
0
		public Type3Message () : base (3)
		{
			if (DefaultAuthLevel != NtlmAuthLevel.LM_and_NTLM)
				throw new InvalidOperationException (
					"Refusing to use legacy-mode LM/NTLM authentication " +
					"unless explicitly enabled using DefaultAuthLevel.");

			// default values
			_domain = Environment.UserDomainName;
			_host = Environment.MachineName;
			_username = Environment.UserName;
			_level = NtlmAuthLevel.LM_and_NTLM;
			Flags = (NtlmFlags) 0x8201;
		}
Example #5
0
		public Type3Message () : base (3)
		{
			if (DefaultAuthLevel != NtlmAuthLevel.LM_and_NTLM)
				throw new InvalidOperationException (
					"Refusing to use legacy-mode LM/NTLM authentication " +
					"unless explicitly enabled using DefaultAuthLevel.");

			// default values
			_domain = Environment.UserDomainName;
			_host = Environment.MachineName;
			_username = Environment.UserName;
			_level = NtlmAuthLevel.LM_and_NTLM;
			Flags = (NtlmFlags) 0x8201;
		}
Example #6
0
        public Type3Message(Type2Message type2, Version osVersion, NtlmAuthLevel level, string userName, string password, string host, NtlmFixes fixes = NtlmFixes.None) : base(3)
        {
            this.type2 = type2;
            this.fixes = fixes;

            challenge = type2.Nonce;
            Domain    = type2.TargetName;
            OSVersion = osVersion;
            Username  = userName;
            Password  = password;
            Level     = level;
            Host      = host;
            Flags     = 0;

            if (osVersion != null)
            {
                Flags |= NtlmFlags.NegotiateVersion;
            }

            if ((type2.Flags & NtlmFlags.NegotiateUnicode) != 0)
            {
                Flags |= NtlmFlags.NegotiateUnicode;
            }
            else
            {
                Flags |= NtlmFlags.NegotiateOem;
            }

            if ((type2.Flags & NtlmFlags.NegotiateNtlm) != 0)
            {
                Flags |= NtlmFlags.NegotiateNtlm;
            }

            if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) != 0)
            {
                Flags |= NtlmFlags.NegotiateNtlm2Key;
            }

            if ((type2.Flags & NtlmFlags.NegotiateTargetInfo) != 0)
            {
                Flags |= NtlmFlags.NegotiateTargetInfo;
            }

            if ((type2.Flags & NtlmFlags.RequestTarget) != 0)
            {
                Flags |= NtlmFlags.RequestTarget;
            }
        }
Example #7
0
        public static void Compute(Type2Message type2, NtlmAuthLevel level, string username, string password, string domain, out byte[] lm, out byte[] ntlm)
        {
            lm = null;

            switch (level)
            {
            case NtlmAuthLevel.LM_and_NTLM:
                lm   = ComputeLM(password, type2.Nonce);
                ntlm = ComputeNtlm(password, type2.Nonce);
                break;

            case NtlmAuthLevel.LM_and_NTLM_and_try_NTLMv2_Session:
                if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) == 0)
                {
                    goto case NtlmAuthLevel.LM_and_NTLM;
                }
                ComputeNtlmV2Session(password, type2.Nonce, out lm, out ntlm);
                break;

            case NtlmAuthLevel.NTLM_only:
                if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) != 0)
                {
                    ComputeNtlmV2Session(password, type2.Nonce, out lm, out ntlm);
                }
                else
                {
                    ntlm = ComputeNtlm(password, type2.Nonce);
                }
                break;

            case NtlmAuthLevel.NTLMv2_only:
                ntlm = ComputeNtlmV2(type2, username, password, domain);
                if (type2.TargetInfo.Timestamp != 0)
                {
                    lm = new byte[24];
                }
                break;

            default:
                throw new InvalidOperationException();
            }
        }
Example #8
0
        public Type3Message() : base(3)
        {
            if (DefaultAuthLevel != NtlmAuthLevel.LM_and_NTLM)
            {
                throw new InvalidOperationException(
                          "Refusing to use legacy-mode LM/NTLM authentication " +
                          "unless explicitly enabled using DefaultAuthLevel.");
            }

            // default values
                        #if XAMARIN_WEBTESTS
            _domain   = "Xamarin.WebTests.TestDomain";
            _host     = "Xamarin.WebTests.TestMachine";
            _username = "******";
                        #else
            _domain   = Environment.UserDomainName;
            _host     = Environment.MachineName;
            _username = Environment.UserName;
                        #endif
            _level = NtlmAuthLevel.LM_and_NTLM;
            Flags  = (NtlmFlags)0x8201;
        }
Example #9
0
        public Type3Message(Type2Message type2, NtlmAuthLevel level, string userName, string password, string host) : base(3)
        {
            this.type2 = type2;

            challenge = type2.Nonce;
            Domain    = type2.TargetName;
            Username  = userName;
            Password  = password;
            Level     = level;
            Host      = host;
            Flags     = 0;

            if ((type2.Flags & NtlmFlags.NegotiateUnicode) != 0)
            {
                Flags |= NtlmFlags.NegotiateUnicode;
            }
            else
            {
                Flags |= NtlmFlags.NegotiateOem;
            }

            if ((type2.Flags & NtlmFlags.NegotiateNtlm) != 0)
            {
                Flags |= NtlmFlags.NegotiateNtlm;
            }

            if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) != 0)
            {
                Flags |= NtlmFlags.NegotiateNtlm2Key;
            }

            if ((type2.Flags & NtlmFlags.NegotiateVersion) != 0)
            {
                Flags |= NtlmFlags.NegotiateVersion;
            }
        }
Example #10
0
		public Type3Message (Type2Message type2) : base (3)
		{
			_type2 = type2;
			_level = DefaultAuthLevel;
			_challenge = (byte[]) type2.Nonce.Clone ();

			_domain = type2.TargetName;
			_host = Environment.MachineName;
			_username = Environment.UserName;

			Flags = (NtlmFlags) 0x8200;
			if ((type2.Flags & NtlmFlags.NegotiateUnicode) != 0)
				Flags |= NtlmFlags.NegotiateUnicode;
			else
				Flags |= NtlmFlags.NegotiateOem;

			if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) != 0)
				Flags |= NtlmFlags.NegotiateNtlm2Key;
		}
Example #11
0
		public static void Compute (Type2Message type2, NtlmAuthLevel level,
		                            string username, string password, string domain,
		                            out byte[] lm, out byte[] ntlm)
		{
			lm = null;

			switch (level) {
			case NtlmAuthLevel.LM_and_NTLM:
				lm = Compute_LM (password, type2.Nonce);
				ntlm = Compute_NTLM (password, type2.Nonce);
				break;

			case NtlmAuthLevel.LM_and_NTLM_and_try_NTLMv2_Session:
				if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) == 0)
					goto case NtlmAuthLevel.LM_and_NTLM;
				Compute_NTLMv2_Session (password, type2.Nonce, out lm, out ntlm);
				break;

			case NtlmAuthLevel.NTLM_only:
				if ((type2.Flags & NtlmFlags.NegotiateNtlm2Key) != 0)
					Compute_NTLMv2_Session (password, type2.Nonce, out lm, out ntlm);
				else
					ntlm = Compute_NTLM (password, type2.Nonce);
				break;

			case NtlmAuthLevel.NTLMv2_only:
				ntlm = Compute_NTLMv2 (type2, username, password, domain);
				break;

			default:
				throw new InvalidOperationException ();
			}
		}
 public static void Compute(Mono.Security.Protocol.Ntlm.Type2Message type2, NtlmAuthLevel level, string username, string password, string domain, out byte[] lm, out byte[] ntlm)
 {
 }