From 8e7c8be1bb461aca990f89c3949ec6a800b618e5 Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Mon, 2 Aug 2021 10:56:29 -0400 Subject: [PATCH 1/6] Change first screen and menu option Change first screen and menu option --- .../autopsy/allcasessearch/AllCasesSearchAction.java | 6 +++--- .../autopsy/allcasessearch/AllCasesSearchDialog.java | 4 ++-- .../autopsy/allcasessearch/Bundle.properties-MERGED | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchAction.java b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchAction.java index 676a565de2..3355b2686e 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchAction.java +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchAction.java @@ -32,9 +32,9 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; * Action for accessing the Search Other Cases dialog. */ @ActionID(category = "Tools", id = "org.sleuthkit.autopsy.allcasessearch.AllCasesSearchAction") -@ActionRegistration(displayName = "#CTL_OtherCasesSearchAction=Search All Cases", lazy = false) +@ActionRegistration(displayName = "#CTL_OtherCasesSearchAction=Search Centeral Repository", lazy = false) @ActionReference(path = "Menu/Tools", position = 201) -@NbBundle.Messages({"CTL_AllCasesSearchAction=Search All Cases"}) +@NbBundle.Messages({"CTL_AllCasesSearchAction=Search Centeral Repository"}) public class AllCasesSearchAction extends CallableSystemAction { @Override @@ -54,7 +54,7 @@ public class AllCasesSearchAction extends CallableSystemAction { } @NbBundle.Messages({ - "AllCasesSearchAction.getName.text=Search All Cases"}) + "AllCasesSearchAction.getName.text=Search Centeral Repository"}) @Override public String getName() { return Bundle.AllCasesSearchAction_getName_text(); diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java index d8c82dc40b..1aedb3e9ff 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java @@ -48,9 +48,9 @@ import org.sleuthkit.autopsy.datamodel.EmptyNode; import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; @Messages({ - "AllCasesSearchDialog.dialogTitle.text=Search All Cases", + "AllCasesSearchDialog.dialogTitle.text=Search Central Repository", "AllCasesSearchDialog.resultsTitle.text=All Cases", - "AllCasesSearchDialog.resultsDescription.text=All Cases Search", + "AllCasesSearchDialog.resultsDescription.text=Search Central Repository", "AllCasesSearchDialog.emptyNode.text=No results found.", "AllCasesSearchDialog.validation.invalidHash=The supplied value is not a valid MD5 hash.", "AllCasesSearchDialog.validation.invalidEmail=The supplied value is not a valid e-mail address.", diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties-MERGED index 57f8219cd1..4d7acbb6a7 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties-MERGED @@ -1,5 +1,5 @@ -AllCasesSearchAction.getName.text=Search All Cases +AllCasesSearchAction.getName.text=Search Centeral Repository # {0} - number of cases AllCasesSearchDialog.caseLabel.text=The current Central Repository contains {0} case(s). AllCasesSearchDialog.correlationValueTextField.domainExample=Example: "domain.com" @@ -13,11 +13,11 @@ AllCasesSearchDialog.correlationValueTextField.phoneExample=Example: "(800)123-4 AllCasesSearchDialog.correlationValueTextField.ssidExample=Example: "WirelessNetwork-5G" AllCasesSearchDialog.correlationValueTextField.usbExample=Example: "4&1234567&0" AllCasesSearchDialog.descriptionLabel.text=Search the Central Repository for correlation properties with a specified value. The search is case insensitive. -AllCasesSearchDialog.dialogTitle.text=Search All Cases +AllCasesSearchDialog.dialogTitle.text=Search Central Repository AllCasesSearchDialog.emptyNode.text=No results found. AllCasesSearchDialog.errorLabel.text=\ AllCasesSearchDialog.correlationTypeLabel.text=Correlation Property Type: -AllCasesSearchDialog.resultsDescription.text=All Cases Search +AllCasesSearchDialog.resultsDescription.text=Search Central Repository AllCasesSearchDialog.resultsTitle.text=All Cases AllCasesSearchDialog.searchButton.AccessibleContext.accessibleDescription= AllCasesSearchDialog.searchButton.AccessibleContext.accessibleName=Search @@ -43,4 +43,4 @@ CorrelationAttributeInstanceNode.columnName.device=Device CorrelationAttributeInstanceNode.columnName.known=Known CorrelationAttributeInstanceNode.columnName.name=Name CorrelationAttributeInstanceNode.columnName.path=Path -CTL_AllCasesSearchAction=Search All Cases +CTL_AllCasesSearchAction=Search Centeral Repository From a7308d80239170ef6cc6c0579f283438e24b3238 Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Sun, 8 Aug 2021 22:09:13 -0400 Subject: [PATCH 2/6] Update ExtractJumpLists.java Fix path where temp files and derived files are written for Multiuser case --- .../recentactivity/ExtractJumpLists.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractJumpLists.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractJumpLists.java index fc0ef8995e..10e0f51a47 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractJumpLists.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractJumpLists.java @@ -27,10 +27,12 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; +import org.apache.poi.EmptyFileException; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.Entry; +import org.apache.poi.poifs.filesystem.NotOLE2FileException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.casemodule.Case; @@ -62,7 +64,6 @@ final class ExtractJumpLists extends Extract { private static final String JUMPLIST_TSK_COMMENT = "Jumplist File"; private static final String RA_DIR_NAME = "RecentActivity"; //NON-NLS - private static final String MODULE_OUTPUT_DIR = "ModuleOutput"; //NON-NLS private static final String AUTOMATIC_DESTINATIONS_FILE_DIRECTORY = "%/AppData/Roaming/Microsoft/Windows/Recent/AutomaticDestinations/"; private static final String JUMPLIST_DIR_NAME = "jumplists"; //NON-NLS private static final String VERSION_NUMBER = "1.0.0"; //NON-NLS @@ -86,7 +87,8 @@ final class ExtractJumpLists extends Extract { fileManager = currentCase.getServices().getFileManager(); long ingestJobId = context.getJobId(); - List jumpListFiles = extractJumplistFiles(dataSource, ingestJobId); + String baseRaTempPath = RAImageIngestModule.getRATempPath(Case.getCurrentCase(), JUMPLIST_DIR_NAME , ingestJobId); + List jumpListFiles = extractJumplistFiles(dataSource, ingestJobId, baseRaTempPath); if (jumpListFiles.isEmpty()) { return; @@ -98,13 +100,13 @@ final class ExtractJumpLists extends Extract { List derivedFiles = new ArrayList<>(); String derivedPath = null; - String baseRaTempPath = RAImageIngestModule.getRATempPath(Case.getCurrentCase(), JUMPLIST_DIR_NAME + "_" + dataSource.getId(), ingestJobId); + String baseRaModPath = RAImageIngestModule.getRAOutputPath(Case.getCurrentCase(), JUMPLIST_DIR_NAME, ingestJobId); for (AbstractFile jumplistFile : jumpListFiles) { if (!jumplistFile.getName().toLowerCase().contains("-slack") && !jumplistFile.getName().equals("..") && !jumplistFile.getName().equals(".") && jumplistFile.getSize() > 0) { String jlFile = Paths.get(baseRaTempPath, jumplistFile.getName() + "_" + jumplistFile.getId()).toString(); - String moduleOutPath = Case.getCurrentCase().getModuleDirectory() + File.separator + RA_DIR_NAME + File.separator + JUMPLIST_DIR_NAME + "_" + dataSource.getId() + File.separator + jumplistFile.getName() + "_" + jumplistFile.getId(); - derivedPath = RA_DIR_NAME + File.separator + JUMPLIST_DIR_NAME + "_" + dataSource.getId() + File.separator + jumplistFile.getName() + "_" + jumplistFile.getId(); + String moduleOutPath = baseRaModPath + File.separator + jumplistFile.getName() + "_" + jumplistFile.getId(); + derivedPath = RA_DIR_NAME + File.separator + JUMPLIST_DIR_NAME + "_" + ingestJobId + File.separator + jumplistFile.getName() + "_" + jumplistFile.getId(); File jlDir = new File(moduleOutPath); if (jlDir.exists() == false) { boolean dirMade = jlDir.mkdirs(); @@ -129,7 +131,7 @@ final class ExtractJumpLists extends Extract { * * @return - list of jumplist abstractfiles or empty list */ - private List extractJumplistFiles(Content dataSource, Long ingestJobId) { + private List extractJumplistFiles(Content dataSource, Long ingestJobId, String baseRaTempPath) { List jumpListFiles = new ArrayList<>();; List tempJumpListFiles = new ArrayList<>();; @@ -150,11 +152,10 @@ final class ExtractJumpLists extends Extract { if (context.dataSourceIngestIsCancelled()) { return jumpListFiles; } - + if (!jumpListFile.getName().toLowerCase().contains("-slack") && !jumpListFile.getName().equals("..") && !jumpListFile.getName().equals(".") && jumpListFile.getSize() > 0) { String fileName = jumpListFile.getName() + "_" + jumpListFile.getId(); - String baseRaTempPath = RAImageIngestModule.getRATempPath(Case.getCurrentCase(), JUMPLIST_DIR_NAME+ "_" + dataSource.getId(), ingestJobId); String jlFile = Paths.get(baseRaTempPath, fileName).toString(); try { ContentUtils.writeToFile(jumpListFile, new File(jlFile)); @@ -176,7 +177,7 @@ final class ExtractJumpLists extends Extract { List derivedFiles = new ArrayList<>(); DerivedFile derivedFile; String lnkFileName = ""; - + try (POIFSFileSystem fs = new POIFSFileSystem(new File(jumpListFile))) { DirectoryEntry root = fs.getRoot(); for (Entry entry : root) { @@ -196,7 +197,8 @@ final class ExtractJumpLists extends Extract { JLNK lnk = lnkParser.parse(); lnkFileName = lnk.getBestName() + ".lnk"; File targetFile = new File(moduleOutPath + File.separator + entry.getName() + "-" + lnkFileName); - String derivedFileName = MODULE_OUTPUT_DIR + File.separator + derivedPath + File.separator + entry.getName() + "-" + lnkFileName; + String relativePath = Case.getCurrentCase().getModuleOutputDirectoryRelativePath(); + String derivedFileName = Case.getCurrentCase().getModuleOutputDirectoryRelativePath() + File.separator + derivedPath + File.separator + entry.getName() + "-" + lnkFileName; OutputStream outStream = new FileOutputStream(targetFile); outStream.write(buffer); outStream.close(); @@ -226,6 +228,8 @@ final class ExtractJumpLists extends Extract { continue; } } + } catch (NotOLE2FileException | EmptyFileException ex1) { + logger.log(Level.WARNING, String.format("Error file not a valid OLE2 Document $s", jumpListFile)); //NON-NLS } catch (IOException | TskCoreException ex) { logger.log(Level.WARNING, String.format("Error lnk parsing the file to get recent files $s", jumpListFile), ex); //NON-NLS } @@ -235,3 +239,4 @@ final class ExtractJumpLists extends Extract { } } + \ No newline at end of file From 554d5056293d80c87c19adc599166856654fc6b2 Mon Sep 17 00:00:00 2001 From: apriestman Date: Mon, 9 Aug 2021 12:56:37 -0400 Subject: [PATCH 3/6] Add link to French version --- docs/doxygen-user/main.dox | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/doxygen-user/main.dox b/docs/doxygen-user/main.dox index 8a6d99546c..c01e5ea76d 100644 --- a/docs/doxygen-user/main.dox +++ b/docs/doxygen-user/main.dox @@ -8,6 +8,9 @@ This is the User's Guide for the ope Note: For those users running Autopsy on Mac devices, the functionality available through the "Tools" -> "Options" dialog as described in this documentation can be accessed through the system menu bar under "Preferences" or through the Cmd + , (command-comma) shortcut. +Translated versions of this guide: +- Français (4.19.0) + Help Topics ------- The following topics are available here: From 1e25526c868e323fc62d30cbe5ee429332888ec9 Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Wed, 11 Aug 2021 21:29:49 -0400 Subject: [PATCH 4/6] Update CR Search Update CR Search --- .../allcasessearch/AllCasesSearchAction.java | 6 +- .../allcasessearch/AllCasesSearchDialog.form | 83 ++++--- .../allcasessearch/AllCasesSearchDialog.java | 215 +++++++++++------- .../autopsy/allcasessearch/Bundle.properties | 9 +- .../allcasessearch/Bundle.properties-MERGED | 16 +- .../allcasessearch/Bundle_ja.properties | 1 - .../CorrelationAttributeInstanceNode.java | 5 + .../CorrelationAttributeInstance.java | 18 +- 8 files changed, 214 insertions(+), 139 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchAction.java b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchAction.java index 3355b2686e..b4689db917 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchAction.java +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchAction.java @@ -32,9 +32,9 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; * Action for accessing the Search Other Cases dialog. */ @ActionID(category = "Tools", id = "org.sleuthkit.autopsy.allcasessearch.AllCasesSearchAction") -@ActionRegistration(displayName = "#CTL_OtherCasesSearchAction=Search Centeral Repository", lazy = false) +@ActionRegistration(displayName = "#CTL_OtherCasesSearchAction=Search Central Repository", lazy = false) @ActionReference(path = "Menu/Tools", position = 201) -@NbBundle.Messages({"CTL_AllCasesSearchAction=Search Centeral Repository"}) +@NbBundle.Messages({"CTL_AllCasesSearchAction=Search Central Repository"}) public class AllCasesSearchAction extends CallableSystemAction { @Override @@ -54,7 +54,7 @@ public class AllCasesSearchAction extends CallableSystemAction { } @NbBundle.Messages({ - "AllCasesSearchAction.getName.text=Search Centeral Repository"}) + "AllCasesSearchAction.getName.text=Search Central Repository"}) @Override public String getName() { return Bundle.AllCasesSearchAction_getName_text(); diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.form b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.form index f378613c11..0ee145c304 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.form +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.form @@ -24,10 +24,15 @@ - + - + + + + + + @@ -35,16 +40,23 @@ - - + + + + + + + + + + + + + + - - - - - @@ -60,17 +72,19 @@ - - - - + + + + + + - - - - + + + + @@ -85,16 +99,6 @@ - - - - - - - - - - @@ -158,5 +162,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java index 1aedb3e9ff..3b4d233b56 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java @@ -21,8 +21,10 @@ package org.sleuthkit.autopsy.allcasessearch; import java.awt.Color; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.text.Collator; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.logging.Level; @@ -30,6 +32,7 @@ import javax.swing.JFrame; import javax.swing.SwingWorker; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; +import org.apache.commons.lang3.StringUtils; import org.openide.nodes.Node; import org.openide.util.NbBundle.Messages; import org.openide.windows.TopComponent; @@ -63,14 +66,14 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; "AllCasesSearchDialog.validation.invalidIccid=The supplied value is not a valid ICCID number.", "AllCasesSearchDialog.validation.genericMessage=The supplied value is not valid.", "# {0} - number of cases", - "AllCasesSearchDialog.caseLabel.text=The current Central Repository contains {0} case(s)." + "AllCasesSearchDialog.caseLabel.text=The Central Repository contains {0} case(s)." }) /** * The Search All Cases dialog allows users to search for specific types of * correlation properties in the Central Repository. */ @SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives -final class AllCasesSearchDialog extends javax.swing.JDialog { + final class AllCasesSearchDialog extends javax.swing.JDialog { private static final Logger logger = Logger.getLogger(AllCasesSearchDialog.class.getName()); private static final long serialVersionUID = 1L; @@ -95,19 +98,21 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { * @param type The correlation type. * @param value The value to be matched. */ - private void search(CorrelationAttributeInstance.Type type, String value) { + private void search(CorrelationAttributeInstance.Type type, String[] values) { new SwingWorker, Void>() { @Override protected List doInBackground() { List correlationInstances = new ArrayList<>(); - try { - correlationInstances = CentralRepository.getInstance().getArtifactInstancesByTypeValue(type, value); - } catch (CentralRepoException ex) { - logger.log(Level.SEVERE, "Unable to connect to the Central Repository database.", ex); - } catch (CorrelationAttributeNormalizationException ex) { - logger.log(Level.SEVERE, "Unable to retrieve data from the Central Repository.", ex); + for (String value : values) { + try { + correlationInstances.addAll(CentralRepository.getInstance().getArtifactInstancesByTypeValue(type, value)); + } catch (CentralRepoException ex) { + logger.log(Level.SEVERE, "Unable to connect to the Central Repository database.", ex); + } catch (CorrelationAttributeNormalizationException ex) { + logger.log(Level.SEVERE, "Unable to retrieve data from the Central Repository.", ex); + } } return correlationInstances; @@ -125,8 +130,8 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { AllCasesSearchNode searchNode = new AllCasesSearchNode(correlationInstances); TableFilterNode tableFilterNode = new TableFilterNode(searchNode, true, searchNode.getName()); - String resultsText = String.format("%s (%s; \"%s\")", - Bundle.AllCasesSearchDialog_resultsTitle_text(), type.getDisplayName(), value); + String resultsText = String.format("%s (%s)", + Bundle.AllCasesSearchDialog_resultsTitle_text(), type.getDisplayName()); final TopComponent searchResultWin; if (correlationInstances.isEmpty()) { Node emptyNode = new TableFilterNode( @@ -155,26 +160,21 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { private void initComponents() { correlationValueLabel = new javax.swing.JLabel(); - correlationValueTextField = new javax.swing.JTextField(); searchButton = new javax.swing.JButton(); correlationTypeComboBox = new javax.swing.JComboBox<>(); correlationTypeLabel = new javax.swing.JLabel(); errorLabel = new javax.swing.JLabel(); descriptionLabel = new javax.swing.JLabel(); casesLabel = new javax.swing.JLabel(); + jScrollPane1 = new javax.swing.JScrollPane(); + correlationValueTextArea = new javax.swing.JTextArea(); + normalizedLabel = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setResizable(false); org.openide.awt.Mnemonics.setLocalizedText(correlationValueLabel, org.openide.util.NbBundle.getMessage(AllCasesSearchDialog.class, "AllCasesSearchDialog.correlationValueLabel.text")); // NOI18N - correlationValueTextField.setText(org.openide.util.NbBundle.getMessage(AllCasesSearchDialog.class, "AllCasesSearchDialog.correlationValueTextField.text")); // NOI18N - correlationValueTextField.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - valueFieldKeyReleaseListener(evt); - } - }); - org.openide.awt.Mnemonics.setLocalizedText(searchButton, org.openide.util.NbBundle.getMessage(AllCasesSearchDialog.class, "AllCasesSearchDialog.searchButton.text")); // NOI18N searchButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -198,6 +198,13 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { casesLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); org.openide.awt.Mnemonics.setLocalizedText(casesLabel, org.openide.util.NbBundle.getMessage(AllCasesSearchDialog.class, "AllCasesSearchDialog.casesLabel.text")); // NOI18N + correlationValueTextArea.setColumns(20); + correlationValueTextArea.setRows(5); + correlationValueTextArea.setText(org.openide.util.NbBundle.getMessage(AllCasesSearchDialog.class, "AllCasesSearchDialog.correlationValueTextArea.text")); // NOI18N + jScrollPane1.setViewportView(correlationValueTextArea); + + org.openide.awt.Mnemonics.setLocalizedText(normalizedLabel, org.openide.util.NbBundle.getMessage(AllCasesSearchDialog.class, "AllCasesSearchDialog.normalizedLabel.text")); // NOI18N + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( @@ -205,20 +212,28 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(descriptionLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 430, Short.MAX_VALUE) + .addComponent(descriptionLabel) + .addGroup(layout.createSequentialGroup() + .addComponent(casesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(searchButton)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(correlationValueLabel) .addComponent(correlationTypeLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(correlationTypeComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(correlationValueTextField) - .addComponent(errorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(casesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGap(18, 18, 18) - .addComponent(searchButton))) + .addGroup(layout.createSequentialGroup() + .addComponent(normalizedLabel) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(correlationTypeComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 379, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE))) + .addGap(142, 142, 142)) + .addComponent(errorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addContainerGap()) ); layout.setVerticalGroup( @@ -230,16 +245,18 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(correlationTypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(correlationTypeLabel)) - .addGap(15, 15, 15) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(correlationValueTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(correlationValueLabel)) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(correlationValueLabel) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(normalizedLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE) .addComponent(errorLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(searchButton) - .addComponent(casesLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(casesLabel, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(searchButton, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap()) ); @@ -251,50 +268,55 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed CorrelationAttributeInstance.Type correlationType = selectedCorrelationType; - String correlationValue = correlationValueTextField.getText().trim(); + String correlationValue = correlationValueTextArea.getText().trim(); - if (validateInputs(correlationType, correlationValue)) { - search(correlationType, correlationValue); - dispose(); - } else { - String validationMessage; - switch (correlationType.getId()) { - case CorrelationAttributeInstance.FILES_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidHash(); - break; - case CorrelationAttributeInstance.DOMAIN_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidDomain(); - break; - case CorrelationAttributeInstance.EMAIL_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidEmail(); - break; - case CorrelationAttributeInstance.PHONE_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidPhone(); - break; - case CorrelationAttributeInstance.SSID_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidSsid(); - break; - case CorrelationAttributeInstance.MAC_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidMac(); - break; - case CorrelationAttributeInstance.IMEI_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidImei(); - break; - case CorrelationAttributeInstance.IMSI_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidImsi(); - break; - case CorrelationAttributeInstance.ICCID_TYPE_ID: - validationMessage = Bundle.AllCasesSearchDialog_validation_invalidIccid(); - break; - default: - validationMessage = Bundle.AllCasesSearchDialog_validation_genericMessage(); - break; + String[] correlationValueLines = correlationValue.split("\r\n|\n|\r"); +// for (String correlationValueLine : lines) { + + if (validateInputs(correlationType, correlationValueLines)) { + search(correlationType, correlationValueLines); + dispose(); + } else { + String validationMessage; + switch (correlationType.getId()) { + case CorrelationAttributeInstance.FILES_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidHash(); + break; + case CorrelationAttributeInstance.DOMAIN_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidDomain(); + break; + case CorrelationAttributeInstance.EMAIL_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidEmail(); + break; + case CorrelationAttributeInstance.PHONE_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidPhone(); + break; + case CorrelationAttributeInstance.SSID_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidSsid(); + break; + case CorrelationAttributeInstance.MAC_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidMac(); + break; + case CorrelationAttributeInstance.IMEI_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidImei(); + break; + case CorrelationAttributeInstance.IMSI_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidImsi(); + break; + case CorrelationAttributeInstance.ICCID_TYPE_ID: + validationMessage = Bundle.AllCasesSearchDialog_validation_invalidIccid(); + break; + default: + validationMessage = Bundle.AllCasesSearchDialog_validation_genericMessage(); + break; + } + + errorLabel.setText(validationMessage); + searchButton.setEnabled(false); + correlationValueTextArea.grabFocus(); } - errorLabel.setText(validationMessage); - searchButton.setEnabled(false); - correlationValueTextField.grabFocus(); - } + // } }//GEN-LAST:event_searchButtonActionPerformed private void correlationTypeComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_correlationTypeComboBoxActionPerformed @@ -302,11 +324,6 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { errorLabel.setText(""); }//GEN-LAST:event_correlationTypeComboBoxActionPerformed - private void valueFieldKeyReleaseListener(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_valueFieldKeyReleaseListener - //make error message go away when the user enters anything in the value field - errorLabel.setText(""); - }//GEN-LAST:event_valueFieldKeyReleaseListener - /** * Validate the supplied input. * @@ -315,9 +332,11 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { * * @return True if the input is valid for the given type; otherwise false. */ - private boolean validateInputs(CorrelationAttributeInstance.Type type, String value) { + private boolean validateInputs(CorrelationAttributeInstance.Type type, String[] values) { try { - CorrelationAttributeNormalizer.normalize(type, value); + for (String value : values) { + CorrelationAttributeNormalizer.normalize(type, value); + } } catch (CorrelationAttributeNormalizationException ex) { // No need to log this. return false; @@ -339,15 +358,33 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { CentralRepository dbManager = CentralRepository.getInstance(); correlationTypes.clear(); correlationTypes.addAll(dbManager.getDefinedCorrelationTypes()); +// correlationTypes.addAll(java.util.Collections.sort(dbManager.getDefinedCorrelationTypes(), Collator.getInstance())); int numberOfCases = dbManager.getCases().size(); casesLabel.setText(Bundle.AllCasesSearchDialog_caseLabel_text(numberOfCases)); } catch (CentralRepoException ex) { logger.log(Level.SEVERE, "Unable to connect to the Central Repository database.", ex); } + List displayNames = new ArrayList<>(); for (CorrelationAttributeInstance.Type type : correlationTypes) { - correlationTypeComboBox.addItem(type.getDisplayName()); + String displayName = type.getDisplayName(); + if (displayName.toLowerCase().contains("addresses")) { + type.setDisplayName(displayName.replace("Addresses", "Address")); + } else if (displayName.toLowerCase().equals("files")) { + type.setDisplayName("File MD5"); + } else if (displayName.toLowerCase().endsWith("s") && !displayName.toLowerCase().endsWith("address")) { + type.setDisplayName(StringUtils.substring(displayName, 0, displayName.length() - 1)); + } else { + type.setDisplayName(displayName); + } + + displayNames.add(type.getDisplayName()); } + Collections.sort(displayNames); + for (String displayName : displayNames) { + correlationTypeComboBox.addItem(displayName); + } + correlationTypeComboBox.setSelectedIndex(0); correlationTypeComboBox.addItemListener(new ItemListener() { @@ -364,7 +401,7 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { /* * Create listener for text input. */ - correlationValueTextField.getDocument().addDocumentListener(new DocumentListener() { + correlationValueTextArea.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { updateSearchButton(); @@ -440,7 +477,7 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { text = ""; break; } - correlationValueTextFieldPrompt = new TextPrompt(text, correlationValueTextField); + correlationValueTextFieldPrompt = new TextPrompt(text, correlationValueTextArea); /** * Sets the foreground color and transparency of the text prompt. @@ -470,7 +507,7 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { * been provided for the correlation property value. */ private void updateSearchButton() { - searchButton.setEnabled(correlationValueTextField.getText().isEmpty() == false); + searchButton.setEnabled(correlationValueTextArea.getText().isEmpty() == false); } /** @@ -486,9 +523,11 @@ final class AllCasesSearchDialog extends javax.swing.JDialog { private javax.swing.JComboBox correlationTypeComboBox; private javax.swing.JLabel correlationTypeLabel; private javax.swing.JLabel correlationValueLabel; - private javax.swing.JTextField correlationValueTextField; + private javax.swing.JTextArea correlationValueTextArea; private javax.swing.JLabel descriptionLabel; private javax.swing.JLabel errorLabel; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JLabel normalizedLabel; private javax.swing.JButton searchButton; // End of variables declaration//GEN-END:variables } diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties index e1a434785b..d8043261d8 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties @@ -1,10 +1,11 @@ -AllCasesSearchDialog.descriptionLabel.text=Search the Central Repository for correlation properties with a specified value. The search is case insensitive. +AllCasesSearchDialog.descriptionLabel.text=Search the Central Repository for the given values. AllCasesSearchDialog.errorLabel.text=\ -AllCasesSearchDialog.correlationTypeLabel.text=Correlation Property Type: +AllCasesSearchDialog.correlationTypeLabel.text=Type: AllCasesSearchDialog.searchButton.AccessibleContext.accessibleDescription= AllCasesSearchDialog.searchButton.AccessibleContext.accessibleName=Search AllCasesSearchDialog.searchButton.text=Search -AllCasesSearchDialog.correlationValueTextField.text= -AllCasesSearchDialog.correlationValueLabel.text=Correlation Property Value: +AllCasesSearchDialog.correlationValueLabel.text=Value: AllCasesSearchDialog.casesLabel.text=\ +AllCasesSearchDialog.correlationValueTextArea.text= +AllCasesSearchDialog.normalizedLabel.text=Values will be normalized to ensure consistent case and formatting. diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties-MERGED index 4d7acbb6a7..619e29f12a 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle.properties-MERGED @@ -1,7 +1,7 @@ -AllCasesSearchAction.getName.text=Search Centeral Repository +AllCasesSearchAction.getName.text=Search Central Repository # {0} - number of cases -AllCasesSearchDialog.caseLabel.text=The current Central Repository contains {0} case(s). +AllCasesSearchDialog.caseLabel.text=The Central Repository contains {0} case(s). AllCasesSearchDialog.correlationValueTextField.domainExample=Example: "domain.com" AllCasesSearchDialog.correlationValueTextField.emailExample=Example: "user@host.com" AllCasesSearchDialog.correlationValueTextField.filesExample=Example: "f0e1d2c3b4a5968778695a4b3c2d1e0f" @@ -12,19 +12,20 @@ AllCasesSearchDialog.correlationValueTextField.macExample=Example: "0C-14-F2-01- AllCasesSearchDialog.correlationValueTextField.phoneExample=Example: "(800)123-4567" AllCasesSearchDialog.correlationValueTextField.ssidExample=Example: "WirelessNetwork-5G" AllCasesSearchDialog.correlationValueTextField.usbExample=Example: "4&1234567&0" -AllCasesSearchDialog.descriptionLabel.text=Search the Central Repository for correlation properties with a specified value. The search is case insensitive. +AllCasesSearchDialog.descriptionLabel.text=Search the Central Repository for the given values. AllCasesSearchDialog.dialogTitle.text=Search Central Repository AllCasesSearchDialog.emptyNode.text=No results found. AllCasesSearchDialog.errorLabel.text=\ -AllCasesSearchDialog.correlationTypeLabel.text=Correlation Property Type: +AllCasesSearchDialog.correlationTypeLabel.text=Type: AllCasesSearchDialog.resultsDescription.text=Search Central Repository AllCasesSearchDialog.resultsTitle.text=All Cases AllCasesSearchDialog.searchButton.AccessibleContext.accessibleDescription= AllCasesSearchDialog.searchButton.AccessibleContext.accessibleName=Search AllCasesSearchDialog.searchButton.text=Search -AllCasesSearchDialog.correlationValueTextField.text= -AllCasesSearchDialog.correlationValueLabel.text=Correlation Property Value: +AllCasesSearchDialog.correlationValueLabel.text=Value: AllCasesSearchDialog.casesLabel.text=\ +AllCasesSearchDialog.correlationValueTextArea.text= +AllCasesSearchDialog.normalizedLabel.text=Values will be normalized to ensure consistent case and formatting. AllCasesSearchDialog.validation.genericMessage=The supplied value is not valid. AllCasesSearchDialog.validation.invalidDomain=The supplied value is not a valid domain. AllCasesSearchDialog.validation.invalidEmail=The supplied value is not a valid e-mail address. @@ -43,4 +44,5 @@ CorrelationAttributeInstanceNode.columnName.device=Device CorrelationAttributeInstanceNode.columnName.known=Known CorrelationAttributeInstanceNode.columnName.name=Name CorrelationAttributeInstanceNode.columnName.path=Path -CTL_AllCasesSearchAction=Search Centeral Repository +CorrelationAttributeInstanceNode.columnName.value=Value +CTL_AllCasesSearchAction=Search Central Repository diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ja.properties index 08a2809615..da32ad61be 100644 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ja.properties @@ -22,7 +22,6 @@ AllCasesSearchDialog.resultsTitle.text=\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b AllCasesSearchDialog.searchButton.AccessibleContext.accessibleDescription= AllCasesSearchDialog.searchButton.AccessibleContext.accessibleName=\u691c\u7d22 AllCasesSearchDialog.searchButton.text=\u691c\u7d22 -AllCasesSearchDialog.correlationValueTextField.text= AllCasesSearchDialog.correlationValueLabel.text=\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3\u5024: AllCasesSearchDialog.casesLabel.text=\ AllCasesSearchDialog.validation.genericMessage=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/CorrelationAttributeInstanceNode.java b/Core/src/org/sleuthkit/autopsy/allcasessearch/CorrelationAttributeInstanceNode.java index 7c77b753d8..e2e57e68d5 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/CorrelationAttributeInstanceNode.java +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/CorrelationAttributeInstanceNode.java @@ -84,6 +84,7 @@ public final class CorrelationAttributeInstanceNode extends DisplayableItemNode "CorrelationAttributeInstanceNode.columnName.name=Name", "CorrelationAttributeInstanceNode.columnName.case=Case", "CorrelationAttributeInstanceNode.columnName.dataSource=Data Source", + "CorrelationAttributeInstanceNode.columnName.value=Value", "CorrelationAttributeInstanceNode.columnName.known=Known", "CorrelationAttributeInstanceNode.columnName.path=Path", "CorrelationAttributeInstanceNode.columnName.comment=Comment", @@ -109,6 +110,7 @@ public final class CorrelationAttributeInstanceNode extends DisplayableItemNode final String dataSourceName = dataSource.getName(); final String known = centralRepoFile.getKnownStatus().getName(); final String comment = centralRepoFile.getComment(); + final String value = centralRepoFile.getCorrelationValue(); final String device = dataSource.getDeviceID(); final String NO_DESCR = ""; @@ -122,6 +124,9 @@ public final class CorrelationAttributeInstanceNode extends DisplayableItemNode sheetSet.put(new NodeProperty<>( Bundle.CorrelationAttributeInstanceNode_columnName_dataSource(), Bundle.CorrelationAttributeInstanceNode_columnName_dataSource(), NO_DESCR, dataSourceName)); + sheetSet.put(new NodeProperty<>( + Bundle.CorrelationAttributeInstanceNode_columnName_value(), + Bundle.CorrelationAttributeInstanceNode_columnName_value(), NO_DESCR, value)); sheetSet.put(new NodeProperty<>( Bundle.CorrelationAttributeInstanceNode_columnName_known(), Bundle.CorrelationAttributeInstanceNode_columnName_known(), NO_DESCR, known)); diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeInstance.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeInstance.java index 64d41dcf25..1eafdd65fe 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeInstance.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeInstance.java @@ -269,21 +269,21 @@ public class CorrelationAttributeInstance implements Serializable { * @throws CentralRepoException if the Type's dbTableName has invalid * characters/format */ - @Messages({"CorrelationType.FILES.displayName=Files", - "CorrelationType.DOMAIN.displayName=Domains", - "CorrelationType.EMAIL.displayName=Email Addresses", - "CorrelationType.PHONE.displayName=Phone Numbers", - "CorrelationType.USBID.displayName=USB Devices", - "CorrelationType.SSID.displayName=Wireless Networks", - "CorrelationType.MAC.displayName=MAC Addresses", + @Messages({"CorrelationType.FILES.displayName=File MD5", + "CorrelationType.DOMAIN.displayName=Domain", + "CorrelationType.EMAIL.displayName=Email Addresse", + "CorrelationType.PHONE.displayName=Phone Number", + "CorrelationType.USBID.displayName=USB Device", + "CorrelationType.SSID.displayName=Wireless Network", + "CorrelationType.MAC.displayName=MAC Addresse", "CorrelationType.IMEI.displayName=IMEI Number", "CorrelationType.IMSI.displayName=IMSI Number", - "CorrelationType.PROG_NAME.displayName=Installed Programs", + "CorrelationType.PROG_NAME.displayName=Installed Program", "CorrelationType.ICCID.displayName=ICCID Number", "CorrelationType.OS_ACCOUNT.displayName=Os Account"}) public static List getDefaultCorrelationTypes() throws CentralRepoException { List defaultCorrelationTypes = new ArrayList<>(); - + defaultCorrelationTypes.add(new CorrelationAttributeInstance.Type(FILES_TYPE_ID, Bundle.CorrelationType_FILES_displayName(), "file", true, true)); // NON-NLS defaultCorrelationTypes.add(new CorrelationAttributeInstance.Type(DOMAIN_TYPE_ID, Bundle.CorrelationType_DOMAIN_displayName(), "domain", true, true)); // NON-NLS defaultCorrelationTypes.add(new CorrelationAttributeInstance.Type(EMAIL_TYPE_ID, Bundle.CorrelationType_EMAIL_displayName(), "email_address", true, true)); // NON-NLS From f457bc7e1b8adc75a26270e5a63de73bdb6cc142 Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Thu, 12 Aug 2021 12:26:43 -0400 Subject: [PATCH 5/6] Update scrollpane1 name Per reviewer comment --- .../autopsy/allcasessearch/AllCasesSearchDialog.form | 6 +++--- .../autopsy/allcasessearch/AllCasesSearchDialog.java | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.form b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.form index 0ee145c304..aca01ada64 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.form +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.form @@ -48,7 +48,7 @@ - + @@ -75,7 +75,7 @@ - + @@ -162,7 +162,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java index 3b4d233b56..19dbaf249b 100755 --- a/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/AllCasesSearchDialog.java @@ -166,7 +166,7 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; errorLabel = new javax.swing.JLabel(); descriptionLabel = new javax.swing.JLabel(); casesLabel = new javax.swing.JLabel(); - jScrollPane1 = new javax.swing.JScrollPane(); + correlationValueScrollPane = new javax.swing.JScrollPane(); correlationValueTextArea = new javax.swing.JTextArea(); normalizedLabel = new javax.swing.JLabel(); @@ -201,7 +201,7 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; correlationValueTextArea.setColumns(20); correlationValueTextArea.setRows(5); correlationValueTextArea.setText(org.openide.util.NbBundle.getMessage(AllCasesSearchDialog.class, "AllCasesSearchDialog.correlationValueTextArea.text")); // NOI18N - jScrollPane1.setViewportView(correlationValueTextArea); + correlationValueScrollPane.setViewportView(correlationValueTextArea); org.openide.awt.Mnemonics.setLocalizedText(normalizedLabel, org.openide.util.NbBundle.getMessage(AllCasesSearchDialog.class, "AllCasesSearchDialog.normalizedLabel.text")); // NOI18N @@ -230,7 +230,7 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(correlationTypeComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 379, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(correlationValueScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 379, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE))) .addGap(142, 142, 142)) .addComponent(errorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) @@ -248,7 +248,7 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(correlationValueLabel) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(correlationValueScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(normalizedLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE) @@ -523,10 +523,10 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; private javax.swing.JComboBox correlationTypeComboBox; private javax.swing.JLabel correlationTypeLabel; private javax.swing.JLabel correlationValueLabel; + private javax.swing.JScrollPane correlationValueScrollPane; private javax.swing.JTextArea correlationValueTextArea; private javax.swing.JLabel descriptionLabel; private javax.swing.JLabel errorLabel; - private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel normalizedLabel; private javax.swing.JButton searchButton; // End of variables declaration//GEN-END:variables From 4791d7387cf22b23c31931ed99ffdf2fcfeba356 Mon Sep 17 00:00:00 2001 From: Mark McKinnon Date: Thu, 12 Aug 2021 13:06:38 -0400 Subject: [PATCH 6/6] Update CorrelationAttributeInstance.java Fix typo --- .../datamodel/CorrelationAttributeInstance.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeInstance.java b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeInstance.java index 1eafdd65fe..3b608f8f71 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeInstance.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeInstance.java @@ -271,11 +271,11 @@ public class CorrelationAttributeInstance implements Serializable { */ @Messages({"CorrelationType.FILES.displayName=File MD5", "CorrelationType.DOMAIN.displayName=Domain", - "CorrelationType.EMAIL.displayName=Email Addresse", + "CorrelationType.EMAIL.displayName=Email Address", "CorrelationType.PHONE.displayName=Phone Number", "CorrelationType.USBID.displayName=USB Device", "CorrelationType.SSID.displayName=Wireless Network", - "CorrelationType.MAC.displayName=MAC Addresse", + "CorrelationType.MAC.displayName=MAC Address", "CorrelationType.IMEI.displayName=IMEI Number", "CorrelationType.IMSI.displayName=IMSI Number", "CorrelationType.PROG_NAME.displayName=Installed Program",