Exemplo n.º 1
0
    def __init__(self,
                 netmanager,
                 op,
                 qrequest,
                 outgoingDataList=None,
                 parent=None):
        QDialog.__init__(self, parent)

        # passed args saved for further update, etc.
        self.netmanager = netmanager
        self.op = op
        self.qrequest = qrequest
        self.outgoingDataList = outgoingDataList

        # storage of the HTTPRequest
        self.nrequest = None

        # QTree widget to represent the different editable information
        self.request = TamperTreeWidget()
        self.request.setRootIsDecorated(False)
        self.request.setAlternatingRowColors(True)
        self.request.setSortingEnabled(False)
        self.request.setEditTriggers(QAbstractItemView.DoubleClicked)
        self.request.setHeaderLabels(['HTTP Header', 'value'])
        self.request.resizeColumnToContents(0)
        self.request.setWordWrap(True)
        QObject.connect(self.request,
                        SIGNAL("itemChanged(QTreeWidgetItem *, int)"),
                        self.requestChangedItemHeaders_Slot)
        QObject.connect(self.request, SIGNAL("addRowTreeWidget"),
                        self.addRowTreeWidget_Slot)
        QObject.connect(self.request, SIGNAL("duplicateRowTreeWidget"),
                        self.duplicateRowTreeWidget_Slot)
        QObject.connect(self.request, SIGNAL("deleteRowTreeWidget"),
                        self.deleteRowTreeWidget_Slot)

        self.gbox = QGroupBox("&Header Tampering")
        self.continue_tampering = QCheckBox("&Continue Tampering")
        self.continue_tampering.setCheckState(Qt.Checked)
        self.apply_transformation = QCheckBox(
            "&Apply These Transformations on Subsequent Requests")

        QObject.connect(self.continue_tampering, SIGNAL('stateChanged(int)'),
                        self.stateChanged_ContinueTampering_Slot)
        QObject.connect(self.apply_transformation, SIGNAL('stateChanged(int)'),
                        self.stateChanged_ApplyTransformation_Slot)

        self.refresh_values = QPushButton("&Reload Values")
        self.refresh_values.setEnabled(False)
        self.send_request = QPushButton("&Send Request")
        self.cancel_request = QPushButton("&Close")

        QObject.connect(self.refresh_values, SIGNAL('pressed()'),
                        self.reloadRequest_Slot)
        QObject.connect(self.cancel_request, SIGNAL('pressed()'),
                        self.cancel_Slot)
        QObject.connect(self.send_request, SIGNAL('pressed()'),
                        self.accept_Slot)

        vlayout = QVBoxLayout()
        vlayout.addWidget(self.continue_tampering)
        vlayout.addWidget(self.apply_transformation)
        self.gbox.setLayout(vlayout)

        blayout = QHBoxLayout()
        blayout.addWidget(self.refresh_values)
        blayout.addWidget(self.cancel_request)
        blayout.addWidget(self.send_request)

        layout = QVBoxLayout()
        layout.addWidget(self.gbox)
        layout.addWidget(self.request)
        layout.addLayout(blayout)
        self.setModal(False)
        self.setLayout(layout)
        # fill the data
        self.updateRequest()

        self.setMinimumSize(520, 300)
        self.resize(900, 600)
Exemplo n.º 2
0
	def __init__(self, netmanager, parent = None):
		QWidget.__init__(self, parent)
		self.netmanager = netmanager
		self.current_request_id = 0

		self.smartview = SmartView(self)
		self.smartview.hide()

		self.requestview = TamperTreeWidget()
		self.requestview.setRootIsDecorated(False)
		self.requestview.setAlternatingRowColors(True)
		self.requestview.setSortingEnabled(False)
		self.requestview.setEditTriggers(QAbstractItemView.DoubleClicked)
		self.requestview.setHeaderLabels(['HTTP Request Header', 'Value'])
		self.requestview.resizeColumnToContents(0)
		self.requestview.setWordWrap(True)
		QObject.connect(self.requestview, SIGNAL("itemChanged(QTreeWidgetItem *, int)"), self.requestChangedItem_Slot)
		QObject.connect(self.requestview, SIGNAL("addRowTreeWidget"), self.addRowTreeWidget_Slot)
		QObject.connect(self.requestview, SIGNAL("duplicateRowTreeWidget"), self.duplicateRowTreeWidget_Slot)
		QObject.connect(self.requestview, SIGNAL("deleteRowTreeWidget"), self.deleteRowTreeWidget_Slot)

		self.responseview = QTreeWidget()
		self.responseview.setRootIsDecorated(False)
		self.responseview.setAlternatingRowColors(True)
		self.responseview.setSortingEnabled(False)
		self.responseview.setHeaderLabels(['HTTP Response Header', 'Value'])
		self.responseview.resizeColumnToContents(0)

		self.gbox = QGroupBox("&HTTP Request")

		self.refresh_button = QPushButton("Refresh")
		self.refresh_button.setEnabled(False)
		QObject.connect(self.refresh_button, SIGNAL("pressed()"), self.refreshViews_Slot)

		self.response_button = QPushButton("HTTP response body")
		QObject.connect(self.response_button, SIGNAL("pressed()"), self.viewResponse_Slot)

		self.replay_button = QPushButton("Make request")
		QObject.connect(self.replay_button, SIGNAL("pressed()"), self.replayRequest_Slot)

		self.export_button = QPushButton("Export as...")
		QObject.connect(self.replay_button, SIGNAL("pressed()"), self.exportRequest_Slot)

		self.addTestCases_button = QPushButton("Add to test cases")
		QObject.connect(self.addTestCases_button, SIGNAL("pressed()"), self.addTestCaseRequest_Slot)

		self.addFinding_button = QPushButton("Add to findings")
		QObject.connect(self.addFinding_button, SIGNAL("pressed()"), self.addFindingRequest_Slot)

		vlayout = QVBoxLayout()
		vlayout.addWidget(self.response_button)
		vlayout.addWidget(self.refresh_button)
		vlayout.addWidget(self.replay_button)
		vlayout.addWidget(self.export_button)
		vlayout.addWidget(self.addTestCases_button)
		vlayout.addWidget(self.addFinding_button)
		self.gbox.setLayout(vlayout)

		layout = QHBoxLayout()
		layout.addWidget(self.gbox)
		layout.addWidget(self.requestview)
		layout.addWidget(self.responseview)
		self.setLayout(layout)