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