示例#1
0
        public void TestCreateAuthenticationMessage()
        {
            var data    = Convert.FromBase64String("TlRMTVNTUAADAAAAGAAYAIAAAADqAOoAmAAAAAYABgBYAAAAGgAaAF4AAAAIAAgAeAAAAAAAAACCAQAABYKIogYC8CMAAAAPsyUuXH4iBM3WR8qXl4iSZkwARQBPAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIATABQAEMAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACc6JDjDlappZQyXfOifmWDAQEAAAAAAADK7TsuuPvSAeZKtohXEK4gAAAAAAIACABEAFAAQwAyAAEACABEAFAAQwAyAAQACABEAFAAQwAyAAMACABEAFAAQwAyAAcACADK7TsuuPvSAQYABAAGAAAACAAwADAAAAAAAAAAAAAAAAAwAAA046V6bZCIbNXFgAcnSiWirh3OxjYjNDwEkiay+DYhJQoAEAAAAAAAAAAAAAAAAAAAAAAACQAiAEgAVABUAFAALwBjAG0AbgAuAGsAaQBuAGcALgBjAG8AbQAAAAAAAAAAAAAAAAA=");
            var message = new NtlmAuthenticationMessage(data);

            Assert.IsTrue(message.Type == MessageType.Authentication);
        }
        public void TestCreateNtlmAuthenticationMessage()
        {
            const string originHex     = "4e544c4d5353500003000000180018006a00000018001800820000000c000c0040000000080008004c0000001600160054000000000000009a0000000102000044004f004d00410049004e00750073006500720057004f0052004b00530054004100540049004f004e00c337cd5cbd44fc9782a667af6d427c6de67c20c2d3e77c5625a98c1c31e81847466b29b2df4680f39958fb8c213a9cc6";
            var          messageStruct = new AuthenticationMessageStruct
            {
                Signature = Constants.NtlmsspBytes,
                Type      = MessageType.Authentication,
                Flags     = MessageFlag.NegotiateUnicode | MessageFlag.NegotiateNtlm,
            };
            var message = new NtlmAuthenticationMessage(messageStruct)
            {
                TargetName       = "DOMAIN",
                UserName         = "******",
                HostName         = "WORKSTATION",
                LmResponseData   = "c337cd5cbd44fc9782a667af6d427c6de67c20c2d3e77c56".HexToBytes(),
                NtlmResponseData = "25a98c1c31e81847466b29b2df4680f39958fb8c213a9cc6".HexToBytes()
            };

            Assert.IsTrue(message.Message.TargetNameLength == 12);
            Assert.IsTrue(message.Message.TargetNameSpace == 12);
            Assert.IsTrue(message.Message.TargetNameOffset == 64);
            Assert.IsTrue(message.TargetName == "DOMAIN");

            Assert.IsTrue(message.Message.UserNameLength == 8);
            Assert.IsTrue(message.Message.UserNameSpace == 8);
            Assert.IsTrue(message.Message.UserNameOffset == 76);
            Assert.IsTrue(message.UserName == "user");

            Assert.IsTrue(message.Message.HostNameLength == 22);
            Assert.IsTrue(message.Message.HostNameSpace == 22);
            Assert.IsTrue(message.Message.HostNameOffset == 84);
            Assert.IsTrue(message.HostName == "WORKSTATION");

            Assert.IsTrue(message.Message.LmResponseLength == 24);
            Assert.IsTrue(message.Message.LmResponseSpace == 24);
            Assert.IsTrue(message.Message.LmResponseOffset == 106);

            Assert.IsTrue(message.Message.NtlmResponseLength == 24);
            Assert.IsTrue(message.Message.NtlmResponseSpace == 24);
            Assert.IsTrue(message.Message.NtlmResponseOffset == 130);

            Assert.IsTrue(message.Message.SessionKeyLength == 0);
            Assert.IsTrue(message.Message.SessionKeySpace == 0);
            Assert.IsTrue(message.Message.SessionKeyOffset == 154);

            var actualHex = message.ToBytes().BytesToHex();

            Assert.IsTrue(originHex.Equals(actualHex, StringComparison.InvariantCultureIgnoreCase));
        }