Esempio n. 1
0
        public List <byte> ParseType2AndCreateType3(byte[] Type2data, string userName, string password)
        {
            ChallengeMessage type2 = new ChallengeMessage(Type2data);
            var type3 = type2.CreateType3(userName, password);

            byte[] masterKey;
            if (type2.NegotiateFlag.HasFlag(NegotiateFlags.NEGOTIATE_KEY_EXCH))
            {
                masterKey = type3.NtChallengeResponseField.VariableNTLMv2Response.RandomSessionKey;
            }
            else
            {
                masterKey = type3.NtChallengeResponseField.VariableNTLMv2Response.UserSessionKey;
            }
            var keyLength = 5;

            if (type3.NegotiateFlag.HasFlag(NegotiateFlags.NEGOTIATE_128))
            {
                keyLength = 16;
            }
            else if (type3.NegotiateFlag.HasFlag(NegotiateFlags.NEGOTIATE_56))
            {
                keyLength = 7;
            }
            ComputeSubkeyGeneration(masterKey, keyLength);
            return(type3.DumpBinary());
        }
Esempio n. 2
0
        static public List <byte> CreateType3(byte[] Type2data, string userName, string password)
        {
            ChallengeMessage type2 = new ChallengeMessage(Type2data);

            return(type2.CreateType3(userName, password).DumpBinary());
        }