コード例 #1
0
        private void ProcessKdcProxy(KdcProxyMessage proxyMessage, string source)
        {
            var message = proxyMessage.UnwrapMessage();

            var kdcBody = new
            {
                AsReq    = TryDecode(message, m => KrbAsReq.DecodeApplication(m)),
                AsRep    = TryDecode(message, m => KrbAsRep.DecodeApplication(m)),
                TgsReq   = TryDecode(message, m => KrbTgsReq.DecodeApplication(m)),
                TgsRep   = TryDecode(message, m => KrbTgsRep.DecodeApplication(m)),
                KrbError = TryDecode(message, m => KrbError.DecodeApplication(m))
            };

            if (kdcBody.AsReq != null)
            {
                ExplodeObject(kdcBody.AsReq, $"AS-REQ ({source})");
            }
            else if (kdcBody.AsRep != null)
            {
                ExplodeObject(kdcBody.AsRep, $"AS-REP ({source})");
            }
            else if (kdcBody.TgsReq != null)
            {
                ExplodeObject(kdcBody.TgsReq, $"TGS-REQ ({source})");
            }
            else if (kdcBody.TgsRep != null)
            {
                ExplodeObject(kdcBody.TgsRep, $"TGS-REP ({source})");
            }
            else if (kdcBody.KrbError != null)
            {
                ExplodeObject(kdcBody.KrbError, $"Krb-Error ({source})");
            }
        }
コード例 #2
0
ファイル: AllMessagesTests.cs プロジェクト: z0h3/Kerberos.NET
        public void Message_TgsReqS4uProxy()
        {
            var file = ReadDataFile("messages\\tgs-req-app2-s4u-proxy");

            var decoded = TestSimpleRoundtrip(
                "tgs-req-app2-s4u-proxy",
                file.Skip(4).ToArray(),
                v => KrbTgsReq.DecodeApplication(v),
                t => t.EncodeApplication().ToArray()
                );

            Assert.IsNotNull(decoded);
        }
コード例 #3
0
ファイル: AllMessagesTests.cs プロジェクト: z0h3/Kerberos.NET
        public void Message_TgsReqKrbTgtRenew()
        {
            var file = ReadDataFile("messages\\tgs-req-testuser-krbtgt-renew");

            var decoded = TestSimpleRoundtrip(
                "tgs-req-testuser-krbtgt-renew",
                file.Skip(4).ToArray(),
                v => KrbTgsReq.DecodeApplication(v),
                t => t.EncodeApplication().ToArray()
                );

            Assert.IsNotNull(decoded);
        }
コード例 #4
0
        public void TgsParse()
        {
            var tgsReqBytes = ReadDataFile("messages\\tgs-req-testuser-host-app03").Skip(4).ToArray();

            var tgsReq = KrbTgsReq.DecodeApplication(tgsReqBytes);

            var paData = tgsReq.PaData.First(p => p.Type == PaDataType.PA_TGS_REQ);

            var apReq = paData.DecodeApReq();

            var krbtgtKey = new KerberosKey(key: key);

            var krbtgt = apReq.Ticket.EncryptedPart.Decrypt(krbtgtKey, KeyUsage.Ticket, b => new KrbEncTicketPart().DecodeAsApplication(b));

            Assert.AreEqual("testuser", krbtgt.CName.FullyQualifiedName);
        }
コード例 #5
0
        private static KrbApReq ExtractApReq(KrbTgsReq tgsReq)
        {
            var paData = tgsReq.PaData.First(p => p.Type == PaDataType.PA_TGS_REQ);

            return(paData.DecodeApReq());
        }