class FEA_ConfigPanel(JPanel): numThreads = 8 generateXLS = True generateCSV = True doNSLookup = True doWBLookup = True cbNSLookup = None cbGenerateExcel = None cbGenerateCSV = None cbWayback = None def __init__(self): self.initComponents() # get previous settings selected by the user if (ModuleSettings.getConfigSetting("FEA", "doNSLookup") != None) and ( ModuleSettings.getConfigSetting("FEA", "doNSLookup") != ""): if ModuleSettings.getConfigSetting("FEA", "doNSLookup"): self.cbNSLookup.setSelected(True) self.doNSLookup = True else: self.cbNSLookup.setSelected(False) self.doNSLookup = False if (ModuleSettings.getConfigSetting("FEA", "generateCSV") != None) and (ModuleSettings.getConfigSetting( "FEA", "generateCSV") != ""): if ModuleSettings.getConfigSetting("FEA", "generateCSV"): self.cbGenerateCSV.setSelected(True) self.generateCSV = True else: self.cbGenerateCSV.setSelected(False) self.generateCSV = False if (ModuleSettings.getConfigSetting("FEA", "generateXLS") != None) and (ModuleSettings.getConfigSetting( "FEA", "generateXLS") != ""): if ModuleSettings.getConfigSetting("FEA", "generateXLS"): self.cbGenerateExcel.setSelected(True) self.generateXLS = True else: self.cbGenerateExcel.setSelected(False) self.generateXLS = False if (ModuleSettings.getConfigSetting("FEA", "numThreads") != None) and ( ModuleSettings.getConfigSetting("FEA", "numThreads") != ""): self.numThreads = ModuleSettings.getConfigSetting( "FEA", "numThreads") self.numberThreadsSlider.setValue(self.numThreads) else: self.numThreads = self.numberThreadsSlider.getValue() def addStatusLabel(self, msg): gbc = GridBagConstraints() gbc.anchor = GridBagConstraints.NORTHWEST gbc.gridx = 0 gbc.gridy = 7 lab = JLabel(msg) self.add(lab, gbc) def getDoNSLookup(self): return self.doNSLookup def getGenerateCSV(self): return self.generateCSV def getGenerateXLS(self): return self.generateXLS def getDoWBLookup(self): return self.doWBLookup def getNumThreads(self): return self.numThreads def initComponents(self): self.setLayout(GridBagLayout()) gbc = GridBagConstraints() gbc.anchor = GridBagConstraints.NORTHWEST gbc.gridx = 0 gbc.gridy = 0 descriptionLabel = JLabel("FEA - Forensics Email Analysis") self.add(descriptionLabel, gbc) gbc.gridy = 1 self.cbNSLookup = JCheckBox( "Perform DNS Lookup on email domains", actionPerformed=self.cbNSLookupActionPerformed) self.cbNSLookup.setSelected(True) self.add(self.cbNSLookup, gbc) # TODO: include option to browse for text file with list of emails to exclude from analysis numberThreadsLabel = JLabel( "Maximum number of threads for DNS Lookup task: ") gbc.gridy = 2 self.add(numberThreadsLabel, gbc) self.numberThreadsSlider = JSlider( JSlider.HORIZONTAL, 1, 16, 8, stateChanged=self.sliderActionPerformed) self.numberThreadsSlider.setMajorTickSpacing(1) self.numberThreadsSlider.setPaintLabels(True) self.numberThreadsSlider.setPaintTicks(True) self.numberThreadsSlider.setSnapToTicks(True) self.numberThreadsSlider.setToolTipText( "set maximum number of concurrent threads when performing DNS lookup on email domains" ) gbc.gridy = 5 gbc.gridwidth = 15 gbc.gridheight = 1 gbc.fill = GridBagConstraints.BOTH gbc.weightx = 0 gbc.weighty = 0 gbc.anchor = GridBagConstraints.NORTHWEST gbc.gridy = 3 self.add(self.numberThreadsSlider, gbc) self.cbGenerateExcel = JCheckBox( "Generate Excel format report (more detailed)", actionPerformed=self.cbGenerateExcelActionPerformed) self.cbGenerateExcel.setSelected(True) gbc.gridy = 4 self.add(self.cbGenerateExcel, gbc) self.cbGenerateCSV = JCheckBox( "Generate CSV format report (plaintext)", actionPerformed=self.cbGenerateCSVActionPerformed) self.cbGenerateCSV.setSelected(True) gbc.gridy = 5 self.add(self.cbGenerateCSV, gbc) gbc.gridy = 6 self.cbWayback = JCheckBox( "Perform Wayback Machine Lookup on email domains (WARNING: can be a slow process!)", actionPerformed=self.cbWaybackActionPerformed) self.cbWayback.setSelected(True) self.add(self.cbWayback, gbc) def cbWaybackActionPerformed(self, event): source = event.getSource() if (source.isSelected()): ModuleSettings.setConfigSetting("FEA", "doWBLookup", "true") self.doWBLookup = True else: ModuleSettings.setConfigSetting("FEA", "doNSLookup", "false") self.doWBLookup = False def cbNSLookupActionPerformed(self, event): source = event.getSource() if (source.isSelected()): ModuleSettings.setConfigSetting("FEA", "doNSLookup", "true") self.doNSLookup = True self.cbWayback.setEnabled(True) else: ModuleSettings.setConfigSetting("FEA", "doNSLookup", "false") self.doNSLookup = False self.cbWayback.setSelected(False) self.cbWayback.setEnabled(False) self.doWBLookup = False def cbGenerateExcelActionPerformed(self, event): source = event.getSource() if (source.isSelected()): ModuleSettings.setConfigSetting("FEA", "generateXLS", "true") self.generateXLS = True else: ModuleSettings.setConfigSetting("FEA", "generateXLS", "false") self.generateXLS = False def cbGenerateCSVActionPerformed(self, event): source = event.getSource() if (source.isSelected()): ModuleSettings.setConfigSetting("FEA", "generateCSV", "true") self.generateCSV = True else: ModuleSettings.setConfigSetting("FEA", "generateCSV", "false") self.generateCSV = False def sliderActionPerformed(self, event): source = event.getSource() self.numThreads = source.getValue() ModuleSettings.setConfigSetting("FEA", "numThreads", self.numThreads) self.addStatusLabel("number of threads set: " + str(self.numThreads))