示例#1
0
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))