예제 #1
0
        /// <summary>
        /// Provides files recovery feature
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRecoverFiles_Click(object sender, RoutedEventArgs e)
        {
            string securityAnswer = textBoxSecurityAnswer.Text.ToLower();
            string password       = textBoxRecoveryPassword.Password;

            if (EncryptedFiles.Count.Equals(0))
            {
                MessageBox.Show("You have no files to recover.", "No encrypted files found", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                if (DataCryptography.SHA512(securityAnswer).Equals(LoggedUser.GetAnswer()) && DataCryptography.SHA512(password).Equals(LoggedUser.GetPassword()))
                {
                    MessageBoxResult result = MessageBox.Show("Do you want to recover your files? All your program settings and keys will be deleted.", "Files recovery system", MessageBoxButton.YesNo, MessageBoxImage.Question);

                    if (result.Equals(MessageBoxResult.Yes))
                    {
                        string aesKey = DataCryptography.SHA512(DataCryptography.GenerateAesKey(this.Username,
                                                                                                password,
                                                                                                LoggedUser.GetQuestion(),
                                                                                                securityAnswer));

                        List <string> tempEncryptedFiles = new List <string>(EncryptedFiles);
                        EncryptedFiles.Clear();
                        Files.Clear();
                        Folders.Clear();
                        TrustedDevices.Clear();

                        var decryptionTask = Task.Run(() =>
                        {
                            foreach (string encryptedFilePath in tempEncryptedFiles)
                            {
                                string filePath = DataCryptography.FileDecrypt(encryptedFilePath, aesKey);
                            }
                        });
                        decryptionTask.Wait();

                        LoggedUser.SetPublicKeyXmlString(String.Empty);
                        LoggedUser.SetAesKey(aesKey);

                        IOClass.SaveFilesList(Files, this.UserFilesFilepath);
                        IOClass.SaveFilesList(EncryptedFiles, this.UserEncryptedFilesFilepath);
                        IOClass.SaveFoldersList(Folders, this.UserFoldersFilepath);
                        IOClass.SaveTrustedDevicesList(TrustedDevices, this.UserKeyDataFilepath);
                        IOClass.UpdateUser(LoggedUser);

                        bindFilesListBox();
                        bindFoldersListBox();

                        MessageBox.Show("Your files are decrypted now.", "Files recovery system", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                }
                else
                {
                    MessageBox.Show("Security answer or password incorrect!", "Files recovery system", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Deletes folder paths that are no longer protected
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void deleteFoldersBtn_Click(object sender, RoutedEventArgs e)
        {
            string selectedItem = listBoxFolders.SelectedItem.ToString();

            ProcessDirectory(selectedItem, false);
            IOClass.SaveFilesList(Files, this.UserFilesFilepath);
            Folders.Remove(selectedItem);
            IOClass.SaveFoldersList(Folders, this.UserFoldersFilepath);
            listBoxFiles.ItemsSource   = Files;
            listBoxFolders.ItemsSource = Folders;
        }
예제 #3
0
        /// <summary>
        /// Activates File Dialog and saves folder paths that will be protected
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void addFoldersBtn_Click(object sender, RoutedEventArgs e)
        {
            CommonOpenFileDialog folderDialog = new CommonOpenFileDialog
            {
                InitialDirectory = @"C:\",
                IsFolderPicker   = true
            };

            if (folderDialog.ShowDialog() == CommonFileDialogResult.Ok)
            {
                Folders = IOClass.ReadFoldersList(this.UserFoldersFilepath);
                Folders.AddRange(folderDialog.FileNames);

                foreach (string folderPath in folderDialog.FileNames)
                {
                    ProcessDirectory(folderPath, true);
                }

                IOClass.SaveFilesList(Files, this.UserFilesFilepath);
                listBoxFolders.ItemsSource = Folders;
                listBoxFiles.ItemsSource   = Files;
                IOClass.SaveFoldersList(Folders, this.UserFoldersFilepath);
            }
        }