19 package org.sleuthkit.autopsy.modules.encryptiondetection;
21 import org.openide.util.NbBundle;
22 import org.openide.util.NbBundle.Messages;
29 final class EncryptionDetectionIngestJobSettingsPanel
extends IngestModuleIngestJobSettingsPanel {
31 private static final int MEGABYTE_SIZE = 1048576;
32 private static final double MINIMUM_ENTROPY_INPUT_RANGE_MIN = 6.0;
33 private static final double MINIMUM_ENTROPY_INPUT_RANGE_MAX = 8.0;
34 private static final int MINIMUM_FILE_SIZE_INPUT_RANGE_MIN = 1;
41 public EncryptionDetectionIngestJobSettingsPanel(EncryptionDetectionIngestJobSettings settings) {
43 customizeComponents(settings);
51 private void customizeComponents(EncryptionDetectionIngestJobSettings settings) {
52 minimumEntropyTextbox.setText(String.valueOf(settings.getMinimumEntropy()));
53 minimumFileSizeTextbox.setText(String.valueOf(settings.getMinimumFileSize() / MEGABYTE_SIZE));
54 fileSizeMultiplesEnforcedCheckbox.setSelected(settings.isFileSizeMultipleEnforced());
55 slackFilesAllowedCheckbox.setSelected(settings.isSlackFilesAllowed());
59 public IngestModuleIngestJobSettings getSettings() {
60 validateMinimumEntropy();
61 validateMinimumFileSize();
63 return new EncryptionDetectionIngestJobSettings(
64 Double.valueOf(minimumEntropyTextbox.getText()),
65 Integer.valueOf(minimumFileSizeTextbox.getText()) * MEGABYTE_SIZE,
66 fileSizeMultiplesEnforcedCheckbox.isSelected(),
67 slackFilesAllowedCheckbox.isSelected());
77 "EncryptionDetectionIngestJobSettingsPanel.minimumEntropyInput.validationError.text=Minimum entropy input must be a number between 6.0 and 8.0."
79 private void validateMinimumEntropy() throws IllegalArgumentException {
81 double minimumEntropy = Double.valueOf(minimumEntropyTextbox.getText());
82 if (minimumEntropy < MINIMUM_ENTROPY_INPUT_RANGE_MIN || minimumEntropy > MINIMUM_ENTROPY_INPUT_RANGE_MAX) {
83 throw new IllegalArgumentException(NbBundle.getMessage(
this.getClass(),
"EncryptionDetectionIngestJobSettingsPanel.minimumEntropyInput.validationError.text"));
85 }
catch (NumberFormatException ex) {
86 throw new IllegalArgumentException(NbBundle.getMessage(
this.getClass(),
"EncryptionDetectionIngestJobSettingsPanel.minimumEntropyInput.validationError.text"));
97 "EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeInput.validationError.text=Minimum file size input must be an integer (in megabytes) of 1 or greater."
99 private void validateMinimumFileSize() throws IllegalArgumentException {
101 int minimumFileSize = Integer.valueOf(minimumFileSizeTextbox.getText());
102 if (minimumFileSize < MINIMUM_FILE_SIZE_INPUT_RANGE_MIN) {
103 throw new IllegalArgumentException(NbBundle.getMessage(
this.getClass(),
"EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeInput.validationError.text"));
105 }
catch (NumberFormatException ex) {
106 throw new IllegalArgumentException(NbBundle.getMessage(
this.getClass(),
"EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeInput.validationError.text"));
115 @SuppressWarnings(
"unchecked")
117 private
void initComponents() {
119 minimumEntropyTextbox =
new javax.swing.JTextField();
120 minimumFileSizeTextbox =
new javax.swing.JTextField();
121 fileSizeMultiplesEnforcedCheckbox =
new javax.swing.JCheckBox();
122 slackFilesAllowedCheckbox =
new javax.swing.JCheckBox();
123 minimumEntropyLabel =
new javax.swing.JLabel();
124 minimumFileSizeLabel =
new javax.swing.JLabel();
125 mbLabel =
new javax.swing.JLabel();
126 detectionSettingsLabel =
new javax.swing.JLabel();
128 minimumEntropyTextbox.setText(
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class,
"EncryptionDetectionIngestJobSettingsPanel.minimumEntropyTextbox.text"));
130 minimumFileSizeTextbox.setText(
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class,
"EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeTextbox.text"));
132 org.openide.awt.Mnemonics.setLocalizedText(fileSizeMultiplesEnforcedCheckbox,
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class,
"EncryptionDetectionIngestJobSettingsPanel.fileSizeMultiplesEnforcedCheckbox.text"));
134 org.openide.awt.Mnemonics.setLocalizedText(slackFilesAllowedCheckbox,
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class,
"EncryptionDetectionIngestJobSettingsPanel.slackFilesAllowedCheckbox.text"));
136 org.openide.awt.Mnemonics.setLocalizedText(minimumEntropyLabel,
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class,
"EncryptionDetectionIngestJobSettingsPanel.minimumEntropyLabel.text"));
138 org.openide.awt.Mnemonics.setLocalizedText(minimumFileSizeLabel,
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class,
"EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeLabel.text"));
140 org.openide.awt.Mnemonics.setLocalizedText(mbLabel,
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class,
"EncryptionDetectionIngestJobSettingsPanel.mbLabel.text"));
142 detectionSettingsLabel.setFont(
new java.awt.Font(
"Tahoma", 1, 11));
143 org.openide.awt.Mnemonics.setLocalizedText(detectionSettingsLabel,
org.openide.util.NbBundle.getMessage(EncryptionDetectionIngestJobSettingsPanel.class,
"EncryptionDetectionIngestJobSettingsPanel.detectionSettingsLabel.text"));
145 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
146 this.setLayout(layout);
147 layout.setHorizontalGroup(
148 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
149 .addGroup(layout.createSequentialGroup()
151 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
152 .addComponent(slackFilesAllowedCheckbox)
153 .addComponent(detectionSettingsLabel)
154 .addGroup(layout.createSequentialGroup()
155 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
156 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
157 .addComponent(minimumFileSizeLabel)
158 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
159 .addComponent(minimumFileSizeTextbox, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE))
160 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
161 .addComponent(minimumEntropyLabel)
162 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
163 .addComponent(minimumEntropyTextbox, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)))
164 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
165 .addComponent(mbLabel))
166 .addComponent(fileSizeMultiplesEnforcedCheckbox))
167 .addContainerGap(15, Short.MAX_VALUE))
169 layout.setVerticalGroup(
170 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
171 .addGroup(layout.createSequentialGroup()
173 .addComponent(detectionSettingsLabel)
175 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
176 .addComponent(minimumEntropyTextbox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
177 .addComponent(minimumEntropyLabel))
178 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
179 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
180 .addComponent(minimumFileSizeTextbox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
181 .addComponent(mbLabel)
182 .addComponent(minimumFileSizeLabel))
183 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
184 .addComponent(fileSizeMultiplesEnforcedCheckbox)
185 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
186 .addComponent(slackFilesAllowedCheckbox)
187 .addContainerGap(160, Short.MAX_VALUE))
192 private javax.swing.JLabel detectionSettingsLabel;
193 private javax.swing.JCheckBox fileSizeMultiplesEnforcedCheckbox;
194 private javax.swing.JLabel mbLabel;
195 private javax.swing.JLabel minimumEntropyLabel;
196 private javax.swing.JTextField minimumEntropyTextbox;
197 private javax.swing.JLabel minimumFileSizeLabel;
198 private javax.swing.JTextField minimumFileSizeTextbox;
199 private javax.swing.JCheckBox slackFilesAllowedCheckbox;