Exemplo n.º 1
0
    def get_notebook_summary(self, w3af):
        summary_tv = gtk.TextView()
        summary_tv.set_editable(False)
        summary_tv.set_cursor_visible(False)
        summary_tv.set_wrap_mode(gtk.WRAP_WORD)
        self.explanation = summary_tv.get_buffer()
        summary_tv.show()

        summary_scrollwin = gtk.ScrolledWindow()
        summary_scrollwin.set_policy(gtk.POLICY_AUTOMATIC,
                                     gtk.POLICY_AUTOMATIC)
        summary_scrollwin.add_with_viewport(summary_tv)
        summary_scrollwin.show()

        # The request/response viewer
        self.rrV = 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.page_change, 0)
        self.pagesControl.deactivate()
        self.page_change(0)
        center_box = gtk.HBox()
        center_box.pack_start(self.pagesControl, True, False)

        # Title, request/response and paginator all go together in a vbox
        http_data_vbox = gtk.VBox()
        http_data_vbox.pack_start(self.title0, False, True)
        http_data_vbox.pack_start(self.rrV, True, True)
        http_data_vbox.pack_start(center_box, False, False)

        # and show
        http_data_vbox.show()
        self.pagesControl.show()
        center_box.show()

        # The summary and http data go in a vbox too
        summary_data_vbox = entries.RememberingVPaned(w3af,
                                                      'pane-kbbexplainview',
                                                      100)
        summary_data_vbox.pack1(summary_scrollwin)
        summary_data_vbox.pack2(http_data_vbox)
        summary_data_vbox.show()

        return summary_data_vbox
Exemplo n.º 2
0
    def __init__(self, w3af):
        super(EncodeDecode, self).__init__(w3af, "encodedecode",
                                           _("w3af - Encode / Decode"),
                                           "Encode_and_Decode")
        self.w3af = w3af
        # Splitted panes
        vpan = entries.RememberingVPaned(w3af, "pane-encodedecode")
        # Upper pane
        vbox = gtk.VBox()
        sw = gtk.ScrolledWindow()
        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.paneup = SimpleTextView()
        sw.add(self.paneup)
        vbox.pack_start(sw, True, True, padding=5)
        # Middle buttons, left
        hbox = gtk.HBox()
        cb = gtk.combo_box_new_text()
        for (lab, fnc) in _butNameFunc_enc:
            cb.append_text(lab)
            b = gtk.Button(lab)
        cb.set_active(0)
        hbox.pack_start(cb, False, False, padding=10)
        b = entries.SemiStockButton("Encode", gtk.STOCK_GO_DOWN,
                                    _("Encode the upper text"))
        b.connect("clicked", self._encode, cb)
        hbox.pack_start(b, False, False)
        # Middle buttons, rigth
        cb = gtk.combo_box_new_text()
        for (lab, fnc) in _butNameFunc_dec:
            cb.append_text(lab)
            b = gtk.Button(lab)
        cb.set_active(0)
        b = entries.SemiStockButton("Decode", gtk.STOCK_GO_UP,
                                    _("Decode the lower text"))
        hbox.pack_end(b, False, False, padding=10)
        b.connect("clicked", self._decode, cb)
        hbox.pack_end(cb, False, False)
        vbox.pack_start(hbox, False, False, padding=5)
        vpan.pack1(vbox)
        # Lower pane
        sw = gtk.ScrolledWindow()
        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.panedn = SimpleTextView()
        sw.add(self.panedn)
        vpan.pack2(sw)

        self.vbox.pack_start(vpan, padding=10)
        self.show_all()
Exemplo n.º 3
0
    def _buildExplVuln(self):
        """The pane with the exploit list and vulnerabilities tree."""
        hpan = entries.RememberingHPaned(self.w3af, "pane-epxlvuln", 300)
        vpan = entries.RememberingVPaned(self.w3af, "pane-expl-desc", 300)

        # left-bottom
        plugin_cfg = ConfigPanel()

        # left-top
        exploitlist = ExploitTree(self.w3af, plugin_cfg)
        scrollwin1 = gtk.ScrolledWindow()
        scrollwin1.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scrollwin1.add_with_viewport(exploitlist)
        scrollwin1.show()

        vpan.pack1(scrollwin1)
        vpan.pack2(plugin_cfg)
        vpan.show()

        # Right
        vuln_vbox = gtk.VBox()
        interac = VulnerabList(self.w3af, exploitlist)
        exploitlist.vulnerabs = interac
        scrollwin2 = gtk.ScrolledWindow()
        scrollwin2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scrollwin2.add_with_viewport(interac)
        scrollwin2.show()

        add_button = entries.SemiStockButton(
            "Add...", gtk.STOCK_ADD, "Manually add a new vulnerability")
        add_button.show()
        add_button.connect("clicked", self.add_vuln)

        vuln_vbox.pack_start(scrollwin2)
        vuln_vbox.pack_start(add_button, False, False)
        vuln_vbox.show()

        # pack it all and show
        hpan.pack1(vpan)
        hpan.pack2(vuln_vbox)
        hpan.show()
        return hpan
Exemplo n.º 4
0
    def _buildpan(self, profile_description=None):
        """Builds the panel."""
        pan = entries.RememberingHPaned(self.w3af, "pane-plugconfigbody", 250)
        leftpan = entries.RememberingVPaned(self.w3af, "pane-plugconfigleft",
                                            320)
        self.config_panel = ConfigPanel(profile_description)

        # upper left
        scrollwin1u = gtk.ScrolledWindow()
        scrollwin1u.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.std_plugin_tree = PluginTree(self.w3af, "standard",
                                          self.config_panel)
        scrollwin1u.add(self.std_plugin_tree)
        scrollwin1u.show()

        # lower left
        scrollwin1l = gtk.ScrolledWindow()
        scrollwin1l.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.out_plugin_tree = PluginTree(self.w3af, "output",
                                          self.config_panel)
        scrollwin1l.add(self.out_plugin_tree)
        scrollwin1l.show()

        # pack the left part
        leftpan.pack1(scrollwin1u)
        leftpan.pack2(scrollwin1l)
        leftpan.show()

        # rigth
        scrollwin2 = gtk.ScrolledWindow()
        scrollwin2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scrollwin2.add_with_viewport(self.config_panel)
        scrollwin2.show()

        # pack it all and show
        pan.pack1(leftpan)
        pan.pack2(scrollwin2)
        pan.show()
        return pan
Exemplo n.º 5
0
    def _buildInteraction(self):
        """The pane with the shells and proxies list."""
        pan = entries.RememberingVPaned(self.w3af, "pane-explinteraction")

        # left
        shells = Shells(self.w3af)
        scrollwin1 = gtk.ScrolledWindow()
        scrollwin1.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scrollwin1.add_with_viewport(shells)
        scrollwin1.show()

        # rigth
        proxies = Proxies()
        scrollwin2 = gtk.ScrolledWindow()
        scrollwin2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scrollwin2.add_with_viewport(proxies)
        scrollwin2.show()

        # pack it all and show
        pan.pack1(scrollwin1)
        pan.pack2(scrollwin2)
        pan.show()
        return pan
Exemplo n.º 6
0
    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(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()
Exemplo n.º 7
0
    def __init__(self, w3af, initial_request=None):
        super(export_request,
              self).__init__(w3af, "exportreq", "w3af - Export Requests",
                             "Export_Requests")
        self.w3af = w3af

        # different ways of exporting data
        self._exporters = [('HTML', html_export), ('Ajax', ajax_export),
                           ('Python', python_export), ('Ruby', ruby_export)]

        # splitted panes
        vpan = entries.RememberingVPaned(w3af, "pane-exportrequests")

        # upper pane that shows HTTP request
        vbox = gtk.VBox()
        sw = gtk.ScrolledWindow()
        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.http_request = SimpleTextView()
        sw.add(self.http_request)
        vbox.pack_start(sw, True, True, padding=5)

        # middle widgets that show the export method
        table = gtk.Table(1, 6, homogeneous=True)
        cb = gtk.combo_box_new_text()
        for (lab, fnc) in self._exporters:
            cb.append_text(lab)
            b = gtk.Button(lab)
        cb.set_active(0)
        table.attach(cb, 2, 3, 0, 1)
        b = entries.SemiStockButton("Export", gtk.STOCK_GO_DOWN,
                                    _("Export the request"))
        b.connect("clicked", self._export, cb)
        table.attach(b, 3, 4, 0, 1)
        vbox.pack_start(table, False, False, padding=5)
        vpan.pack1(vbox)

        # lower pane with exported data and save button
        vbox = gtk.VBox()
        sw = gtk.ScrolledWindow()
        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.exported_text = SimpleTextView()
        sw.add(self.exported_text)
        vbox.pack_start(sw, True, True, padding=5)

        b = entries.SemiStockButton("Save request as...", gtk.STOCK_SAVE_AS,
                                    _("Save request as..."))
        b.connect("clicked", self._save_as)
        vbox.pack_start(b, False, False, padding=5)

        vpan.pack2(vbox)

        # Show the data
        if initial_request is None:
            self.http_request.set_text(export_request_example)
        else:
            (request_header, request_body) = initial_request
            self.http_request.set_text(request_header + '\n\n' + request_body)
        func = self._exporters[0][1]
        self.exported_text.set_text(func(self.http_request.get_text()))

        self.vbox.pack_start(vpan, padding=10)
        self.show_all()