예제 #1
0
    def setup_fuzzer_tab(self):

        self.fuzzerHistoryDataModel = ResponsesDataModel.ResponsesDataModel(self.framework, self)
        self.mainWindow.fuzzerHistoryTreeView.setModel(self.fuzzerHistoryDataModel)
        self.mainWindow.fuzzerHistoryTreeView.doubleClicked.connect(self.fuzzer_history_item_double_clicked)
        self.mainWindow.fuzzerHistoryTreeView.clicked.connect(self.handle_fuzzer_history_clicked)
        self.mainWindow.fuzzerHistoryTreeView.activated.connect(self.handle_fuzzer_history_clicked)
        self.responsesContextMenu = ResponsesContextMenuWidget(self.framework, self.fuzzerHistoryDataModel, self.mainWindow.fuzzerHistoryTreeView, self)
        self.responsesContextMenu.set_currentChanged_callback(self.fill_fuzzer_history)
예제 #2
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()
예제 #3
0
    def __init__(self, framework, parent=None):
        super(SearchDialog, self).__init__(parent)
        self.setupUi(self)

        self.connect(self, SIGNAL('finished()'), self.finishedHandler)

        self.framework = framework

        # progress dialog
        self.Progress = ProgressDialog(self)
        QObject.connect(self.Progress, SIGNAL('canceled()'),
                        self.canceledHandler)

        self.searchRequestResponse = RequestResponseWidget(
            self.framework, self.searchTabWidget,
            self.searchSearchControlPlaceholder, self)

        self.searchResultsModel = ResponsesDataModel.ResponsesDataModel(
            self.framework, self)
        self.searchResultsTree.setModel(self.searchResultsModel)
        self.searchResultsTree.clicked.connect(self.fill_bottom)
        self.searchResultsTree.doubleClicked.connect(
            self.response_item_double_clicked)
        self.searchResultsTree.setSortingEnabled(True)
        self.searchResultsTree.sortByColumn(0, Qt.AscendingOrder)

        self.thread = SearchThread(self.framework, self.searchResultsModel)
        self.thread.start(QThread.LowestPriority)
        self.finished.connect(self.finishedHandler)
        self.searchPushButton.pressed.connect(self.startSearch)
        self.connect(self, SIGNAL('searchFinished()'),
                     self.searchFinishedHandler, Qt.QueuedConnection)
        # Create context menu
        self.resultsContextMenu = ResponsesContextMenuWidget(
            self.framework, self.searchResultsModel, self.searchResultsTree,
            self)
        self.resultsContextMenu.set_currentChanged_callback(self.fill_bottom)
예제 #4
0
    def setup_others(self):

        # set request response factory
        self.framework.setRequestResponseFactory(RequestResponseFactory.RequestResponseFactory(self.framework, self))

        # scoping and spider
        self.framework.setScopeController(ScopeController.ScopeController(self.framework, self))
        self.framework.setSpiderConfig(SpiderConfig.SpiderConfig(self.framework, self))

        # setup network accessmanager
        self.dbNetworkAccessManager = DatabaseNetworkAccessManager(self.framework, self.framework.get_global_cookie_jar())
        self.framework.setNetworkAccessManager(self.dbNetworkAccessManager)

        # set up tabs
        self.vulnerabilitiesTab = VulnerabilitiesTab.VulnerabilitiesTab(self.framework, self)
        self.cookiesTab = CookiesTab.CookiesTab(self.framework, self)
        self.requesterTab = RequesterTab.RequesterTab(self.framework, self)
        self.webfuzzerTab = WebFuzzerTab.WebFuzzerTab(self.framework, self)
        self.domFuzzerTab = DomFuzzerTab.DomFuzzerTab(self.framework, self)
        self.crawlerTab = CrawlerTab.CrawlerTab(self.framework, self)
        self.encoderTab = EncoderTab.EncoderTab(self.framework, self)
        self.scopingTab = ScopingTab.ScopingTab(self.framework, self)
        self.testerTab = TesterTab.TesterTab(self.framework, self)
        self.logTab = LogTab.LogTab(self.framework, self)
        self.quickAnalysisTab = QuickAnalysisTab.QuickAnalysisTab(self.framework, self)

        # sitemap
        self.siteMapRequestResponse = RequestResponseWidget(self.framework, self.sitemapTabPlaceholder, self.sitemapSearchControlPlaceholder, self)

        # TODO: cleanup site map and optimize...
        self.siteMapModel = SiteMapModel.SiteMapModel(self.framework)
        self.siteMapThread = SiteMapThread.SiteMapThread(self.framework, self.siteMapModel, self)
        self.siteMapThread.start(QThread.LowestPriority)

        self.importerThread = ImporterThread.ImporterThread(self.framework, self)
        self.connect(self, SIGNAL('runImportFinished()'), self.import_file_finished, Qt.QueuedConnection)
        self.importerThread.start(QThread.LowestPriority)

        self.treeViewSitemap.setContextMenuPolicy(Qt.CustomContextMenu)
        self.treeViewSitemapMenu = QMenu(self)
        treeViewSitemapCopyUrlAction = QAction("Copy URL", self)
        treeViewSitemapCopyUrlAction.triggered.connect(self.sitemap_copy_url)
        self.treeViewSitemapMenu.addAction(treeViewSitemapCopyUrlAction)

        self.connect(self.treeViewSitemap, SIGNAL('customContextMenuRequested(const QPoint &)'), self.sitemap_context_menu) 
        self.treeViewSitemap.activated.connect(self.siteMapRequestResponse.viewItemSelected)
        # TODO: clicked is annoying sometimes
        self.treeViewSitemap.clicked.connect(self.siteMapRequestResponse.viewItemSelected)
        self.treeViewSitemap.setModel(self.siteMapModel)

        # view tab
        self.viewTabRequestResponse = RequestResponseWidget(self.framework, self.responseTabPlaceholder, self.responseSearchControlPlaceholder, self)

        # Responses data
        self.responsesDataModel = ResponsesDataModel.ResponsesDataModel(self.framework, self)
        self.responsesDataTree.setModel(self.responsesDataModel)
        self.responsesThread = ResponsesThread.ResponsesThread(self.framework, self.responsesDataModel, self)
        self.responsesThread.start(QThread.LowPriority)
        self.connect(self, SIGNAL('fillResponsesFinished()'), self.fillResponsesFinishedHandler, Qt.QueuedConnection)
        self.responsesContextMenu = ResponsesContextMenuWidget(self.framework, self.responsesDataModel, self.responsesDataTree, self)
        self.responsesContextMenu.set_currentChanged_callback(self.fill_bottom)

        #analysis results tab
        #add response widget to the bottom
        self.mainAnalysisTabRequestResponse = RequestResponseWidget(self.framework, self.mainAnalysisTabPlaceholder, self.mainAnalysisSearchControlPlaceholder, self)

        self.analyzerThread = AnalyzerThread.AnalyzerThread(self.framework, self)
        self.connect(self, SIGNAL('runAnalysisFinished(QString)'), self.handle_runAnalysisFinished, Qt.QueuedConnection)
        self.analyzerThread.start(QThread.LowestPriority)

        # dom fuzzer thread
        self.domFuzzerQueueDataModel = DomFuzzerQueueDataModel.DomFuzzerQueueDataModel(self.framework, self)
        self.domFuzzerFuzzQueueTable.setModel(self.domFuzzerQueueDataModel)
        self.domFuzzerResultsDataModel = DomFuzzerResultsDataModel.DomFuzzerResultsDataModel(self.framework, self)
        self.domFuzzerResultsTreeView.setModel(self.domFuzzerResultsDataModel)
        self.domFuzzerThread = DomFuzzerThread.DomFuzzerThread(self.framework, self.domFuzzerQueueDataModel, self.domFuzzerResultsDataModel,  self)
        self.domFuzzerThread.start(QThread.LowestPriority)
        self.domFuzzerTab.set_fuzzer_thread(self.domFuzzerThread)
        self.domFuzzerTab.setup_fuzzer_results_treeview()

        # spider thread
        self.spiderQueueDataModel = SpiderQueueDataModel.SpiderQueueDataModel(self.framework, self)
        self.crawlerSpiderQueueTreeView.setModel(self.spiderQueueDataModel)
        self.spiderPendingResponsesDataModel = SpiderPendingResponsesDataModel.SpiderPendingResponsesDataModel(self.framework, self)
        self.crawlerSpiderPendingResponsesTreeView.setModel(self.spiderPendingResponsesDataModel)
        self.spiderPendingAnalysisDataModel = SpiderPendingAnalysisDataModel.SpiderPendingAnalysisDataModel(self.framework, self)
        self.crawlerSpiderPendingAnalysisTreeView.setModel(self.spiderPendingAnalysisDataModel)
        self.spiderInternalStateDataModel = SpiderInternalStateDataModel.SpiderInternalStateDataModel(self.framework, self)
        self.crawlerSpiderInternalStateTreeView.setModel(self.spiderInternalStateDataModel)
        self.spiderThread = SpiderThread.SpiderThread(self.framework, self.spiderQueueDataModel, self.spiderPendingResponsesDataModel, self.spiderPendingAnalysisDataModel, self.spiderInternalStateDataModel, self)
        self.spiderThread.start(QThread.LowestPriority)
        self.crawlerTab.set_spider_thread(self.spiderThread)

        # quick analysis thread
        self.quickAnalysisThread = QuickAnalysisThread.QuickAnalysisThread(self.framework, self)
        self.quickAnalysisThread.start(QThread.LowestPriority)
        self.quickAnalysisTab.set_quick_analysis_thread(self.quickAnalysisThread)

        # handlers
        self.framework.register_browser_openers(self.open_url_in_browser, self.open_content_in_browser)

        self.do_db_connect()