(self)
| 37 | _module_threads = 4 |
| 38 | |
| 39 | async def setup(self): |
| 40 | self.event_dict = {} |
| 41 | self.interactsh_subdomain_tags = {} |
| 42 | self.interactsh_instance = None |
| 43 | self.interactsh_domain = None |
| 44 | self.disable_post = self.config.get("disable_post", False) |
| 45 | self.try_post_as_get = self.config.get("try_post_as_get", False) |
| 46 | self.try_get_as_post = self.config.get("try_get_as_post", False) |
| 47 | self.enabled_submodules = self.config.get("enabled_submodules") |
| 48 | self.interactsh_disable = self.scan.config.get("interactsh_disable", False) |
| 49 | self.avoid_wafs = self.scan.config.get("avoid_wafs", True) |
| 50 | self.submodules = {} |
| 51 | |
| 52 | if not self.enabled_submodules: |
| 53 | return False, "Lightfuzz enabled without any submodules. Must enable at least one submodule." |
| 54 | |
| 55 | for submodule_name in self.enabled_submodules: |
| 56 | try: |
| 57 | submodule_module = importlib.import_module(f"bbot.modules.lightfuzz.submodules.{submodule_name}") |
| 58 | submodule_class = getattr(submodule_module, submodule_name) |
| 59 | except ImportError: |
| 60 | return False, f"Invalid Lightfuzz submodule ({submodule_name}) specified in enabled_modules" |
| 61 | self.submodules[submodule_name] = submodule_class |
| 62 | |
| 63 | interactsh_needed = any(submodule.uses_interactsh for submodule in self.submodules.values()) |
| 64 | if interactsh_needed and not self.interactsh_disable: |
| 65 | try: |
| 66 | self.interactsh_instance = self.helpers.interactsh() |
| 67 | self.interactsh_domain = await self.interactsh_instance.register(callback=self.interactsh_callback) |
| 68 | if not self.interactsh_domain: |
| 69 | self.warning("Interactsh failure: No domain returned from self.interactsh_instance.register()") |
| 70 | self.interactsh_instance = None |
| 71 | except InteractshError as e: |
| 72 | self.warning(f"Interactsh failure: {e}") |
| 73 | self.interactsh_instance = None |
| 74 | return True |
| 75 | |
| 76 | async def interactsh_callback(self, r): |
| 77 | full_id = r.get("full-id", None) |
nothing calls this directly
no test coverage detected