Merge pull request #888 from rcordovano/new_hash_sets_enabled_by_default

New hash sets enabled by default in all contexts
This commit is contained in:
Richard Cordovano 2014-09-24 14:32:17 -04:00
commit 4b13ae37f3
2 changed files with 123 additions and 30 deletions

View File

@ -24,39 +24,135 @@ import java.util.List;
import org.sleuthkit.autopsy.ingest.IngestModuleIngestJobSettings; 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 { final class HashLookupModuleSettings implements IngestModuleIngestJobSettings {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private final HashSet<String> namesOfEnabledKnownHashSets = new HashSet<>(); private HashSet<String> namesOfEnabledKnownHashSets;
private final HashSet<String> namesOfEnabledKnownBadHashSets = new HashSet<>(); private HashSet<String> namesOfDisabledKnownHashSets; // Added in version 1.1
private HashSet<String> namesOfEnabledKnownBadHashSets;
private HashSet<String> namesOfDisabledKnownBadHashSets; // Added in version 1.1
private boolean shouldCalculateHashes = true; private boolean shouldCalculateHashes = true;
HashLookupModuleSettings(boolean shouldCalculateHashes, List<String> namesOfEnabledKnownHashSets, List<String> namesOfEnabledKnownBadHashSets) { /**
this.shouldCalculateHashes = shouldCalculateHashes; * Constructs ingest job settings for the hash lookup module.
this.namesOfEnabledKnownHashSets.addAll(namesOfEnabledKnownHashSets); *
this.namesOfEnabledKnownBadHashSets.addAll(namesOfEnabledKnownBadHashSets); * @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<String> namesOfEnabledKnownHashSets,
List<String> 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<String> namesOfEnabledKnownHashSets,
List<String> namesOfEnabledKnownBadHashSets,
List<String> namesOfDisabledKnownHashSets,
List<String> namesOfDisabledKnownBadHashSets) {
this.shouldCalculateHashes = shouldCalculateHashes;
this.namesOfEnabledKnownHashSets = new HashSet<>(namesOfEnabledKnownHashSets);
this.namesOfEnabledKnownBadHashSets = new HashSet<>(namesOfEnabledKnownBadHashSets);
this.namesOfDisabledKnownHashSets = new HashSet<>(namesOfDisabledKnownHashSets);
this.namesOfDisabledKnownBadHashSets = new HashSet<>(namesOfDisabledKnownBadHashSets);
}
/**
* @inheritDoc
*/
@Override @Override
public long getVersionNumber() { 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() { 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) { boolean isHashSetEnabled(String hashSetName) {
return (namesOfEnabledKnownHashSets.contains(hashSetName) || namesOfEnabledKnownBadHashSets.contains(hashSetName)); this.upgradeFromOlderVersions();
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<String> getNamesOfEnabledKnownHashSets() { List<String> getNamesOfEnabledKnownHashSets() {
return new ArrayList<>(namesOfEnabledKnownHashSets); this.upgradeFromOlderVersions();
return new ArrayList<>(this.namesOfEnabledKnownHashSets);
} }
List<String> getNamesOfEnabledKnownBadHashSets() { /**
return new ArrayList<>(namesOfEnabledKnownBadHashSets); * Get the names of all explicitly disabled known files hash sets.
*
* @return The list of names.
*/
List<String> getNamesOfDisabledKnownHashSets() {
this.upgradeFromOlderVersions();
return new ArrayList<>(namesOfDisabledKnownHashSets);
} }
/**
* Get the names of all explicitly enabled known bad files hash sets.
*
* @return The list of names.
*/
List<String> getNamesOfEnabledKnownBadHashSets() {
this.upgradeFromOlderVersions();
return new ArrayList<>(this.namesOfEnabledKnownBadHashSets);
}
/**
* Get the names of all explicitly disabled known bad files hash sets.
*
* @return The list of names.
*/
List<String> 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<>();
}
}
} }

View File

@ -101,19 +101,25 @@ public final class HashLookupModuleSettingsPanel extends IngestModuleIngestJobSe
@Override @Override
public IngestModuleIngestJobSettings getSettings() { public IngestModuleIngestJobSettings getSettings() {
List<String> enabledKnownHashSetNames = new ArrayList<>();
List<String> disabledKnownHashSetNames = new ArrayList<>();
List<String> enabledKnownBadHashSetNames = new ArrayList<>();
List<String> disabledKnownBadHashSetNames = new ArrayList<>();
getHashSetNames(knownHashSetModels, enabledKnownHashSetNames, disabledKnownHashSetNames);
getHashSetNames(knownBadHashSetModels, enabledKnownBadHashSetNames, disabledKnownBadHashSetNames);
return new HashLookupModuleSettings(alwaysCalcHashesCheckbox.isSelected(), return new HashLookupModuleSettings(alwaysCalcHashesCheckbox.isSelected(),
getNamesOfEnabledHashSets(knownHashSetModels), enabledKnownHashSetNames, enabledKnownBadHashSetNames,
getNamesOfEnabledHashSets(knownBadHashSetModels)); disabledKnownHashSetNames, disabledKnownBadHashSetNames);
} }
private List<String> getNamesOfEnabledHashSets(List<HashSetModel> hashSetModels) { private void getHashSetNames(List<HashSetModel> hashSetModels, List<String> enabledHashSetNames, List<String> disabledHashSetNames) {
List<String> namesOfEnabledHashSets = new ArrayList<>();
for (HashSetModel model : hashSetModels) { for (HashSetModel model : hashSetModels) {
if (model.isEnabled() && model.isIndexed()) { if (model.isEnabled() && model.isIndexed()) {
namesOfEnabledHashSets.add(model.getName()); enabledHashSetNames.add(model.getName());
} else {
disabledHashSetNames.add(model.getName());
} }
} }
return namesOfEnabledHashSets;
} }
void update() { void update() {
@ -289,11 +295,6 @@ public final class HashLookupModuleSettingsPanel extends IngestModuleIngestJobSe
alwaysCalcHashesCheckbox.setPreferredSize(new java.awt.Dimension(271, 35)); alwaysCalcHashesCheckbox.setPreferredSize(new java.awt.Dimension(271, 35));
alwaysCalcHashesCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP); alwaysCalcHashesCheckbox.setVerticalAlignment(javax.swing.SwingConstants.TOP);
alwaysCalcHashesCheckbox.setVerticalTextPosition(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()); jScrollPane2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
@ -346,10 +347,6 @@ public final class HashLookupModuleSettingsPanel extends IngestModuleIngestJobSe
); );
}// </editor-fold>//GEN-END:initComponents }// </editor-fold>//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 // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox alwaysCalcHashesCheckbox; private javax.swing.JCheckBox alwaysCalcHashesCheckbox;
private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane1;