コード例 #1
0
        public static bool Register(string username, string password, string email, string license)
        {
            if (!Constants.Initialized)
            {
                MessageBox.Show("Please initialize your application first!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                Security.End();
                Process.GetCurrentProcess().Kill();
            }
            if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password) || string.IsNullOrWhiteSpace(email) || string.IsNullOrWhiteSpace(license))
            {
                MessageBox.Show("Invalid registrar information!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                Process.GetCurrentProcess().Kill();
            }
            string[] response = new string[] { };
            using (WebClient wc = new WebClient())
            {
                try
                {
                    Security.Start();
                    wc.Proxy = null;

                    response = Encryption.DecryptService(Encoding.Default.GetString(wc.UploadValues(Constants.ApiUrl, new NameValueCollection
                    {
                        ["token"]       = Encryption.EncryptService(Constants.Token),
                        ["timestamp"]   = Encryption.EncryptService(DateTime.Now.ToString()),
                        ["aid"]         = Encryption.APIService(OnProgramStart.AID),
                        ["session_id"]  = Constants.IV,
                        ["api_id"]      = Constants.APIENCRYPTSALT,
                        ["api_key"]     = Constants.APIENCRYPTKEY,
                        ["session_key"] = Constants.Key,
                        ["secret"]      = Encryption.APIService(OnProgramStart.Secret),
                        ["type"]        = Encryption.APIService("register"),
                        ["username"]    = Encryption.APIService(username),
                        ["password"]    = Encryption.APIService(password),
                        ["email"]       = Encryption.APIService(email),
                        ["license"]     = Encryption.APIService(license),
                        ["hwid"]        = Encryption.APIService(Constants.HWID()),
                    }))).Split("|".ToCharArray());
                    if (response[0] != Constants.Token)
                    {
                        MessageBox.Show("Security error has been triggered!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                        Security.End();
                        Process.GetCurrentProcess().Kill();
                    }
                    if (Security.MaliciousCheck(response[1]))
                    {
                        MessageBox.Show("Possible malicious activity detected!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Warning);
                        Process.GetCurrentProcess().Kill();
                    }
                    if (Constants.Breached)
                    {
                        MessageBox.Show("Possible malicious activity detected!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Warning);
                        Process.GetCurrentProcess().Kill();
                    }
                    switch (response[2])
                    {
                    case "success":
                        Security.End();
                        return(true);

                    case "invalid_license":
                        MessageBox.Show("License does not exist!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                        Security.End();
                        return(false);

                    case "email_used":
                        MessageBox.Show("Email has already been used!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                        Security.End();
                        return(false);

                    case "invalid_username":
                        MessageBox.Show("You entered an invalid/used username!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                        Security.End();
                        return(false);
                    }
                }
                catch
                {
                    MessageBox.Show("Failed to establish a secure SSL tunnel with the server!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                    Process.GetCurrentProcess().Kill();
                }
                return(false);
            }
        }
コード例 #2
0
 public static void Start()
 {
     if (Constants.Started)
     {
         MessageBox.Show("A session has already been started, please end the previous one!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Warning);
         Process.GetCurrentProcess().Kill();
     }
     else
     {
         using (StreamReader sr = new StreamReader(@"C:\Windows\System32\drivers\etc\hosts"))
         {
             string contents = sr.ReadToEnd();
             if (contents.Contains("api.auth.gg"))
             {
                 Constants.Breached = true;
                 MessageBox.Show("DNS redirecting has been detected!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                 Process.GetCurrentProcess().Kill();
             }
         }
         InfoManager infoManager = new InfoManager();
         infoManager.StartListener();
         Constants.Token = Guid.NewGuid().ToString();
         ServicePointManager.ServerCertificateValidationCallback += PinPublicKey;
         Constants.APIENCRYPTKEY  = Convert.ToBase64String(Encoding.Default.GetBytes(Session(32)));
         Constants.APIENCRYPTSALT = Convert.ToBase64String(Encoding.Default.GetBytes(Session(16)));
         Constants.IV             = Convert.ToBase64String(Encoding.Default.GetBytes(Constants.RandomString(16)));
         Constants.Key            = Convert.ToBase64String(Encoding.Default.GetBytes(Constants.RandomString(32)));
         Constants.Started        = true;
     }
 }
コード例 #3
0
        public static bool Login(string username, string password)
        {
            if (!Constants.Initialized)
            {
                MessageBox.Show("Please initialize your application first!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                Process.GetCurrentProcess().Kill();
            }
            if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
            {
                MessageBox.Show("Missing user login information!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                Process.GetCurrentProcess().Kill();
            }
            string[] response = new string[] { };
            using (WebClient wc = new WebClient())
            {
                try
                {
                    Security.Start();
                    wc.Proxy = null;
                    response = (Encryption.DecryptService(Encoding.Default.GetString(wc.UploadValues(Constants.ApiUrl, new NameValueCollection
                    {
                        ["token"] = Encryption.EncryptService(Constants.Token),
                        ["timestamp"] = Encryption.EncryptService(DateTime.Now.ToString()),
                        ["aid"] = Encryption.APIService(OnProgramStart.AID),
                        ["session_id"] = Constants.IV,
                        ["api_id"] = Constants.APIENCRYPTSALT,
                        ["api_key"] = Constants.APIENCRYPTKEY,
                        ["username"] = Encryption.APIService(username),
                        ["password"] = Encryption.APIService(password),
                        ["hwid"] = Encryption.APIService(Constants.HWID()),
                        ["session_key"] = Constants.Key,
                        ["secret"] = Encryption.APIService(OnProgramStart.Secret),
                        ["type"] = Encryption.APIService("login")
                    }))).Split("|".ToCharArray()));
                    if (response[0] != Constants.Token)
                    {
                        MessageBox.Show("Security error has been triggered!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                        Process.GetCurrentProcess().Kill();
                    }
                    if (Security.MaliciousCheck(response[1]))
                    {
                        MessageBox.Show("Possible malicious activity detected!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Warning);
                        Process.GetCurrentProcess().Kill();
                    }
                    if (Constants.Breached)
                    {
                        MessageBox.Show("Possible malicious activity detected!", OnProgramStart.Name, MessageBoxButton.OK, MessageBoxImage.Warning);
                        Process.GetCurrentProcess().Kill();
                    }
                    switch (response[2])
                    {
                    case "success":
                        User.ID           = response[3];
                        User.Username     = response[4];
                        User.Password     = response[5];
                        User.Email        = response[6];
                        User.HWID         = response[7];
                        User.UserVariable = response[8];
                        User.Rank         = response[9];
                        User.IP           = response[10];
                        User.Expiry       = response[11];
                        User.LastLogin    = response[12];
                        User.RegisterDate = response[13];
                        string Variables = response[14];
                        foreach (string var in Variables.Split('~'))
                        {
                            string[] items = var.Split('^');
                            try
                            {
                                App.Variables.Add(items[0], items[1]);
                            }
                            catch
                            {
                                //If some are null or not loaded, just ignore.
                                //Error will be shown when loading the variable anyways
                            }
                        }
                        Security.End();
                        return(true);

                    case "invalid_details":
                        MessageBox.Show("Sorry, your username/password does not match!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                        Security.End();
                        return(false);

                    case "time_expired":
                        MessageBox.Show("Your subscription has expired!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Warning);
                        Security.End();
                        return(false);

                    case "hwid_updated":
                        MessageBox.Show("New machine has been binded, re-open the application!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Information);
                        Security.End();
                        return(false);

                    case "invalid_hwid":
                        MessageBox.Show("This user is binded to another computer, please contact support!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                        Security.End();
                        return(false);
                    }
                }
                catch
                {
                    MessageBox.Show("Failed to establish a secure SSL tunnel with the server!", ApplicationSettings.Name, MessageBoxButton.OK, MessageBoxImage.Error);
                    Security.End();
                    Process.GetCurrentProcess().Kill();
                }
                return(false);
            }
        }