def send_response_data_to_spider(self): index = self.treeView.currentIndex() if len(self.treeViewSelectionModel.selectedRows()) > 1: id_list = [] for index in self.treeViewSelectionModel.selectedRows(): Id = interface.index_to_id(self.dataModel, index) id_list.append(str(Id)) self.framework.send_response_list_to_spider(id_list) else: Id = interface.index_to_id(self.dataModel, index) if Id: self.framework.send_response_id_to_spider(Id)
def fill_bottom(self, index): if self.searchFilling: return Id = interface.index_to_id(self.searchResultsModel, index) if Id: self.searchRequestResponse.fill(str(Id)) self.searchRequestResponse.set_search_info(str(self.searchText.text()).strip(), self.cbRegularExpression.isChecked())
def fill_bottom(self, index): """ Return the data from the database and fill bottom part of main window """ if self.fillingDataTree: return Id = interface.index_to_id(self.responsesDataModel, index) if Id: self.viewTabRequestResponse.fill(str(Id))
def export_to_raft_capture(self): # TODO: consider implementing a tasklet if this is the entire DB being exported filename = 'RaftExport-%s' % int(time.time()) file = QFileDialog.getSaveFileName(None, "Save to file", filename, "XML File (*.xml);;XZ XML File (*.xml.xz)") if file: adapter = ParseAdapter() # TODO: refactor filename = str(file) while '.xml.xml' in filename: filename = filename.replace('.xml.xml', '.xml') if filename.endswith('.xml.xz'): while '.xml.xz.xml.xz' in filename: filename = filename.replace('.xml.xz.xml.xz', '.xml.xz') fh = lzma.LZMAFile(filename, 'w') elif filename.endswith('.xml'): filename = filename.replace('.xml.xml', '.xml') fh = open(filename, 'wb') else: raise Exception('unhandled file type: %s' % (filename)) Data = self.framework.getDB() cursor = Data.allocate_thread_cursor() try: fh.write(b'<raft version="1.0">\n') for index in self.treeViewSelectionModel.selectedRows(): Id = interface.index_to_id(self.dataModel, index) if Id: capture = RaftDbCapture() capture.populate_by_id(self.framework, Data, cursor, Id) fh.write(adapter.format_as_xml(capture).encode('utf-8')) fh.write(b'</raft>') fh.close() finally: cursor.close() Data.release_thread_cursor(cursor) Data, cursor = None, None
def send_response_data_to_requester(self): id_list = [] for index in self.treeViewSelectionModel.selectedRows(): Id = interface.index_to_id(self.dataModel, index) if Id: id_list.append(int(Id)) if 1 == len(id_list): self.framework.send_response_id_to_requester(id_list[0]) else: self.framework.send_responses_to_bulk_requester(id_list)
def fill_fuzzer_history(self, index): Id = interface.index_to_id(self.fuzzerHistoryDataModel, index) if Id: row = self.Data.read_responses_by_id(self.cursor, Id) if not row: return responseItems = interface.data_row_to_response_items(row) url = responseItems[ResponsesTable.URL] reqHeaders = responseItems[ResponsesTable.REQ_HEADERS] reqData = responseItems[ResponsesTable.REQ_DATA] resHeaders = responseItems[ResponsesTable.RES_HEADERS] resData = responseItems[ResponsesTable.RES_DATA] contentType = responseItems[ResponsesTable.RES_CONTENT_TYPE] self.miniResponseRenderWidget.populate_response_content(url, reqHeaders, reqData, resHeaders, resData, contentType)
def save_response_to_file(self): index = self.treeView.currentIndex() Id = interface.index_to_id(self.dataModel, index) curUrl = interface.index_to_url(self.dataModel, index) if Id and curUrl: splitted = urlparse.urlsplit(curUrl) pos = splitted.path.rindex('/') filename = '' if pos > -1: filename = splitted.path[pos+1:] file = QFileDialog.getSaveFileName(None, "Save to file", filename, "") if file: filename = str(file) fh = open(filename, 'wb') try: rr = self.framework.get_request_response(Id) fh.write(rr.responseBody) finally: fh.close()
def save_response_to_file(self): index = self.treeView.currentIndex() Id = interface.index_to_id(self.dataModel, index) curUrl = interface.index_to_url(self.dataModel, index) if Id and curUrl: splitted = urlparse.urlsplit(curUrl) pos = splitted.path.rindex('/') filename = '' if pos > -1: filename = splitted.path[pos + 1:] file = QFileDialog.getSaveFileName(None, "Save to file", filename, "") if file: filename = str(file) fh = open(filename, 'wb') try: rr = self.framework.get_request_response(Id) fh.write(rr.responseBody) finally: fh.close()
def export_to_raft_capture(self): # TODO: consider implementing a tasklet if this is the entire DB being exported filename = 'RaftExport-%s' % int(time.time()) file = QFileDialog.getSaveFileName( None, "Save to file", filename, "XML File (*.xml);;XZ XML File (*.xml.xz)") if file: adapter = ParseAdapter() # TODO: refactor filename = str(file) while '.xml.xml' in filename: filename = filename.replace('.xml.xml', '.xml') if filename.endswith('.xml.xz'): while '.xml.xz.xml.xz' in filename: filename = filename.replace('.xml.xz.xml.xz', '.xml.xz') fh = lzma.LZMAFile(filename, 'w') elif filename.endswith('.xml'): filename = filename.replace('.xml.xml', '.xml') fh = open(filename, 'wb') else: raise Exception('unhandled file type: %s' % (filename)) Data = self.framework.getDB() cursor = Data.allocate_thread_cursor() try: fh.write(b'<raft version="1.0">\n') for index in self.treeViewSelectionModel.selectedRows(): Id = interface.index_to_id(self.dataModel, index) if Id: capture = RaftDbCapture() capture.populate_by_id(self.framework, Data, cursor, Id) fh.write( adapter.format_as_xml(capture).encode('utf-8')) fh.write(b'</raft>') fh.close() finally: cursor.close() Data.release_thread_cursor(cursor) Data, cursor = None, None
def response_item_double_clicked(self, index): Id = interface.index_to_id(self.searchResultsModel, index) if Id: dialog = RequestResponseDetailDialog(self.framework, str(Id), self) dialog.show() dialog.exec_()
def requester_sequence_runner_item_double_clicked(self, index): Id = interface.index_to_id(self.sequenceRunnerDataModel, index) if Id: dialog = RequestResponseDetailDialog(self.framework, Id, self.mainWindow) dialog.show() dialog.exec_()
def send_response_data_to_sequence_builder(self): index = self.treeView.currentIndex() Id = interface.index_to_id(self.dataModel, index) if Id: self.framework.send_response_id_to_sequence_builder(Id)
def fuzzer_history_item_double_clicked(self, index): Id = interface.index_to_id(self.fuzzerHistoryDataModel, index) if Id: dialog = RequestResponseDetailDialog(self.framework, Id, self.mainWindow) dialog.show() dialog.exec_()
def fill_sequence_runner_request_response(self, index): Id = interface.index_to_id(self.sequenceRunnerDataModel, index) if Id: self.sequenceRunnerRequestResponse.fill(Id)
def fill_history_request_response(self, index): Id = interface.index_to_id(self.requesterHistoryDataModel, index) if Id: self.historyRequestResponse.fill(Id)
def send_response_data_to_click_jacking_tester(self): index = self.treeView.currentIndex() Id = interface.index_to_id(self.dataModel, index) if Id: self.framework.send_to_tester_click_jacking(Id)
def response_item_double_clicked(self, index): Id = interface.index_to_id(self.responsesDataModel, index) if Id: dialog = RequestResponseDetailDialog(self.framework, Id, self) dialog.show() dialog.exec_()