// methods private void Decode (byte[] message) { //base.Decode (message); if (message == null) throw new ArgumentNullException("message"); if (message.Length < 12) { string msg = "Minimum Type3 message length is 12 bytes."; throw new ArgumentOutOfRangeException("message", message.Length, msg); } if (!CheckHeader(message)) { string msg = "Invalid Type3 message header."; throw new ArgumentException(msg, "message"); } if (LittleEndian.ToUInt16 (message, 56) != message.Length) { string msg = "Invalid Type3 message length."; throw new ArgumentException (msg, "message"); } if (message.Length >= 64) { Flags = (Common.NtlmFlags)LittleEndian.ToUInt32(message, 60); } else { Flags = (Common.NtlmFlags)0x8201; } int dom_len = LittleEndian.ToUInt16 (message, 28); int dom_off = LittleEndian.ToUInt16 (message, 32); this.Domain = DecodeString (message, dom_off, dom_len); int user_len = LittleEndian.ToUInt16 (message, 36); int user_off = LittleEndian.ToUInt16 (message, 40); this.Username = DecodeString (message, user_off, user_len); }