예제 #1
0
    def setup_requester_tab(self):

        self.historyRequestResponse = RequestResponseWidget(
            self.framework, self.mainWindow.requesterHistoryTabWidget,
            self.mainWindow.requesterHistorySearchResultsPlaceholder, self)
        self.requesterHistoryDataModel = ResponsesDataModel.ResponsesDataModel(
            self.framework, self)
        self.mainWindow.requesterHistoryTreeView.setModel(
            self.requesterHistoryDataModel)
        self.mainWindow.requesterHistoryTreeView.activated.connect(
            self.fill_history_request_response)
        self.mainWindow.requesterHistoryTreeView.clicked.connect(
            self.fill_history_request_response)
        self.mainWindow.requesterHistoryTreeView.doubleClicked.connect(
            self.requester_history_item_double_clicked)
        self.historyResponsesContextMenu = ResponsesContextMenuWidget(
            self.framework, self.requesterHistoryDataModel,
            self.mainWindow.requesterHistoryTreeView, self)
        self.historyResponsesContextMenu.set_currentChanged_callback(
            self.fill_history_request_response)

        self.sequenceRunnerRequestResponse = RequestResponseWidget(
            self.framework, self.mainWindow.sequenceRunnerTabWidget,
            self.mainWindow.sequenceRunnerSearchResultsPlaceholder, self)
        self.sequenceRunnerDataModel = ResponsesDataModel.ResponsesDataModel(
            self.framework, self)
        self.mainWindow.sequenceRunnerTreeView.setModel(
            self.sequenceRunnerDataModel)
        self.mainWindow.sequenceRunnerTreeView.activated.connect(
            self.fill_sequence_runner_request_response)
        self.mainWindow.sequenceRunnerTreeView.clicked.connect(
            self.fill_sequence_runner_request_response)
        self.mainWindow.sequenceRunnerTreeView.doubleClicked.connect(
            self.requester_sequence_runner_item_double_clicked)
        self.sequence_runnerResponsesContextMenu = ResponsesContextMenuWidget(
            self.framework, self.sequenceRunnerDataModel,
            self.mainWindow.sequenceRunnerTreeView, self)
        self.sequence_runnerResponsesContextMenu.set_currentChanged_callback(
            self.fill_sequence_runner_request_response)

        self.miniResponseRenderWidget = MiniResponseRenderWidget(
            self.framework, self.mainWindow.reqRespTabWidget, True, self)

        self.scopeController = self.framework.getScopeController()
예제 #2
0
    def __init__(self, framework, mainWindow):
        QObject.__init__(self, mainWindow)
        self.framework = framework
        self.mainWindow = mainWindow

        self.mainWindow.domFuzzerStartButton.clicked.connect(
            self.handle_fuzzerStart_clicked)
        self.mainWindow.domFuzzerStopButton.clicked.connect(
            self.handle_fuzzerStop_clicked)
        self.mainWindow.domFuzzerClearQueueButton.clicked.connect(
            self.handle_fuzzerClearQueue_clicked)
        self.mainWindow.domFuzzerStartButton.setEnabled(True)
        self.mainWindow.domFuzzerStopButton.setEnabled(False)

        self.miniResponseRenderWidget = MiniResponseRenderWidget(
            self.framework, self.mainWindow.domFuzzerResultsTabWidget, False,
            self)
        self.setup_fuzz_window()

        self.Data = None
        self.cursor = None
        self.framework.subscribe_database_events(self.db_attach,
                                                 self.db_detach)
예제 #3
0
    def __init__(self, framework, mainWindow):
        QObject.__init__(self, mainWindow)
        self.framework = framework
        self.mainWindow = mainWindow
        
        self.mainWindow.wfStdPreChk.stateChanged.connect(self.handle_wfStdPreChk_stateChanged)
        self.mainWindow.wfStdPostChk.stateChanged.connect(self.handle_wfStdPostChk_stateChanged)
        self.mainWindow.wfTempSeqChk.stateChanged.connect(self.handle_wfTempSeqChk_stateChanged)
        
        # Handle the toggling of payload mappings in the config tab
        self.mainWindow.wfPay1FuzzRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay1StaticRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay1DynamicRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay2FuzzRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay2StaticRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay2DynamicRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay3FuzzRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay3StaticRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay3DynamicRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay4FuzzRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay4StaticRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay4DynamicRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay5FuzzRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay5StaticRadio.toggled.connect(self.handle_payload_toggled)
        self.mainWindow.wfPay5DynamicRadio.toggled.connect(self.handle_payload_toggled)

        self.mainWindow.fuzzerHistoryClearButton.clicked.connect(self.fuzzer_history_clear_button_clicked)
        
        # inserted to initially fill the sequences box.
        # ToDo: Need to do this better
        self.mainWindow.mainTabWidget.currentChanged.connect(self.handle_mainTabWidget_currentChanged)
        self.mainWindow.webFuzzTab.currentChanged.connect(self.handle_webFuzzTab_currentChanged)
        self.mainWindow.stdFuzzTab.currentChanged.connect(self.handle_stdFuzzTab_currentChanged)
        # self.mainWindow.webFuzzTab.currentChanged.connect(self.fill_payloads)
        self.mainWindow.wfStdAddButton.clicked.connect(self.insert_payload_marker)
        self.mainWindow.wfStdStartButton.clicked.connect(self.start_fuzzing_clicked)
        self.mainWindow.wfDataDictonaryAddButton.clicked.connect(self.handle_wfDataDictonaryAddButton_clicked)
        
        self.framework.subscribe_populate_webfuzzer_response_id(self.webfuzzer_populate_response_id)
        self.framework.subscribe_sequences_changed(self.fill_sequences)
        
        self.mainWindow.wfFunctionsComboBox.activated.connect(self.fill_function_edit)
        
        self.mainWindow.wfFunctionsSaveButton.clicked.connect(self.save_function_file)
        self.mainWindow.wfFunctionsDeleteButton.clicked.connect(self.del_function_file)
        
        self.miniResponseRenderWidget = MiniResponseRenderWidget(self.framework, self.mainWindow.stdFuzzResultsTabWidget, True, self)
        
        self.re_request = re.compile(r'^(\S+)\s+((?:https?://(?:\S+\.)+\w+(?::\d+)?)?/.*)\s+HTTP/\d+\.\d+\s*$', re.I)
        self.re_request_cookie = re.compile(r'^Cookie:\s*(\S+)', re.I|re.M)
        self.re_replacement = re.compile(r'\$\{(\w+)\}')

        self.setup_fuzzer_tab()

        self.setup_functions_tab()
        
        self.functions_dir = os.path.join(self.framework.get_data_dir(), 'functions')
        
        self.Attacks = Payloads.Payloads(self.framework)
        self.Attacks.list_files()
        
        # Fill the payloads combo boxes on init
        self.fill_payloads()
        self.pending_fuzz_requests = None
        
        # Fill the functions combo box on init
        self.fill_function_combo_box()

        self.mainWindow.wfDataDictionaryDataTable.setColumnCount(2)
        self.mainWindow.wfDataDictionaryDataTable.setHorizontalHeaderLabels(['Replacement', 'Value'])

        self.Data = None
        self.cursor = None
        self.framework.subscribe_database_events(self.db_attach, self.db_detach)