From 3c10f9fb4bb2918e6e3edbfc7aed456a0fefdda2 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Mon, 22 Sep 2014 12:16:15 -0400 Subject: [PATCH 1/3] Remove dead auto-gen event code for hash lookup ingest job settings panel --- .../hashdatabase/HashLookupModuleSettingsPanel.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettingsPanel.java index 163af52695..e1f38e9bc1 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettingsPanel.java @@ -289,11 +289,6 @@ public final class HashLookupModuleSettingsPanel extends IngestModuleIngestJobSe alwaysCalcHashesCheckbox.setPreferredSize(new java.awt.Dimension(271, 35)); alwaysCalcHashesCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP); alwaysCalcHashesCheckbox.setVerticalTextPosition(javax.swing.SwingConstants.TOP); - alwaysCalcHashesCheckbox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - alwaysCalcHashesCheckboxActionPerformed(evt); - } - }); jScrollPane2.setBorder(javax.swing.BorderFactory.createEtchedBorder()); @@ -346,10 +341,6 @@ public final class HashLookupModuleSettingsPanel extends IngestModuleIngestJobSe ); }// //GEN-END:initComponents - private void alwaysCalcHashesCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_alwaysCalcHashesCheckboxActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_alwaysCalcHashesCheckboxActionPerformed - // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox alwaysCalcHashesCheckbox; private javax.swing.JScrollPane jScrollPane1; From 2c87ff7a454ffaceb905d39c3bda01f0879b3b21 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Tue, 23 Sep 2014 17:28:01 -0400 Subject: [PATCH 2/3] Make new hash sets enabled by default in all contexts --- .../HashLookupModuleSettings.java | 100 ++++++++++++++++-- .../HashLookupModuleSettingsPanel.java | 18 ++-- 2 files changed, 101 insertions(+), 17 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java index 7383c74f81..7028d2761c 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java @@ -24,39 +24,117 @@ import java.util.List; import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettings; /** - * Settings for a hash lookup file ingest module instance. + * Ingest job settings for the hash lookup module. */ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 2L; private final HashSet namesOfEnabledKnownHashSets = new HashSet<>(); private final HashSet namesOfEnabledKnownBadHashSets = new HashSet<>(); + private final HashSet namesOfDisabledKnownHashSets = new HashSet<>(); + private final HashSet namesOfDisabledKnownBadHashSets = new HashSet<>(); private boolean shouldCalculateHashes = true; - HashLookupModuleSettings(boolean shouldCalculateHashes, List namesOfEnabledKnownHashSets, List namesOfEnabledKnownBadHashSets) { + /** + * Constructs ingest job settings for the hash lookup module. + * + * @param shouldCalculateHashes Whether or not hashes should be calculated. + * @param namesOfEnabledKnownHashSets A list of enabled known hash sets. + * @param namesOfEnabledKnownBadHashSets A list of enabled known bad hash + * sets. + */ + HashLookupModuleSettings(boolean shouldCalculateHashes, + List namesOfEnabledKnownHashSets, + List namesOfEnabledKnownBadHashSets) { + this(shouldCalculateHashes, namesOfEnabledKnownHashSets, namesOfEnabledKnownBadHashSets, new ArrayList<>(), new ArrayList<>()); + } + + /** + * Constructs ingest job settings for the hash lookup module. + * + * @param shouldCalculateHashes Whether or not hashes should be calculated. + * @param namesOfEnabledKnownHashSets A list of enabled known hash sets. + * @param namesOfEnabledKnownBadHashSets A list of enabled known bad hash + * sets. + * @param namesOfDisabledKnownHashSets A list of disabled known hash sets. + * @param namesOfDisabledKnownBadHashSets A list of disabled known bad hash + * sets. + */ + HashLookupModuleSettings(boolean shouldCalculateHashes, + List namesOfEnabledKnownHashSets, + List namesOfEnabledKnownBadHashSets, + List namesOfDisabledKnownHashSets, + List namesOfDisabledKnownBadHashSets) { this.shouldCalculateHashes = shouldCalculateHashes; this.namesOfEnabledKnownHashSets.addAll(namesOfEnabledKnownHashSets); this.namesOfEnabledKnownBadHashSets.addAll(namesOfEnabledKnownBadHashSets); + this.namesOfDisabledKnownHashSets.addAll(namesOfDisabledKnownHashSets); + this.namesOfDisabledKnownBadHashSets.addAll(namesOfDisabledKnownBadHashSets); } + /** + * @inheritDoc + */ @Override public long getVersionNumber() { - return serialVersionUID; - } - + return HashLookupModuleSettings.serialVersionUID; + } + + /** + * Checks the setting that specifies whether or not hashes are to be + * calculated. + * + * @return True if hashes are to be calculated, false otherwise. + */ boolean shouldCalculateHashes() { - return shouldCalculateHashes; + return this.shouldCalculateHashes; } + /** + * Checks whether or not a hash set is enabled. If there is no setting for + * the requested hash set, it is deemed to be enabled. + * + * @param hashSetName The name of the hash set to check. + * @return True if the hash set is enabled, false otherwise. + */ boolean isHashSetEnabled(String hashSetName) { - return (namesOfEnabledKnownHashSets.contains(hashSetName) || namesOfEnabledKnownBadHashSets.contains(hashSetName)); + return !(this.namesOfDisabledKnownHashSets.contains(hashSetName) || this.namesOfDisabledKnownBadHashSets.contains(hashSetName)); } + /** + * Get the names of all explicitly enabled known files hash sets. + * + * @return The list of names. + */ List getNamesOfEnabledKnownHashSets() { - return new ArrayList<>(namesOfEnabledKnownHashSets); + return new ArrayList<>(this.namesOfEnabledKnownHashSets); } - List getNamesOfEnabledKnownBadHashSets() { - return new ArrayList<>(namesOfEnabledKnownBadHashSets); + /** + * Get the names of all explicitly disabled known files hash sets. + * + * @return The list of names. + */ + List getNamesOfDisabledKnownHashSets() { + return new ArrayList<>(namesOfDisabledKnownHashSets); } + + /** + * Get the names of all explicitly enabled known bad files hash sets. + * + * @return The list of names. + */ + List getNamesOfEnabledKnownBadHashSets() { + return new ArrayList<>(this.namesOfEnabledKnownBadHashSets); + } + + /** + * Get the names of all explicitly disabled known bad files hash sets. + * + * @return The list of names. + */ + List getNamesOfDisabledKnownBadHashSets() { + return new ArrayList<>(this.namesOfDisabledKnownBadHashSets); + } + } diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettingsPanel.java index e1f38e9bc1..61cdf8006b 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettingsPanel.java @@ -101,19 +101,25 @@ public final class HashLookupModuleSettingsPanel extends IngestModuleIngestJobSe @Override public IngestModuleIngestJobSettings getSettings() { + List enabledKnownHashSetNames = new ArrayList<>(); + List disabledKnownHashSetNames = new ArrayList<>(); + List enabledKnownBadHashSetNames = new ArrayList<>(); + List disabledKnownBadHashSetNames = new ArrayList<>(); + getHashSetNames(knownHashSetModels, enabledKnownHashSetNames, disabledKnownHashSetNames); + getHashSetNames(knownBadHashSetModels, enabledKnownBadHashSetNames, disabledKnownBadHashSetNames); return new HashLookupModuleSettings(alwaysCalcHashesCheckbox.isSelected(), - getNamesOfEnabledHashSets(knownHashSetModels), - getNamesOfEnabledHashSets(knownBadHashSetModels)); + enabledKnownHashSetNames, enabledKnownBadHashSetNames, + disabledKnownHashSetNames, disabledKnownBadHashSetNames); } - private List getNamesOfEnabledHashSets(List hashSetModels) { - List namesOfEnabledHashSets = new ArrayList<>(); + private void getHashSetNames(List hashSetModels, List enabledHashSetNames, List disabledHashSetNames) { for (HashSetModel model : hashSetModels) { if (model.isEnabled() && model.isIndexed()) { - namesOfEnabledHashSets.add(model.getName()); + enabledHashSetNames.add(model.getName()); + } else { + disabledHashSetNames.add(model.getName()); } } - return namesOfEnabledHashSets; } void update() { From 63cc7894e8f6fe2289149e1dde2b992bddc7cd44 Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 24 Sep 2014 14:07:51 -0400 Subject: [PATCH 3/3] Add support for deserialization of older version of hash lookup module ingest job settings --- .../HashLookupModuleSettings.java | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java index 7028d2761c..05a1a77e8e 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleSettings.java @@ -28,11 +28,11 @@ import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettings; */ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { - private static final long serialVersionUID = 2L; - private final HashSet namesOfEnabledKnownHashSets = new HashSet<>(); - private final HashSet namesOfEnabledKnownBadHashSets = new HashSet<>(); - private final HashSet namesOfDisabledKnownHashSets = new HashSet<>(); - private final HashSet namesOfDisabledKnownBadHashSets = new HashSet<>(); + private static final long serialVersionUID = 1L; + private HashSet namesOfEnabledKnownHashSets; + private HashSet namesOfDisabledKnownHashSets; // Added in version 1.1 + private HashSet namesOfEnabledKnownBadHashSets; + private HashSet namesOfDisabledKnownBadHashSets; // Added in version 1.1 private boolean shouldCalculateHashes = true; /** @@ -66,10 +66,10 @@ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { List namesOfDisabledKnownHashSets, List namesOfDisabledKnownBadHashSets) { this.shouldCalculateHashes = shouldCalculateHashes; - this.namesOfEnabledKnownHashSets.addAll(namesOfEnabledKnownHashSets); - this.namesOfEnabledKnownBadHashSets.addAll(namesOfEnabledKnownBadHashSets); - this.namesOfDisabledKnownHashSets.addAll(namesOfDisabledKnownHashSets); - this.namesOfDisabledKnownBadHashSets.addAll(namesOfDisabledKnownBadHashSets); + this.namesOfEnabledKnownHashSets = new HashSet<>(namesOfEnabledKnownHashSets); + this.namesOfEnabledKnownBadHashSets = new HashSet<>(namesOfEnabledKnownBadHashSets); + this.namesOfDisabledKnownHashSets = new HashSet<>(namesOfDisabledKnownHashSets); + this.namesOfDisabledKnownBadHashSets = new HashSet<>(namesOfDisabledKnownBadHashSets); } /** @@ -98,6 +98,7 @@ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { * @return True if the hash set is enabled, false otherwise. */ boolean isHashSetEnabled(String hashSetName) { + this.upgradeFromOlderVersions(); return !(this.namesOfDisabledKnownHashSets.contains(hashSetName) || this.namesOfDisabledKnownBadHashSets.contains(hashSetName)); } @@ -107,6 +108,7 @@ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { * @return The list of names. */ List getNamesOfEnabledKnownHashSets() { + this.upgradeFromOlderVersions(); return new ArrayList<>(this.namesOfEnabledKnownHashSets); } @@ -116,6 +118,7 @@ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { * @return The list of names. */ List getNamesOfDisabledKnownHashSets() { + this.upgradeFromOlderVersions(); return new ArrayList<>(namesOfDisabledKnownHashSets); } @@ -125,6 +128,7 @@ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { * @return The list of names. */ List getNamesOfEnabledKnownBadHashSets() { + this.upgradeFromOlderVersions(); return new ArrayList<>(this.namesOfEnabledKnownBadHashSets); } @@ -134,7 +138,21 @@ final class HashLookupModuleSettings implements IngestModuleIngestJobSettings { * @return The list of names. */ List getNamesOfDisabledKnownBadHashSets() { + this.upgradeFromOlderVersions(); return new ArrayList<>(this.namesOfDisabledKnownBadHashSets); } + /** + * Initialize fields set to null when an instance of a previous, but still + * compatible, version of this class is de-serialized. + */ + private void upgradeFromOlderVersions() { + if (null == this.namesOfDisabledKnownHashSets) { + this.namesOfDisabledKnownHashSets = new HashSet<>(); + } + if (null == this.namesOfDisabledKnownBadHashSets) { + this.namesOfDisabledKnownBadHashSets = new HashSet<>(); + } + } + }