Ejemplo n.º 1
0
        public byte[] GetEncryptedPassword(string timestamp, string ski, byte[] sessionKey)
        {
            var unencryptedMsgPart = $"{_settings.MessageFormat}~{_settings.Company}~{timestamp}~{_settings.MachineId}~";
            var encryptedMsgPart   = $"{_settings.ClientId}~GetEncryptedPassword~{_settings.Company}~{ski}~";

            _logger.Debug($"Get encryption password: {unencryptedMsgPart}{encryptedMsgPart}");

            var msg = Encoding.ASCII.GetBytes(unencryptedMsgPart).ToList();

            msg.AddRange(RC4.Encrypt(sessionKey, Encoding.ASCII.GetBytes(encryptedMsgPart)));

            return(msg.ToArray());
        }
Ejemplo n.º 2
0
        public byte[] LoadKeyBlock(string timestamp, string ski, string hash, byte[] sessionKey)
        {
            var unencryptedMsgPart = $"{_settings.MessageFormat}~{_settings.Company}~{timestamp}~{_settings.MachineId}~";
            var encryptedMsgPart   = $"{_settings.ClientId}~GetAllChannelKeys~{_settings.Company}~{ski.ToUpper()}~{hash}~{_settings.MachineId}~ ~ ~";

            var msg = Encoding.ASCII.GetBytes(unencryptedMsgPart).ToList();

            msg.AddRange(RC4.Encrypt(sessionKey, Encoding.ASCII.GetBytes(encryptedMsgPart)));

            _logger.Debug($"GetAllChannelKeys from server: {unencryptedMsgPart}{encryptedMsgPart}");

            return(msg.ToArray());
        }
Ejemplo n.º 3
0
        private byte[] Rc4Encrypt(string unencryptedMsgPart, string encryptedMsgPart, byte[] sessionKey, string debugMessage)
        {
            var encryptedData = RC4.Encrypt(sessionKey, Encoding.ASCII.GetBytes(encryptedMsgPart));

            unencryptedMsgPart = Add1155Header(unencryptedMsgPart, encryptedData.Length);

            _logger.Debug($"{debugMessage}: {unencryptedMsgPart}{encryptedMsgPart}");

            var msg = Encoding.ASCII.GetBytes(unencryptedMsgPart).ToList();

            msg.AddRange(encryptedData);

            return(msg.ToArray());
        }
Ejemplo n.º 4
0
        bool SaveEncryptedPassword()
        {
            _password = new byte[32];
            new Random().NextBytes(_password);

            var encodedBytes = RC4.Encrypt(_sessionKey, _password);
            var password     = BytesAsHex(encodedBytes);
            var msg          = Protocol.SaveEncryptedPassword(_timestamp, _ski, password, _sessionKey);

            var response = _sslClient.SendAndReceive(msg, _settings.VcasServer, _settings.VcasPort + 1, false);

            if (response == null || response.Length < 8)
            {
                _logger.Error("Failed to SaveEncryptedPassword, no valid response!");
                return(false);
            }

            _logger.Info($"SaveEncryptedPassword completed, size: {response.Length}");
            return(true);
        }