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); } }
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; } }
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); } }