Ejemplo n.º 1
0
        public override void RunImpl()
        {
            CipherParameters key = _client.RsaPair._privateKey;
            RSAEngine        rsa = new RSAEngine();

            rsa.init(false, key);

            byte[] decrypt = rsa.processBlock(Raw, 0, 128);

            if (decrypt.Length < 128)
            {
                byte[] temp = new byte[128];
                Array.Copy(decrypt, 0, temp, 128 - decrypt.Length, decrypt.Length);
                decrypt = temp;
            }

            string username = Encoding.ASCII.GetString(decrypt, 0x5e, 14).Replace("\0", string.Empty);
            string password = Encoding.ASCII.GetString(decrypt, 0x6c, 16).Replace("\0", string.Empty);

            AccountModel account = AccountService.GetAccountByLogin(username);

            if (account == null)
            {
                if (Config.Config.Instance.ServerConfig.AutoCreate)
                {
                    account = AccountService.CreateAccount(username, L2Security.HashPassword(password));
                }
                else
                {
                    _client.Send(LoginFail.ToPacket(LoginFailReason.ReasonUserOrPassWrong));
                    _client.Close();
                    return;
                }
            }
            else
            {
                if (!AccountService.CheckIfAccountIsCorrect(username, L2Security.HashPassword(password)))
                {
                    _client.Send(LoginFail.ToPacket(LoginFailReason.ReasonUserOrPassWrong));
                    _client.Close();
                    return;
                }

                if (ServerThreadPool.Instance.LoggedAlready(username.ToLower()))
                {
                    _client.Send(LoginFail.ToPacket(LoginFailReason.ReasonAccountInUse));
                    _client.Close();
                    return;
                }
            }

            Random rnd = new Random();

            _client.ActiveAccount = account;
            _client.SetLoginPair(rnd.Next(), rnd.Next());
            _client.SetPlayPair(rnd.Next(), rnd.Next());

            _client.Send(LoginOk.ToPacket(_client));
        }
Ejemplo n.º 2
0
 public static ReqKeyInfo DecodeRespKey(string __EncryptedKey)
 {
     try
     {
         string DecodeMsg = RSAEngine.DecryptUsingPublicKey(RSAEngine.RMSv01PublicKey, RSAEngine.RSAModulos, __EncryptedKey);//TripleDESEngine.DecryptData(__EncryptedKey, __EncDecKey);
         return(ParseRespKey(DecodeMsg));
     }
     catch (Exception ex)
     {
         throw new Exception("Invalid Key Please Contact Your Reseller {EXCEPTION:}" + ex.Message); //this means Decryption Error
     }
 }
Ejemplo n.º 3
0
        private byte[] DecryptPacket()
        {
            var key = _client.RsaPair._privateKey;
            var rsa = new RSAEngine();

            rsa.init(false, key);

            var decrypt = rsa.processBlock(Raw, 0, 128);

            if (decrypt.Length < 128)
            {
                var temp = new byte[128];
                Array.Copy(decrypt, 0, temp, 128 - decrypt.Length, decrypt.Length);
                return(temp);
            }

            return(decrypt);
        }
Ejemplo n.º 4
0
        // private static string __EncDecKey = "RMSv1TestKey";

        #region RequestMessage
        public static bool GenerateRequestkey(ClientInfo aClientInfo, string SaveAsPath)
        {
            try
            {
                //throw new Exception("SARI KING");
                //List<Win32_BIOS> __BiosInfo = GetBiosInfo();
                string __ActivationInfo;
                string SoftwareName    = "<SoftwareName>RMS</SoftwareName>";
                string SoftwareVersion = "<SoftwareVersion>1.00</SoftwareVersion>";
                string SerialNumber;
                string ClientName;
                string CompanyName;
                string ClientEmail;
                string ClientPhone;
                string RequestDate;


                SerialNumber = "<SerialNumber>" + GetBiosSerialNumber() + "</SerialNumber>";
                ClientName   = "<ClientName>" + aClientInfo.ClientName + "</ClientName>";
                CompanyName  = "<CompanyName>" + aClientInfo.CompanyName + "</CompanyName>";
                ClientPhone  = "<ClientPhone>" + aClientInfo.ClientPhone + "</ClientPhone>";
                ClientEmail  = "<ClientEmail>" + aClientInfo.ClientEmail + "</ClientEmail>";
                RequestDate  = "<RequestDate>" + aClientInfo.RequestDate + "</RequestDate>";

                __ActivationInfo = "<RMS-REQUEST>" + SoftwareName + SoftwareVersion + SerialNumber + ClientName + CompanyName + ClientPhone + ClientEmail + RequestDate + "</RMS-REQUEST>";
                string __EncryptedActivationInfo = RSAEngine.EncryptUsingPublicKey(RSAEngine.RMSv01PublicKey, RSAEngine.RSAModulos, __ActivationInfo); //TripleDESEngine.EncryptData(__ActivationInfo, __EncDecKey);
                if (__EncryptedActivationInfo != null)
                {
                    StreamWriter _StreamWriter = new StreamWriter(SaveAsPath, false, UTF8Encoding.UTF8);
                    _StreamWriter.WriteLine(__EncryptedActivationInfo);
                    _StreamWriter.Close();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Ejemplo n.º 5
0
        public override void run()
        {
            string username, password;

            CipherParameters key = getClient().RsaPair._privateKey;
            RSAEngine        rsa = new RSAEngine();

            rsa.init(false, key);

            byte[] decrypt = rsa.processBlock(_raw, 0, 128);

            if (decrypt.Length < 128)
            {
                byte[] temp = new byte[128];
                Array.Copy(decrypt, 0, temp, 128 - decrypt.Length, decrypt.Length);
                decrypt = temp;
            }

            username = Encoding.ASCII.GetString(decrypt, 0x5e, 14).Replace("\0", "");
            password = Encoding.ASCII.GetString(decrypt, 0x6c, 16).Replace("\0", "");

            AccountModel account = accountService.GetAccountByLogin(username);

            if (account == null)
            {
                if (Cfg.AUTO_ACCOUNTS)
                {
                    account = accountService.CreateAccount(username, L2Security.HashPassword(password));
                }
                else
                {
                    getClient().sendPacket(new LoginFail(getClient(), LoginFail.LoginFailReason.REASON_USER_OR_PASS_WRONG));
                    getClient().close();
                    return;
                }
            }
            else
            {
                if (!accountService.CheckIfAccountIsCorrect(username, L2Security.HashPassword(password)))
                {
                    getClient().sendPacket(new LoginFail(getClient(), LoginFail.LoginFailReason.REASON_USER_OR_PASS_WRONG));
                    getClient().close();
                    return;
                }

                if (ServerThreadPool.getInstance().LoggedAlready(username.ToLower()))
                {
                    getClient().sendPacket(new LoginFail(getClient(), LoginFail.LoginFailReason.REASON_ACCOUNT_IN_USE));
                    getClient().close();
                    return;
                }
            }

            Random rnd = new Random();

            getClient().activeAccount = account;
            getClient().setLoginPair(rnd.Next(), rnd.Next());
            getClient().setPlayPair(rnd.Next(), rnd.Next());

            getClient().sendPacket(new LoginOk(getClient()));
        }
Ejemplo n.º 6
0
        public override void RunImpl()
        {
            if (_client.State != LoginClientState.AuthedGG)
            {
                _client.Send(LoginFail.ToPacket(LoginFailReason.ReasonAccessFailed));
                _client.Close();
                return;
            }

            var       key = _client.RsaPair._privateKey;
            RSAEngine rsa = new RSAEngine();

            rsa.init(false, key);

            byte[] decrypt = rsa.processBlock(Raw, 0, 128);

            if (decrypt.Length < 128)
            {
                byte[] temp = new byte[128];
                Array.Copy(decrypt, 0, temp, 128 - decrypt.Length, decrypt.Length);
                decrypt = temp;
            }

            string username = Encoding.ASCII.GetString(decrypt, 0x5e, 14).Replace("\0", string.Empty);
            string password = Encoding.ASCII.GetString(decrypt, 0x6c, 16).Replace("\0", string.Empty);

            AccountContract account = _accountService.GetAccountByLogin(username);

            if (account == null)
            {
                if (_config.ServerConfig.AutoCreate)
                {
                    account = _accountService.CreateAccount(username, L2Security.HashPassword(password));
                }
                else
                {
                    _client.Send(LoginFail.ToPacket(LoginFailReason.ReasonUserOrPassWrong));
                    _client.Close();
                    return;
                }
            }
            else
            {
                if (!_accountService.CheckIfAccountIsCorrect(username, L2Security.HashPassword(password)))
                {
                    _client.Send(LoginFail.ToPacket(LoginFailReason.ReasonUserOrPassWrong));
                    _client.Close();
                    return;
                }

                if (LoginServer.ServiceProvider.GetService <ServerThreadPool>().LoggedAlready(username.ToLower()))
                {
                    _client.Send(LoginFail.ToPacket(LoginFailReason.ReasonAccountInUse));
                    _client.Close();
                    return;
                }
            }

            _client.ActiveAccount = account;

            _client.State = LoginClientState.AuthedLogin;
            _client.Send(LoginOk.ToPacket(_client));
        }