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) )
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))
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()
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()
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)