Example #1
0
        bool GetEncryptedPassword()
        {
            var msg      = Protocol.GetEncryptedPassword(_timestamp, _ski, _sessionKey);
            var response = _sslClient.SendAndReceive(msg, _settings.VcasServer, _settings.VcasPort + 1, false);

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

            var encryptedPassword = response.Skip(4).Take(response.Length - 4).ToArray();
            var decrypted         = RC4.Decrypt(_sessionKey, encryptedPassword);
            var passwordHex       = Encoding.ASCII.GetString(decrypted.Skip(4).ToArray());

            _logger.Info($"GetEncryptedPassword completed: {passwordHex}");
            return(true);
        }
Example #2
0
        bool LoadKeyBlock()
        {
            var hash = GenerateSignedHash();
            var msg  = Protocol.LoadKeyBlock(_timestamp, _ski, hash, _sessionKey);

            var response = _sslClient.SendAndReceive(msg, _settings.VksServer, _settings.VksPort, false);

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

            var encrypted = response.Skip(4).ToArray();
            var decrypted = RC4.Decrypt(_sessionKey, encrypted);

            File.WriteAllBytes(KeyblockFile, decrypted);

            _logger.Info($"GetAllChannelKeys completed: {decrypted.Length} bytes");

            return(true);
        }