def __init__(self, framework, tabWidget, showRequest, parent = None): QObject.__init__(self, parent) self.framework = framework QObject.connect(self, SIGNAL('destroyed(QObject*)'), self._destroyed) self.tabWidget = tabWidget self.showRequest = showRequest if self.showRequest: self.reqReqEdit_Tab = QWidget(self.tabWidget) self.tabWidget.addTab(self.reqReqEdit_Tab, 'Request') # TODO: must this hard-coded ? self.render_tab_index = 2 else: self.render_tab_index = 1 self.reqResEdit_Tab = QWidget(self.tabWidget) self.tabWidget.addTab(self.reqResEdit_Tab, 'Response') self.reqRenderView_Tab = QWidget(self.tabWidget) self.tabWidget.addTab(self.reqRenderView_Tab, 'Render') # TODO: a common utility method should be used to all scintilla stuff if self.showRequest: self.reqReqEdit_Layout = QVBoxLayout(self.reqReqEdit_Tab) self.reqReqEdit = Qsci.QsciScintilla(self.reqReqEdit_Tab) self.reqReqEdit.zoomTo(self.framework.get_zoom_size()) self.reqReqEdit.setMarginLineNumbers(1, True) self.reqReqEdit.setMarginWidth(1, '1000') self.reqReqEdit.setWrapMode(1) self.reqReqEdit.setWrapVisualFlags(2, 1, 0) self.reqReqEdit_Layout.addWidget(self.reqReqEdit) self.reqResEdit_Layout = QVBoxLayout(self.reqResEdit_Tab) self.reqResEdit = Qsci.QsciScintilla(self.reqResEdit_Tab) self.reqResEdit.zoomTo(self.framework.get_zoom_size()) self.reqResEdit.setMarginLineNumbers(1, True) self.reqResEdit.setMarginWidth(1, '1000') self.reqResEdit.setWrapMode(1) self.reqResEdit.setWrapVisualFlags(2, 1, 0) self.reqResEdit_Layout.addWidget(self.reqResEdit) self.reqRenderView_Layout = QVBoxLayout(self.reqRenderView_Tab) self.requesterPageFactory = StandardPageFactory(self.framework, None, self) self.reqRenderView = RenderingWebView(self.framework, self.requesterPageFactory, self.tabWidget) self.reqRenderView_Layout.addWidget(self.reqRenderView) self.request_url = None self.tabWidget.currentChanged.connect(self.do_render_apply) self.framework.subscribe_zoom_in(self.zoom_in_scintilla) self.framework.subscribe_zoom_out(self.zoom_out_scintilla)
def __init__(self, framework, mainWindow): QObject.__init__(self, mainWindow) self.framework = framework QObject.connect(self, SIGNAL('destroyed(QObject*)'), self._destroyed) self.mainWindow = mainWindow self.cjInteractor = TesterTab.ClickJackingInteractor(self) self.cjTester = ClickjackingTester(self.framework) self.scintillaWidgets = set( ) # store scintilla widget reference to handle zoom in/zoom out # self.networkAccessManager = StandardNetworkAccessManager(self.framework, self.framework.get_global_cookie_jar()) self.pageFactory = TesterPageFactory(self.framework, self.cjInteractor, None, self) self.framework.subscribe_populate_tester_csrf( self.tester_populate_csrf) self.framework.subscribe_populate_tester_click_jacking( self.tester_populate_click_jacking) self.Data = None self.cursor = None self.framework.subscribe_database_events(self.db_attach, self.db_detach) self.setScintillaProperties(self.mainWindow.csrfGenEdit) self.mainWindow.testerRegenBtn.clicked.connect(self.regen_csrf) self.mainWindow.csrfOpenBtn.clicked.connect( self.handle_csrfOpenBtn_clicked) self.setScintillaProperties(self.mainWindow.testerClickjackingEditHtml) self.mainWindow.testerClickjackingSimulateButton.clicked.connect( self.handle_testerClickjackingSimulateButton_clicked) self.mainWindow.testerClickjackingOpenInBrowserButton.clicked.connect( self.handle_testerClickjackingOpenInBrowserButton_clicked) self.mainWindow.testerClickjackingGenerateButton.clicked.connect( self.handle_testerClickjackingGenerateButton_clicked) self.mainWindow.testerClickjackingEnableJavascript.clicked.connect( self.handle_testerClickjackingEnableJavascript_clicked) self.clickjackingRenderWebView = RenderingWebView( self.framework, self.pageFactory, self.mainWindow.testerClickjackingEmbeddedBrowserPlaceholder) self.clickjackingRenderWebView.loadFinished.connect( self.handle_clickjackingRenderWebView_loadFinished) self.clickjackingRenderWebView.urlChanged.connect( self.handle_clickjackingRenderWebView_urlChanged) self.clickjackingRenderWebView.titleChanged.connect( self.handle_clickjackingRenderWebView_titleChanged) self.framework.subscribe_zoom_in(self.zoom_in_scintilla) self.framework.subscribe_zoom_out(self.zoom_out_scintilla)
def setup_ui(self, tabwidget, searchControlPlaceholder): self.tabwidget = tabwidget self.searchControlPlaceholder = searchControlPlaceholder self.networkAccessManager = self.framework.getNetworkAccessManager() if self.searchControlPlaceholder is not None: self.searchLayout = self.searchControlPlaceholder.layout() if not self.searchLayout or 0 == self.searchLayout: self.searchLayout = QVBoxLayout(self.searchControlPlaceholder) self.searchLayout.addWidget( self.makeSearchWidget(self.searchControlPlaceholder)) self.searchLayout.addWidget( self.makeConfirmedUpdateWidget(self.searchControlPlaceholder)) self.searchLayout.setSpacing(0) self.searchLayout.setContentsMargins(-1, 0, -1, 0) self.searchControlPlaceholder.updateGeometry() self.requestView = QWidget(tabwidget) self.requestView.setObjectName(tabwidget.objectName() + 'Request') self.tabwidget.addTab(self.requestView, 'Request') self.responseView = QWidget(tabwidget) self.responseView.setObjectName(tabwidget.objectName() + 'Response') self.tabwidget.addTab(self.responseView, 'Response') self.hexBody = QWidget(tabwidget) self.hexBody.setObjectName(tabwidget.objectName() + 'HexBody') self.hexBodyIndex = self.tabwidget.addTab(self.hexBody, 'Hex Body') self.scriptsView = QWidget(tabwidget) self.scriptsView.setObjectName(tabwidget.objectName() + 'Scripts') self.scriptsTabIndex = self.tabwidget.addTab(self.scriptsView, 'Scripts') self.commentsView = QWidget(tabwidget) self.commentsView.setObjectName(tabwidget.objectName() + 'Comments') self.tabwidget.addTab(self.commentsView, 'Comments') self.linksView = QWidget(tabwidget) self.linksView.setObjectName(tabwidget.objectName() + 'Links') self.tabwidget.addTab(self.linksView, 'Links') self.formsView = QWidget(tabwidget) self.formsView.setObjectName(tabwidget.objectName() + 'Forms') self.tabwidget.addTab(self.formsView, 'Forms') self.renderView = QWidget(tabwidget) self.renderView.setObjectName(tabwidget.objectName() + 'Render') self.renderTabIndex = self.tabwidget.addTab(self.renderView, 'Render') self.tabwidget.currentChanged.connect(self.handle_tab_currentChanged) self.generatedSourceView = QWidget(tabwidget) self.generatedSourceView.setObjectName(tabwidget.objectName() + 'GeneratedSource') self.generatedSourceTabIndex = self.tabwidget.addTab( self.generatedSourceView, 'Generated Source') self.notesView = QWidget(tabwidget) self.notesView.setObjectName(tabwidget.objectName() + 'Notes') self.notesTabIndex = self.tabwidget.addTab(self.notesView, 'Notes') self.tab_item_widgets = [] self.vlayout0 = QVBoxLayout(self.requestView) self.requestScintilla = Qsci.QsciScintilla(self.requestView) self.setScintillaProperties(self.requestScintilla) self.vlayout0.addWidget(self.requestScintilla) self.tab_item_widgets.append(self.requestScintilla) self.vlayout1 = QVBoxLayout(self.responseView) self.responseScintilla = Qsci.QsciScintilla(self.responseView) self.responseScintilla.setMarginLineNumbers(1, True) self.setScintillaProperties(self.responseScintilla) self.vlayout1.addWidget(self.responseScintilla) self.tab_item_widgets.append(self.responseScintilla) self.vlayout2a = QVBoxLayout(self.hexBody) self.hexBodyScintilla = Qsci.QsciScintilla(self.hexBody) self.hexBodyScintilla.setFont(self.framework.get_monospace_font()) self.vlayout2a.addWidget(self.hexBodyScintilla) self.tab_item_widgets.append(self.hexBodyScintilla) self.vlayout2 = QVBoxLayout(self.scriptsView) self.scriptsScintilla = Qsci.QsciScintilla(self.scriptsView) # self.scriptsScintilla.setMarginLineNumbers(1, True) self.setScintillaProperties(self.scriptsScintilla, 'javascript') self.vlayout2.addWidget(self.scriptsScintilla) self.tab_item_widgets.append(self.scriptsScintilla) self.vlayout3 = QVBoxLayout(self.commentsView) self.commentsScintilla = Qsci.QsciScintilla(self.commentsView) # self.commentsScintilla.setMarginLineNumbers(1, True) self.setScintillaProperties(self.commentsScintilla, 'html') self.vlayout3.addWidget(self.commentsScintilla) self.tab_item_widgets.append(self.commentsScintilla) self.vlayout4 = QVBoxLayout(self.linksView) self.linksScintilla = Qsci.QsciScintilla(self.linksView) self.setScintillaProperties(self.linksScintilla) self.vlayout4.addWidget(self.linksScintilla) self.tab_item_widgets.append(self.linksScintilla) self.vlayout5 = QVBoxLayout(self.formsView) self.formsScintilla = Qsci.QsciScintilla(self.formsView) self.setScintillaProperties(self.formsScintilla, 'html') self.vlayout5.addWidget(self.formsScintilla) self.tab_item_widgets.append(self.formsScintilla) self.vlayout6 = QVBoxLayout(self.renderView) self.renderWebView = RenderingWebView(self.framework, self.standardPageFactory, self.renderView) self.renderWebView.page().setNetworkAccessManager( self.networkAccessManager) self.renderWebView.loadFinished.connect( self.render_handle_loadFinished) self.vlayout6.addWidget(self.renderWebView) self.tab_item_widgets.append(self.renderWebView) self.vlayout7 = QVBoxLayout(self.generatedSourceView) self.generatedSourceScintilla = Qsci.QsciScintilla( self.generatedSourceView) self.generatedSourceWebView = RenderingWebView( self.framework, self.headlessPageFactory, self.generatedSourceView) self.generatedSourceWebView.page().setNetworkAccessManager( self.networkAccessManager) self.generatedSourceWebView.loadFinished.connect( self.generatedSource_handle_loadFinished) self.generatedSourceWebView.setVisible(False) self.generatedSourceScintilla.setMarginLineNumbers(1, True) self.setScintillaProperties(self.generatedSourceScintilla, 'html') self.vlayout7.addWidget(self.generatedSourceWebView) self.vlayout7.addWidget(self.generatedSourceScintilla) self.tab_item_widgets.append(self.generatedSourceScintilla) self.vlayout8 = QVBoxLayout(self.notesView) self.notesTextEdit = QTextEdit(self.notesView) self.vlayout8.addWidget(self.notesTextEdit) self.tab_item_widgets.append(self.notesTextEdit) self.clear()
def __init__(self, framework, parent=None): super(SequenceDialog, self).__init__(parent) self.setupUi(self) self.framework = framework QObject.connect(self, SIGNAL('destroyed(QObject*)'), self._destroyed) self.scintillaWidgets = set( ) # store scintilla widget reference to handle zoom in/zoom out # TODO: move to framework constants self.known_media_types = ('text/css', 'application/javascript', 'text/javascript', 'image/gif', 'image/png', 'image/jpeg', 'image/bmp') self.cookieJar = SequenceBuilderCookieJar(self.framework, self) self.networkAccessManager = SequenceBuilderNetworkAccessManager( self.framework, self.cookieJar) self.formCapture = SequenceBuilderFormCapture(self.framework, self) self.pageFactory = SequenceBuilderPageFactory(self.framework, self.formCapture, self) self.standardPageFactory = StandardPageFactory( self.framework, self.networkAccessManager, self) QObject.connect(self.networkAccessManager, SIGNAL('finished(QNetworkReply *)'), self.process_request_finished) self.embedded = EmbeddedWebkitWidget.EmbeddedWebkitWidget( self.framework, self.networkAccessManager, self.pageFactory, self.webBrowserFrame, self) self.sequenceTabWidget.currentChanged.connect( self.handle_currentChanged) self.is_recording = False self.sequence_items = {} self.qlock = QMutex() self.startRecordingButton.clicked.connect( self.handle_startRecording_clicked) self.stopRecordingButton.clicked.connect( self.handle_stopRecording_clicked) self.saveSequenceButton.clicked.connect( self.handle_saveSequence_clicked) self.deleteSequenceButton.clicked.connect( self.handle_deleteSequence_clicked) self.deleteSequenceButton.setEnabled(False) # attach RenderingWebView to renderViewSequenceTabWidget self.sequenceRenderView_Layout = QVBoxLayout( self.renderViewSequenceTabWidget) self.sequenceRenderView = RenderingWebView( self.framework, self.standardPageFactory, self.renderViewSequenceTabWidget) self.sequenceRenderView_Layout.addWidget(self.sequenceRenderView) self.sequencePropertiesTabWidget.currentChanged.connect( self.handle_properties_currentChanged) self.sequenceRenderView.page().selectionChanged.connect( self.handle_renderView_selectionChanged) # use Scintilla for request and response views self.sequenceRequestView_Layout = QVBoxLayout( self.requestViewSequenceTabWidget) self.sequenceRequestViewEdit = Qsci.QsciScintilla( self.requestViewSequenceTabWidget) self.setScintillaProperties(self.sequenceRequestViewEdit) self.sequenceRequestView_Layout.addWidget(self.sequenceRequestViewEdit) self.sequenceResponseView_Layout = QVBoxLayout( self.responseViewSequenceTabWidget) self.sequenceResponseViewEdit = Qsci.QsciScintilla( self.responseViewSequenceTabWidget) self.setScintillaProperties(self.sequenceResponseViewEdit, 'html') self.sequenceResponseView_Layout.addWidget( self.sequenceResponseViewEdit) self.sequenceStepsTreeWidget.itemClicked.connect( self.handle_steps_itemClicked) self.sequenceStepsTreeWidget.setContextMenuPolicy(Qt.CustomContextMenu) self.menu = QMenu(self.sequenceStepsTreeWidget) self.connect(self.sequenceStepsTreeWidget, SIGNAL("customContextMenuRequested(const QPoint&)"), self.sequence_steps_context_menu) action = QAction("Remove from sequence", self) action.triggered.connect(self.handle_remove_from_sequence) self.menu.addAction(action) action = QAction("Copy URL", self) action.triggered.connect(self.sequence_step_copy_url) self.menu.addAction(action) self.inSessionPatternEdit.textChanged.connect( self.handle_sessionEdit_textChanged) self.inSessionPatternRE.stateChanged.connect( self.handle_sessionRE_stateChanged) self.outOfSessionPatternEdit.textChanged.connect( self.handle_sessionEdit_textChanged) self.outOfSessionPatternRE.stateChanged.connect( self.handle_sessionRE_stateChanged) QObject.connect(self.sequencesComboBox, SIGNAL('currentIndexChanged(const QString &)'), self.handle_sequenceCombo_text_currentIndexChanged) QObject.connect(self.sequencesComboBox, SIGNAL('currentIndexChanged(int)'), self.handle_sequenceCombo_currentIndexChanged) self.useSessionDetectionCheckbox.stateChanged.connect( self.handle_useSessionDection_stateChanged) self.setUseSessionDetection() self.includeMediaCheckbox.stateChanged.connect( self.handle_includeMedia_stateChanged) self.framework.subscribe_add_sequence_builder_response_id( self.add_manual_sequence_builder_item) self.originatingResponses = {} self.sequenceResponseIds = set() self.Data = None self.cursor = None self.framework.subscribe_database_events(self.db_attach, self.db_detach) self.framework.subscribe_zoom_in(self.zoom_in_scintilla) self.framework.subscribe_zoom_out(self.zoom_out_scintilla)