def __init__(self, w3af, parent, fg): super(PreviewWindow, self).__init__(w3af, "fuzzypreview", "Preview", "Fuzzy_Requests") self.pages = [] self.generator = fg.generate() self.set_modal(True) self.set_transient_for(parent) # content self.panes = reqResViewer.requestPart(self, w3af, editable=False, widgname="fuzzypreview") self.vbox.pack_start(self.panes) self.panes.show() # the ok button centerbox = gtk.HBox() quant = fg.calculate_quantity() self.pagesControl = entries.PagesControl(w3af, self._pageChange, quant) centerbox.pack_start(self.pagesControl, True, False) centerbox.show() self.vbox.pack_start(centerbox, False, False, padding=5) self._pageChange(0) self.vbox.show() self.show()
def __init__(self, w3af): super(KBBrowser, self).__init__(w3af, "pane-kbbrowser", 250) # Internal variables: # # Here I save the request and response ids to be used in the page control self.req_res_ids = [] # This is to search the DB and print the different request and responses as they are # requested from the page control, "_pageChange" method. self._historyItem = HistoryItem() # the filter to the tree filterbox = gtk.HBox() self.filters = {} def make_but(label, signal, initial): but = gtk.CheckButton(label) but.set_active(initial) but.connect("clicked", self.type_filter, signal) self.filters[signal] = initial but.show() filterbox.pack_start(but, expand=False, fill=False, padding=2) make_but("Vulnerabilities", "vuln", True) make_but("Informations", "info", True) filterbox.show() # the kb tree self.kbtree = FullKBTree(w3af, self, self.filters) # all in the first pane scrollwin21 = gtk.ScrolledWindow() scrollwin21.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) scrollwin21.add(self.kbtree) scrollwin21.show() # the filter and tree box treebox = gtk.VBox() treebox.pack_start(filterbox, expand=False, fill=False) treebox.pack_start(scrollwin21) treebox.show() # the explanation explan_tv = gtk.TextView() explan_tv.set_editable(False) explan_tv.set_cursor_visible(False) explan_tv.set_wrap_mode(gtk.WRAP_WORD) self.explanation = explan_tv.get_buffer() explan_tv.show() scrollwin22 = gtk.ScrolledWindow() scrollwin22.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) scrollwin22.add_with_viewport(explan_tv) scrollwin22.show() # The request/response viewer self.rrV = reqResViewer.reqResViewer(w3af, withAudit=False) self.rrV.set_sensitive(False) # Create the title label to show the request id self.title0 = gtk.Label() self.title0.show() # Create page changer to handle info/vuln objects that have MORE THAN ONE # related request/response self.pagesControl = entries.PagesControl(w3af, self._pageChange, 0) self.pagesControl.deactivate() self._pageChange(0) centerbox = gtk.HBox() centerbox.pack_start(self.pagesControl, True, False) # Add everything to a vbox vbox_rrv_centerbox = gtk.VBox() vbox_rrv_centerbox.pack_start(self.title0, False, True) vbox_rrv_centerbox.pack_start(self.rrV, True, True) vbox_rrv_centerbox.pack_start(centerbox, False, False) # and show vbox_rrv_centerbox.show() self.pagesControl.show() centerbox.show() # And now put everything inside the vpaned vpanedExplainAndView = entries.RememberingVPaned( w3af, "pane-kbbexplainview", 100) vpanedExplainAndView.pack1(scrollwin22) vpanedExplainAndView.pack2(vbox_rrv_centerbox) vpanedExplainAndView.show() # pack & show self.pack1(treebox) self.pack2(vpanedExplainAndView) self.show()
def __init__(self, w3af, commHandler): entries.RememberingWindow.__init__(self, w3af, "compare", "w3af - Compare", "Comparing_HTTP_traffic", onDestroy=commHandler.destroy) self.w3af = w3af self.commHandler = commHandler commHandler.enable(self, self.add_element) # toolbar elements uimanager = gtk.UIManager() accelgroup = uimanager.get_accel_group() self.add_accel_group(accelgroup) actiongroup = gtk.ActionGroup('UIManager') actiongroup.add_actions([ ('Help', gtk.STOCK_HELP, '_Help', None, 'Help regarding this window', self._help), ('ClearAll', gtk.STOCK_CLEAR, '_Clear All', None, 'Clear all the texts', self._clearAll), ]) iconfactory = gtk.IconFactory() iconfactory.add_default() def make_iconset(path): return gtk.IconSet(gtk.gdk.pixbuf_new_from_file(path)) iconfactory.add('req_head', make_iconset('core/ui/gui/data/request-headers.png')) iconfactory.add('req_body', make_iconset('core/ui/gui/data/request-body.png')) iconfactory.add('res_head', make_iconset('core/ui/gui/data/response-headers.png')) iconfactory.add('res_body', make_iconset('core/ui/gui/data/response-body.png')) gtk.stock_add( ( ('req_head', "Show Request Headers", 0, gtk.gdk.keyval_from_name('1'), 'w3af'), ('req_body', "Show Request Body", 0, gtk.gdk.keyval_from_name('2'), 'w3af'), ('res_head', "Show Response Headers", 0, gtk.gdk.keyval_from_name('3'), 'w3af'), ('res_body', "Show Response Body", 0, gtk.gdk.keyval_from_name('4'), 'w3af'), )) actiongroup.add_toggle_actions([ # xml_name, icon, real_menu_text, accelerator, tooltip, callback, initial_flag ('ReqHeaders', 'req_head', '_Request Headers', None, 'Show/Hide the request headers', self._toggle_reqhead, False), ('ReqBody', 'req_body', '_Request Body', None, 'Show/Hide the request body', self._toggle_reqbody, False), ('RespHeaders', 'res_head', '_Response Headers', None, 'Show/Hide the response headers', self._toggle_resphead, True), ('RespBody', 'res_body', '_Response Body', None, 'Show/Hide the response body', self._toggle_respbody, True), ]) # finish the toolbar uimanager.insert_action_group(actiongroup, 0) uimanager.add_ui_from_string(ui_menu) toolbar = uimanager.get_widget('/Toolbar') assert toolbar.get_n_items() == 8 separat = toolbar.get_nth_item(6) separat.set_draw(False) separat.set_expand(True) self.vbox.pack_start(toolbar, False) self.tbarwidgets = [toolbar.get_nth_item(i) for i in range(6)] # the line with the "send to" buttons self.sendto_box = hbox = gtk.HBox() b = entries.SemiStockButton( "", gtk.STOCK_INDEX, "Send the Request of the Left to Manual Editor") b.connect("clicked", self._send_requests, "manual", "left") hbox.pack_start(b, False, False, padding=2) b = entries.SemiStockButton( "", gtk.STOCK_PROPERTIES, "Send the Request of the Left to Fuzzy Editor") b.connect("clicked", self._send_requests, "fuzzy", "left") hbox.pack_start(b, False, False, padding=2) image = gtk.Image() image.set_from_file( os.path.join( os.path.split(__file__)[0], 'data', 'cluster_data.png')) image.show() self.clusterbut = gtk.Button("") self.clusterbut.set_tooltip_text("Send all to Cluster Responses") self.clusterbut.set_image(image) self.clusterbut.connect("clicked", self._sendCluster) self.clusterbut.set_sensitive(False) hbox.pack_end(self.clusterbut, False, False, padding=2) b = entries.SemiStockButton( "", gtk.STOCK_PROPERTIES, "Send the Request of the Right to Fuzzy Editor") b.connect("clicked", self._send_requests, "fuzzy", "right") hbox.pack_end(b, False, False, padding=2) b = entries.SemiStockButton( "", gtk.STOCK_INDEX, "Send the Request of the Right to Manual Editor") b.connect("clicked", self._send_requests, "manual", "right") hbox.pack_end(b, False, False, padding=2) self.vbox.pack_start(hbox, False, False, padding=10) # the comparator itself self.comp = comparator.FileDiff() self.vbox.pack_start(self.comp.widget) # the page control box = gtk.HBox() self.pagesControl = entries.PagesControl(w3af, self._pageChange) box.pack_start(self.pagesControl, False, False, padding=5) self.delbut = gtk.Button("Delete") self.delbut.connect("clicked", self._delete) self.delbut.set_sensitive(False) box.pack_start(self.delbut, False, False, padding=10) self.comp.rightBaseBox.pack_start(box, True, False) # the send to left button box = gtk.HBox() but = gtk.Button("Set text to compare") but.set_tooltip_text( "Sets the text of the right pane into the left one") but.connect("clicked", self._rightToLeft) box.pack_start(but, True, False) self.comp.leftBaseBox.pack_start(box, True, False) # this four bool list indicates which texts to show self.showText = [False, False, True, True] # other attributes self.elements = [] self.showingPage = None self.leftElement = None self.sensitive_all(False) self.show_all()
def __init__(self, w3af, initial_request=None): super(FuzzyRequests, self).__init__(w3af, "fuzzyreq", "w3af - Fuzzy Requests", "Fuzzy_Requests") self.w3af = w3af self.historyItem = HistoryItem() mainhbox = gtk.HBox() # To store the responses self.responses = [] # ---- left pane ---- vbox = gtk.VBox() mainhbox.pack_start(vbox, False, False) # we create the buttons first, to pass them analyzBut = gtk.Button("Analyze") self.sendPlayBut = entries.SemiStockButton( "", gtk.STOCK_MEDIA_PLAY, "Sends the pending requests") self.sendStopBut = entries.SemiStockButton( "", gtk.STOCK_MEDIA_STOP, "Stops the request being sent") self.sSB_state = helpers.PropagateBuffer( self.sendStopBut.set_sensitive) self.sSB_state.change(self, False) # Fix content length checkbox self._fix_content_lengthCB = gtk.CheckButton( 'Fix content length header') self._fix_content_lengthCB.set_active(True) self._fix_content_lengthCB.show() # request self.originalReq = reqResViewer.requestPart( self, w3af, [ analyzBut.set_sensitive, self.sendPlayBut.set_sensitive, functools.partial(self.sSB_state.change, "rRV") ], editable=True, widgname="fuzzyrequest") if initial_request is None: self.originalReq.show_raw(FUZZY_REQUEST_EXAMPLE, '') else: (initialUp, initialDn) = initial_request self.originalReq.show_raw(initialUp, initialDn) # Add the right button popup menu to the text widgets rawTextView = self.originalReq.get_view_by_id('HttpRawView') rawTextView.textView.connect("populate-popup", self._populate_popup) # help helplabel = gtk.Label() helplabel.set_selectable(True) helplabel.set_markup(FUZZYHELP) self.originalReq.append_page(helplabel, gtk.Label("Syntax help")) helplabel.show() self.originalReq.show() vbox.pack_start(self.originalReq, True, True, padding=5) vbox.show() # the commands t = gtk.Table(2, 4) analyzBut.connect("clicked", self._analyze) t.attach(analyzBut, 0, 2, 0, 1) self.analyzefb = gtk.Label("0 requests") self.analyzefb.set_sensitive(False) t.attach(self.analyzefb, 2, 3, 0, 1) self.preview = gtk.CheckButton("Preview") t.attach(self.preview, 3, 4, 0, 1) self.sPB_signal = self.sendPlayBut.connect("clicked", self._send_start) t.attach(self.sendPlayBut, 0, 1, 1, 2) self.sendStopBut.connect("clicked", self._send_stop) t.attach(self.sendStopBut, 1, 2, 1, 2) self.sendfb = gtk.Label("0 ok, 0 errors") self.sendfb.set_sensitive(False) t.attach(self.sendfb, 2, 3, 1, 2) t.attach(self._fix_content_lengthCB, 3, 4, 1, 2) t.show_all() vbox.pack_start(t, False, False, padding=5) # ---- throbber pane ---- vbox = gtk.VBox() self.throbber = helpers.Throbber() self.throbber.set_sensitive(False) vbox.pack_start(self.throbber, False, False) vbox.show() mainhbox.pack_start(vbox, False, False) # ---- right pane ---- vbox = gtk.VBox() mainhbox.pack_start(vbox) # A label to show the id of the response self.title0 = gtk.Label() self.title0.show() vbox.pack_start(self.title0, False, True) # result itself self.resultReqResp = reqResViewer.reqResViewer(w3af, withFuzzy=False, editableRequest=False, editableResponse=False) self.resultReqResp.set_sensitive(False) vbox.pack_start(self.resultReqResp, True, True, padding=5) vbox.show() # result control centerbox = gtk.HBox() self.pagesControl = entries.PagesControl(w3af, self._pageChange) centerbox.pack_start(self.pagesControl, True, False) centerbox.show() # cluster responses button image = gtk.Image() image.set_from_file( os.path.join('core', 'ui', 'gui', 'data', 'cluster_data.png')) image.show() self.clusterButton = gtk.Button(label='Cluster responses') self.clusterButton.connect("clicked", self._clusterData) self.clusterButton.set_sensitive(False) self.clusterButton.set_image(image) self.clusterButton.show() centerbox.pack_start(self.clusterButton, True, False) # clear responses button self.clearButton = entries.SemiStockButton( 'Clear Responses', gtk.STOCK_CLEAR, tooltip='Clear all HTTP responses from fuzzer window') self.clearButton.connect("clicked", self._clearResponses) self.clearButton.set_sensitive(False) self.clearButton.show() centerbox.pack_start(self.clearButton, True, False) vbox.pack_start(centerbox, False, False, padding=5) # Show all! self._sendPaused = True self.vbox.pack_start(mainhbox) self.vbox.show() mainhbox.show() self.show()