Changeset 338


Ignore:
Timestamp:
04/01/08 13:23:39 (6 years ago)
Author:
lowjoel
Message:

Use Overwriter's suggestion that plausible deniability files should be specified by the user, not randomly picked from the filesystem.

Location:
branches/eraser6
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/Eraser/Program.cs

    r332 r338  
    2929                //Load the task list 
    3030                RegistryKey key = Application.UserAppDataRegistry; 
    31                 byte[] savedTaskList = (byte[])key.GetValue("TaskList", new byte[] { }); 
     31                byte[] savedTaskList = (byte[])key.GetValue("TaskList", new byte[0]); 
    3232                using (MemoryStream stream = new MemoryStream(savedTaskList)) 
    3333                { 
     
    9797            S.Language = new CultureInfo(UILanguage); 
    9898 
     99            //Load the plausible deniability files 
     100            byte[] plausibleDeniabilityFiles = (byte[]) 
     101                key.GetValue("PlausibleDeniabilityFiles", new byte[0]); 
     102            if (plausibleDeniabilityFiles.Length != 0) 
     103                using (MemoryStream stream = new MemoryStream(plausibleDeniabilityFiles)) 
     104                { 
     105                    try 
     106                    { 
     107                        this.PlausibleDeniabilityFiles = (List<string>) 
     108                            new BinaryFormatter().Deserialize(stream); 
     109                    } 
     110                    catch (Exception) 
     111                    { 
     112                        key.DeleteValue("PlausibleDeniabilityFiles"); 
     113                        MessageBox.Show(S._("Could not load list of files used for plausible " + 
     114                            "deniability.\n\nThe list of files have been lost."), 
     115                            S._("Eraser"), MessageBoxButtons.OK, MessageBoxIcon.Error); 
     116                    } 
     117                } 
     118 
    99119            //Load the plugin settings. 
    100             byte[] pluginSettings = (byte[])key.GetValue("PluginSettings", new byte[] { }); 
     120            byte[] pluginSettings = (byte[])key.GetValue("PluginSettings", new byte[0]); 
    101121            if (pluginSettings.Length != 0) 
    102122                using (MemoryStream stream = new MemoryStream(pluginSettings)) 
     
    139159                key.SetValue("PluginSettings", stream.ToArray(), RegistryValueKind.Binary); 
    140160            } 
     161 
     162            using (MemoryStream stream = new MemoryStream()) 
     163            { 
     164                new BinaryFormatter().Serialize(stream, PlausibleDeniabilityFiles); 
     165                key.SetValue("PlausibleDeniabilityFiles", stream.ToArray(), RegistryValueKind.Binary); 
     166            } 
    141167        } 
    142168    } 
  • branches/eraser6/Eraser/SettingsPanel.Designer.cs

    r307 r338  
    5858            this.uiLanguageLbl = new System.Windows.Forms.Label(); 
    5959            this.uiLanguage = new System.Windows.Forms.ComboBox(); 
     60            this.plausibleDeniabilityFiles = new System.Windows.Forms.ListBox(); 
     61            this.plausibleDeniabilityFilesAddFile = new System.Windows.Forms.Button(); 
     62            this.plausibleDeniabilityFilesRemove = new System.Windows.Forms.Button(); 
     63            this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); 
     64            this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); 
     65            this.plausibleDeniabilityFilesAddFolder = new System.Windows.Forms.Button(); 
    6066            ((System.ComponentModel.ISupportInitialize)(this.titleIcon)).BeginInit(); 
    6167            this.content.SuspendLayout(); 
     
    7581            // content 
    7682            //  
     83            this.content.Controls.Add(this.plausibleDeniabilityFilesAddFolder); 
     84            this.content.Controls.Add(this.plausibleDeniabilityFilesRemove); 
     85            this.content.Controls.Add(this.plausibleDeniabilityFilesAddFile); 
     86            this.content.Controls.Add(this.plausibleDeniabilityFiles); 
    7787            this.content.Controls.Add(this.uiLanguage); 
    7888            this.content.Controls.Add(this.uiLanguageLbl); 
     
    95105            this.content.Controls.Add(this.uiContextMenu); 
    96106            this.content.Controls.Add(this.ui); 
    97             this.content.Size = new System.Drawing.Size(712, 630); 
     107            this.content.Size = new System.Drawing.Size(712, 780); 
    98108            //  
    99109            // ui 
     
    196206            this.plugins.AutoSize = true; 
    197207            this.plugins.Label = "Plugins"; 
    198             this.plugins.Location = new System.Drawing.Point(0, 357); 
     208            this.plugins.Location = new System.Drawing.Point(0, 507); 
    199209            this.plugins.Name = "plugins"; 
    200210            this.plugins.Padding = new System.Windows.Forms.Padding(0, 10, 0, 5); 
     
    213223            this.pluginsManager.ContextMenuStrip = this.pluginsMenu; 
    214224            this.pluginsManager.FullRowSelect = true; 
    215             this.pluginsManager.Location = new System.Drawing.Point(20, 395); 
     225            this.pluginsManager.Location = new System.Drawing.Point(20, 545); 
    216226            this.pluginsManager.Name = "pluginsManager"; 
    217227            this.pluginsManager.Size = new System.Drawing.Size(689, 234); 
     
    261271            this.scheduler.AutoSize = true; 
    262272            this.scheduler.Label = "Scheduler settings"; 
    263             this.scheduler.Location = new System.Drawing.Point(0, 263); 
     273            this.scheduler.Location = new System.Drawing.Point(0, 413); 
    264274            this.scheduler.Name = "scheduler"; 
    265275            this.scheduler.Padding = new System.Windows.Forms.Padding(0, 10, 0, 5); 
     
    270280            //  
    271281            this.schedulerMissed.AutoSize = true; 
    272             this.schedulerMissed.Location = new System.Drawing.Point(17, 298); 
     282            this.schedulerMissed.Location = new System.Drawing.Point(17, 448); 
    273283            this.schedulerMissed.Name = "schedulerMissed"; 
    274284            this.schedulerMissed.Size = new System.Drawing.Size(242, 13); 
     
    280290            this.schedulerMissedImmediate.AutoSize = true; 
    281291            this.schedulerMissedImmediate.Checked = true; 
    282             this.schedulerMissedImmediate.Location = new System.Drawing.Point(36, 314); 
     292            this.schedulerMissedImmediate.Location = new System.Drawing.Point(36, 464); 
    283293            this.schedulerMissedImmediate.Name = "schedulerMissedImmediate"; 
    284294            this.schedulerMissedImmediate.Size = new System.Drawing.Size(217, 17); 
     
    291301            //  
    292302            this.schedulerMissedIgnore.AutoSize = true; 
    293             this.schedulerMissedIgnore.Location = new System.Drawing.Point(36, 334); 
     303            this.schedulerMissedIgnore.Location = new System.Drawing.Point(36, 484); 
    294304            this.schedulerMissedIgnore.Name = "schedulerMissedIgnore"; 
    295305            this.schedulerMissedIgnore.Size = new System.Drawing.Size(339, 17); 
     
    339349            this.plausibleDeniability.Location = new System.Drawing.Point(20, 240); 
    340350            this.plausibleDeniability.Name = "plausibleDeniability"; 
    341             this.plausibleDeniability.Size = new System.Drawing.Size(361, 17); 
     351            this.plausibleDeniability.Size = new System.Drawing.Size(359, 17); 
    342352            this.plausibleDeniability.TabIndex = 14; 
    343             this.plausibleDeniability.Text = "Copy other files from the same volume over the deleted file after erasing"; 
     353            this.plausibleDeniability.Text = "Replace erased files with the following files to allow plausible deniability"; 
    344354            this.plausibleDeniability.UseVisualStyleBackColor = true; 
     355            this.plausibleDeniability.CheckedChanged += new System.EventHandler(this.plausibleDeniability_CheckedChanged); 
    345356            //  
    346357            // uiLanguageLbl 
     
    362373            this.uiLanguage.TabIndex = 3; 
    363374            //  
     375            // plausibleDeniabilityFiles 
     376            //  
     377            this.plausibleDeniabilityFiles.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     378                        | System.Windows.Forms.AnchorStyles.Right))); 
     379            this.plausibleDeniabilityFiles.FormattingEnabled = true; 
     380            this.plausibleDeniabilityFiles.Location = new System.Drawing.Point(36, 263); 
     381            this.plausibleDeniabilityFiles.Name = "plausibleDeniabilityFiles"; 
     382            this.plausibleDeniabilityFiles.Size = new System.Drawing.Size(673, 147); 
     383            this.plausibleDeniabilityFiles.TabIndex = 21; 
     384            //  
     385            // plausibleDeniabilityFilesAddFile 
     386            //  
     387            this.plausibleDeniabilityFilesAddFile.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
     388            this.plausibleDeniabilityFilesAddFile.Location = new System.Drawing.Point(462, 236); 
     389            this.plausibleDeniabilityFilesAddFile.Name = "plausibleDeniabilityFilesAddFile"; 
     390            this.plausibleDeniabilityFilesAddFile.Size = new System.Drawing.Size(75, 23); 
     391            this.plausibleDeniabilityFilesAddFile.TabIndex = 22; 
     392            this.plausibleDeniabilityFilesAddFile.Text = "Add File..."; 
     393            this.plausibleDeniabilityFilesAddFile.UseVisualStyleBackColor = true; 
     394            this.plausibleDeniabilityFilesAddFile.Click += new System.EventHandler(this.plausibleDeniabilityFilesAddFile_Click); 
     395            //  
     396            // plausibleDeniabilityFilesRemove 
     397            //  
     398            this.plausibleDeniabilityFilesRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
     399            this.plausibleDeniabilityFilesRemove.Location = new System.Drawing.Point(634, 236); 
     400            this.plausibleDeniabilityFilesRemove.Name = "plausibleDeniabilityFilesRemove"; 
     401            this.plausibleDeniabilityFilesRemove.Size = new System.Drawing.Size(75, 23); 
     402            this.plausibleDeniabilityFilesRemove.TabIndex = 23; 
     403            this.plausibleDeniabilityFilesRemove.Text = "Remove"; 
     404            this.plausibleDeniabilityFilesRemove.UseVisualStyleBackColor = true; 
     405            this.plausibleDeniabilityFilesRemove.Click += new System.EventHandler(this.plausibleDeniabilityFilesRemove_Click); 
     406            //  
     407            // openFileDialog 
     408            //  
     409            this.openFileDialog.Filter = "All Files (*.*)|*.*"; 
     410            this.openFileDialog.Multiselect = true; 
     411            //  
     412            // plausibleDeniabilityFilesAddFolder 
     413            //  
     414            this.plausibleDeniabilityFilesAddFolder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
     415            this.plausibleDeniabilityFilesAddFolder.Location = new System.Drawing.Point(543, 236); 
     416            this.plausibleDeniabilityFilesAddFolder.Name = "plausibleDeniabilityFilesAddFolder"; 
     417            this.plausibleDeniabilityFilesAddFolder.Size = new System.Drawing.Size(85, 23); 
     418            this.plausibleDeniabilityFilesAddFolder.TabIndex = 24; 
     419            this.plausibleDeniabilityFilesAddFolder.Text = "Add Folder..."; 
     420            this.plausibleDeniabilityFilesAddFolder.UseVisualStyleBackColor = true; 
     421            this.plausibleDeniabilityFilesAddFolder.Click += new System.EventHandler(this.plausibleDeniabilityFilesAddFolder_Click); 
     422            //  
    364423            // SettingsPanel 
    365424            //  
    366425            this.Controls.Add(this.saveSettings); 
    367426            this.Name = "SettingsPanel"; 
    368             this.Size = new System.Drawing.Size(752, 702); 
     427            this.Size = new System.Drawing.Size(752, 852); 
    369428            this.Controls.SetChildIndex(this.saveSettings, 0); 
    370429            this.Controls.SetChildIndex(this.titleLbl, 0); 
     
    411470        private System.Windows.Forms.ComboBox uiLanguage; 
    412471        private System.Windows.Forms.Label uiLanguageLbl; 
     472        private System.Windows.Forms.Button plausibleDeniabilityFilesRemove; 
     473        private System.Windows.Forms.Button plausibleDeniabilityFilesAddFile; 
     474        private System.Windows.Forms.ListBox plausibleDeniabilityFiles; 
     475        private System.Windows.Forms.OpenFileDialog openFileDialog; 
     476        private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog; 
     477        private System.Windows.Forms.Button plausibleDeniabilityFilesAddFolder; 
    413478    } 
    414479} 
  • branches/eraser6/Eraser/SettingsPanel.cs

    r318 r338  
    9797                    break; 
    9898                } 
     99 
     100            foreach (string path in ManagerLibrary.Instance.Settings.PlausibleDeniabilityFiles) 
     101                plausibleDeniabilityFiles.Items.Add(path); 
    99102 
    100103            lockedAllow.Checked = 
     
    163166        } 
    164167 
     168        private void plausibleDeniability_CheckedChanged(object sender, EventArgs e) 
     169        { 
     170            plausibleDeniabilityFiles.Enabled = plausibleDeniabilityFilesAddFile.Enabled = 
     171                plausibleDeniabilityFilesRemove.Enabled = plausibleDeniability.Checked; 
     172        } 
     173 
     174        private void plausibleDeniabilityFilesAddFile_Click(object sender, EventArgs e) 
     175        { 
     176            if (openFileDialog.ShowDialog() == DialogResult.OK) 
     177                plausibleDeniabilityFiles.Items.AddRange(openFileDialog.FileNames); 
     178        } 
     179 
     180        private void plausibleDeniabilityFilesAddFolder_Click(object sender, EventArgs e) 
     181        { 
     182            if (folderBrowserDialog.ShowDialog() == DialogResult.OK) 
     183                plausibleDeniabilityFiles.Items.Add(folderBrowserDialog.SelectedPath); 
     184        } 
     185 
     186        private void plausibleDeniabilityFilesRemove_Click(object sender, EventArgs e) 
     187        { 
     188            if (plausibleDeniabilityFiles.SelectedIndex != -1) 
     189                plausibleDeniabilityFiles.Items.RemoveAt(plausibleDeniabilityFiles.SelectedIndex); 
     190        } 
     191 
    165192        private void pluginsMenu_Opening(object sender, CancelEventArgs e) 
    166193        { 
     
    208235                errorProvider.SetError(erasePRNG, S._("An invalid randomness data " + 
    209236                    "source was selected.")); 
     237                return; 
     238            } 
     239            else if (plausibleDeniability.Checked && plausibleDeniabilityFiles.Items.Count == 0) 
     240            { 
     241                errorProvider.SetError(plausibleDeniabilityFiles, S._("Erasures with plausible deniability " + 
     242                    "was selected, but no files were selected to be used as decoys.")); 
     243                errorProvider.SetIconPadding(plausibleDeniabilityFiles, -16); 
    210244                return; 
    211245            } 
     
    230264            ManagerLibrary.Instance.Settings.ConfirmEraseOnRestart = 
    231265                lockedConfirm.Checked; 
     266 
     267            List<string> plausibleDeniabilityFilesList = new List<string>(); 
     268            foreach (string str in this.plausibleDeniabilityFiles.Items) 
     269                plausibleDeniabilityFilesList.Add(str); 
     270            ManagerLibrary.Instance.Settings.PlausibleDeniabilityFiles = plausibleDeniabilityFilesList; 
     271 
    232272            ManagerLibrary.Instance.Settings.ExecuteMissedTasksImmediately = 
    233273                schedulerMissedImmediate.Checked; 
  • branches/eraser6/Eraser/SettingsPanel.resx

    r303 r338  
    124124    <value>17, 17</value> 
    125125  </metadata> 
     126  <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
     127    <value>257, 17</value> 
     128  </metadata> 
     129  <metadata name="folderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
     130    <value>397, 17</value> 
     131  </metadata> 
    126132</root> 
  • branches/eraser6/Manager/DirectExecutor.cs

    r335 r338  
    792792            { 
    793793                //Get the template file to copy 
    794                 string shadowFile; 
    795794                FileInfo shadowFileInfo; 
    796                 do 
    797                 { 
    798                     shadowFile = GetRandomFileName(info.Directory.Root); 
     795                { 
     796                    string shadowFile; 
     797                    List<string> entries = ManagerLibrary.Instance.Settings.PlausibleDeniabilityFiles.GetRange( 
     798                        0, ManagerLibrary.Instance.Settings.PlausibleDeniabilityFiles.Count); 
     799                    PRNG prng = PRNGManager.GetInstance(ManagerLibrary.Instance.Settings.ActivePRNG); 
     800                    do 
     801                    { 
     802                        if (entries.Count == 0) 
     803                            throw new FatalException("Plausible deniability was selected, but no decoy files " + 
     804                                "were found. The current file has been only replaced with random data."); 
     805 
     806                        int index = prng.Next(entries.Count - 1); 
     807                        if ((System.IO.File.GetAttributes(entries[index]) & FileAttributes.Directory) != 0) 
     808                            shadowFile = GetRandomFileName(new DirectoryInfo(entries[index])); 
     809                        else 
     810                            shadowFile = entries[index]; 
     811 
     812                        entries.RemoveAt(index); 
     813                    } 
     814                    while (shadowFile.Length == 0 || Path.GetDirectoryName(shadowFile) == info.DirectoryName); 
    799815                    shadowFileInfo = new FileInfo(shadowFile); 
    800816                } 
    801                 while (shadowFileInfo.DirectoryName == info.DirectoryName); 
    802                  
     817 
    803818                //Rename the file to have the same name as the shadow 
    804819                info.MoveTo(info.DirectoryName + shadowFileInfo.Name); 
  • branches/eraser6/Manager/Manager.csproj

    r307 r338  
    1010    <RootNamespace>Eraser.Manager</RootNamespace> 
    1111    <AssemblyName>Eraser.Manager</AssemblyName> 
     12    <RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent> 
    1213  </PropertyGroup> 
    1314  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
  • branches/eraser6/Manager/Settings.cs

    r324 r338  
    149149        /// before removing it. 
    150150        /// </summary> 
     151        /// <seealso cref="PlausibleDeniabilityFiles"/> 
    151152        public bool PlausibleDeniability 
    152153        { 
     
    160161                lock (this) 
    161162                    plausibleDeniability = value; 
     163            } 
     164        } 
     165 
     166        /// <summary> 
     167        /// The files which are overwritten with when a file has been erased. 
     168        /// </summary> 
     169        public List<string> PlausibleDeniabilityFiles 
     170        { 
     171            get 
     172            { 
     173                lock (this) 
     174                    return plausibleDeniabilityFiles; 
     175            } 
     176            set 
     177            { 
     178                lock (this) 
     179                    plausibleDeniabilityFiles = value; 
    162180            } 
    163181        } 
     
    216234        private bool executeMissedTasksImmediately = true; 
    217235        private bool plausibleDeniability = true; 
     236        private List<string> plausibleDeniabilityFiles = new List<string>(); 
    218237 
    219238        protected Dictionary<Guid, Dictionary<string, object>> pluginSettings = 
Note: See TracChangeset for help on using the changeset viewer.