From 8392e14e54ccc8786faddf0633fb110079549ea2 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Mon, 15 Jun 2020 15:32:41 -0400 Subject: [PATCH 01/43] Manifest file parser does more validation --- .../autoingest/AutopsyManifestFileParser.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java index 889dffd071..21ef95ca74 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java @@ -71,16 +71,26 @@ public final class AutopsyManifestFileParser implements ManifestFileParser { Date dateFileCreated = new Date(attrs.creationTime().toMillis()); Document doc = this.createManifestDOM(filePath); XPath xpath = XPathFactory.newInstance().newXPath(); + XPathExpression expr = xpath.compile(CASE_NAME_XPATH); String caseName = (String) expr.evaluate(doc, XPathConstants.STRING); + if (caseName.isEmpty()) { + throw new ManifestFileParserException("CaseName element is missing or empty, manifest is invalid"); + } + expr = xpath.compile(DEVICE_ID_XPATH); String deviceId = (String) expr.evaluate(doc, XPathConstants.STRING); if (deviceId.isEmpty()) { deviceId = UUID.randomUUID().toString(); } + expr = xpath.compile(DATA_SOURCE_NAME_XPATH); String dataSourceName = (String) expr.evaluate(doc, XPathConstants.STRING); + if (dataSourceName.isEmpty()) { + throw new ManifestFileParserException("DataSource element is missing or empty, manifest is invalid"); + } Path dataSourcePath = filePath.getParent().resolve(dataSourceName); + return new Manifest(filePath, dateFileCreated, caseName, deviceId, dataSourcePath, new HashMap<>()); } catch (Exception ex) { throw new ManifestFileParserException(String.format("Error parsing manifest %s", filePath), ex); From decede9a9469edd17b56a53382fa78ae6d27a573 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 15 Jun 2020 15:56:08 -0400 Subject: [PATCH 02/43] added diff script for determining difference between two commits in properties-MERGED files --- release_scripts/diffscript.py | 219 ++++++++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 release_scripts/diffscript.py diff --git a/release_scripts/diffscript.py b/release_scripts/diffscript.py new file mode 100644 index 0000000000..30db55c12a --- /dev/null +++ b/release_scripts/diffscript.py @@ -0,0 +1,219 @@ +"""This script determines the updated, added, and deleted properties from the '.properties-MERGED' files +and generates a csv file containing the items changed. This script requires gitpython and jproperties. +""" + +from git import Repo +from typing import List, Dict, Tuple +import re +import csv +from jproperties import Properties +import sys + + +class ItemChange: + def __init__(self, rel_path: str, key: str, prev_val: str, cur_val: str): + """Describes the change that occurred for a particular key of a properties file. + + Args: + rel_path (str): The relative path of the properties file. + key (str): The key in the properties file. + prev_val (str): The previous value for the key. + cur_val (str): The current value for the key. + """ + self.rel_path = rel_path + self.key = key + self.prev_val = prev_val + self.cur_val = cur_val + if ItemChange.has_str_content(cur_val) and not ItemChange.has_str_content(prev_val): + self.type = 'ADDITION' + elif not ItemChange.has_str_content(cur_val) and ItemChange.has_str_content(prev_val): + self.type = 'DELETION' + else: + self.type = 'CHANGE' + + @staticmethod + def has_str_content(content: str): + """Determines whether or not the content is empty or None. + + Args: + content (str): The text. + + Returns: + bool: Whether or not it has content. + """ + return content is not None and len(content.strip()) > 0 + + @staticmethod + def get_headers() -> List[str]: + """Returns the csv headers to insert when serializing a list of ItemChange objects to csv. + + Returns: + List[str]: The column headers + """ + return ['Relative Path', 'Key', 'Change Type', 'Previous Value', 'Current Value'] + + def get_row(self) -> List[str]: + """Returns the list of values to be entered as a row in csv serialization. + + Returns: + List[str]: The list of values to be entered as a row in csv serialization. + """ + return [ + self.rel_path, + self.key, + self.type, + self.prev_val, + self.cur_val] + + +def get_entry_dict(diff_str: str) -> Dict[str, str]: + """Retrieves a dictionary mapping the properties represented in the string. + + Args: + diff_str (str): The string of the properties file. + + Returns: + Dict[str,str]: The mapping of keys to values in that properties file. + """ + props = Properties() + props.load(diff_str, "utf-8") + return props.properties + + +def get_item_change(rel_path: str, key: str, prev_val: str, cur_val: str) -> ItemChange: + """Returns an ItemChange object if the previous value is not equal to the current value. + + Args: + rel_path (str): The relative path for the properties file. + key (str): The key within the properties file for this potential change. + prev_val (str): The previous value. + cur_val (str): The current value. + + Returns: + ItemChange: The ItemChange object or None if values are the same. + """ + if (prev_val == cur_val): + return None + else: + return ItemChange(rel_path, key, prev_val, cur_val) + + +def get_changed(rel_path: str, a_str: str, b_str: str) -> List[ItemChange]: + """Given the relative path of the properties file that + + Args: + rel_path (str): The relative path for the properties file. + a_str (str): The string representing the original state of the file. + b_str (str): The string representing the current state of the file. + + Returns: + List[ItemChange]: The changes determined. + """ + print('Retrieving changes for {}...'.format(rel_path)) + a_dict = get_entry_dict(a_str) + b_dict = get_entry_dict(b_str) + all_keys = set().union(a_dict.keys(), b_dict.keys()) + mapped = map(lambda key: get_item_change( + rel_path, key, a_dict.get(key), b_dict.get(key)), all_keys) + return filter(lambda entry: entry is not None, mapped) + + +def get_text(blob) -> str: + return blob.data_stream.read().decode('utf-8') + + +def get_changed_from_diff(rel_path: str, diff) -> List[ItemChange]: + """Determines changes from a git python diff. + + Args: + rel_path (str): The relative path for the properties file. + diff: The git python diff. + + Returns: + List[ItemChange]: The changes in properties. + """ + # an item was added + if diff.change_type == 'A': + changes = get_changed(rel_path, '', get_text(diff.b_blob)) + # an item was deleted + elif diff.change_type == 'D': + changes = get_changed(rel_path, get_text(diff.a_blob), '') + # an item was modified + elif diff.change_type == 'M': + changes = get_changed(rel_path, get_text( + diff.a_blob), get_text(diff.b_blob)) + else: + changes = [] + + return changes + + +def get_rel_path(diff) -> str: + """Determines the relative path based on the git python. + + Args: + diff: The git python diff. + + Returns: + str: The determined relative path. + """ + if diff.b_path is not None: + return diff.b_path + elif diff.a_path is not None: + return diff.a_path + else: + return '' + + +def write_diff_to_csv(repo_path: str, output_path: str, commit_1_id: str, commit_2_id: str): + """Determines the changes made in '.properties-MERGED' files from one commit to another commit. + + Args: + repo_path (str): The local path to the git repo. + output_path (str): The output path for the csv file. + commit_1_id (str): The initial commit for the diff. + commit_2_id (str): The latest commit for the diff. + """ + repo = Repo(repo_path) + commit_1 = repo.commit(commit_1_id) + commit_2 = repo.commit(commit_2_id) + + diffs = commit_1.diff(commit_2) + with open(output_path, 'w',) as csvfile: + writer = csv.writer(csvfile) + writer.writerow(ItemChange.get_headers()) + + for diff in diffs: + rel_path = get_rel_path(diff) + if not rel_path.endswith('.properties-MERGED'): + continue + + changes = get_changed_from_diff(rel_path, diff) + + for item_change in changes: + writer.writerow(item_change.get_row()) + + +def print_help(): + """Prints a quick help message. + """ + print("diffscript.py [path to repo] [csv output path] [commit for previous release] [commit for current release (optional; defaults to 'HEAD')]") + + +def main(): + if len(sys.argv) <= 3: + print_help() + sys.exit(1) + + repo_path = sys.argv[1] + output_path = sys.argv[2] + commit_1_id = sys.argv[3] + commit_2_id = sys.argv[4] if len(sys.argv) > 4 else 'HEAD' + + write_diff_to_csv(repo_path, output_path, commit_1_id, commit_2_id) + + sys.exit(0) + + +if __name__ == "__main__": + main() From e31fd495dd751e21323f64fe6407a4109f1ae6f7 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Mon, 15 Jun 2020 17:19:41 -0400 Subject: [PATCH 03/43] Manifest file parser does more validation --- .../experimental/autoingest/AutopsyManifestFileParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java index 21ef95ca74..9f1cc03246 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2015 Basis Technology Corp. + * Copyright 2015-2020 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); From 223ca921ad6a8b962919cb2dab1a2a685a0e8523 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 17 Jun 2020 07:55:06 -0400 Subject: [PATCH 04/43] bug fix --- release_scripts/diffscript.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_scripts/diffscript.py b/release_scripts/diffscript.py index 30db55c12a..d97de726e6 100644 --- a/release_scripts/diffscript.py +++ b/release_scripts/diffscript.py @@ -179,7 +179,7 @@ def write_diff_to_csv(repo_path: str, output_path: str, commit_1_id: str, commit commit_2 = repo.commit(commit_2_id) diffs = commit_1.diff(commit_2) - with open(output_path, 'w',) as csvfile: + with open(output_path, 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(ItemChange.get_headers()) From dd349acd39d7b9007675121bd45dd7ec8aeb1e92 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 18 Jun 2020 15:23:41 -0400 Subject: [PATCH 05/43] introduced ThreadUtils.shutDownTaskExecutor to handle case closing more gracefully --- .../autopsy/timeline/TimeLineController.java | 20 +++++++++------ .../autopsy/timeline/TimeLineModule.java | 25 +++++++++++-------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java index 6b41d849d8..0c80cb5315 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java @@ -73,6 +73,7 @@ import org.sleuthkit.autopsy.coreutils.History; import org.sleuthkit.autopsy.coreutils.LoggedTask; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ThreadConfined; +import org.sleuthkit.autopsy.coreutils.ThreadUtils; import org.sleuthkit.autopsy.events.AutopsyEvent; import org.sleuthkit.autopsy.ingest.IngestManager; import org.sleuthkit.autopsy.ingest.ModuleDataEvent; @@ -375,17 +376,26 @@ public class TimeLineController { } } + /** - * "Shut down" Timeline. Remove all the case and ingest listers. Close the - * timeline window. + * Shuts down the task executor in charge of handling case events. + */ + void shutDownTimeLineListeners() { + ThreadUtils.shutDownTaskExecutor(executor); + } + + /** + * "Shut down" Timeline. Close the timeline window. */ @ThreadConfined(type = ThreadConfined.ThreadType.AWT) - public void shutDownTimeLine() { + public void shutDownTimeLineGui() { if (topComponent != null) { topComponent.close(); topComponent = null; } } + + /** * Add the case and ingest listeners, prompt for rebuilding the database if @@ -777,10 +787,6 @@ public class TimeLineController { case CONTENT_TAG_DELETED: future = executor.submit(() -> filteredEvents.handleContentTagDeleted((ContentTagDeletedEvent) evt)); break; - case CURRENT_CASE: - //close timeline on case changes. - SwingUtilities.invokeLater(TimeLineController.this::shutDownTimeLine); - break; case DATA_SOURCE_ADDED: future = executor.submit(() -> { filteredEvents.handleDataSourceAdded(); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineModule.java b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineModule.java index 96cb9845c4..4ff7d8ac2a 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineModule.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineModule.java @@ -86,26 +86,29 @@ public class TimeLineModule { @Override public void propertyChange(PropertyChangeEvent evt) { - try { - getController().handleCaseEvent(evt); - } catch (NoCurrentCaseException ex) { - // ignore - return; - } catch (TskCoreException ex) { - MessageNotifyUtil.Message.error("Error creating timeline controller."); - logger.log(Level.SEVERE, "Error creating timeline controller", ex); - } - if (Case.Events.valueOf(evt.getPropertyName()).equals(CURRENT_CASE)) { // we care only about case closing here if (evt.getNewValue() == null) { + /* + * Current case is closing, shut down the timeline top + * component and set the pre case singleton controller + * reference to null. + */ synchronized (controllerLock) { if (controller != null) { - SwingUtilities.invokeLater(controller::shutDownTimeLine); + controller.shutDownTimeLineListeners(); + SwingUtilities.invokeLater(controller::shutDownTimeLineGui); } controller = null; } } + } else { + try { + getController().handleCaseEvent(evt); + } catch (NoCurrentCaseException ignored) { + } catch (TskCoreException ex) { + logger.log(Level.SEVERE, "Error handling application event", ex); + } } } } From 53af1415798ccef9ab12808f692aae5106ff2746 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 23 Jun 2020 09:01:53 -0400 Subject: [PATCH 06/43] set selection mode to SINGLE_SELECTION --- .../autopsy/report/infrastructure/ReportVisualPanel1.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel1.java b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel1.java index b9d9fc8b34..79680178e1 100644 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel1.java @@ -151,6 +151,7 @@ final class ReportVisualPanel1 extends JPanel implements ListSelectionListener { } modulesJList.getSelectionModel().addListSelectionListener(this); + modulesJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); modulesJList.setCellRenderer(new ModuleCellRenderer()); modulesJList.setListData(modules.toArray(new ReportModule[modules.size()])); modulesJList.setSelectedIndex(selectedIndex); From 7f1c5c18cc5fcac6e7264cd9a2d6fd91b002b089 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Tue, 23 Jun 2020 13:30:08 -0400 Subject: [PATCH 07/43] 6529 Adding scrolling to Personas window --- .../persona/PersonasTopComponent.form | 342 +++++++++--------- .../persona/PersonasTopComponent.java | 15 +- 2 files changed, 189 insertions(+), 168 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form index e731a133b8..d46a2497c2 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form @@ -58,193 +58,205 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - <ResourceString bundle="org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties" key="PersonasTopComponent.resultsTable.columnModel.title0" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - - - - - - - <ResourceString bundle="org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties" key="PersonasTopComponent.resultsTable.columnModel.title1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <ResourceString bundle="org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties" key="PersonasTopComponent.resultsTable.columnModel.title0" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + + + + + + + <ResourceString bundle="org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties" key="PersonasTopComponent.resultsTable.columnModel.title1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java index d4d1a7b340..cac7eced8a 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java @@ -264,6 +264,7 @@ public final class PersonasTopComponent extends TopComponent { searchButtonGroup = new javax.swing.ButtonGroup(); jSplitPane1 = new javax.swing.JSplitPane(); + jScrollPane1 = new javax.swing.JScrollPane(); searchPanel = new javax.swing.JPanel(); searchField = new javax.swing.JTextField(); searchNameRadio = new javax.swing.JRadioButton(); @@ -276,6 +277,7 @@ public final class PersonasTopComponent extends TopComponent { editBtn = new javax.swing.JButton(); deleteBtn = new javax.swing.JButton(); jSeparator1 = new javax.swing.JSeparator(); + jScrollPane2 = new javax.swing.JScrollPane(); detailsPanel = new org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel(); setName(""); // NOI18N @@ -348,7 +350,7 @@ public final class PersonasTopComponent extends TopComponent { .addComponent(searchAccountRadio) .addComponent(searchBtn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(resultsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 457, Short.MAX_VALUE) + .addComponent(resultsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 21, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(editBtn) @@ -361,8 +363,13 @@ public final class PersonasTopComponent extends TopComponent { .addContainerGap()) ); - jSplitPane1.setLeftComponent(searchPanel); - jSplitPane1.setRightComponent(detailsPanel); + jScrollPane1.setViewportView(searchPanel); + + jSplitPane1.setLeftComponent(jScrollPane1); + + jScrollPane2.setViewportView(detailsPanel); + + jSplitPane1.setRightComponent(jScrollPane2); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); @@ -382,6 +389,8 @@ public final class PersonasTopComponent extends TopComponent { private javax.swing.JButton deleteBtn; private org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel detailsPanel; private javax.swing.JButton editBtn; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JScrollPane jScrollPane2; private javax.swing.JSeparator jSeparator1; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JScrollPane resultsPane; From ac9967ffad4b8f6a386faa9d9825e7bf12fd2ff2 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 23 Jun 2020 14:28:23 -0400 Subject: [PATCH 08/43] dialogs with updated messages --- .../interestingitems/FilesSetDefsPanel.java | 259 +++++++++++++----- 1 file changed, 185 insertions(+), 74 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java index 0214223348..63a7f9aedb 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java @@ -41,6 +41,7 @@ import javax.swing.filechooser.FileNameExtensionFilter; import org.apache.commons.lang3.tuple.Pair; import org.netbeans.spi.options.OptionsPanelController; import org.openide.util.NbBundle; +import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.corecomponents.OptionsPanel; import org.sleuthkit.autopsy.coreutils.Logger; @@ -424,15 +425,6 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp option = JOptionPane.showConfirmDialog(this, panel, NbBundle.getMessage(FilesSetPanel.class, filterDialogTitle), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); } while (option == JOptionPane.OK_OPTION && !panel.isValidDefinition()); - // While adding new ruleset(selectedSet == null), if rule set with same name already exists, do not add to the filesSets hashMap. - // In case of editing an existing ruleset(selectedSet != null), following check is not performed. - if (this.filesSets.containsKey(panel.getFilesSetName()) && shouldCreateNew) { - MessageNotifyUtil.Message.error(NbBundle.getMessage(this.getClass(), - "FilesSetDefsPanel.doFileSetsDialog.duplicateRuleSet.text", - panel.getFilesSetName())); - return; - } - if (option == JOptionPane.OK_OPTION) { Map rules = new HashMap<>(); if (selectedSet != null) { @@ -450,10 +442,16 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp rules ); - if (shouldCreateNew) { - this.replaceFilesSet(null, filesSet, null); - } else { - this.replaceFilesSet(selectedSet, filesSet, null); + Pair result = handleConflict(filesSet, false); + option = result.getRight(); + FilesSet toAddOrUpdate = result.getLeft(); + + if (result.getRight() == JOptionPane.OK_OPTION) { + if (shouldCreateNew) { + this.replaceFilesSet(null, toAddOrUpdate, null); + } else { + this.replaceFilesSet(selectedSet, toAddOrUpdate, null); + } } } } @@ -534,7 +532,7 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp } FilesSet setToAdd = newSet; - + // Make the new/edited set definition and add it to the working copy of // the files set definitions. if (rules != null) { @@ -1120,16 +1118,8 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp this.doFileSetsDialog(this.setsList.getSelectedValue(), true); firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); }//GEN-LAST:event_copySetButtonActionPerformed + @NbBundle.Messages({ - "FilesSetDefsPanel.yesOwMsg=Yes, overwrite", - "FilesSetDefsPanel.yesStandardFileConflictCreate=Yes, create", - "FilesSetDefsPanel.noSkipMsg=No, skip", - "FilesSetDefsPanel.cancelImportMsg=Cancel import", - "# {0} - FilesSet name", - "FilesSetDefsPanel.interesting.overwriteSetPrompt=Interesting files set <{0}> already exists locally, overwrite?", - "# {0} - FilesSet name", - "FilesSetDefsPanel.interesting.standardFileConflict=A standard interesting file set already exists with the name <{0}>. Would you like to create a custom version of this file set?", - "FilesSetDefsPanel.interesting.importOwConflict=Import Interesting files set conflict", "FilesSetDefsPanel.interesting.failImportMsg=Interesting files set not imported", "FilesSetDefsPanel.interesting.fileExtensionFilterLbl=Autopsy Interesting File Set File (xml)", "FilesSetDefsPanel.interesting.importButtonAction.featureName=Interesting Files Set Import" @@ -1204,7 +1194,7 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp FilesSet selectedSet = null; for (FilesSet set : importedSets) { - Pair conflictResult = handleConflict(set); + Pair conflictResult = handleConflict(set, true); int choice = conflictResult.getRight(); FilesSet resultingFilesSet = conflictResult.getLeft(); @@ -1222,65 +1212,186 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp /** * Handles any possible conflicts that may arise from importing a files set. * - * @param set The set to potentially import. + * @param set The set to potentially import. + * @param isImport The set with which to handle the conflict is being + * imported, otherwise this is a set to be added from the + * "New Set" button. * * @return A pair of the files set to be imported (or null if none) and the * integer corresponding to the JOptionPane choice of the - * yes_no_cancel_option. + * JOptionPane.YES_NO_CANCEL option. */ - private Pair handleConflict(FilesSet set) { + private Pair handleConflict(FilesSet set, boolean isImport) { FilesSet conflict = this.filesSets.get(set.getName()); // if no conflict, return the files set as is with the option to proceed if (conflict == null) { return Pair.of(set, JOptionPane.OK_OPTION); - } else if (conflict.isStandardSet()) { - // if there is a conflict and the conflicting files set is a standard files set, - // see if allowing a custom files set is okay. - Object[] options = { - Bundle.FilesSetDefsPanel_yesStandardFileConflictCreate(), - Bundle.FilesSetDefsPanel_noSkipMsg(), - Bundle.FilesSetDefsPanel_cancelImportMsg() - }; - - int conflictChoice = JOptionPane.showOptionDialog(this, - Bundle.FilesSetDefsPanel_interesting_standardFileConflict(set.getName()), - Bundle.FilesSetDefsPanel_interesting_importOwConflict(), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE, - null, - options, - options[0]); - - // if it is okay, try again to see if there is a conflict. - if (conflictChoice == JOptionPane.OK_OPTION) { - return handleConflict(StandardInterestingFilesSetsLoader.getAsCustomFileSet(set)); - } - - return Pair.of(null, conflictChoice); - } else { - // if there is a conflict, see if it is okay to overwrite. - Object[] options = { - Bundle.FilesSetDefsPanel_yesOwMsg(), - Bundle.FilesSetDefsPanel_noSkipMsg(), - Bundle.FilesSetDefsPanel_cancelImportMsg() - }; - - int conflictChoice = JOptionPane.showOptionDialog(this, - Bundle.FilesSetDefsPanel_interesting_overwriteSetPrompt(set.getName()), - Bundle.FilesSetDefsPanel_interesting_importOwConflict(), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE, - null, - options, - options[0]); - - if (conflictChoice == JOptionPane.OK_OPTION) { - // if so, just return the files set to be placed in the map overwriting what is currently present. - return Pair.of(set, conflictChoice); - } - - return Pair.of(null, conflictChoice); } + + if (isImport) { + if (conflict.isStandardSet()) { + return onImportStandardSetConflict(set); + } else { + return onImportConflict(set); + } + } else { + if (conflict.isStandardSet()) { + return onNewEditSetStandardSetConflict(set); + } else { + return onNewEditSetConflict(set); + } + } + + } + + /** + * When a user imports a files set and the files set name collides with a + * pre-existing files set (not a standard files set), the user is prompted + * for how they would like that handled (overwrite, skip, or cancel whole + * operation) + * + * @param set The set to be imported. + * + * @return a pair of the files set and the JOptionPane.YES_NO_CANCEL option + */ + @Messages({ + "FilesSetDefsPanel.yesOwMsg=Yes, overwrite", + "FilesSetDefsPanel.noSkipMsg=No, skip", + "FilesSetDefsPanel.cancelImportMsg=Cancel import", + "# {0} - FilesSet name", + "FilesSetDefsPanel.interesting.overwriteSetPrompt=Interesting files set <{0}> already exists locally, overwrite?", + "FilesSetDefsPanel.interesting.importOwConflict=Import Interesting files set conflict",}) + private Pair onImportConflict(FilesSet set) { + // if there is a conflict, see if it is okay to overwrite. + Object[] options = { + Bundle.FilesSetDefsPanel_yesOwMsg(), + Bundle.FilesSetDefsPanel_noSkipMsg(), + Bundle.FilesSetDefsPanel_cancelImportMsg() + }; + int conflictChoice = JOptionPane.showOptionDialog(this, + Bundle.FilesSetDefsPanel_interesting_overwriteSetPrompt(set.getName()), + Bundle.FilesSetDefsPanel_interesting_importOwConflict(), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + options, + options[0]); + + if (conflictChoice == JOptionPane.OK_OPTION) { + // if so, just return the files set to be placed in the map overwriting what is currently present. + return Pair.of(set, conflictChoice); + } + + return Pair.of(null, conflictChoice); + } + + /** + * When a user imports a files set and the files set name collides with a + * pre-existing standard files set, the user is prompted for how they would + * like that handled (create files set with a " custom" suffix, skip, or + * cancel whole operation) + * + * @param set The set to be imported. + * + * @return a pair of the files set and the JOptionPane.YES_NO_CANCEL option + */ + @Messages({ + "FilesSetDefsPanel.yesStandardFileConflictCreate=Yes, create", + "# {0} - FilesSet name", + "FilesSetDefsPanel.interesting.standardFileConflict=A standard interesting file set already exists with the name <{0}>. Would you like to create a custom version of this file set?",}) + private Pair onImportStandardSetConflict(FilesSet set) { + // if there is a conflict and the conflicting files set is a standard files set, + // see if allowing a custom files set is okay. + Object[] options = { + Bundle.FilesSetDefsPanel_yesStandardFileConflictCreate(), + Bundle.FilesSetDefsPanel_noSkipMsg(), + Bundle.FilesSetDefsPanel_cancelImportMsg() + }; + int conflictChoice = JOptionPane.showOptionDialog(this, + Bundle.FilesSetDefsPanel_interesting_standardFileConflict(set.getName()), + Bundle.FilesSetDefsPanel_interesting_importOwConflict(), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + options, + options[0]); + + // if it is okay to create with custom prefix, try again to see if there is a conflict. + if (conflictChoice == JOptionPane.OK_OPTION) { + return handleConflict(StandardInterestingFilesSetsLoader.getAsCustomFileSet(set), true); + } + + return Pair.of(null, conflictChoice); + } + + /** + * When a user creates a files set or edits a files set and the files set + * name collides with a pre-existing files set (not a standard files set), + * the user is prompted for how they would like that handled (overwrite or + * cancel whole operation) + * + * @param set The set to be added. + * + * @return a pair of the files set and the JOptionPane.YES_NO_CANCEL option + */ + @Messages({ + "FilesSetDefsPanel.cancelNewSetMsg=Cancel", + "FilesSetDefsPanel.interesting.newOwConflict=Interesting files set conflict",}) + private Pair onNewEditSetConflict(FilesSet set) { + // if there is a conflict, see if it is okay to overwrite. + Object[] options = { + Bundle.FilesSetDefsPanel_yesOwMsg(), + Bundle.FilesSetDefsPanel_cancelNewSetMsg() + }; + int conflictChoice = JOptionPane.showOptionDialog(this, + Bundle.FilesSetDefsPanel_interesting_overwriteSetPrompt(set.getName()), + Bundle.FilesSetDefsPanel_interesting_newOwConflict(), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + options, + options[0]); + + if (conflictChoice == JOptionPane.OK_OPTION) { + // if so, just return the files set to be placed in the map overwriting what is currently present. + return Pair.of(set, conflictChoice); + } + + return Pair.of(null, conflictChoice); + } + + /** + * When a user creates a files set and the files set name collides with a + * pre-existing standard files set, the user is prompted for how they would + * like that handled (create files set with a " custom" suffix or cancel + * whole operation) + * + * @param set The set to be adedd. + * + * @return a pair of the files set and the JOptionPane.YES_NO_CANCEL option + */ + private Pair onNewEditSetStandardSetConflict(FilesSet set) { + // if there is a conflict and the conflicting files set is a standard files set, + // see if allowing a custom files set is okay. + Object[] options = { + Bundle.FilesSetDefsPanel_yesStandardFileConflictCreate(), + Bundle.FilesSetDefsPanel_cancelNewSetMsg() + }; + int conflictChoice = JOptionPane.showOptionDialog(this, + Bundle.FilesSetDefsPanel_interesting_standardFileConflict(set.getName()), + Bundle.FilesSetDefsPanel_interesting_newOwConflict(), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + options, + options[0]); + + // if it is okay to create with custom prefix, try again to see if there is a conflict. + if (conflictChoice == JOptionPane.OK_OPTION) { + return handleConflict(StandardInterestingFilesSetsLoader.getAsCustomFileSet(set), false); + } + + return Pair.of(null, conflictChoice); } @NbBundle.Messages({"FilesSetDefsPanel.interesting.exportButtonAction.featureName=Interesting Files Set Export", From 37ecfb0c66a1fab61e59df0d4c7e84a7d523c48e Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 24 Jun 2020 09:29:57 -0400 Subject: [PATCH 09/43] updated dialogs --- .../interestingitems/FilesSetDefsPanel.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java index 63a7f9aedb..e4f62d45d3 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java @@ -1259,7 +1259,7 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp "FilesSetDefsPanel.noSkipMsg=No, skip", "FilesSetDefsPanel.cancelImportMsg=Cancel import", "# {0} - FilesSet name", - "FilesSetDefsPanel.interesting.overwriteSetPrompt=Interesting files set <{0}> already exists locally, overwrite?", + "FilesSetDefsPanel.interesting.overwriteSetPrompt=Interesting files set \"{0}\" already exists locally, overwrite?", "FilesSetDefsPanel.interesting.importOwConflict=Import Interesting files set conflict",}) private Pair onImportConflict(FilesSet set) { // if there is a conflict, see if it is okay to overwrite. @@ -1298,7 +1298,8 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp @Messages({ "FilesSetDefsPanel.yesStandardFileConflictCreate=Yes, create", "# {0} - FilesSet name", - "FilesSetDefsPanel.interesting.standardFileConflict=A standard interesting file set already exists with the name <{0}>. Would you like to create a custom version of this file set?",}) + "# {1} - New FilesSet name", + "FilesSetDefsPanel.interesting.standardFileConflict=A standard interesting file set already exists with the name \"{0}.\" Would you like to rename the set to \"{1}?\"",}) private Pair onImportStandardSetConflict(FilesSet set) { // if there is a conflict and the conflicting files set is a standard files set, // see if allowing a custom files set is okay. @@ -1307,8 +1308,12 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp Bundle.FilesSetDefsPanel_noSkipMsg(), Bundle.FilesSetDefsPanel_cancelImportMsg() }; + + String setName = set.getName(); + String customSetName = Bundle.StandardInterestingFileSetsLoader_customSuffixed(set.getName()); + int conflictChoice = JOptionPane.showOptionDialog(this, - Bundle.FilesSetDefsPanel_interesting_standardFileConflict(set.getName()), + Bundle.FilesSetDefsPanel_interesting_standardFileConflict(setName, customSetName), Bundle.FilesSetDefsPanel_interesting_importOwConflict(), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, @@ -1377,8 +1382,12 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp Bundle.FilesSetDefsPanel_yesStandardFileConflictCreate(), Bundle.FilesSetDefsPanel_cancelNewSetMsg() }; + + String setName = set.getName(); + String customSetName = Bundle.StandardInterestingFileSetsLoader_customSuffixed(set.getName()); + int conflictChoice = JOptionPane.showOptionDialog(this, - Bundle.FilesSetDefsPanel_interesting_standardFileConflict(set.getName()), + Bundle.FilesSetDefsPanel_interesting_standardFileConflict(setName, customSetName), Bundle.FilesSetDefsPanel_interesting_newOwConflict(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, From 0f6fa46d91df17b40cf27d3e4d1a3b624fcd79ae Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 24 Jun 2020 10:31:07 -0400 Subject: [PATCH 10/43] updated bundle messages --- .../modules/interestingitems/Bundle.properties-MERGED | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties-MERGED index 45adf1bd1e..5d005fab85 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties-MERGED @@ -6,6 +6,7 @@ FilesIdentifierIngestModule.indexError.message=Failed to index interesting file FilesSet.rule.dateRule.toString=(modified within {0} day(s)) FilesSetDefsPanel.bytes=Bytes FilesSetDefsPanel.cancelImportMsg=Cancel import +FilesSetDefsPanel.cancelNewSetMsg=Cancel # {0} - file name FilesSetDefsPanel.exportButtonActionPerformed.fileExistPrompt=File {0} exists, overwrite? FilesSetDefsPanel.gigaBytes=Gigabytes @@ -23,10 +24,12 @@ FilesSetDefsPanel.interesting.fileExtensionFilterLbl=Autopsy Interesting File Se FilesSetDefsPanel.interesting.importButtonAction.featureName=Interesting Files Set Import FilesSetDefsPanel.interesting.importOwConflict=Import Interesting files set conflict FilesSetDefsPanel.interesting.importSetButton.text=Import Set +FilesSetDefsPanel.interesting.newOwConflict=Interesting files set conflict # {0} - FilesSet name -FilesSetDefsPanel.interesting.overwriteSetPrompt=Interesting files set <{0}> already exists locally, overwrite? +FilesSetDefsPanel.interesting.overwriteSetPrompt=Interesting files set "{0}" already exists locally, overwrite? # {0} - FilesSet name -FilesSetDefsPanel.interesting.standardFileConflict=A standard interesting file set already exists with the name <{0}>. Would you like to create a custom version of this file set? +# {1} - New FilesSet name +FilesSetDefsPanel.interesting.standardFileConflict=A standard interesting file set already exists with the name "{0}." Would you like to rename the set to "{1}?" FilesSetDefsPanel.Interesting.Title=Global Interesting Items Settings FilesSetDefsPanel.kiloBytes=Kilobytes FilesSetDefsPanel.loadError=Error loading interesting files sets from file. @@ -144,4 +147,4 @@ FilesSetDefsPanel.pathLabel.text=Path Substring: FilesSetDefsPanel.mimeTypeLabel.text=MIME Type: FilesSetDefsPanel.fileSizeLabel.text=File Size: # {0} - filesSetName -StandardInterestingFileSetsLoader.customSuffixed={0} (Custom) \ No newline at end of file +StandardInterestingFileSetsLoader.customSuffixed={0} (Custom) From 698ce96d2060cb6b90e7206fc33531dd959e9872 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Wed, 24 Jun 2020 12:55:51 -0400 Subject: [PATCH 11/43] 6529 Renaming components --- .../persona/PersonasTopComponent.form | 16 ++++----- .../persona/PersonasTopComponent.java | 34 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form index d46a2497c2..7bc5fc8b1e 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form @@ -44,21 +44,21 @@ - + - + - + - + @@ -75,7 +75,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -238,13 +238,13 @@ - + - + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java index cac7eced8a..3a0418d3ea 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java @@ -263,8 +263,8 @@ public final class PersonasTopComponent extends TopComponent { private void initComponents() { searchButtonGroup = new javax.swing.ButtonGroup(); - jSplitPane1 = new javax.swing.JSplitPane(); - jScrollPane1 = new javax.swing.JScrollPane(); + mainSplitPane = new javax.swing.JSplitPane(); + searchScrollPane = new javax.swing.JScrollPane(); searchPanel = new javax.swing.JPanel(); searchField = new javax.swing.JTextField(); searchNameRadio = new javax.swing.JRadioButton(); @@ -276,8 +276,8 @@ public final class PersonasTopComponent extends TopComponent { createBtn = new javax.swing.JButton(); editBtn = new javax.swing.JButton(); deleteBtn = new javax.swing.JButton(); - jSeparator1 = new javax.swing.JSeparator(); - jScrollPane2 = new javax.swing.JScrollPane(); + createButtonSeparator = new javax.swing.JSeparator(); + detailsScrollPane = new javax.swing.JScrollPane(); detailsPanel = new org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel(); setName(""); // NOI18N @@ -319,7 +319,7 @@ public final class PersonasTopComponent extends TopComponent { .addGroup(searchPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSeparator1) + .addComponent(createButtonSeparator) .addGroup(searchPanelLayout.createSequentialGroup() .addComponent(createBtn) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -350,49 +350,48 @@ public final class PersonasTopComponent extends TopComponent { .addComponent(searchAccountRadio) .addComponent(searchBtn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(resultsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 21, Short.MAX_VALUE) + .addComponent(resultsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 21, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(editBtn) .addComponent(createBtn) .addComponent(deleteBtn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 4, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(createButtonSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 4, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(createAccountBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); - jScrollPane1.setViewportView(searchPanel); + searchScrollPane.setViewportView(searchPanel); - jSplitPane1.setLeftComponent(jScrollPane1); + mainSplitPane.setLeftComponent(searchScrollPane); - jScrollPane2.setViewportView(detailsPanel); + detailsScrollPane.setViewportView(detailsPanel); - jSplitPane1.setRightComponent(jScrollPane2); + mainSplitPane.setRightComponent(detailsScrollPane); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 794, Short.MAX_VALUE) + .addComponent(mainSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 794, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSplitPane1) + .addComponent(mainSplitPane) ); }// //GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton createAccountBtn; private javax.swing.JButton createBtn; + private javax.swing.JSeparator createButtonSeparator; private javax.swing.JButton deleteBtn; private org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel detailsPanel; + private javax.swing.JScrollPane detailsScrollPane; private javax.swing.JButton editBtn; - private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JScrollPane jScrollPane2; - private javax.swing.JSeparator jSeparator1; - private javax.swing.JSplitPane jSplitPane1; + private javax.swing.JSplitPane mainSplitPane; private javax.swing.JScrollPane resultsPane; private javax.swing.JTable resultsTable; private javax.swing.JRadioButton searchAccountRadio; @@ -401,6 +400,7 @@ public final class PersonasTopComponent extends TopComponent { private javax.swing.JTextField searchField; private javax.swing.JRadioButton searchNameRadio; private javax.swing.JPanel searchPanel; + private javax.swing.JScrollPane searchScrollPane; // End of variables declaration//GEN-END:variables } From f672ce5797c8f70133e2af0d71a7ab9252cd1d3d Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 25 Jun 2020 07:34:55 -0400 Subject: [PATCH 12/43] dialog text change --- .../autopsy/modules/interestingitems/FilesSetDefsPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java index e4f62d45d3..400896407e 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java @@ -1299,7 +1299,7 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp "FilesSetDefsPanel.yesStandardFileConflictCreate=Yes, create", "# {0} - FilesSet name", "# {1} - New FilesSet name", - "FilesSetDefsPanel.interesting.standardFileConflict=A standard interesting file set already exists with the name \"{0}.\" Would you like to rename the set to \"{1}?\"",}) + "FilesSetDefsPanel.interesting.standardFileConflict=A standard interesting file set already exists with the name \"{0}.\" Would you like to rename your set to \"{1}?\"",}) private Pair onImportStandardSetConflict(FilesSet set) { // if there is a conflict and the conflicting files set is a standard files set, // see if allowing a custom files set is okay. From 0fec1ffd78ea353d6cf22b29f14c7a4b3f9f86ac Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Thu, 25 Jun 2020 07:53:04 -0400 Subject: [PATCH 13/43] 6529 Divider location fix --- .../persona/PersonasTopComponent.form | 27 +++++++++++-------- .../persona/PersonasTopComponent.java | 21 ++++++++------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form index 7bc5fc8b1e..e96213fab5 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form @@ -55,6 +55,9 @@ + + + @@ -76,24 +79,26 @@ - - - - - - - - + - - + + + + + + + + + + + @@ -113,7 +118,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java index 3a0418d3ea..4b9d32a462 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java @@ -282,6 +282,8 @@ public final class PersonasTopComponent extends TopComponent { setName(""); // NOI18N + mainSplitPane.setDividerLocation(400); + searchField.setText(org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.searchField.text")); // NOI18N searchButtonGroup.add(searchNameRadio); @@ -320,22 +322,23 @@ public final class PersonasTopComponent extends TopComponent { .addContainerGap() .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(createButtonSeparator) - .addGroup(searchPanelLayout.createSequentialGroup() - .addComponent(createBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(editBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(deleteBtn)) .addComponent(resultsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(searchField) .addGroup(searchPanelLayout.createSequentialGroup() .addComponent(searchNameRadio) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(searchAccountRadio) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 149, Short.MAX_VALUE) .addComponent(searchBtn)) .addGroup(searchPanelLayout.createSequentialGroup() - .addComponent(createAccountBtn) + .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(createAccountBtn) + .addGroup(searchPanelLayout.createSequentialGroup() + .addComponent(createBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(editBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(deleteBtn))) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); @@ -350,7 +353,7 @@ public final class PersonasTopComponent extends TopComponent { .addComponent(searchAccountRadio) .addComponent(searchBtn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(resultsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 21, Short.MAX_VALUE) + .addComponent(resultsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 445, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(editBtn) From 03676233443dd4bbf2f6dc6e5ceac75f17e1d2ae Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Fri, 26 Jun 2020 13:44:34 -0400 Subject: [PATCH 14/43] 6529 Adjusting layout --- .../persona/PersonasTopComponent.form | 330 +++++++++--------- .../persona/PersonasTopComponent.java | 26 +- 2 files changed, 173 insertions(+), 183 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form index e96213fab5..5ed4fb6271 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form @@ -44,12 +44,12 @@ - + - + @@ -61,192 +61,186 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - <ResourceString bundle="org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties" key="PersonasTopComponent.resultsTable.columnModel.title0" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - - - - - - - <ResourceString bundle="org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties" key="PersonasTopComponent.resultsTable.columnModel.title1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - - - - - - - - - - - - - - + + + - - + + + + + + + + <ResourceString bundle="org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties" key="PersonasTopComponent.resultsTable.columnModel.title0" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + + + + + + + <ResourceString bundle="org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties" key="PersonasTopComponent.resultsTable.columnModel.title1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java index 4b9d32a462..b289e567d2 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java @@ -264,19 +264,18 @@ public final class PersonasTopComponent extends TopComponent { searchButtonGroup = new javax.swing.ButtonGroup(); mainSplitPane = new javax.swing.JSplitPane(); - searchScrollPane = new javax.swing.JScrollPane(); searchPanel = new javax.swing.JPanel(); searchField = new javax.swing.JTextField(); searchNameRadio = new javax.swing.JRadioButton(); searchAccountRadio = new javax.swing.JRadioButton(); + searchBtn = new javax.swing.JButton(); resultsPane = new javax.swing.JScrollPane(); resultsTable = new javax.swing.JTable(); - searchBtn = new javax.swing.JButton(); createAccountBtn = new javax.swing.JButton(); - createBtn = new javax.swing.JButton(); editBtn = new javax.swing.JButton(); deleteBtn = new javax.swing.JButton(); createButtonSeparator = new javax.swing.JSeparator(); + createBtn = new javax.swing.JButton(); detailsScrollPane = new javax.swing.JScrollPane(); detailsPanel = new org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel(); @@ -293,6 +292,8 @@ public final class PersonasTopComponent extends TopComponent { searchButtonGroup.add(searchAccountRadio); org.openide.awt.Mnemonics.setLocalizedText(searchAccountRadio, org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.searchAccountRadio.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(searchBtn, org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.searchBtn.text")); // NOI18N + resultsTable.setToolTipText(org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.resultsTable.toolTipText")); // NOI18N resultsTable.getTableHeader().setReorderingAllowed(false); resultsPane.setViewportView(resultsTable); @@ -302,18 +303,16 @@ public final class PersonasTopComponent extends TopComponent { resultsTable.getColumnModel().getColumn(1).setHeaderValue(org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.resultsTable.columnModel.title1")); // NOI18N } - org.openide.awt.Mnemonics.setLocalizedText(searchBtn, org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.searchBtn.text")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(createAccountBtn, org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.createAccountBtn.text")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(createBtn, org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.createBtn.text")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(editBtn, org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.editBtn.text")); // NOI18N editBtn.setEnabled(false); org.openide.awt.Mnemonics.setLocalizedText(deleteBtn, org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.deleteBtn.text")); // NOI18N deleteBtn.setEnabled(false); + org.openide.awt.Mnemonics.setLocalizedText(createBtn, org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.createBtn.text")); // NOI18N + javax.swing.GroupLayout searchPanelLayout = new javax.swing.GroupLayout(searchPanel); searchPanel.setLayout(searchPanelLayout); searchPanelLayout.setHorizontalGroup( @@ -328,7 +327,7 @@ public final class PersonasTopComponent extends TopComponent { .addComponent(searchNameRadio) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(searchAccountRadio) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 149, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(searchBtn)) .addGroup(searchPanelLayout.createSequentialGroup() .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -353,7 +352,7 @@ public final class PersonasTopComponent extends TopComponent { .addComponent(searchAccountRadio) .addComponent(searchBtn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(resultsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 445, Short.MAX_VALUE) + .addComponent(resultsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(editBtn) @@ -366,9 +365,7 @@ public final class PersonasTopComponent extends TopComponent { .addContainerGap()) ); - searchScrollPane.setViewportView(searchPanel); - - mainSplitPane.setLeftComponent(searchScrollPane); + mainSplitPane.setLeftComponent(searchPanel); detailsScrollPane.setViewportView(detailsPanel); @@ -378,11 +375,11 @@ public final class PersonasTopComponent extends TopComponent { this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(mainSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 794, Short.MAX_VALUE) + .addComponent(mainSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 816, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(mainSplitPane) + .addComponent(mainSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 428, Short.MAX_VALUE) ); }// //GEN-END:initComponents @@ -403,7 +400,6 @@ public final class PersonasTopComponent extends TopComponent { private javax.swing.JTextField searchField; private javax.swing.JRadioButton searchNameRadio; private javax.swing.JPanel searchPanel; - private javax.swing.JScrollPane searchScrollPane; // End of variables declaration//GEN-END:variables } From 97f7532d286e357483154c1ba6d3275c93164fca Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 26 Jun 2020 15:02:30 -0400 Subject: [PATCH 15/43] sort items in interesting files export alphabetically --- .../InterestingItemsFilesSetSettings.java | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java index 232ceea6df..5604079a67 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java @@ -26,6 +26,7 @@ import java.io.Serializable; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -51,6 +52,9 @@ import org.sleuthkit.autopsy.modules.interestingitems.FilesSetsManager.FilesSets import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; +import java.util.Comparator; +import java.util.function.Function; +import java.util.stream.Collectors; class InterestingItemsFilesSetSettings implements Serializable { @@ -536,6 +540,34 @@ class InterestingItemsFilesSetSettings implements Serializable { } return true; } + + + /** + * Generates an alphabetically sorted list based on the provided collection and Function to retrieve a string field from each object. + * @param itemsToSort The items to be sorted into the newly generated list. + * @param getName The method to retrieve the given field from the object. + * @return The newly generated list sorted alphabetically by the given field. + */ + private static List sortOnField(Collection itemsToSort, final Function getName) { + Comparator comparator = (a,b) -> { + String aName = getName.apply(a); + String bName = getName.apply(b); + if (aName == null) { + aName = ""; + } + + if (bName == null) { + bName = ""; + } + + return aName.compareTo(bName); + }; + + return itemsToSort.stream() + .sorted(comparator) + .collect(Collectors.toList()); + } + /** * Write the FilesSets to a file as an xml. @@ -555,7 +587,9 @@ class InterestingItemsFilesSetSettings implements Serializable { Element rootElement = doc.createElement(FILE_SETS_ROOT_TAG); doc.appendChild(rootElement); // Add the interesting files sets to the document. - for (FilesSet set : interestingFilesSets) { + + List sortedFilesSets = sortOnField(interestingFilesSets, filesSet -> filesSet.getName()); + for (FilesSet set : sortedFilesSets) { // Add the files set element and its attributes. Element setElement = doc.createElement(FILE_SET_TAG); setElement.setAttribute(NAME_ATTR, set.getName()); @@ -565,7 +599,9 @@ class InterestingItemsFilesSetSettings implements Serializable { setElement.setAttribute(VERSION_NUMBER, Integer.toString(set.getVersionNumber())); // Add the child elements for the set membership rules. // All conditions of a rule will be written as a single element in the xml - for (FilesSet.Rule rule : set.getRules().values()) { + + List sortedRules = sortOnField(set.getRules().values(), rule -> rule.getName()); + for (FilesSet.Rule rule : sortedRules) { // Add a rule element with the appropriate name Condition // type tag. Element ruleElement; From 83d8334fcdb860a6836534ed3895572668de037c Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 26 Jun 2020 15:04:17 -0400 Subject: [PATCH 16/43] null value handling --- .../InterestingItemsFilesSetSettings.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java index 5604079a67..8f338ff263 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java @@ -588,7 +588,10 @@ class InterestingItemsFilesSetSettings implements Serializable { doc.appendChild(rootElement); // Add the interesting files sets to the document. - List sortedFilesSets = sortOnField(interestingFilesSets, filesSet -> filesSet.getName()); + List sortedFilesSets = sortOnField( + interestingFilesSets, + filesSet -> filesSet == null ? null : filesSet.getName()); + for (FilesSet set : sortedFilesSets) { // Add the files set element and its attributes. Element setElement = doc.createElement(FILE_SET_TAG); @@ -600,7 +603,10 @@ class InterestingItemsFilesSetSettings implements Serializable { // Add the child elements for the set membership rules. // All conditions of a rule will be written as a single element in the xml - List sortedRules = sortOnField(set.getRules().values(), rule -> rule.getName()); + List sortedRules = sortOnField( + set.getRules().values(), + rule -> rule == null ? null : rule.getName()); + for (FilesSet.Rule rule : sortedRules) { // Add a rule element with the appropriate name Condition // type tag. From c6098760b5605376b429d6918dcb725698632846 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 26 Jun 2020 15:24:12 -0400 Subject: [PATCH 17/43] ignore case while sorting --- .../interestingitems/InterestingItemsFilesSetSettings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java index 8f338ff263..6069aad3f6 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/InterestingItemsFilesSetSettings.java @@ -560,7 +560,7 @@ class InterestingItemsFilesSetSettings implements Serializable { bName = ""; } - return aName.compareTo(bName); + return aName.compareToIgnoreCase(bName); }; return itemsToSort.stream() From 64345a384dc9afd8dd7afa177cd8264bf2ef90a4 Mon Sep 17 00:00:00 2001 From: Raman Arora Date: Fri, 26 Jun 2020 15:45:56 -0400 Subject: [PATCH 18/43] 6564: added a dialog to indicate that the account was added. --- .../persona/CreatePersonaAccountDialog.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/CreatePersonaAccountDialog.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/CreatePersonaAccountDialog.java index 1ac9abf3b7..d4d23f7f0e 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/CreatePersonaAccountDialog.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/CreatePersonaAccountDialog.java @@ -212,6 +212,10 @@ public class CreatePersonaAccountDialog extends JDialog { setVisible(true); } + @Messages({ + "CreatePersonaAccountDialog_error_title=Account failure", + "CreatePersonaAccountDialog_error_msg=Failed to create account.", + }) private CentralRepoAccount createAccount(CentralRepoAccount.CentralRepoAccountType type, String identifier) { CentralRepoAccount ret = null; try { @@ -220,18 +224,19 @@ public class CreatePersonaAccountDialog extends JDialog { ret = cr.getOrCreateAccount(type, identifier); } } catch (CentralRepoException e) { - logger.log(Level.SEVERE, "Failed to access central repository", e); + logger.log(Level.SEVERE, "Failed to create account", e); JOptionPane.showMessageDialog(this, - Bundle.PersonaAccountDialog_get_types_exception_Title(), - Bundle.PersonaAccountDialog_get_types_exception_msg(), + Bundle.CreatePersonaAccountDialog_error_title(), + Bundle.CreatePersonaAccountDialog_error_msg(), JOptionPane.ERROR_MESSAGE); } return ret; } @Messages({ - "CreatePersonaAccountDialog_dup_Title=Account creation failure", - "CreatePersonaAccountDialog_dup_msg=An account with this identifier and type already exists.",}) + "CreatePersonaAccountDialog_success_title=Account added", + "CreatePersonaAccountDialog_success_msg=Account added.", + }) private void okBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okBtnActionPerformed if (identifierTextField.getText().isEmpty()) { JOptionPane.showMessageDialog(this, @@ -246,6 +251,12 @@ public class CreatePersonaAccountDialog extends JDialog { String identifier = identifierTextField.getText(); if (createAccount(type, identifier) != null) { + // show account created message + JOptionPane.showMessageDialog(this, + Bundle.CreatePersonaAccountDialog_success_msg(), + Bundle.CreatePersonaAccountDialog_success_title(), + JOptionPane.INFORMATION_MESSAGE); + dispose(); } }//GEN-LAST:event_okBtnActionPerformed From 860f939da3ec2452aed02627aaff6ba32e8fe988 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Fri, 26 Jun 2020 19:43:31 -0400 Subject: [PATCH 19/43] 6567 TagName serialization fix --- .../autopsy/actions/AddTagAction.java | 4 +- .../actions/GetTagNameAndCommentDialog.java | 8 +-- .../autopsy/actions/ReplaceTagAction.java | 4 +- .../casemodule/services/TagsManager.java | 57 ++++++++++++------- .../org/sleuthkit/autopsy/tags/TagUtils.java | 10 +++- 5 files changed, 49 insertions(+), 34 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java index 53cf076c2e..9c059205f5 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2019 Basis Technology Corp. + * Copyright 2013-2020 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -139,7 +139,7 @@ abstract class AddTagAction extends AbstractAction implements Presenter.Popup { if (!tagNamesMap.isEmpty()) { for (Map.Entry entry : tagNamesMap.entrySet()) { TagName tagName = entry.getValue(); - TagSet tagSet = tagName.getTagSet(); + TagSet tagSet = tagsManager.getTagSet(tagName); // Show custom tags before predefined tags in the menu if (tagSet != null) { diff --git a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java index ba586c7b22..a0c3b1c5c0 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java +++ b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2018 Basis Technology Corp. + * Copyright 2013-2020 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,7 +23,6 @@ import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.util.ArrayList; -import java.util.HashMap; import java.util.logging.Level; import java.util.List; import java.util.Map; @@ -36,7 +35,6 @@ import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JList; import javax.swing.KeyStroke; -import org.openide.util.Exceptions; import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; @@ -150,7 +148,7 @@ public class GetTagNameAndCommentDialog extends JDialog { } ); - try { + try { TagsManager tagsManager = Case.getCurrentCaseThrows().getServices().getTagsManager(); List standardTagNames = TagsManager.getStandardTagNames(); Map tagNamesMap = new TreeMap<>(tagsManager.getDisplayNamesToTagNamesMap()); @@ -161,7 +159,7 @@ public class GetTagNameAndCommentDialog extends JDialog { tagNamesMap.entrySet().stream().map((entry) -> entry.getValue()).forEachOrdered((tagName) -> { TagSet tagSet = null; try { - tagSet = tagName.getTagSet(); + tagSet = tagsManager.getTagSet(tagName); } catch (TskCoreException ex) { Logger.getLogger(GetTagNameAndCommentDialog.class .getName()).log(Level.SEVERE, "Failed to get tag set", ex); //NON-NLS diff --git a/Core/src/org/sleuthkit/autopsy/actions/ReplaceTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/ReplaceTagAction.java index 91929db577..34ed836e3e 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/ReplaceTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/ReplaceTagAction.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2018 Basis Technology Corp. + * Copyright 2018-2020 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -131,7 +131,7 @@ abstract class ReplaceTagAction extends AbstractAction implements if (!tagNamesMap.isEmpty()) { for (Map.Entry entry : tagNamesMap.entrySet()) { TagName tagName = entry.getValue(); - TagSet tagSet = tagName.getTagSet(); + TagSet tagSet = tagsManager.getTagSet(tagName); // Show custom tags before predefined tags in the menu if (tagSet != null) { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java index 746bac478c..96040821e4 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2020 Basis Technology Corp. + * Copyright 2013-2020 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -56,7 +56,7 @@ public class TagsManager implements Closeable { private final SleuthkitCase caseDb; private static String DEFAULT_TAG_SET_NAME = "Project VIC"; - + private static final Object lock = new Object(); static { @@ -235,16 +235,16 @@ public class TagsManager implements Closeable { public static String getNotableTagDisplayName() { return TagNameDefinition.getNotableTagDisplayName(); } - + /** * Creates a new TagSetDefinition file. - * + * * @param tagSetDef The tag set definition. - * - * @throws IOException + * + * @throws IOException */ public static void addTagSetDefinition(TagSetDefinition tagSetDef) throws IOException { - synchronized(lock) { + synchronized (lock) { TagSetDefinition.writeTagSetDefinition(tagSetDef); } } @@ -267,20 +267,20 @@ public class TagsManager implements Closeable { caseDb.addOrUpdateTagName(def.getDisplayName(), def.getDescription(), def.getColor(), def.getKnownStatus()); } //Assume new case and add tag sets - for(TagSetDefinition setDef: TagSetDefinition.readTagSetDefinitions()) { + for (TagSetDefinition setDef : TagSetDefinition.readTagSetDefinitions()) { List tagNameList = new ArrayList<>(); - for(TagNameDefinition tagNameDef: setDef.getTagNameDefinitions()) { + for (TagNameDefinition tagNameDef : setDef.getTagNameDefinitions()) { tagNameList.add(caseDb.addOrUpdateTagName(tagNameDef.getDisplayName(), tagNameDef.getDescription(), tagNameDef.getColor(), tagNameDef.getKnownStatus())); } - - if(!tagNameList.isEmpty()) { + + if (!tagNameList.isEmpty()) { taggingMgr.addTagSet(setDef.getName(), tagNameList); } } } } catch (TskCoreException ex) { LOGGER.log(Level.SEVERE, "Error updating standard tag name and tag set definitions", ex); - } catch(IOException ex) { + } catch (IOException ex) { LOGGER.log(Level.SEVERE, "Error loading tag set JSON files", ex); } @@ -288,28 +288,41 @@ public class TagsManager implements Closeable { tagName.saveToCase(caseDb); } } - + /** * Get a list of all tag sets currently in the case database. - * + * * @return A list, possibly empty, of TagSet objects. - * + * * @throws TskCoreException */ public List getAllTagSets() throws TskCoreException { return caseDb.getTaggingManager().getTagSets(); } - + + /** + * Gets the tag set a tag name (tag definition) belongs to, if any. + * + * @param tagName The tag name. + * + * @return A TagSet object or null. + * + * @throws TskCoreException If there is an error querying the case database. + */ + public TagSet getTagSet(TagName tagName) throws TskCoreException { + return caseDb.getTaggingManager().getTagSetForTagName(tagName); + } + /** * Add a new TagSet to the case database. Tags will be ranked in the order * which they are passed to this method. - * - * @param name Tag set name. + * + * @param name Tag set name. * @param tagNameList List of TagName in rank order. - * + * * @return A new TagSet object. - * - * @throws TskCoreException + * + * @throws TskCoreException */ public TagSet addTagSet(String name, List tagNameList) throws TskCoreException { return caseDb.getTaggingManager().addTagSet(name, tagNameList); @@ -501,7 +514,7 @@ public class TagsManager implements Closeable { * name to the case database. */ public TagName addTagName(String displayName, String description, TagName.HTML_COLOR color, TskData.FileKnown knownStatus) throws TagNameAlreadyExistsException, TskCoreException { - synchronized(lock) { + synchronized (lock) { try { TagName tagName = caseDb.addOrUpdateTagName(displayName, description, color, knownStatus); Set customTypes = TagNameDefinition.getTagNameDefinitions(); diff --git a/Core/src/org/sleuthkit/autopsy/tags/TagUtils.java b/Core/src/org/sleuthkit/autopsy/tags/TagUtils.java index 3b63168a07..de93bed26e 100755 --- a/Core/src/org/sleuthkit/autopsy/tags/TagUtils.java +++ b/Core/src/org/sleuthkit/autopsy/tags/TagUtils.java @@ -19,6 +19,9 @@ package org.sleuthkit.autopsy.tags; import java.util.logging.Level; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.casemodule.services.TagsManager; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.TagName; import org.sleuthkit.datamodel.TagSet; @@ -52,12 +55,13 @@ public final class TagUtils { public static String getDecoratedTagDisplayName(TagName tagName) { String displayName = tagName.getDisplayName(); try { - TagSet tagSet = tagName.getTagSet(); + TagsManager tagsManager = Case.getCurrentCaseThrows().getServices().getTagsManager(); + TagSet tagSet = tagsManager.getTagSet(tagName); if (tagSet != null) { displayName = tagSet.getName() + ": " + displayName; } - } catch (TskCoreException ex) { - logger.log(Level.WARNING, String.format("Failed to get TagSet for TagName (%d)", tagName.getId())); + } catch (NoCurrentCaseException | TskCoreException ex) { + logger.log(Level.SEVERE, String.format("Failed to get TagSet for TagName '%s' (ID=%d)", tagName.getDisplayName(), tagName.getId())); } if (tagName.getKnownStatus() == TskData.FileKnown.BAD) { From 0408755a7950972f5e9995962332694966ea8ce3 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Fri, 26 Jun 2020 19:44:32 -0400 Subject: [PATCH 20/43] 6567 TagName serialization fix --- .../org/sleuthkit/autopsy/casemodule/services/TagsManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java index 96040821e4..1a9b2e792d 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/TagsManager.java @@ -310,7 +310,7 @@ public class TagsManager implements Closeable { * @throws TskCoreException If there is an error querying the case database. */ public TagSet getTagSet(TagName tagName) throws TskCoreException { - return caseDb.getTaggingManager().getTagSetForTagName(tagName); + return caseDb.getTaggingManager().getTagSet(tagName); } /** From 8627faecd69514e67be6317d434e5b507d0cf530 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 29 Jun 2020 14:30:48 -0400 Subject: [PATCH 21/43] seven zip initialization to core installer --- Core/src/org/sleuthkit/autopsy/core/Installer.java | 10 ++++++++++ .../embeddedfileextractor/SevenZipExtractor.java | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/Installer.java b/Core/src/org/sleuthkit/autopsy/core/Installer.java index 2d2357374a..d232f9245d 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/core/Installer.java @@ -33,10 +33,13 @@ import java.util.logging.Handler; import java.util.logging.Level; import javafx.application.Platform; import javafx.embed.swing.JFXPanel; +import net.sf.sevenzipjbinding.SevenZip; +import net.sf.sevenzipjbinding.SevenZipNativeInitializationException; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.openide.modules.InstalledFileLocator; import org.openide.modules.ModuleInstall; +import org.openide.util.Exceptions; import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.actions.IngestRunningCheck; @@ -207,6 +210,13 @@ public class Installer extends ModuleInstall { } catch (UnsatisfiedLinkError e) { logger.log(Level.SEVERE, "Error loading LIBPQ library, ", e); //NON-NLS } + + try { + SevenZip.initSevenZipFromPlatformJAR(); + logger.log(Level.INFO, "7zip-java bindings loaded"); //NON-NLS + } catch (SevenZipNativeInitializationException e) { + logger.log(Level.SEVERE, "Error loading 7zip-java bindings", e); //NON-NLS + } } } diff --git a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java index fca75c2c56..a6df94206e 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java +++ b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java @@ -139,9 +139,10 @@ class SevenZipExtractor { } SevenZipExtractor(IngestJobContext context, FileTypeDetector fileTypeDetector, String moduleDirRelative, String moduleDirAbsolute) throws SevenZipNativeInitializationException { - if (!SevenZip.isInitializedSuccessfully() && (SevenZip.getLastInitializationException() == null)) { - SevenZip.initSevenZipFromPlatformJAR(); + if (!SevenZip.isInitializedSuccessfully()) { + throw new SevenZipNativeInitializationException("SevenZip has not been previously initialized."); } + this.context = context; this.fileTypeDetector = fileTypeDetector; this.moduleDirRelative = moduleDirRelative; From 39c225acd8d893dd09f0e36af040702ef7bdcb32 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 29 Jun 2020 14:42:49 -0400 Subject: [PATCH 22/43] seven zip initialization to core installer --- Core/src/org/sleuthkit/autopsy/core/Installer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/Installer.java b/Core/src/org/sleuthkit/autopsy/core/Installer.java index d232f9245d..35a7ce4985 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/core/Installer.java @@ -39,7 +39,6 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.openide.modules.InstalledFileLocator; import org.openide.modules.ModuleInstall; -import org.openide.util.Exceptions; import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.actions.IngestRunningCheck; From 0f9fbc12c5492d20100176999ba8c7031f2fc772 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 30 Jun 2020 10:01:04 -0400 Subject: [PATCH 23/43] move seven zip init location --- .../org/sleuthkit/autopsy/core/Installer.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/Installer.java b/Core/src/org/sleuthkit/autopsy/core/Installer.java index 35a7ce4985..2b6a2ca81c 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/core/Installer.java @@ -209,13 +209,6 @@ public class Installer extends ModuleInstall { } catch (UnsatisfiedLinkError e) { logger.log(Level.SEVERE, "Error loading LIBPQ library, ", e); //NON-NLS } - - try { - SevenZip.initSevenZipFromPlatformJAR(); - logger.log(Level.INFO, "7zip-java bindings loaded"); //NON-NLS - } catch (SevenZipNativeInitializationException e) { - logger.log(Level.SEVERE, "Error loading 7zip-java bindings", e); //NON-NLS - } } } @@ -390,6 +383,7 @@ public class Installer extends ModuleInstall { ensureClassifierFolderExists(); ensureOcrLanguagePacksFolderExists(); initJavaFx(); + initializeSevenZip(); for (ModuleInstall mi : packageInstallers) { try { mi.restored(); @@ -404,6 +398,18 @@ public class Installer extends ModuleInstall { } + /** + * Initializes 7zip-java bindings. + */ + private void initializeSevenZip() { + try { + SevenZip.initSevenZipFromPlatformJAR(); + logger.log(Level.INFO, "7zip-java bindings loaded"); //NON-NLS + } catch (SevenZipNativeInitializationException e) { + logger.log(Level.SEVERE, "Error loading 7zip-java bindings", e); //NON-NLS + } + } + /** * Runs an initial load of the Jython modules to speed up subsequent loads. */ From 7abda4855b2bc539819fa01023cfb9dc6adfa3fb Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 30 Jun 2020 11:37:04 -0400 Subject: [PATCH 24/43] update for comment --- .../org/sleuthkit/autopsy/core/Installer.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/Installer.java b/Core/src/org/sleuthkit/autopsy/core/Installer.java index 2b6a2ca81c..3bc6d6a911 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/core/Installer.java @@ -338,8 +338,8 @@ public class Installer extends ModuleInstall { } /** - * Make a folder in the config directory for object detection classifiers if one does not - * exist. + * Make a folder in the config directory for object detection classifiers if + * one does not exist. */ private static void ensureClassifierFolderExists() { File objectDetectionClassifierDir = new File(PlatformUtil.getObjectDetectionClassifierPath()); @@ -396,10 +396,11 @@ public class Installer extends ModuleInstall { logger.log(Level.INFO, "Autopsy Core restore completed"); //NON-NLS preloadJython(); } - - + /** - * Initializes 7zip-java bindings. + * Initializes 7zip-java bindings. We are performing initialization once + * because we encountered issues related to file locking when initialization + * was performed closer to where the bindings are used. See JIRA-6528. */ private void initializeSevenZip() { try { @@ -409,7 +410,7 @@ public class Installer extends ModuleInstall { logger.log(Level.SEVERE, "Error loading 7zip-java bindings", e); //NON-NLS } } - + /** * Runs an initial load of the Jython modules to speed up subsequent loads. */ @@ -418,13 +419,12 @@ public class Installer extends ModuleInstall { try { JythonModuleLoader.getIngestModuleFactories(); JythonModuleLoader.getGeneralReportModules(); - } - catch (Exception ex) { + } catch (Exception ex) { // This is a firewall exception to ensure that any possible exception caused // by this initial load of the Jython modules are caught and logged. logger.log(Level.SEVERE, "There was an error while doing an initial load of python plugins.", ex); } - + }; new Thread(loader).start(); } From 4f08e738f34116da61d2f39113e955bc7a88f808 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Tue, 30 Jun 2020 12:22:04 -0400 Subject: [PATCH 25/43] 6544 Added informational message to Personas tool --- .../persona/Bundle.properties | 1 + .../persona/Bundle.properties-MERGED | 7 +++- .../persona/PersonasTopComponent.form | 38 +++++++++++++++++-- .../persona/PersonasTopComponent.java | 25 ++++++++++-- 4 files changed, 63 insertions(+), 8 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties index db3e61bef5..c0b8acf2ac 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties @@ -79,3 +79,4 @@ CreatePersonaAccountDialog.typeLbl.text=Type: CreatePersonaAccountDialog.identifierTextField.text= CreatePersonaAccountDialog.identiferLbl.text=Identifier: CreatePersonaAccountDialog.okBtn.text=OK +PersonasTopComponent.introText.text=Personas represent an online identity. They span cases and are stored in the Central Repository based on accounts that were found in artifacts. You can create, edit, and delete personas here. diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED index ae2e6926d8..4973449fed 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED @@ -4,8 +4,10 @@ AddMetadataDialog_dup_Title=Metadata add failure AddMetadataDialog_empty_name_msg=A metadata entry cannot have an empty name or value. AddMetadataDialog_empty_name_Title=Missing field(s) CreatePersonaAccountDialog.title.text=Create Account -CreatePersonaAccountDialog_dup_msg=An account with this identifier and type already exists. -CreatePersonaAccountDialog_dup_Title=Account creation failure +CreatePersonaAccountDialog_error_msg=Failed to create account. +CreatePersonaAccountDialog_error_title=Account failure +CreatePersonaAccountDialog_success_msg=Account added. +CreatePersonaAccountDialog_success_title=Account added CTL_OpenPersonas=Personas CTL_PersonasTopComponentAction=Personas CTL_PersonaDetailsTopComponent=Persona Details @@ -119,6 +121,7 @@ CreatePersonaAccountDialog.typeLbl.text=Type: CreatePersonaAccountDialog.identifierTextField.text= CreatePersonaAccountDialog.identiferLbl.text=Identifier: CreatePersonaAccountDialog.okBtn.text=OK +PersonasTopComponent.introText.text=Personas represent an online identity. They span cases and are stored in the Central Repository based on accounts that were found in artifacts. You can create, edit, and delete personas here. PersonasTopComponent_delete_confirmation_msg=Are you sure you want to delete this persona? PersonasTopComponent_delete_confirmation_Title=Are you sure? PersonasTopComponent_delete_exception_msg=Failed to delete persona. diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form index 5ed4fb6271..4556552d78 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form @@ -44,16 +44,48 @@ - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -114,7 +146,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java index b289e567d2..ffe20c8426 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java @@ -263,6 +263,8 @@ public final class PersonasTopComponent extends TopComponent { private void initComponents() { searchButtonGroup = new javax.swing.ButtonGroup(); + introTextScrollPane = new javax.swing.JScrollPane(); + introText = new javax.swing.JTextArea(); mainSplitPane = new javax.swing.JSplitPane(); searchPanel = new javax.swing.JPanel(); searchField = new javax.swing.JTextField(); @@ -281,6 +283,17 @@ public final class PersonasTopComponent extends TopComponent { setName(""); // NOI18N + introTextScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); + + introText.setBackground(java.awt.SystemColor.window); + introText.setColumns(20); + introText.setLineWrap(true); + introText.setRows(5); + introText.setText(org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.introText.text")); // NOI18N + introText.setWrapStyleWord(true); + introText.setFocusable(false); + introTextScrollPane.setViewportView(introText); + mainSplitPane.setDividerLocation(400); searchField.setText(org.openide.util.NbBundle.getMessage(PersonasTopComponent.class, "PersonasTopComponent.searchField.text")); // NOI18N @@ -352,7 +365,7 @@ public final class PersonasTopComponent extends TopComponent { .addComponent(searchAccountRadio) .addComponent(searchBtn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(resultsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE) + .addComponent(resultsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(searchPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(editBtn) @@ -375,11 +388,15 @@ public final class PersonasTopComponent extends TopComponent { this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(mainSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 816, Short.MAX_VALUE) + .addComponent(introTextScrollPane) + .addComponent(mainSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 724, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(mainSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 428, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(introTextScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(mainSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 470, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -391,6 +408,8 @@ public final class PersonasTopComponent extends TopComponent { private org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel detailsPanel; private javax.swing.JScrollPane detailsScrollPane; private javax.swing.JButton editBtn; + private javax.swing.JTextArea introText; + private javax.swing.JScrollPane introTextScrollPane; private javax.swing.JSplitPane mainSplitPane; private javax.swing.JScrollPane resultsPane; private javax.swing.JTable resultsTable; From ff9bf08534cd860a0c28e547582332f808c497a7 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 30 Jun 2020 12:31:38 -0400 Subject: [PATCH 26/43] preserves window sizing --- Core/src/org/sleuthkit/autopsy/core/layer.xml | 1 + .../src/org/sleuthkit/autopsy/core/personasWsmode.xml | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml diff --git a/Core/src/org/sleuthkit/autopsy/core/layer.xml b/Core/src/org/sleuthkit/autopsy/core/layer.xml index 2b54236d77..288c25ff3a 100644 --- a/Core/src/org/sleuthkit/autopsy/core/layer.xml +++ b/Core/src/org/sleuthkit/autopsy/core/layer.xml @@ -450,6 +450,7 @@ + diff --git a/Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml b/Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml new file mode 100644 index 0000000000..e7038a463d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + From 8f5f4e961868677bd1fe5bebc54852ded9693e01 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 30 Jun 2020 13:06:15 -0400 Subject: [PATCH 27/43] fix for sizing --- Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml b/Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml index e7038a463d..2ee8947b65 100644 --- a/Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml +++ b/Core/src/org/sleuthkit/autopsy/core/personasWsmode.xml @@ -3,7 +3,7 @@ - + From 24009452b7786292830cbdde9b52ab5cc8622269 Mon Sep 17 00:00:00 2001 From: apriestman Date: Tue, 30 Jun 2020 13:25:23 -0400 Subject: [PATCH 28/43] Fix capitalization mismatches for doxygen images. --- docs/doxygen-user/auto_ingest_administration.dox | 2 +- docs/doxygen-user/photorec_carver.dox | 2 +- docs/doxygen-user/tagging.dox | 2 +- docs/doxygen-user/triage.dox | 2 +- docs/doxygen-user/ui_quick_search.dox | 4 ++-- docs/doxygen-user/volatility_dsp.dox | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/doxygen-user/auto_ingest_administration.dox b/docs/doxygen-user/auto_ingest_administration.dox index 158b2fb4e3..da95ffa997 100644 --- a/docs/doxygen-user/auto_ingest_administration.dox +++ b/docs/doxygen-user/auto_ingest_administration.dox @@ -57,7 +57,7 @@ If you right-click on a case, you can open it, see the log, delete the case, or Note that you can select multiple cases at once to delete. If you choose to delete a case (or cases), you'll see the following confirmation dialog: -\image html case_delete_confirm.png +\image html AutoIngest/case_delete_confirm.png \section auto_ingest_admin_health_monitor Health Monitor diff --git a/docs/doxygen-user/photorec_carver.dox b/docs/doxygen-user/photorec_carver.dox index d5ef67dd0b..3560f12fbb 100644 --- a/docs/doxygen-user/photorec_carver.dox +++ b/docs/doxygen-user/photorec_carver.dox @@ -22,7 +22,7 @@ Ingest Settings ------ The run-time setting for this module allows you to choose whether to keep corrupted files. -\image html photo_rec_settings.png +\image html photo_rec_settings.PNG Also note that the "Run ingest modules on" selection needs to include unallocated space for this module to run. diff --git a/docs/doxygen-user/tagging.dox b/docs/doxygen-user/tagging.dox index ada9f5d0c5..e4bccc77a6 100644 --- a/docs/doxygen-user/tagging.dox +++ b/docs/doxygen-user/tagging.dox @@ -22,7 +22,7 @@ At this point there are three options: - New tag -- Create a new tag and add it to the file/result -\image html tagging_new_tag.png +\image html tagging_new_tag.PNG There are several default tag names: - Bookmark - Default tag for marking files of interest diff --git a/docs/doxygen-user/triage.dox b/docs/doxygen-user/triage.dox index 3750f92434..47ac724105 100644 --- a/docs/doxygen-user/triage.dox +++ b/docs/doxygen-user/triage.dox @@ -56,7 +56,7 @@ VHD is a file format used by Microsoft Virtual Machines that is readable by Wind To create a sparse VHD, check the box for "Make a VHD image..." when selecting the disk to analyze. -\image html createVHD.png +\image html triage/createVHD.png \section triage_scenarios Scenarios diff --git a/docs/doxygen-user/ui_quick_search.dox b/docs/doxygen-user/ui_quick_search.dox index 901427243e..be960973e9 100644 --- a/docs/doxygen-user/ui_quick_search.dox +++ b/docs/doxygen-user/ui_quick_search.dox @@ -5,12 +5,12 @@ The user interface quick search feature allows you to search within the data on How to use it ----- In order to use the search you need to select any item in the area you wish to search, and start typing. If user interface quick search is available in the area you have selected a search field will appear in the bottom left hand corner of the area. As you type the string you are searching for it will auto-update to select one of the results which matches your string. You can switch between the results which match the string you have typed with the up and down keys. The search does not support the use of regular expressions but will match against any sub-sting in the fields it searches, not just at the beginning of the field. -\image html quick_search_result.PNG +\image html quick_search_result.png Configuration ----- By default the search will match against the data in all fields which are in the currently selected area. The search will also ignore case by default. If you want to change either of these default behaviors you can click the magnifying glass with the down arrow icon and configure which columns will be searched as well as if the search should ignore case. -\image html quick_search_configuration.PNG +\image html quick_search_configuration.png Where it can be used ----- diff --git a/docs/doxygen-user/volatility_dsp.dox b/docs/doxygen-user/volatility_dsp.dox index 51b137e5fe..ff5349f3ce 100644 --- a/docs/doxygen-user/volatility_dsp.dox +++ b/docs/doxygen-user/volatility_dsp.dox @@ -14,7 +14,7 @@ If you have a disk image associated with your memory image, ingest the disk imag On the next screen, you can select your memory image and then adjust the settings to choose a profile and which Volatility plugins to run. -\image html volatility_dsp_config.png +\image html volatility_dsp_config.PNG Next you'll see the ingest module configuration panel. No ingest modules will be run when using the Volatility data source processor, so simply hit the "Next" button. When it finishes, you may have some non-critical errors. These frequently come from the data source processor being unable to find files in the original disk image. If you did not add the associated disk image before running the Volatility data source processor on the memory image, there will be a large number of these errors but the Volatility module output will still be available. From 3297c2a16c13877f4e5f4b0f592f32518e856d4e Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Tue, 30 Jun 2020 13:51:36 -0400 Subject: [PATCH 29/43] Update MapWaypoint.java Change colr for TSK_METADATA_EXIF from cyan to Magenta --- Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java b/Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java index 7007c7f025..21799e19fa 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java @@ -78,7 +78,7 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_SEARCH.getTypeID(), Color.GREEN); artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_TRACK.getTypeID(), Color.ORANGE); artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_TRACKPOINT.getTypeID(), Color.ORANGE); - artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_METADATA_EXIF.getTypeID(), Color.CYAN); + artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_METADATA_EXIF.getTypeID(), Color.MAGENTA); } private final Waypoint dataModelWaypoint; From 0b1b097861528a3b0432dbdcbc0d5e0d7f0e1a3c Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Tue, 30 Jun 2020 13:56:58 -0400 Subject: [PATCH 30/43] 6510 More rigorous auto ingest job manifest parsing --- .../experimental/autoingest/AutopsyManifestFileParser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java index 9f1cc03246..93e6e5956c 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutopsyManifestFileParser.java @@ -75,7 +75,7 @@ public final class AutopsyManifestFileParser implements ManifestFileParser { XPathExpression expr = xpath.compile(CASE_NAME_XPATH); String caseName = (String) expr.evaluate(doc, XPathConstants.STRING); if (caseName.isEmpty()) { - throw new ManifestFileParserException("CaseName element is missing or empty, manifest is invalid"); + throw new ManifestFileParserException("Case name not found, manifest is invalid"); } expr = xpath.compile(DEVICE_ID_XPATH); @@ -87,7 +87,7 @@ public final class AutopsyManifestFileParser implements ManifestFileParser { expr = xpath.compile(DATA_SOURCE_NAME_XPATH); String dataSourceName = (String) expr.evaluate(doc, XPathConstants.STRING); if (dataSourceName.isEmpty()) { - throw new ManifestFileParserException("DataSource element is missing or empty, manifest is invalid"); + throw new ManifestFileParserException("Data source path not found, manifest is invalid"); } Path dataSourcePath = filePath.getParent().resolve(dataSourceName); From 3c7d377b4876a17b651272fd969f34b25016fa91 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 30 Jun 2020 14:54:25 -0400 Subject: [PATCH 31/43] commenting on requirements --- release_scripts/diffscript.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release_scripts/diffscript.py b/release_scripts/diffscript.py index d97de726e6..af3d995a88 100644 --- a/release_scripts/diffscript.py +++ b/release_scripts/diffscript.py @@ -1,5 +1,6 @@ """This script determines the updated, added, and deleted properties from the '.properties-MERGED' files -and generates a csv file containing the items changed. This script requires gitpython and jproperties. +and generates a csv file containing the items changed. This script requires the python libraries: +gitpython and jproperties. As a consequence, it also requires git >= 1.7.0 and python >= 3.4. """ from git import Repo From c99635f553a5bb78251e31da6981cdf953a8d7be Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dsmyda" Date: Tue, 30 Jun 2020 16:25:18 -0400 Subject: [PATCH 32/43] Added refresh throttler to FileTypesByMimeType --- .../datamodel/FileTypesByMimeType.java | 59 ++++++++++++------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java index f1baac477a..2213c90c71 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java @@ -58,7 +58,7 @@ import org.sleuthkit.datamodel.TskData; * Listener which is checking for changes in IngestJobEvent Completed or * Canceled and IngestModuleEvent Content Changed. */ -public final class FileTypesByMimeType extends Observable implements AutopsyVisitableItem { +public final class FileTypesByMimeType extends Observable implements AutopsyVisitableItem, RefreshThrottler.Refresher { private final static Logger logger = Logger.getLogger(FileTypesByMimeType.class.getName()); private static final Set INGEST_JOB_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestJobEvent.COMPLETED, IngestManager.IngestJobEvent.CANCELLED); @@ -83,13 +83,19 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi private static final Set CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.DATA_SOURCE_ADDED, Case.Events.CURRENT_CASE); + /** + * RefreshThrottler is used to limit the number of refreshes performed when + * CONTENT_CHANGED and DATA_ADDED ingest module events are received. + */ + private final RefreshThrottler refreshThrottler = new RefreshThrottler(this); + /** * Create the base expression used as the where clause in the queries for * files by mime type. Filters out certain kinds of files and directories, * and known/slack files based on user preferences. * * @return The base expression to be used in the where clause of queries for - * files by mime type. + * files by mime type. */ private String createBaseWhereExpr() { return "(dir_type = " + TskData.TSK_FS_NAME_TYPE_ENUM.REG.getValue() + ")" @@ -108,6 +114,7 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi private void removeListeners() { deleteObservers(); IngestManager.getInstance().removeIngestJobEventListener(pcl); + refreshThrottler.unregisterEventListener(); Case.removeEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl); } @@ -155,25 +162,11 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi this.typesRoot = typesRoot; this.pcl = (PropertyChangeEvent evt) -> { String eventType = evt.getPropertyName(); - if (eventType.equals(IngestManager.IngestModuleEvent.CONTENT_CHANGED.toString()) - || eventType.equals(IngestManager.IngestJobEvent.COMPLETED.toString()) + if (eventType.equals(IngestManager.IngestJobEvent.COMPLETED.toString()) || eventType.equals(IngestManager.IngestJobEvent.CANCELLED.toString()) || eventType.equals(Case.Events.DATA_SOURCE_ADDED.toString())) { - /** - * Checking for a current case is a stop gap measure until a - * different way of handling the closing of cases is worked out. - * Currently, remote events may be received for a case that is - * already closed. - */ - try { - Case.getCurrentCaseThrows(); - typesRoot.updateShowCounts(); - populateHashMap(); - } catch (NoCurrentCaseException notUsed) { - /** - * Case is closed, do nothing. - */ - } + + refresh(); } else if (eventType.equals(Case.Events.CURRENT_CASE.toString())) { if (evt.getNewValue() == null) { removeListeners(); @@ -181,6 +174,7 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi } }; IngestManager.getInstance().addIngestJobEventListener(INGEST_JOB_EVENTS_OF_INTEREST, pcl); + refreshThrottler.registerForIngestModuleEvents(); Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl); populateHashMap(); } @@ -201,7 +195,7 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi * @param node the Node which you wish to check. * * @return True if originNode is an instance of ByMimeTypeNode and is empty, - * false otherwise. + * false otherwise. */ public static boolean isEmptyMimeTypeNode(Node node) { boolean isEmptyMimeNode = false; @@ -212,6 +206,29 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi } + @Override + public void refresh() { + /** + * Checking for a current case is a stop gap measure until a different + * way of handling the closing of cases is worked out. Currently, remote + * events may be received for a case that is already closed. + */ + try { + Case.getCurrentCaseThrows(); + typesRoot.updateShowCounts(); + populateHashMap(); + } catch (NoCurrentCaseException notUsed) { + /** + * Case is closed, do nothing. + */ + } + } + + @Override + public boolean isRefreshRequired(PropertyChangeEvent evt) { + return true; + } + /** * Class which represents the root node of the "By MIME Type" tree, will * have children of each media type present in the database or no children @@ -484,4 +501,4 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi // No-op } } -} +} \ No newline at end of file From db91970c7e5d7633f3e87c686d43e92e8ad77a59 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dsmyda" Date: Tue, 30 Jun 2020 17:01:41 -0400 Subject: [PATCH 33/43] Made refresher a private inner class --- .../datamodel/FileTypesByMimeType.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java index 2213c90c71..1694123fbd 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java @@ -58,7 +58,7 @@ import org.sleuthkit.datamodel.TskData; * Listener which is checking for changes in IngestJobEvent Completed or * Canceled and IngestModuleEvent Content Changed. */ -public final class FileTypesByMimeType extends Observable implements AutopsyVisitableItem, RefreshThrottler.Refresher { +public final class FileTypesByMimeType extends Observable implements AutopsyVisitableItem { private final static Logger logger = Logger.getLogger(FileTypesByMimeType.class.getName()); private static final Set INGEST_JOB_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestJobEvent.COMPLETED, IngestManager.IngestJobEvent.CANCELLED); @@ -87,7 +87,7 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi * RefreshThrottler is used to limit the number of refreshes performed when * CONTENT_CHANGED and DATA_ADDED ingest module events are received. */ - private final RefreshThrottler refreshThrottler = new RefreshThrottler(this); + private final RefreshThrottler refreshThrottler; /** * Create the base expression used as the where clause in the queries for @@ -166,13 +166,14 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi || eventType.equals(IngestManager.IngestJobEvent.CANCELLED.toString()) || eventType.equals(Case.Events.DATA_SOURCE_ADDED.toString())) { - refresh(); + refreshMimeTypes(); } else if (eventType.equals(Case.Events.CURRENT_CASE.toString())) { if (evt.getNewValue() == null) { removeListeners(); } } }; + refreshThrottler = new RefreshThrottler(new FileTypesByMimeTypeRefresher()); IngestManager.getInstance().addIngestJobEventListener(INGEST_JOB_EVENTS_OF_INTEREST, pcl); refreshThrottler.registerForIngestModuleEvents(); Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, pcl); @@ -206,8 +207,7 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi } - @Override - public void refresh() { + private void refreshMimeTypes() { /** * Checking for a current case is a stop gap measure until a different * way of handling the closing of cases is worked out. Currently, remote @@ -224,9 +224,18 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi } } - @Override - public boolean isRefreshRequired(PropertyChangeEvent evt) { - return true; + private class FileTypesByMimeTypeRefresher implements RefreshThrottler.Refresher { + + @Override + public void refresh() { + refreshMimeTypes(); + } + + @Override + public boolean isRefreshRequired(PropertyChangeEvent evt) { + return true; + } + } /** @@ -501,4 +510,4 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi // No-op } } -} \ No newline at end of file +} From b8b043ff6494c218e949fc5fef3cee47a9b50312 Mon Sep 17 00:00:00 2001 From: apriestman Date: Wed, 1 Jul 2020 07:23:30 -0400 Subject: [PATCH 34/43] Add page on updating the official interesting file rule sets --- .../images/InterestingFiles/if_create_set.png | Bin 0 -> 8947 bytes .../images/InterestingFiles/if_export.png | Bin 0 -> 22941 bytes .../images/InterestingFiles/if_new_rule.png | Bin 0 -> 23381 bytes .../if_official_rule_details.png | Bin 0 -> 77029 bytes .../images/InterestingFiles/ingest.png | Bin 54843 -> 69834 bytes .../images/InterestingFiles/main.png | Bin 67991 -> 71819 bytes docs/doxygen-user/interesting_files.dox | 4 ++- docs/doxygen-user/main.dox | 4 ++- .../updating_interesting_file_sets.dox | 26 ++++++++++++++++++ 9 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 docs/doxygen-user/images/InterestingFiles/if_create_set.png create mode 100644 docs/doxygen-user/images/InterestingFiles/if_export.png create mode 100644 docs/doxygen-user/images/InterestingFiles/if_new_rule.png create mode 100644 docs/doxygen-user/images/InterestingFiles/if_official_rule_details.png create mode 100644 docs/doxygen-user/updating_interesting_file_sets.dox diff --git a/docs/doxygen-user/images/InterestingFiles/if_create_set.png b/docs/doxygen-user/images/InterestingFiles/if_create_set.png new file mode 100644 index 0000000000000000000000000000000000000000..6302a6026c5aa39ba57c917047c67ea6108e492c GIT binary patch literal 8947 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 literal 0 HcmV?d00001 diff --git a/docs/doxygen-user/images/InterestingFiles/if_official_rule_details.png b/docs/doxygen-user/images/InterestingFiles/if_official_rule_details.png new file mode 100644 index 0000000000000000000000000000000000000000..669a5d4dca6d3defed188d738417cc259b39109c GIT binary patch literal 77029 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 literal 0 HcmV?d00001 diff --git a/docs/doxygen-user/images/InterestingFiles/ingest.png b/docs/doxygen-user/images/InterestingFiles/ingest.png index aadf558768a1024048229335fb656b4292e0f20d..9dedfd045bee0a99b8653a59ae72caa1bdbfd72d 100644 GIT binary patch literal 69834 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�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 M#TCTLMGXD^58{xNMgRZ+ literal 54843 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%0D#H9UA5{F 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 VmADA?kT?#RFbgvq(=uaZ#D8heNKgO( delta 51435 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

}1v+ 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 diff --git a/docs/doxygen-user/interesting_files.dox b/docs/doxygen-user/interesting_files.dox index 7e4147a66f..e7f4305822 100644 --- a/docs/doxygen-user/interesting_files.dox +++ b/docs/doxygen-user/interesting_files.dox @@ -15,7 +15,7 @@ This module allows you to make sets of rules that will be run against each file \section interesting_files_config Configuration -To create and edit your rule sets, go to "Tools", "Options" and then select the "Interesting Files" tab. The area on the left side will show you a list of all the rule sets that are currently available. Selecting a rule set will display its description and information about each of its rules on the right side of the panel. +To create and edit your rule sets, go to "Tools", "Options" and then select the "Interesting Files" tab. The area on the left side will show you a list of all the rule sets that are currently available. This will include the official rule sets that are included with Autopsy and any rule sets that you create. Selecting a rule set will display its description and information about each of its rules on the right side of the panel. \image html InterestingFiles/main.png @@ -31,6 +31,8 @@ The buttons on the bottom of the left side of the panel control the rule sets.

  • Export Set - Exports the selected rule set in a format that can be shared with other Autopsy users. +Note that the predefined rule sets can not be deleted or edited. If you believe you have additions that would be useful to the community, see the \ref update_interesting_files_page page for instructions on submitting updates. + Selecting a rule set will display its description, whether it ignores known files, and the rules contained in the set. Selecting a rule will display the conditions for that rule in the "Rule Details" section. The buttons under the list of rules allow you to create new rules and edit or delete existing rules. Selecting "New Rule" will bring up a new window to create the rule. diff --git a/docs/doxygen-user/main.dox b/docs/doxygen-user/main.dox index 424a0323d1..63114401bd 100644 --- a/docs/doxygen-user/main.dox +++ b/docs/doxygen-user/main.dox @@ -93,7 +93,9 @@ The following topics are available here: - \ref object_detection_page - \ref volatility_dsp_page -- \subpage translations_page +- Community Contributions + - \subpage translations_page + - \subpage update_interesting_files_page If the topic you need is not listed, then you can: diff --git a/docs/doxygen-user/updating_interesting_file_sets.dox b/docs/doxygen-user/updating_interesting_file_sets.dox new file mode 100644 index 0000000000..dfacd38f1d --- /dev/null +++ b/docs/doxygen-user/updating_interesting_file_sets.dox @@ -0,0 +1,26 @@ +/*! \page update_interesting_files_page Updating the Official Interesting File Sets + +The \ref interesting_files_identifier_page contains several official rule sets. You can select a rule set to display the rules it contains in the middle of the right side of the panel. + +\image html InterestingFiles/if_official_rule_details.png + +If you have one or more rules that you think should be included in an official rule set you can submit your new rules using the process below. Consult the \ref interesting_files_config section for general instructions on creating and editing interesting file sets. + +
      +
    1. Create a new interesting file set. Give it a name similar to the set you wish to update to make it clear which set your new rules belong to. Do not copy the existing rule set. + +\image html InterestingFiles/if_create_set.png + +
    2. Create your rule(s). Make sure each rule has a "Rule Name" that identifies the application it is detecting. Click the "Apply" button on the main panel when done. + +\image html InterestingFiles/if_new_rule.png + +
    3. Export the set as XML. + +\image html InterestingFiles/if_export.png + +
    4. Create an Autopsy Github issue that identifes the set to update and what applications were added, and attach the XML. Go to: https://github.com/sleuthkit/autopsy/issues +
    + + +*/ \ No newline at end of file From f268c76a3deae0a8b354761e73f78caee98b1ffe Mon Sep 17 00:00:00 2001 From: apriestman Date: Wed, 1 Jul 2020 13:07:42 -0400 Subject: [PATCH 35/43] Doxygen warning fixes --- .../centralrepository/datamodel/Persona.java | 14 ++++++++++---- .../artifactviewers/ContactArtifactViewer.java | 15 ++++----------- .../interestingitems/FilesSetDefsPanel.java | 5 +---- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Persona.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Persona.java index fe4703aa1b..cc1b17ab80 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Persona.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Persona.java @@ -255,7 +255,7 @@ public class Persona { /** * Sets the comment of this persona. * - * @param name The new comment. + * @param comment The new comment. * * @throws CentralRepoException If there is an error. */ @@ -313,7 +313,9 @@ public class Persona { /** * Modifies the confidence / justification of the given PersonaAccount * - * @param account account to modify + * @param account Account to modify. + * @param confidence Level of confidence. + * @param justification Justification. * * @throws CentralRepoException If there is an error in querying the * Personas table. @@ -485,7 +487,9 @@ public class Persona { /** * Modifies the given alias. * - * @param alias alias to modify + * @param key Key for the alias to modify. + * @param confidence Level of confidence. + * @param justification Justification. * * @throws CentralRepoException If there is an error in querying the * Personas table. @@ -535,7 +539,9 @@ public class Persona { /** * Modifies the given metadata. * - * @param metadata metadata to modify + * @param key Key for the metadata to modify. + * @param confidence Level of confidence. + * @param justification Justification. * * @throws CentralRepoException If there is an error in querying the * Personas table. diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/ContactArtifactViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/ContactArtifactViewer.java index 86a16378f1..734a7ec180 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/ContactArtifactViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/ContactArtifactViewer.java @@ -288,7 +288,7 @@ public class ContactArtifactViewer extends javax.swing.JPanel implements Artifac * section panel. * * @param sectionAttributesList List of attributes to display. - * @param sectionLabel Section name label. + * @param sectionHeader Section name label. * @param contactPanelLayout Panel layout. * @param contactPanelConstraints Layout constraints. * @@ -326,11 +326,9 @@ public class ContactArtifactViewer extends javax.swing.JPanel implements Artifac } /** - * Kicks off a search for personas, based in the given list of attributes. + * Initiates a search for Personas for the accounts associated with the + * Contact. * - * @param accountAttributesList a list of account identifying attributes. - * - * @throws CentralRepoException */ @NbBundle.Messages({ "ContactArtifactViewer_persona_header=Persona", @@ -338,12 +336,6 @@ public class ContactArtifactViewer extends javax.swing.JPanel implements Artifac "ContactArtifactViewer_cr_disabled_message=Enable Central Repository to view, create and edit personas.", "ContactArtifactViewer_persona_unknown=Unknown" }) - - /** - * Initiates a search for Personas for the accounts associated with the - * Contact. - * - */ private void initiatePersonasSearch() { // add a section header @@ -425,6 +417,7 @@ public class ContactArtifactViewer extends javax.swing.JPanel implements Artifac * Displays the given persona in the persona panel. * * @param persona Persona to display. + * @param matchNumber Number of matches. * @param missingAccountsList List of contact accounts this persona may be * missing. * @param gridBagLayout Layout to use. diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java index 400896407e..7e0b57a412 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/FilesSetDefsPanel.java @@ -517,10 +517,7 @@ public final class FilesSetDefsPanel extends IngestModuleGlobalSettingsPanel imp * * @param oldSet A set to replace, null if the new set is not a * replacement. - * @param name The name of the files set. - * @param description The description of the files set. - * @param ignoresKnownFiles Whether or not the files set ignores known - * files. + * @param newSet The new set of rules. * @param rules The set membership rules for the set. If null, * the rules in the new set will be used. */ From fdc9d94c0861749bad123ac4bd973c8901e51b1a Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 2 Jul 2020 08:11:25 -0400 Subject: [PATCH 36/43] 6548 updated encryption programs --- .../Encryption Programs.xml | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/thirdparty/InterestingFileSetRules/Encryption Programs.xml b/thirdparty/InterestingFileSetRules/Encryption Programs.xml index 1d12455893..68964da7a2 100644 --- a/thirdparty/InterestingFileSetRules/Encryption Programs.xml +++ b/thirdparty/InterestingFileSetRules/Encryption Programs.xml @@ -1,23 +1,25 @@ - - Cryptomator.exe - gdbus.exe - GFileEncryption.exe - EncFSMP.exe - Tor Browser - Desktop-Bridge.exe - cexpertcmd.exe - Encrypto.exe + aescrypt.exe - certainsafe.exe - Folder Lock.exe - BitLockerDeviceEncryption.exe - VeraCrypt.exe - cexpert_gui.exe - gpg.exe AxCrypt.exe - Tutanota Desktop.exe + BitLockerDeviceEncryption.exe + certainsafe.exe + cexpertcmd.exe + cexpert_gui.exe + Cryptomator.exe + ecryptfs + EncFSMP.exe + Encrypto.exe + Folder Lock.exe + GFileEncryption.exe + gpg.exe + gdbus.exe KeePass.exe + luks + Desktop-Bridge.exe + Tor Browser + Tutanota Desktop.exe + VeraCrypt.exe From 04181db781d18679b8402e2086dabb7f62f93e4b Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 2 Jul 2020 08:23:36 -0400 Subject: [PATCH 37/43] to standard set --- thirdparty/InterestingFileSetRules/Encryption Programs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/InterestingFileSetRules/Encryption Programs.xml b/thirdparty/InterestingFileSetRules/Encryption Programs.xml index 68964da7a2..5ad59eee3b 100644 --- a/thirdparty/InterestingFileSetRules/Encryption Programs.xml +++ b/thirdparty/InterestingFileSetRules/Encryption Programs.xml @@ -1,6 +1,6 @@ - + aescrypt.exe AxCrypt.exe BitLockerDeviceEncryption.exe From c6400b55355e0ecefad3417f13b2c0bf7c6e8984 Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Thu, 2 Jul 2020 15:01:07 -0400 Subject: [PATCH 38/43] Update cachelocation.py Check number of entries of cache files to see if it is greater then the file size, if it is then skip processing of the file, otherwise process the file. --- .../android/cachelocation.py | 59 ++++++++++--------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/InternalPythonModules/android/cachelocation.py b/InternalPythonModules/android/cachelocation.py index 3697fb44b0..683370dfad 100644 --- a/InternalPythonModules/android/cachelocation.py +++ b/InternalPythonModules/android/cachelocation.py @@ -42,6 +42,7 @@ from org.sleuthkit.datamodel import TskCoreException import traceback import general import struct +import os """ Parses cache files that Android maintains for Wifi and cell towers. Adds GPS points to blackboard. @@ -79,35 +80,39 @@ class CacheLocationAnalyzer(general.AndroidComponentAnalyzer): # code to parse the cache.wifi and cache.cell taken from https://forensics.spreitzenbarth.de/2011/10/28/decoding-cache-cell-and-cache-wifi-files/ cacheFile = open(str(file), 'rb') (version, entries) = struct.unpack('>hh', cacheFile.read(4)) - i = 0 - while i < entries: - key = cacheFile.read(struct.unpack('>h', cacheFile.read(2))[0]) - (accuracy, confidence, latitude, longitude, readtime) = struct.unpack('>iiddQ', cacheFile.read(32)) - timestamp = readtime/1000 - i = i + 1 + # Check the number of entries * 32 (entry record size) to see if it is bigger then the file, this is a indication the file is malformed or corrupted + if ((entries * 32) < abstractFile.getSize()): + i = 0 + self._logger.log(Level.INFO, "Number of Entries is " + str(entries) + " File size is " + str(abstractFile.getSize())) + while i < entries: + key = cacheFile.read(struct.unpack('>h', cacheFile.read(2))[0]) + (accuracy, confidence, latitude, longitude, readtime) = struct.unpack('>iiddQ', cacheFile.read(32)) + timestamp = readtime/1000 + i = i + 1 - attributes = ArrayList() - artifact = abstractFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_BOOKMARK) - attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LATITUDE, general.MODULE_NAME, latitude)) - attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE, general.MODULE_NAME, longitude)) - attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME, general.MODULE_NAME, timestamp)) - attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME, general.MODULE_NAME, - abstractFile.getName() + " Location History")) - - artifact.addAttributes(attributes) - #Not storing these for now. - # artifact.addAttribute(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_VALUE.getTypeID(), AndroidModuleFactorymodule.moduleName, accuracy)) - # artifact.addAttribute(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_COMMENT.getTypeID(), AndroidModuleFactorymodule.moduleName, confidence)) - try: - # index the artifact for keyword search - blackboard = Case.getCurrentCase().getSleuthkitCase().getBlackboard() - blackboard.postArtifact(artifact, general.MODULE_NAME) - except Blackboard.BlackboardException as ex: - self._logger.log(Level.SEVERE, "Unable to index blackboard artifact " + str(artifact.getArtifactID()), ex) - self._logger.log(Level.SEVERE, traceback.format_exc()) - MessageNotifyUtil.Notify.error("Failed to index GPS trackpoint artifact for keyword search.", artifact.getDisplayName()) - cacheFile.close() + attributes = ArrayList() + artifact = abstractFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_BOOKMARK) + attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LATITUDE, general.MODULE_NAME, latitude)) + attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE, general.MODULE_NAME, longitude)) + attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME, general.MODULE_NAME, timestamp)) + attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PROG_NAME, general.MODULE_NAME, + abstractFile.getName() + " Location History")) + artifact.addAttributes(attributes) + #Not storing these for now. + # artifact.addAttribute(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_VALUE.getTypeID(), AndroidModuleFactorymodule.moduleName, accuracy)) + # artifact.addAttribute(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_COMMENT.getTypeID(), AndroidModuleFactorymodule.moduleName, confidence)) + try: + # index the artifact for keyword search + blackboard = Case.getCurrentCase().getSleuthkitCase().getBlackboard() + blackboard.postArtifact(artifact, general.MODULE_NAME) + except Blackboard.BlackboardException as ex: + self._logger.log(Level.SEVERE, "Unable to index blackboard artifact " + str(artifact.getArtifactID()), ex) + self._logger.log(Level.SEVERE, traceback.format_exc()) + MessageNotifyUtil.Notify.error("Failed to index GPS trackpoint artifact for keyword search.", artifact.getDisplayName()) + cacheFile.close() + else: + self._logger.log(Level.WARNING, "Number of entries in file exceeds file size of file " + os.path.join(abstractFile.getParentPath(), abstractFile.getName())) except Exception as ex: self._logger.log(Level.SEVERE, "Error parsing Cached GPS locations to blackboard", ex) self._logger.log(Level.SEVERE, traceback.format_exc()) From e13d2725eef55273126eb151049a80d133a87030 Mon Sep 17 00:00:00 2001 From: rcordovano Date: Mon, 6 Jul 2020 16:20:35 -0400 Subject: [PATCH 39/43] Update app version number, Core NBM versioning --- Core/manifest.mf | 2 +- Core/nbproject/project.properties | 2 +- Experimental/nbproject/project.xml | 2 +- ImageGallery/nbproject/project.xml | 2 +- KeywordSearch/nbproject/project.xml | 2 +- RecentActivity/nbproject/project.xml | 2 +- Testing/nbproject/project.xml | 2 +- docs/doxygen-user/Doxyfile | 4 ++-- docs/doxygen/Doxyfile | 4 ++-- nbproject/project.properties | 2 +- thunderbirdparser/nbproject/project.xml | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Core/manifest.mf b/Core/manifest.mf index 00681f3e7f..0f9b4579f6 100644 --- a/Core/manifest.mf +++ b/Core/manifest.mf @@ -2,7 +2,7 @@ Manifest-Version: 1.0 OpenIDE-Module: org.sleuthkit.autopsy.core/10 OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/core/Bundle.properties OpenIDE-Module-Layer: org/sleuthkit/autopsy/core/layer.xml -OpenIDE-Module-Implementation-Version: 31 +OpenIDE-Module-Implementation-Version: 32 OpenIDE-Module-Requires: org.openide.windows.WindowManager AutoUpdate-Show-In-Client: true AutoUpdate-Essential-Module: true diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index 3bf03f2103..3814ec6d0a 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -138,5 +138,5 @@ nbm.homepage=http://www.sleuthkit.org/ nbm.module.author=Brian Carrier nbm.needs.restart=true source.reference.curator-recipes-2.8.0.jar=release/modules/ext/curator-recipes-2.8.0-sources.jar -spec.version.base=10.19 +spec.version.base=10.20 diff --git a/Experimental/nbproject/project.xml b/Experimental/nbproject/project.xml index 166c73f0a5..6e1fe0eaef 100644 --- a/Experimental/nbproject/project.xml +++ b/Experimental/nbproject/project.xml @@ -135,7 +135,7 @@ 10 - 10.19 + 10.20 diff --git a/ImageGallery/nbproject/project.xml b/ImageGallery/nbproject/project.xml index 4ef4c1fde1..501d7a9ea3 100644 --- a/ImageGallery/nbproject/project.xml +++ b/ImageGallery/nbproject/project.xml @@ -127,7 +127,7 @@ 10 - 10.19 + 10.20 diff --git a/KeywordSearch/nbproject/project.xml b/KeywordSearch/nbproject/project.xml index 10e1e76bfe..bd5072a4be 100644 --- a/KeywordSearch/nbproject/project.xml +++ b/KeywordSearch/nbproject/project.xml @@ -119,7 +119,7 @@ 10 - 10.19 + 10.20 diff --git a/RecentActivity/nbproject/project.xml b/RecentActivity/nbproject/project.xml index f6465f00a5..3073bf314b 100644 --- a/RecentActivity/nbproject/project.xml +++ b/RecentActivity/nbproject/project.xml @@ -60,7 +60,7 @@ 10 - 10.19 + 10.20 diff --git a/Testing/nbproject/project.xml b/Testing/nbproject/project.xml index 2ebb94a835..2f8d76f7a1 100644 --- a/Testing/nbproject/project.xml +++ b/Testing/nbproject/project.xml @@ -47,7 +47,7 @@ 10 - 10.19 + 10.20 diff --git a/docs/doxygen-user/Doxyfile b/docs/doxygen-user/Doxyfile index 0f985042a3..eaa570e291 100644 --- a/docs/doxygen-user/Doxyfile +++ b/docs/doxygen-user/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "Autopsy User Documentation" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 4.15.0 +PROJECT_NUMBER = 4.16.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -1025,7 +1025,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = 4.15.0 +HTML_OUTPUT = 4.16.0 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 993ee8ded2..261517d081 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "Autopsy" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 4.15.0 +PROJECT_NUMBER = 4.16.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears a the top of each page and should give viewer a @@ -1066,7 +1066,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = api-docs/4.15.0/ +HTML_OUTPUT = api-docs/4.16.0/ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/nbproject/project.properties b/nbproject/project.properties index 390228bc4d..d0eec3ae02 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -4,7 +4,7 @@ app.title=Autopsy ### lowercase version of above app.name=${branding.token} ### if left unset, version will default to today's date -app.version=4.15.0 +app.version=4.16.0 ### build.type must be one of: DEVELOPMENT, RELEASE #build.type=RELEASE build.type=DEVELOPMENT diff --git a/thunderbirdparser/nbproject/project.xml b/thunderbirdparser/nbproject/project.xml index 5f285136a0..106d3d64a3 100644 --- a/thunderbirdparser/nbproject/project.xml +++ b/thunderbirdparser/nbproject/project.xml @@ -45,7 +45,7 @@ 10 - 10.19 + 10.20 From 4ad3b1ae3869e60a6d84a4f2ffb6bf8d5eb04032 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Tue, 7 Jul 2020 10:12:35 -0400 Subject: [PATCH 40/43] 6544 fix background color on windows --- .../persona/Bundle.properties | 2 +- .../persona/Bundle.properties-MERGED | 2 +- .../persona/PersonasTopComponent.form | 25 ++----------------- .../persona/PersonasTopComponent.java | 2 +- 4 files changed, 5 insertions(+), 26 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties index c0b8acf2ac..26463c8818 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties @@ -79,4 +79,4 @@ CreatePersonaAccountDialog.typeLbl.text=Type: CreatePersonaAccountDialog.identifierTextField.text= CreatePersonaAccountDialog.identiferLbl.text=Identifier: CreatePersonaAccountDialog.okBtn.text=OK -PersonasTopComponent.introText.text=Personas represent an online identity. They span cases and are stored in the Central Repository based on accounts that were found in artifacts. You can create, edit, and delete personas here. +PersonasTopComponent.introText.text=Personas represent an online identity. They span cases and are stored in the Central Repository based on accounts that were found in artifacts. You can create, edit, and delete personas here. diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED index 4973449fed..7ddd81ee59 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED @@ -121,7 +121,7 @@ CreatePersonaAccountDialog.typeLbl.text=Type: CreatePersonaAccountDialog.identifierTextField.text= CreatePersonaAccountDialog.identiferLbl.text=Identifier: CreatePersonaAccountDialog.okBtn.text=OK -PersonasTopComponent.introText.text=Personas represent an online identity. They span cases and are stored in the Central Repository based on accounts that were found in artifacts. You can create, edit, and delete personas here. +PersonasTopComponent.introText.text=Personas represent an online identity. They span cases and are stored in the Central Repository based on accounts that were found in artifacts. You can create, edit, and delete personas here. PersonasTopComponent_delete_confirmation_msg=Are you sure you want to delete this persona? PersonasTopComponent_delete_confirmation_Title=Are you sure? PersonasTopComponent_delete_exception_msg=Failed to delete persona. diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form index 4556552d78..45edb3e159 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.form @@ -1,26 +1,5 @@ - -
    @@ -71,8 +50,8 @@ - - + + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java index ffe20c8426..7b1b95afa3 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonasTopComponent.java @@ -285,7 +285,7 @@ public final class PersonasTopComponent extends TopComponent { introTextScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); - introText.setBackground(java.awt.SystemColor.window); + introText.setBackground(getBackground()); introText.setColumns(20); introText.setLineWrap(true); introText.setRows(5); From 9a102ed426e87e33411bac971c4172369b0201e5 Mon Sep 17 00:00:00 2001 From: "U-BASIS\\dsmyda" Date: Tue, 7 Jul 2020 10:45:14 -0400 Subject: [PATCH 41/43] Added class comment --- .../org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java index 1694123fbd..370b4f2809 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/FileTypesByMimeType.java @@ -224,6 +224,10 @@ public final class FileTypesByMimeType extends Observable implements AutopsyVisi } } + /** + * Responsible for updating the 'By Mime Type' view in the UI. See + * RefreshThrottler for more details. + */ private class FileTypesByMimeTypeRefresher implements RefreshThrottler.Refresher { @Override From 965ec97dba02c546c8927f6c014153afc3de0c11 Mon Sep 17 00:00:00 2001 From: esaunders Date: Tue, 7 Jul 2020 12:25:47 -0400 Subject: [PATCH 42/43] Change log level from SEVERE to WARNING. --- .../org/sleuthkit/autopsy/textextractors/TextFileExtractor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/textextractors/TextFileExtractor.java b/Core/src/org/sleuthkit/autopsy/textextractors/TextFileExtractor.java index 9c71b14ecc..678d62b487 100644 --- a/Core/src/org/sleuthkit/autopsy/textextractors/TextFileExtractor.java +++ b/Core/src/org/sleuthkit/autopsy/textextractors/TextFileExtractor.java @@ -62,7 +62,7 @@ public final class TextFileExtractor implements TextExtractor { encoding = StandardCharsets.UTF_8; } } catch (TskCoreException | IOException ex) { - logger.log(Level.SEVERE, String.format("Error detecting the " + logger.log(Level.WARNING, String.format("Error detecting the " + "encoding for %s (objID=%d)", file.getName(), file.getId()), ex); encoding = StandardCharsets.UTF_8; } From 8ba11aa1d02e43022a03e8e3b272be6b63a21054 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Tue, 7 Jul 2020 14:44:50 -0400 Subject: [PATCH 43/43] Cleaned up MessageNode createSheet to remove dup values --- .../relationships/Bundle.properties-MERGED | 2 +- .../relationships/MessageNode.java | 84 ++++++++++--------- 2 files changed, 44 insertions(+), 42 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle.properties-MERGED index f1530d9f89..46d90c75c5 100755 --- a/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle.properties-MERGED @@ -17,7 +17,7 @@ ContactsViewer_columnHeader_Phone=Phone ContactsViewer_noContacts_message= ContactsViewer_tabTitle=Contacts MediaViewer_Name=Media Attachments -MessageNode_Node_Property_Attms=Attachments +MessageNode_Node_Property_Attms=Attachment Count MessageNode_Node_Property_Date=Date MessageNode_Node_Property_From=From MessageNode_Node_Property_Subject=Subject diff --git a/Core/src/org/sleuthkit/autopsy/communications/relationships/MessageNode.java b/Core/src/org/sleuthkit/autopsy/communications/relationships/MessageNode.java index 5070181e08..dece917507 100755 --- a/Core/src/org/sleuthkit/autopsy/communications/relationships/MessageNode.java +++ b/Core/src/org/sleuthkit/autopsy/communications/relationships/MessageNode.java @@ -48,22 +48,22 @@ import org.sleuthkit.datamodel.blackboardutils.attributes.MessageAttachments; class MessageNode extends BlackboardArtifactNode { public static final String UNTHREADED_ID = ""; - + private static final Logger logger = Logger.getLogger(MessageNode.class.getName()); - + private final String threadID; - + private final Action preferredAction; - MessageNode(BlackboardArtifact artifact, String threadID, Action preferredAction) { + MessageNode(BlackboardArtifact artifact, String threadID, Action preferredAction) { super(artifact); - + this.preferredAction = preferredAction; final String stripEnd = StringUtils.stripEnd(artifact.getDisplayName(), "s"); // NON-NLS String removeEndIgnoreCase = StringUtils.removeEndIgnoreCase(stripEnd, "message"); // NON-NLS setDisplayName(removeEndIgnoreCase.isEmpty() ? stripEnd : removeEndIgnoreCase); - + this.threadID = threadID; } @@ -73,12 +73,12 @@ class MessageNode extends BlackboardArtifactNode { "MessageNode_Node_Property_To=To", "MessageNode_Node_Property_Date=Date", "MessageNode_Node_Property_Subject=Subject", - "MessageNode_Node_Property_Attms=Attachments" + "MessageNode_Node_Property_Attms=Attachment Count" }) - + @Override protected Sheet createSheet() { - Sheet sheet = super.createSheet(); + Sheet sheet = Sheet.createDefault(); Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES); if (sheetSet == null) { sheetSet = Sheet.createPropertiesSet(); @@ -89,42 +89,45 @@ class MessageNode extends BlackboardArtifactNode { final BlackboardArtifact artifact = getArtifact(); BlackboardArtifact.ARTIFACT_TYPE fromID = BlackboardArtifact.ARTIFACT_TYPE.fromID(artifact.getArtifactTypeID()); - - if(fromID == null || - (fromID != TSK_EMAIL_MSG && - fromID != TSK_MESSAGE)) { + + if (fromID == null + || (fromID != TSK_EMAIL_MSG + && fromID != TSK_MESSAGE)) { return sheet; } - - sheetSet.put(new NodeProperty<>("ThreadID", "ThreadID","",threadID == null ? UNTHREADED_ID : threadID)); //NON-NLS + if (threadID != null) { + sheetSet.put(new NodeProperty<>("ThreadID", "ThreadID", "", threadID)); //NON-NLS + } sheetSet.put(new NodeProperty<>("Subject", Bundle.MessageNode_Node_Property_Subject(), "", - getAttributeDisplayString(artifact, TSK_SUBJECT))); //NON-NLS + getAttributeDisplayString(artifact, TSK_SUBJECT))); //NON-NLS try { sheetSet.put(new NodeProperty<>("Attms", Bundle.MessageNode_Node_Property_Attms(), "", getAttachmentsCount())); //NON-NLS } catch (TskCoreException ex) { logger.log(Level.WARNING, "Error loading attachment count for " + artifact, ex); //NON-NLS } - - switch (fromID) { - case TSK_EMAIL_MSG: - sheetSet.put(new NodeProperty<>("From", Bundle.MessageNode_Node_Property_From(), "", - StringUtils.strip(getAttributeDisplayString(artifact, TSK_EMAIL_FROM), " \t\n;"))); //NON-NLS - sheetSet.put(new NodeProperty<>("To", Bundle.MessageNode_Node_Property_To(), "", - StringUtils.strip(getAttributeDisplayString(artifact, TSK_EMAIL_TO), " \t\n;"))); //NON-NLS - sheetSet.put(new NodeProperty<>("Date", Bundle.MessageNode_Node_Property_Date(), "", - getAttributeDisplayString(artifact, TSK_DATETIME_SENT))); //NON-NLS - break; - case TSK_MESSAGE: - sheetSet.put(new NodeProperty<>("From", Bundle.MessageNode_Node_Property_From(), "", - getAttributeDisplayString(artifact, TSK_PHONE_NUMBER_FROM))); //NON-NLS - sheetSet.put(new NodeProperty<>("To", Bundle.MessageNode_Node_Property_To(), "", - getAttributeDisplayString(artifact, TSK_PHONE_NUMBER_TO))); //NON-NLS - sheetSet.put(new NodeProperty<>("Date", Bundle.MessageNode_Node_Property_Date(), "", - getAttributeDisplayString(artifact, TSK_DATETIME))); //NON-NLS - break; - default: - break; + + String msg_from = getAttributeDisplayString(artifact, TSK_EMAIL_FROM); + String msg_to = getAttributeDisplayString(artifact, TSK_EMAIL_TO); + String date = getAttributeDisplayString(artifact, TSK_DATETIME_SENT); + + if (msg_from.isEmpty()) { + msg_from = getAttributeDisplayString(artifact, TSK_PHONE_NUMBER_FROM); + } + if (msg_to.isEmpty()) { + msg_to = getAttributeDisplayString(artifact, TSK_PHONE_NUMBER_TO); + } + if (date.isEmpty()) { + date = getAttributeDisplayString(artifact, TSK_DATETIME); + } + + sheetSet.put(new NodeProperty<>("From", Bundle.MessageNode_Node_Property_From(), "", + msg_from)); //NON-NLS + sheetSet.put(new NodeProperty<>("To", Bundle.MessageNode_Node_Property_To(), "", + msg_to)); //NON-NLS + sheetSet.put(new NodeProperty<>("Date", Bundle.MessageNode_Node_Property_Date(), "", + date)); //NON-NLS + return sheet; } @@ -138,16 +141,16 @@ class MessageNode extends BlackboardArtifactNode { public String getSourceName() { return getDisplayName(); } - + String getThreadID() { return threadID; } - + @Override public Action getPreferredAction() { return preferredAction; } - + private int getAttachmentsCount() throws TskCoreException { final BlackboardArtifact artifact = getArtifact(); int attachmentsCount; @@ -158,8 +161,7 @@ class MessageNode extends BlackboardArtifactNode { try { MessageAttachments msgAttachments = BlackboardJsonAttrUtil.fromAttribute(attachmentsAttr, MessageAttachments.class); return msgAttachments.getAttachmentsCount(); - } - catch (BlackboardJsonAttrUtil.InvalidJsonException ex) { + } catch (BlackboardJsonAttrUtil.InvalidJsonException ex) { logger.log(Level.WARNING, String.format("Unable to parse json for MessageAttachments object in artifact: %s", artifact.getName()), ex); return 0; }