Example #1
0
        private async static Task Authenticate(string[] args)
        {
            RadiusClient rc         = new RadiusClient(args[0], args[1]);
            RadiusPacket authPacket = rc.Authenticate(args[2], args[3]);

            authPacket.SetAttribute(new VendorSpecificAttribute(10135, 1, UTF8Encoding.UTF8.GetBytes("Testing")));
            authPacket.SetAttribute(new VendorSpecificAttribute(10135, 2, new[] { (byte)7 }));
            RadiusPacket receivedPacket = await rc.SendAndReceivePacket(authPacket);

            if (receivedPacket == null)
            {
                throw new Exception("Can't contact remote radius server !");
            }
            switch (receivedPacket.PacketType)
            {
            case RadiusCode.ACCESS_ACCEPT:
                Console.WriteLine("Accepted");
                foreach (var attr in receivedPacket.Attributes)
                {
                    Console.WriteLine(attr.Type.ToString() + " = " + attr.Value);
                }
                break;

            case RadiusCode.ACCESS_CHALLENGE:
                Console.WriteLine("Challenged");
                break;

            default:
                Console.WriteLine("Rejected");
                break;
            }
        }
Example #2
0
        public RadiusPacket Authenticate(string username, string password)
        {
            RadiusPacket packet = new RadiusPacket(RadiusCode.ACCESS_REQUEST);

            packet.SetAuthenticator(_SharedSecret);
            byte[] encryptedPass = Utils.EncodePapPassword(Encoding.ASCII.GetBytes(password), packet.Authenticator, _SharedSecret);
            packet.SetAttribute(new RadiusAttribute(RadiusAttributeType.USER_NAME, Encoding.ASCII.GetBytes(username)));
            packet.SetAttribute(new RadiusAttribute(RadiusAttributeType.USER_PASSWORD, encryptedPass));
            return(packet);
        }
Example #3
0
        private static void Main(string[] args)
        {
            if (args.Length != 4)
            {
                ShowUsage();
                return;
            }

            try
            {
                RadiusClient rc         = new RadiusClient(args[0], args[1]);
                RadiusPacket authPacket = rc.Authenticate(args[2], args[3]);
                authPacket.SetAttribute(new VendorSpecificAttribute(10135, 1, UTF8Encoding.UTF8.GetBytes("Testing")));
                authPacket.SetAttribute(new VendorSpecificAttribute(10135, 2, new[] { (byte)7 }));
                RadiusPacket receivedPacket = rc.SendAndReceivePacket(authPacket).Result;
                if (receivedPacket == null)
                {
                    throw new Exception("Can't contact remote radius server !");
                }
                switch (receivedPacket.PacketType)
                {
                case RadiusCode.ACCESS_ACCEPT:
                    Console.WriteLine("Accepted");
                    foreach (var attr in receivedPacket.Attributes)
                    {
                        Console.WriteLine(attr.Type.ToString() + " = " + attr.Value);
                    }
                    break;

                case RadiusCode.ACCESS_CHALLENGE:
                    Console.WriteLine("Challenged");
                    break;

                default:
                    Console.WriteLine("Rejected");
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error : " + e.Message);
            }

            Console.ReadLine();
        }
Example #4
0
        public static string AuthenticateRadius(string strHostName, uint nPort, string strSharedSecret, string strUserName, string strPassword, string strStateAttribut)
        {
            //strStateAttribut = "30-34-30-61-33-66-39-34-2D-65-39-39-36-2D-34-32-38-62-2D-38-32-65-63-2D-30-63-64-32-63-32-64-66-36-35-31-31";
            //strStateAttribut = "040a3f94-e996-428b-82ec-0cd2c2df6511";

            RadiusClient rc         = new RadiusClient(strHostName, strSharedSecret, authPort: nPort);
            RadiusPacket authPacket = rc.Authenticate(strUserName, strPassword);

            if (strStateAttribut != "")
            {
                //string buffer = String.Join("", strStateAttribut.Split('-'));
                byte[] data = Encoding.UTF8.GetBytes(strStateAttribut);

                authPacket.SetAttribute(new RadiusAttribute(RadiusAttributeType.STATE, data));
            }
            else
            {
                authPacket.SetAttribute(new VendorSpecificAttribute(10135, 1, UTF8Encoding.UTF8.GetBytes("Testing")));
                authPacket.SetAttribute(new VendorSpecificAttribute(10135, 2, new[] { (byte)7 }));
            }

            RadiusPacket receivedPacket = rc.SendAndReceivePacket(authPacket);

            if (receivedPacket == null)
            {
                throw new SmartException(9901, "Can't contact remote radius server !");
            }

            StringBuilder sbDebug  = new StringBuilder();
            StringBuilder sbRetour = new StringBuilder();

            switch (receivedPacket.PacketType)
            {
            case RadiusCode.ACCESS_ACCEPT:
                sbRetour.Append("2#");
                sbDebug.AppendLine("Access-Accept");
                foreach (var attr in receivedPacket.Attributes)
                {
                    sbDebug.AppendLine(attr.Type.ToString() + " = " + attr.Value);
                }
                break;

            case RadiusCode.ACCESS_CHALLENGE:
                sbRetour.Append("11#");
                sbDebug.AppendLine("Access-Challenge");
                foreach (var attr in receivedPacket.Attributes)
                {
                    sbDebug.AppendLine(attr.Type.ToString() + " = " + attr.Value);
                    if (attr.Type == RadiusAttributeType.STATE)
                    {
                        sbRetour.Append(attr.Value);
                    }
                }
                break;

            case RadiusCode.ACCESS_REJECT:
                sbRetour.Append("3#");
                sbDebug.AppendLine("Access-Reject");
                if (!rc.VerifyAuthenticator(authPacket, receivedPacket))
                {
                    sbDebug.AppendLine("Authenticator check failed: Check your secret");
                }
                break;

            default:
                sbRetour.Append("0#");
                sbDebug.AppendLine("Rejected");
                break;
            }

            //return sbDebug.ToString();
            return(sbRetour.ToString());
        }