def _init_passive(self): self._init_report() print(_("[*] Loading modules:")) modules_list = sorted(module_name[4:] for module_name in passive.modules) print("\t {0}".format(", ".join(modules_list))) # Init output file for report (can be found in the attack() function too) if not self.output_file: if self.report_generator_type == "html": self.output_file = self.COPY_REPORT_DIR else: filename = "{}_{}".format( self.server.replace(":", "_"), strftime("%m%d%Y_%H%M", self.report_gen.scan_date)) if self.report_generator_type == "txt": extension = ".txt" elif self.report_generator_type == "json": extension = ".json" else: extension = ".xml" self.output_file = filename + extension logger = ConsoleLogger() if self.color: logger.color = True for mod_name in passive.modules: passive_module = import_module("wapitiCore.passive." + mod_name) instance = getattr(passive_module, mod_name)(self.persister, logger) self.passive.append(instance) instance.log_green(_("[*] Loading passive module {0}"), instance.name)
def update(self): """Update modules that implement an update method""" logger = ConsoleLogger() if self.color: logger.color = True for mod_name in attack.modules: mod = import_module("wapitiCore.attack." + mod_name) mod_instance = getattr(mod, mod_name)(self.crawler, self.persister, logger, self.attack_options) if hasattr(mod_instance, "update"): print(_("Updating module {0}").format(mod_name[4:])) mod_instance.update() print(_("Update done."))
def _init_attacks(self): self._init_report() logger = ConsoleLogger() if self.color: logger.color = True print(_("[*] Loading modules:")) modules_list = sorted(module_name[4:] for module_name in attack.modules) print("\t {0}".format(", ".join(modules_list))) for mod_name in attack.modules: try: mod = import_module("wapitiCore.attack." + mod_name) except ImportError: print(_("[!] Could not find module {0}").format(mod_name)) continue mod_instance = getattr(mod, mod_name)(self.crawler, self.persister, logger, self.attack_options) if hasattr(mod_instance, "set_timeout"): mod_instance.set_timeout(self.crawler.timeout) self.attacks.append(mod_instance) self.attacks.sort(key=attrgetter("PRIORITY")) for attack_module in self.attacks: attack_module.set_verbose(self.verbose) if attack_module.name not in attack.commons: attack_module.do_get = False attack_module.do_post = False if self.color == 1: attack_module.set_color() # Custom list of modules was specified if self.module_options is not None: # First deactivate all modules for attack_module in self.attacks: attack_module.do_get = False attack_module.do_post = False opts = self.module_options.split(",") for module_opt in opts: if module_opt.strip() == "": continue method = "" if module_opt.find(":") > 0: module_name, method = module_opt.split(":", 1) else: module_name = module_opt # deactivate some module options if module_name.startswith("-"): module_name = module_name[1:] if module_name in ("all", "common"): for attack_module in self.attacks: if module_name == "all" or attack_module.name in attack.commons: if not method: attack_module.do_get = attack_module.do_post = False elif method == "get": attack_module.do_get = False elif method == "post": attack_module.do_post = False else: found = False for attack_module in self.attacks: if attack_module.name == module_name: found = True if not method: attack_module.do_get = attack_module.do_post = False elif method == "get": attack_module.do_get = False elif method == "post": attack_module.do_post = False if not found: print( _("[!] Unable to find a module named {0}"). format(module_name)) # activate some module options else: if module_name.startswith("+"): module_name = module_name[1:] if module_name in ("all", "common"): for attack_module in self.attacks: if module_name == "all" or attack_module.name in attack.commons: if not method: attack_module.do_get = attack_module.do_post = True elif method == "get": attack_module.do_get = True elif method == "post": attack_module.do_post = True else: found = False for attack_module in self.attacks: if attack_module.name == module_name: found = True if not method: attack_module.do_get = attack_module.do_post = True elif method == "get": attack_module.do_get = True elif method == "post": attack_module.do_post = True if not found: print( _("[!] Unable to find a module named {0}"). format(module_name))
def __init_attacks(self): self.__init_report() logger = ConsoleLogger() if self.color: logger.color = True print(_("[*] Loading modules:")) print("\t {0}".format(", ".join(attack.modules))) for mod_name in attack.modules: mod = import_module("wapitiCore.attack." + mod_name) # NICO self.report_gen -> self.sqlite_persister mod_instance = getattr(mod, mod_name)(self.crawler, self.persister, logger, self.attack_options) if hasattr(mod_instance, "set_timeout"): mod_instance.set_timeout(self.crawler.timeout) self.attacks.append(mod_instance) self.attacks.sort(key=attrgetter("PRIORITY")) for attack_module in self.attacks: attack_module.set_verbose(self.verbose) if self.color == 1: attack_module.set_color() # Custom list of modules was specified if self.module_options is not None: # First deactivate all modules for attack_module in self.attacks: attack_module.do_get = False attack_module.do_post = False opts = self.module_options.split(",") for opt in opts: if opt.strip() == "": continue method = "" if opt.find(":") > 0: module_name, method = opt.split(":", 1) else: module_name = opt # deactivate some module options if module_name.startswith("-"): module_name = module_name[1:] if module_name == "all": for attack_module in self.attacks: if attack_module.name in attack.commons: if method == "get" or method == "": attack_module.do_get = False if method == "post" or method == "": attack_module.do_post = False else: found = False for attack_module in self.attacks: if attack_module.name == module_name: found = True if method == "get" or method == "": attack_module.do_get = False if method == "post" or method == "": attack_module.do_post = False if not found: print( _("[!] Unable to find a module named {0}"). format(module_name)) # activate some module options else: if module_name.startswith("+"): module_name = module_name[1:] if module_name == "all": print( _("[!] Keyword 'all' was removed for activation. Use 'common' and modules names instead." )) elif module_name == "common": for attack_module in self.attacks: if attack_module.name in attack.commons: if method == "get" or method == "": attack_module.do_get = True if method == "post" or method == "": attack_module.do_post = True else: found = False for attack_module in self.attacks: if attack_module.name == module_name: found = True if method == "get" or method == "": attack_module.do_get = True if method == "post" or method == "": attack_module.do_post = True if not found: print( _("[!] Unable to find a module named {0}"). format(module_name))