Exemple #1
0
def handle_crash(type, value, tb, plugins=""):
    """Function to handle any exception that is not addressed explicitly."""
    if issubclass(type, KeyboardInterrupt):
        helpers.endThreads()
        import core.controllers.outputManager as om

        om.out.console(_("Thanks for using w3af."))
        om.out.console(_("Bye!"))
        sys.exit(0)
        return

    # Print the information to the console so everyone can see it
    exception = traceback.format_exception(type, value, tb)
    exception = "".join(exception)
    print exception

    # Do not disclose user information in bug reports
    clean_exception = cleanup_bug_report(exception)

    # Save the info to a file for later analysis
    filename = create_crash_file(clean_exception)

    # Create the dialog that allows the user to send the bug to Trac
    bug_report_win = unhandled_bug_report.bug_report_window(_("Bug detected!"), clean_exception, filename, plugins)

    # Blocks waiting for user interaction
    bug_report_win.show()
 def test_cleanup_bug_report_simple(self):
     TESTS = [
              ('foo', 'foo'),
              ('start /home/nsa/w3af/ end', 'start /home/user/w3af/ end'),
              ('start C:\\Documents and Settings\\CIA\\ end',
               'start C:/user/ end'),
              ]
     for _input, _expected in TESTS:
         self.assertEqual(cleanup_bug_report(_input), _expected)
 def __init__(self, current_status, e, tb, enabled_plugins):
     self.exception = e
     self.traceback = tb
    
     # Extract the filename and line number where the exception was raised
     filepath = traceback.extract_tb(tb)[-1][0]
     self.filename = basename(filepath)
     self.lineno = tb.tb_lineno
             
     self.traceback_str = ''.join(traceback.format_tb(tb))
     self.traceback_str = cleanup_bug_report(self.traceback_str)
     
     self.plugin = current_status.get_running_plugin()
     self.phase = current_status.get_phase()
     self.enabled_plugins = enabled_plugins
     
     self.fuzzable_request = current_status.get_current_fuzzable_request()
     self.fuzzable_request = cleanup_bug_report( str(self.fuzzable_request) )
Exemple #4
0
    def __init__(self, current_status, e, tb, enabled_plugins):
        assert isinstance(e, Exception)
        assert isinstance(current_status, w3af_core_status)

        self.exception = e
        self.traceback = tb

        # Extract the filename and line number where the exception was raised
        filepath = traceback.extract_tb(tb)[-1][0]
        self.filename = basename(filepath)
        self.lineno, self.function_name = self._get_last_call_info(tb)

        self.traceback_str = ''.join(traceback.format_tb(tb))
        self.traceback_str = cleanup_bug_report(self.traceback_str)
        
        self.phase, self.plugin = current_status.latest_running_plugin()
        self.status = current_status
        self.enabled_plugins = enabled_plugins

        self.fuzzable_request = current_status.get_current_fuzzable_request(self.phase)
        self.fuzzable_request = cleanup_bug_report(str(self.fuzzable_request))
Exemple #5
0
def handle_crash(w3af_core, _type, value, tb, plugins=''):
    '''Function to handle any exception that is not addressed explicitly.'''
    if issubclass(_type, KeyboardInterrupt):
        handle_keyboardinterrupt(w3af_core)

    # Print the information to the console so everyone can see it
    exception = traceback.format_exception(_type, value, tb)
    exception = "".join(exception)
    print exception

    # Do not disclose user information in bug reports
    clean_exception = cleanup_bug_report(exception)

    # Save the info to a file for later analysis
    filename = create_crash_file(clean_exception)

    # Create the dialog that allows the user to send the bug to github
    bug_report_win = unhandled_bug_report.bug_report_window(
        w3af_core, _('Bug detected!'), clean_exception, filename, plugins)

    # Blocks waiting for user interaction
    bug_report_win.show()
Exemple #6
0
def handle_crash(w3af_core, _type, value, tb, plugins=""):
    """Function to handle any exception that is not addressed explicitly."""
    if issubclass(_type, KeyboardInterrupt):
        handle_keyboardinterrupt(w3af_core)

    # Print the information to the console so everyone can see it
    exception = traceback.format_exception(_type, value, tb)
    exception = "".join(exception)
    print exception

    # Do not disclose user information in bug reports
    clean_exception = cleanup_bug_report(exception)

    # Save the info to a file for later analysis
    filename = create_crash_file(clean_exception)

    # Create the dialog that allows the user to send the bug to github
    bug_report_win = unhandled_bug_report.bug_report_window(
        w3af_core, _("Bug detected!"), clean_exception, filename, plugins
    )

    # Blocks waiting for user interaction
    bug_report_win.show()
Exemple #7
0
    def __init__(self, w3af_core, title, tback, fname, plugins):
        # Before doing anything else, cleanup the report to remove any
        # user information that might be present.
        tback = cleanup_bug_report(tback)

        simple_base_window.__init__(self)
        github_bug_report.__init__(self, tback, fname, plugins)

        # We got here because of an autogenerated bug, not because of the user
        # going to the Help menu and then clicking on "Report a bug"
        self.autogen = True

        # Set generic window settings
        self.set_modal(True)
        self.set_title(title)

        self.vbox = gtk.VBox()
        self.vbox.set_border_width(10)

        # the label for the title
        self.title_label = gtk.Label()
        self.title_label.set_line_wrap(True)
        label_text = _('<b>An unhandled exception was raised</b>')
        self.title_label.set_markup(label_text)
        self.title_label.show()

        # A gtk.TextView for the exception
        frame = gtk.Frame('Traceback')
        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)

        self.text_view = gtk.TextView()
        self.text_view.set_size_request(150, 250)
        self.text_view.set_editable(False)
        self.text_view.set_wrap_mode(gtk.WRAP_CHAR)

        buffer = self.text_view.get_buffer()
        buffer.set_text(tback)

        sw.add(self.text_view)
        frame.add(sw)

        # the label for the rest of the message
        self.label = gtk.Label()
        self.label.set_line_wrap(True)
        label_text = _("<i>All this info is in a file called '%s' for later"
                       ' review.</i>\n\nIf you wish, <b>you can contribute'
                       '</b> to the w3af project and submit this bug to our'
                       ' bug tracking system from within this window. It is'
                       ' a simple <i>two step process</i>.\n\n'
                       'w3af will only send the exception traceback and the'
                       ' version information to Github, no personal or '
                       ' confidential information is collected.')
        self.label.set_markup(label_text % fname)
        self.label.show()

        self.vbox.pack_start(self.title_label, True, True, 10)
        self.vbox.pack_start(frame, True, True)
        self.vbox.pack_start(self.label, True, True, 10)

        # the buttons
        self.hbox = gtk.HBox()

        self.butt_cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
        self.butt_cancel.connect("clicked", self._handle_cancel)
        self.hbox.pack_start(self.butt_cancel, True, False)

        self.butt_send = gtk.Button(stock=gtk.STOCK_OK)
        self.butt_send.connect("clicked", self.report_bug)
        self.hbox.pack_start(self.butt_send, True, False)

        self.vbox.pack_start(self.hbox, True, False, 10)

        #self.resize(400,450)
        self.add(self.vbox)
        self.show_all()

        # This is a quick fix to get around the problem generated by "set_selectable"
        # that selects the text by default
        self.label.select_region(0, 0)
 def test_url_cleanup_with_path(self):
 
     target_url = URL('http://www.target.com/abc/')
     cf.cf.save('targets', [target_url,] )
     self.assertEqual(cleanup_bug_report('start http://www.target.com/abc/def end'),
                      'start http://domain/path/foo/def end')
    def __init__(self, w3af_core, title, tback, fname, plugins):
        # Before doing anything else, cleanup the report to remove any
        # user information that might be present.
        tback = cleanup_bug_report(tback)

        simple_base_window.__init__(self)
        github_bug_report.__init__(self, tback, fname, plugins)

        # We got here because of an autogenerated bug, not because of the user
        # going to the Help menu and then clicking on "Report a bug"
        self.autogen = True

        # Set generic window settings
        self.set_modal(True)
        self.set_title(title)

        self.vbox = gtk.VBox()
        self.vbox.set_border_width(10)

        # the label for the title
        self.title_label = gtk.Label()
        self.title_label.set_line_wrap(True)
        label_text = _("<b>An unhandled exception was raised</b>")
        self.title_label.set_markup(label_text)
        self.title_label.show()

        # A gtk.TextView for the exception
        frame = gtk.Frame("Traceback")
        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)

        self.text_view = gtk.TextView()
        self.text_view.set_size_request(150, 250)
        self.text_view.set_editable(False)
        self.text_view.set_wrap_mode(gtk.WRAP_CHAR)

        buffer = self.text_view.get_buffer()
        buffer.set_text(tback)

        sw.add(self.text_view)
        frame.add(sw)

        # the label for the rest of the message
        self.label = gtk.Label()
        self.label.set_line_wrap(True)
        label_text = _(
            "<i>All this info is in a file called '%s' for later"
            " review.</i>\n\nIf you wish, <b>you can contribute"
            "</b> to the w3af project and submit this bug to our"
            " bug tracking system from within this window. It is"
            " a simple <i>two step process</i>.\n\n"
            "w3af will only send the exception traceback and the"
            " version information to Github, no personal or "
            " confidential information is collected."
        )
        self.label.set_markup(label_text % fname)
        self.label.show()

        self.vbox.pack_start(self.title_label, True, True, 10)
        self.vbox.pack_start(frame, True, True)
        self.vbox.pack_start(self.label, True, True, 10)

        # the buttons
        self.hbox = gtk.HBox()

        self.butt_cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
        self.butt_cancel.connect("clicked", self._handle_cancel)
        self.hbox.pack_start(self.butt_cancel, True, False)

        self.butt_send = gtk.Button(stock=gtk.STOCK_OK)
        self.butt_send.connect("clicked", self.report_bug)
        self.hbox.pack_start(self.butt_send, True, False)

        self.vbox.pack_start(self.hbox, True, False, 10)

        # self.resize(400,450)
        self.add(self.vbox)
        self.show_all()

        # This is a quick fix to get around the problem generated by "set_selectable"
        # that selects the text by default
        self.label.select_region(0, 0)