def run_scan(args): load_modules() scanner = Scanner() # Enable groups of methods if args.enable_ssl: for name in ["ssl2", "ssl3"]: scanner.config.set_value(name, True) if args.enable_tls: for name in ["tls10", "tls11", "tls12"]: scanner.config.set_value(name, True) args_dict = vars(args) opt_names = ["ssl2", "ssl3", "tls10", "tls11", "tls12"] for name in list(opt_names): opt_names.append("no-%s" % name) for name in opt_names: if name not in args_dict: continue if not args_dict.get(name): continue logger.debug("Set %s = %s", name, str(args_dict.get(name))) scanner.config.set_value(name, True) if len(args.scan) == 0: logger.error("No scan module specified") return 1 if len(args.report) == 0: logger.error("No report module specified") return 1 enabled_ssl_method_found = False for name in ["ssl2", "ssl3", "tls10", "tls11", "tls12"]: if scanner.config.get_value(name): enabled_ssl_method_found = True break if not enabled_ssl_method_found: logger.error( "No SSL/TLS method enabled. " "Example: Use --tls10 to enable TLS 1.0" ) return 1 for module in args.scan: name, sep, options = module.partition(":") try: scanner.append_load(name, options, base_class=BaseScan) except ModuleNotFound as e: logger.error("Scan module '%s' not found", e.name) return 1 for module in args.report: name, sep, options = module.partition(":") try: scanner.append_load(name, options, base_class=BaseReport) except ModuleNotFound as e: logger.error("Report module '%s' not found", e.name) return 1 except OptionValueError as e: logger.error( "An error occurred while setting the value of the configuration" " option '{1}' to '{2}' for module '{0}'.".format( name, e.option.name, e.value ) ) return 1 for host_uri in args.host_uris: module = scanner.load_handler_from_uri(host_uri) scanner.set_handler(module) scanner.run() return 0
def run_scan(args): load_modules() scanner = Scanner() # Enable groups of methods if args.enable_ssl: for name in ["ssl2", "ssl3"]: scanner.config.set_value(name, True) if args.enable_tls: for name in ["tls10", "tls11", "tls12"]: scanner.config.set_value(name, True) args_dict = vars(args) opt_names = ["ssl2", "ssl3", "tls10", "tls11", "tls12", "dtls10", "dtls12"] for name in list(opt_names): opt_names.append("no-%s" % name) for name in opt_names: if name not in args_dict: continue if not args_dict.get(name): continue logger.debug("Set %s = %s", name, str(args_dict.get(name))) scanner.config.set_value(name, True) if len(args.scan) == 0: logger.error("No scan module specified") return 1 enabled_ssl_method_found = False for name in ["ssl2", "ssl3", "tls10", "tls11", "tls12"]: if scanner.config.get_value(name): enabled_ssl_method_found = True break enabled_dtls_method_found = False for name in ["dtls10", "dtls12"]: if scanner.config.get_value(name): enabled_dtls_method_found = True break if not enabled_ssl_method_found and not enabled_dtls_method_found: logger.error("No SSL/TLS or DTLS method enabled. " "Example: Use --tls10 to enable TLS 1.0") return 1 if enabled_ssl_method_found and enabled_dtls_method_found: logger.error("SSL/TLS and DTLS are not compatible.") return 1 for module in args.scan: name, sep, options = module.partition(":") try: scanner.append_load(name, options, base_class=BaseScan) except ModuleNotFound as e: logger.error("Scan module '%s' not found", e.name) return 1 except ModuleLoadStatus as e: status_msg = "unknown" if e.module: status_msg = STATUS_NAMES.get(e.module.status, status_msg) logger.error("Unable to load module '%s' with status '%s'", e.name, status_msg) return 1 except ConfigOptionNotFound as e: logger.error( "Unrecognised command line option '%s' for scan module '%s'.", e.name, name) return 1 reports = args.report if len(reports) == 0: default_report = "term:rating=builtin.0_5" logger.debug("No report module specified. Using: %s" % default_report) reports.append(default_report) for module in reports: name, sep, options = module.partition(":") try: scanner.append_load(name, options, base_class=BaseReport) except ModuleNotFound as e: logger.error("Report module '%s' not found", e.name) return 1 except ModuleLoadStatus as e: status_msg = "unknown" if e.module: status_msg = STATUS_NAMES.get(e.module.status, status_msg) logger.error("Unable to load module '%s' with status '%s'", e.name, status_msg) return 1 except OptionValueError as e: logger.error( "An error occurred while setting the value of the configuration" " option '{1}' to '{2}' for module '{0}'.".format( name, e.option.name, e.value)) return 1 except ConfigOptionNotFound as e: logger.error( "Unrecognised command line option '%s' for report module '%s'.", e.name, name) return 1 for host_uri in args.host_uris: module = scanner.load_handler_from_uri(host_uri) scanner.set_handler(module) scanner.reset_knowledge_base() scanner.run() return 0
def run_scan(args): load_modules() scanner = Scanner() # Enable groups of methods if args.enable_ssl: for name in ["ssl2", "ssl3"]: scanner.config.set_value(name, True) if args.enable_tls: for name in ["tls10", "tls11", "tls12"]: scanner.config.set_value(name, True) args_dict = vars(args) opt_names = ["ssl2", "ssl3", "tls10", "tls11", "tls12", "dtls10", "dtls12"] for name in list(opt_names): opt_names.append("no-%s" % name) for name in opt_names: if name not in args_dict: continue if not args_dict.get(name): continue logger.debug("Set %s = %s", name, str(args_dict.get(name))) scanner.config.set_value(name, True) if len(args.scan) == 0: logger.error("No scan module specified") return 1 enabled_ssl_method_found = False for name in ["ssl2", "ssl3", "tls10", "tls11", "tls12"]: if scanner.config.get_value(name): enabled_ssl_method_found = True break enabled_dtls_method_found = False for name in ["dtls10", "dtls12"]: if scanner.config.get_value(name): enabled_dtls_method_found = True break if not enabled_ssl_method_found and not enabled_dtls_method_found: logger.error( "No SSL/TLS or DTLS method enabled. " "Example: Use --tls10 to enable TLS 1.0" ) return 1 if enabled_ssl_method_found and enabled_dtls_method_found: logger.error( "SSL/TLS and DTLS are not compatible." ) return 1 for module in args.scan: name, sep, options = module.partition(":") try: scanner.append_load(name, options, base_class=BaseScan) except ModuleNotFound as e: logger.error("Scan module '%s' not found", e.name) return 1 except ModuleLoadStatus as e: status_msg = "unknown" if e.module: status_msg = STATUS_NAMES.get(e.module.status, status_msg) logger.error("Unable to load module '%s' with status '%s'", e.name, status_msg) return 1 except ConfigOptionNotFound as e: logger.error( "Unrecognised command line option '%s' for scan module '%s'.", e.name, name ) return 1 reports = args.report if len(reports) == 0: default_report = "term:rating=builtin.0_5" logger.debug( "No report module specified. Using: %s" % default_report ) reports.append(default_report) for module in reports: name, sep, options = module.partition(":") try: scanner.append_load(name, options, base_class=BaseReport) except ModuleNotFound as e: logger.error("Report module '%s' not found", e.name) return 1 except ModuleLoadStatus as e: status_msg = "unknown" if e.module: status_msg = STATUS_NAMES.get(e.module.status, status_msg) logger.error("Unable to load module '%s' with status '%s'", e.name, status_msg) return 1 except OptionValueError as e: logger.error( "An error occurred while setting the value of the configuration" " option '{1}' to '{2}' for module '{0}'.".format( name, e.option.name, e.value ) ) return 1 except ConfigOptionNotFound as e: logger.error( "Unrecognised command line option '%s' for report module '%s'.", e.name, name ) return 1 for host_uri in args.host_uris: module = scanner.load_handler_from_uri(host_uri) scanner.set_handler(module) scanner.reset_knowledge_base() scanner.run() return 0