From 0098faf860d8f323523da2e1ed594fbde7096182 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Tue, 28 Jan 2025 11:34:54 -0500 Subject: [PATCH 01/77] new module: aspnet_bin_exposure --- bbot/modules/aspnet_bin_exposure.py | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 bbot/modules/aspnet_bin_exposure.py diff --git a/bbot/modules/aspnet_bin_exposure.py b/bbot/modules/aspnet_bin_exposure.py new file mode 100644 index 0000000000..676339c3d5 --- /dev/null +++ b/bbot/modules/aspnet_bin_exposure.py @@ -0,0 +1,52 @@ +from bbot.modules.base import BaseModule + +class aspnet_bin_exposure(BaseModule): + watched_events = ["URL"] + produced_events = ["VULNERABILITY"] + flags = ["active", "safe", "web-thorough"] + meta = { + "description": "Check for ASP.NET Security Feature Bypasses (CVE-2023-36899 and CVE-2023-36560)", + "created_date": "2025-01-28", + "author": "@liquidsec", + } + + in_scope_only = True + test_dlls = ["Telerik.Web.UI.dll", "Newtonsoft.Json.dll", "System.Net.Http.dll", "EntityFramework.dll", "AjaxControlToolkit.dll"] + + async def setup(self): + self.scanned_tracker = set() + return True + + @staticmethod + def normalize_url(url): + return str(url.rstrip("/") + "/").lower() + + async def handle_event(self, event): + + normalized_url = self.normalize_url(event.data) + self.scanned_tracker.add(normalized_url) + for test_dll in self.test_dlls: + for technique in ["b/(S(X))in/###DLL_PLACEHOLDER###/(S(X))/","(S(X))/b/(S(X))in/###DLL_PLACEHOLDER###"]: + + test_url = f"{normalized_url}{technique.replace("###DLL_PLACEHOLDER###",test_dll)}" + self.debug(f"Sending test URL: [{test_url}]") + kwargs = {"method": "GET", "allow_redirects": False, "timeout": 10} + test_result = await self.helpers.request(test_url, **kwargs) + if test_result: + if test_result.status_code == 200 and ('content-type' in test_result.headers and 'application/x-msdownload' in test_result.headers['content-type']): + self.debug(f"Got positive result for probe with test url: [{test_url}]. Status Code: [{test_result.status_code}] Content Length: [{len(test_result.content)}]") + description = f"IIS Bin Directory DLL Exposure. Detection Url: [{test_url}]" + await self.emit_event( + {"severity": "HIGH", "host": str(event.host), "url": normalized_url, "description": description}, + "VULNERABILITY", + event, + context="{module} detected IIS Bin Directory DLL Exposure vulnerability", + ) + return True + + async def filter_event(self, event): + if "dir" in event.tags: + if self.normalize_url(event.data) not in self.scanned_tracker: + return True + return False + return False From 1dc671647479aea9f1dbab2d536f2cb9f2847c1f Mon Sep 17 00:00:00 2001 From: liquidsec Date: Tue, 28 Jan 2025 11:35:59 -0500 Subject: [PATCH 02/77] adding aspnet_bin_exposure to dotnet-audit preset --- bbot/presets/web/dotnet-audit.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/bbot/presets/web/dotnet-audit.yml b/bbot/presets/web/dotnet-audit.yml index b1cd8e9cac..0186cd3ffe 100644 --- a/bbot/presets/web/dotnet-audit.yml +++ b/bbot/presets/web/dotnet-audit.yml @@ -12,6 +12,7 @@ modules: - telerik - ajaxpro - dotnetnuke + - aspnet_bin_exposure config: modules: From 0f93014cab59a245da00fee26b560e851cc7e7dd Mon Sep 17 00:00:00 2001 From: liquidsec Date: Tue, 28 Jan 2025 23:02:39 -0500 Subject: [PATCH 03/77] formatting --- bbot/modules/aspnet_bin_exposure.py | 31 +++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/bbot/modules/aspnet_bin_exposure.py b/bbot/modules/aspnet_bin_exposure.py index 676339c3d5..f387bfb7c5 100644 --- a/bbot/modules/aspnet_bin_exposure.py +++ b/bbot/modules/aspnet_bin_exposure.py @@ -1,5 +1,6 @@ from bbot.modules.base import BaseModule + class aspnet_bin_exposure(BaseModule): watched_events = ["URL"] produced_events = ["VULNERABILITY"] @@ -11,7 +12,13 @@ class aspnet_bin_exposure(BaseModule): } in_scope_only = True - test_dlls = ["Telerik.Web.UI.dll", "Newtonsoft.Json.dll", "System.Net.Http.dll", "EntityFramework.dll", "AjaxControlToolkit.dll"] + test_dlls = [ + "Telerik.Web.UI.dll", + "Newtonsoft.Json.dll", + "System.Net.Http.dll", + "EntityFramework.dll", + "AjaxControlToolkit.dll", + ] async def setup(self): self.scanned_tracker = set() @@ -22,22 +29,30 @@ def normalize_url(url): return str(url.rstrip("/") + "/").lower() async def handle_event(self, event): - normalized_url = self.normalize_url(event.data) self.scanned_tracker.add(normalized_url) for test_dll in self.test_dlls: - for technique in ["b/(S(X))in/###DLL_PLACEHOLDER###/(S(X))/","(S(X))/b/(S(X))in/###DLL_PLACEHOLDER###"]: - - test_url = f"{normalized_url}{technique.replace("###DLL_PLACEHOLDER###",test_dll)}" + for technique in ["b/(S(X))in/###DLL_PLACEHOLDER###/(S(X))/", "(S(X))/b/(S(X))in/###DLL_PLACEHOLDER###"]: + test_url = f"{normalized_url}{technique.replace('###DLL_PLACEHOLDER###', test_dll)}" self.debug(f"Sending test URL: [{test_url}]") kwargs = {"method": "GET", "allow_redirects": False, "timeout": 10} test_result = await self.helpers.request(test_url, **kwargs) if test_result: - if test_result.status_code == 200 and ('content-type' in test_result.headers and 'application/x-msdownload' in test_result.headers['content-type']): - self.debug(f"Got positive result for probe with test url: [{test_url}]. Status Code: [{test_result.status_code}] Content Length: [{len(test_result.content)}]") + if test_result.status_code == 200 and ( + "content-type" in test_result.headers + and "application/x-msdownload" in test_result.headers["content-type"] + ): + self.debug( + f"Got positive result for probe with test url: [{test_url}]. Status Code: [{test_result.status_code}] Content Length: [{len(test_result.content)}]" + ) description = f"IIS Bin Directory DLL Exposure. Detection Url: [{test_url}]" await self.emit_event( - {"severity": "HIGH", "host": str(event.host), "url": normalized_url, "description": description}, + { + "severity": "HIGH", + "host": str(event.host), + "url": normalized_url, + "description": description, + }, "VULNERABILITY", event, context="{module} detected IIS Bin Directory DLL Exposure vulnerability", From cea9cff752415c7497bb511ae2f75b1dc66d75e2 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Wed, 29 Jan 2025 23:08:55 -0500 Subject: [PATCH 04/77] add confirmation check --- bbot/modules/aspnet_bin_exposure.py | 40 +++++++++++++++++++---------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/bbot/modules/aspnet_bin_exposure.py b/bbot/modules/aspnet_bin_exposure.py index f387bfb7c5..153559735d 100644 --- a/bbot/modules/aspnet_bin_exposure.py +++ b/bbot/modules/aspnet_bin_exposure.py @@ -45,19 +45,33 @@ async def handle_event(self, event): self.debug( f"Got positive result for probe with test url: [{test_url}]. Status Code: [{test_result.status_code}] Content Length: [{len(test_result.content)}]" ) - description = f"IIS Bin Directory DLL Exposure. Detection Url: [{test_url}]" - await self.emit_event( - { - "severity": "HIGH", - "host": str(event.host), - "url": normalized_url, - "description": description, - }, - "VULNERABILITY", - event, - context="{module} detected IIS Bin Directory DLL Exposure vulnerability", - ) - return True + + + + if test_result.status_code == 200 and ( + "content-type" in test_result.headers + and "application/x-msdownload" in test_result.headers["content-type"] + ): + confirm_url = f"{normalized_url}{technique.replace('###DLL_PLACEHOLDER###', 'oopsnotarealdll.dll')}" + confirm_result = await self.helpers.request(confirm_url, **kwargs) + + if confirm_result and (confirm_result.status_code != 200 or not ( + "content-type" in confirm_result.headers and + "application/x-msdownload" in confirm_result.headers["content-type"] + )): + description = f"IIS Bin Directory DLL Exposure. Detection Url: [{test_url}]" + await self.emit_event( + { + "severity": "HIGH", + "host": str(event.host), + "url": normalized_url, + "description": description, + }, + "VULNERABILITY", + event, + context="{module} detected IIS Bin Directory DLL Exposure vulnerability", + ) + return True async def filter_event(self, event): if "dir" in event.tags: From 556ffbee094460852ec66ddc9e0e39ffa51cdf2b Mon Sep 17 00:00:00 2001 From: Giardi Date: Sat, 17 May 2025 21:59:57 +0200 Subject: [PATCH 05/77] added scope_distance options for hunt module --- bbot/modules/hunt.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bbot/modules/hunt.py b/bbot/modules/hunt.py index bfd5c63200..814b22eab0 100644 --- a/bbot/modules/hunt.py +++ b/bbot/modules/hunt.py @@ -279,8 +279,12 @@ class hunt(BaseModule): "author": "@liquidsec", "created_date": "2022-07-20", } - # accept all events regardless of scope distance - scope_distance_modifier = None + # accept all events regardless of scope distance by default + options = {"scope_distance_modifier": None} + + async def setup(self): + self.scope_distance_modifier = self.config.get("scope_distance", None) + return True async def handle_event(self, event): p = event.data["name"] From 5a12c26e888a3e249ed74deea2f8230e83922c1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 04:44:14 +0000 Subject: [PATCH 06/77] Bump pytest-rerunfailures from 15.0 to 15.1 Bumps [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures) from 15.0 to 15.1. - [Changelog](https://github.com/pytest-dev/pytest-rerunfailures/blob/master/CHANGES.rst) - [Commits](https://github.com/pytest-dev/pytest-rerunfailures/compare/15.0...15.1) --- updated-dependencies: - dependency-name: pytest-rerunfailures dependency-version: '15.1' dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5b5329af9b..77a20b96af 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2103,14 +2103,14 @@ testing = ["pytest-asyncio (==0.24.*)", "pytest-cov (==6.*)"] [[package]] name = "pytest-rerunfailures" -version = "15.0" +version = "15.1" description = "pytest plugin to re-run tests to eliminate flaky failures" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest-rerunfailures-15.0.tar.gz", hash = "sha256:2d9ac7baf59f4c13ac730b47f6fa80e755d1ba0581da45ce30b72fb3542b4474"}, - {file = "pytest_rerunfailures-15.0-py3-none-any.whl", hash = "sha256:dd150c4795c229ef44320adc9a0c0532c51b78bb7a6843a8c53556b9a611df1a"}, + {file = "pytest_rerunfailures-15.1-py3-none-any.whl", hash = "sha256:f674c3594845aba8b23c78e99b1ff8068556cc6a8b277f728071fdc4f4b0b355"}, + {file = "pytest_rerunfailures-15.1.tar.gz", hash = "sha256:c6040368abd7b8138c5b67288be17d6e5611b7368755ce0465dda0362c8ece80"}, ] [package.dependencies] @@ -3131,6 +3131,10 @@ groups = ["main"] files = [ {file = "yara_python-4.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20aee068c8f14e8ebb40ebf03e7e2c14031736fbf6f32fca58ad89d211e4aaa0"}, {file = "yara_python-4.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9899c3a80e6c543585daf49c5b06ba5987e2f387994a5455d841262ea6e8577c"}, + {file = "yara_python-4.5.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:399bb09f81d38876a06e269f68bbe810349aa0bb47fe79866ea3fc58ce38d30f"}, + {file = "yara_python-4.5.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:c78608c6bf3d2c379514b1c118a104874df1844bf818087e1bf6bfec0edfd1aa"}, + {file = "yara_python-4.5.2-cp310-cp310-macosx_15_0_arm64.whl", hash = "sha256:f25db30f8ae88a4355e5090a5d6191ee6f2abfdd529b3babc68a1faeba7c2ac8"}, + {file = "yara_python-4.5.2-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:f2866c0b8404086c5acb68cab20854d439009a1b02077aca22913b96138d2f6a"}, {file = "yara_python-4.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fc5abddf8767ca923a5a88b38b8057d4fab039323d5c6b2b5be6cba5e6e7350"}, {file = "yara_python-4.5.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc2216bc73d4918012a4b270a93f9042445c7246b4a668a1bea220fbf64c7990"}, {file = "yara_python-4.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5558325eb7366f610a06e8c7c4845062d6880ee88f1fbc35e92fae333c3333c"}, From d5ce210696b43e6f7fab97bc1114ad6a0ad7e9b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 04:45:16 +0000 Subject: [PATCH 07/77] Bump pycryptodome from 3.22.0 to 3.23.0 Bumps [pycryptodome](https://github.com/Legrandin/pycryptodome) from 3.22.0 to 3.23.0. - [Release notes](https://github.com/Legrandin/pycryptodome/releases) - [Changelog](https://github.com/Legrandin/pycryptodome/blob/master/Changelog.rst) - [Commits](https://github.com/Legrandin/pycryptodome/compare/v3.22.0...v3.23.0) --- updated-dependencies: - dependency-name: pycryptodome dependency-version: 3.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 76 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5b5329af9b..2586e379b5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1749,41 +1749,53 @@ files = [ [[package]] name = "pycryptodome" -version = "3.22.0" +version = "3.23.0" description = "Cryptographic library for Python" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["main"] files = [ - {file = "pycryptodome-3.22.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:96e73527c9185a3d9b4c6d1cfb4494f6ced418573150be170f6580cb975a7f5a"}, - {file = "pycryptodome-3.22.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:9e1bb165ea1dc83a11e5dbbe00ef2c378d148f3a2d3834fb5ba4e0f6fd0afe4b"}, - {file = "pycryptodome-3.22.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:d4d1174677855c266eed5c4b4e25daa4225ad0c9ffe7584bb1816767892545d0"}, - {file = "pycryptodome-3.22.0-cp27-cp27m-win32.whl", hash = "sha256:9dbb749cef71c28271484cbef684f9b5b19962153487735411e1020ca3f59cb1"}, - {file = "pycryptodome-3.22.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f1ae7beb64d4fc4903a6a6cca80f1f448e7a8a95b77d106f8a29f2eb44d17547"}, - {file = "pycryptodome-3.22.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:a26bcfee1293b7257c83b0bd13235a4ee58165352be4f8c45db851ba46996dc6"}, - {file = "pycryptodome-3.22.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:009e1c80eea42401a5bd5983c4bab8d516aef22e014a4705622e24e6d9d703c6"}, - {file = "pycryptodome-3.22.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3b76fa80daeff9519d7e9f6d9e40708f2fce36b9295a847f00624a08293f4f00"}, - {file = "pycryptodome-3.22.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a31fa5914b255ab62aac9265654292ce0404f6b66540a065f538466474baedbc"}, - {file = "pycryptodome-3.22.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0092fd476701eeeb04df5cc509d8b739fa381583cda6a46ff0a60639b7cd70d"}, - {file = "pycryptodome-3.22.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18d5b0ddc7cf69231736d778bd3ae2b3efb681ae33b64b0c92fb4626bb48bb89"}, - {file = "pycryptodome-3.22.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f6cf6aa36fcf463e622d2165a5ad9963b2762bebae2f632d719dfb8544903cf5"}, - {file = "pycryptodome-3.22.0-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:aec7b40a7ea5af7c40f8837adf20a137d5e11a6eb202cde7e588a48fb2d871a8"}, - {file = "pycryptodome-3.22.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d21c1eda2f42211f18a25db4eaf8056c94a8563cd39da3683f89fe0d881fb772"}, - {file = "pycryptodome-3.22.0-cp37-abi3-win32.whl", hash = "sha256:f02baa9f5e35934c6e8dcec91fcde96612bdefef6e442813b8ea34e82c84bbfb"}, - {file = "pycryptodome-3.22.0-cp37-abi3-win_amd64.whl", hash = "sha256:d086aed307e96d40c23c42418cbbca22ecc0ab4a8a0e24f87932eeab26c08627"}, - {file = "pycryptodome-3.22.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:98fd9da809d5675f3a65dcd9ed384b9dc67edab6a4cda150c5870a8122ec961d"}, - {file = "pycryptodome-3.22.0-pp27-pypy_73-win32.whl", hash = "sha256:37ddcd18284e6b36b0a71ea495a4c4dca35bb09ccc9bfd5b91bfaf2321f131c1"}, - {file = "pycryptodome-3.22.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b4bdce34af16c1dcc7f8c66185684be15f5818afd2a82b75a4ce6b55f9783e13"}, - {file = "pycryptodome-3.22.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2988ffcd5137dc2d27eb51cd18c0f0f68e5b009d5fec56fbccb638f90934f333"}, - {file = "pycryptodome-3.22.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e653519dedcd1532788547f00eeb6108cc7ce9efdf5cc9996abce0d53f95d5a9"}, - {file = "pycryptodome-3.22.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5810bc7494e4ac12a4afef5a32218129e7d3890ce3f2b5ec520cc69eb1102ad"}, - {file = "pycryptodome-3.22.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e7514a1aebee8e85802d154fdb261381f1cb9b7c5a54594545145b8ec3056ae6"}, - {file = "pycryptodome-3.22.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:56c6f9342fcb6c74e205fbd2fee568ec4cdbdaa6165c8fde55dbc4ba5f584464"}, - {file = "pycryptodome-3.22.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87a88dc543b62b5c669895caf6c5a958ac7abc8863919e94b7a6cafd2f64064f"}, - {file = "pycryptodome-3.22.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7a683bc9fa585c0dfec7fa4801c96a48d30b30b096e3297f9374f40c2fedafc"}, - {file = "pycryptodome-3.22.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f4f6f47a7f411f2c157e77bbbda289e0c9f9e1e9944caa73c1c2e33f3f92d6e"}, - {file = "pycryptodome-3.22.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6cf9553b29624961cab0785a3177a333e09e37ba62ad22314ebdbb01ca79840"}, - {file = "pycryptodome-3.22.0.tar.gz", hash = "sha256:fd7ab568b3ad7b77c908d7c3f7e167ec5a8f035c64ff74f10d47a4edd043d723"}, + {file = "pycryptodome-3.23.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a176b79c49af27d7f6c12e4b178b0824626f40a7b9fed08f712291b6d54bf566"}, + {file = "pycryptodome-3.23.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:573a0b3017e06f2cffd27d92ef22e46aa3be87a2d317a5abf7cc0e84e321bd75"}, + {file = "pycryptodome-3.23.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:63dad881b99ca653302b2c7191998dd677226222a3f2ea79999aa51ce695f720"}, + {file = "pycryptodome-3.23.0-cp27-cp27m-win32.whl", hash = "sha256:b34e8e11d97889df57166eda1e1ddd7676da5fcd4d71a0062a760e75060514b4"}, + {file = "pycryptodome-3.23.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7ac1080a8da569bde76c0a104589c4f414b8ba296c0b3738cf39a466a9fb1818"}, + {file = "pycryptodome-3.23.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6fe8258e2039eceb74dfec66b3672552b6b7d2c235b2dfecc05d16b8921649a8"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:0011f7f00cdb74879142011f95133274741778abba114ceca229adbf8e62c3e4"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:90460fc9e088ce095f9ee8356722d4f10f86e5be06e2354230a9880b9c549aae"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4764e64b269fc83b00f682c47443c2e6e85b18273712b98aa43bcb77f8570477"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb8f24adb74984aa0e5d07a2368ad95276cf38051fe2dc6605cbcf482e04f2a7"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d97618c9c6684a97ef7637ba43bdf6663a2e2e77efe0f863cce97a76af396446"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9a53a4fe5cb075075d515797d6ce2f56772ea7e6a1e5e4b96cf78a14bac3d265"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:763d1d74f56f031788e5d307029caef067febf890cd1f8bf61183ae142f1a77b"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:954af0e2bd7cea83ce72243b14e4fb518b18f0c1649b576d114973e2073b273d"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-win32.whl", hash = "sha256:257bb3572c63ad8ba40b89f6fc9d63a2a628e9f9708d31ee26560925ebe0210a"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-win_amd64.whl", hash = "sha256:6501790c5b62a29fcb227bd6b62012181d886a767ce9ed03b303d1f22eb5c625"}, + {file = "pycryptodome-3.23.0-cp313-cp313t-win_arm64.whl", hash = "sha256:9a77627a330ab23ca43b48b130e202582e91cc69619947840ea4d2d1be21eb39"}, + {file = "pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:187058ab80b3281b1de11c2e6842a357a1f71b42cb1e15bce373f3d238135c27"}, + {file = "pycryptodome-3.23.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cfb5cd445280c5b0a4e6187a7ce8de5a07b5f3f897f235caa11f1f435f182843"}, + {file = "pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67bd81fcbe34f43ad9422ee8fd4843c8e7198dd88dd3d40e6de42ee65fbe1490"}, + {file = "pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8987bd3307a39bc03df5c8e0e3d8be0c4c3518b7f044b0f4c15d1aa78f52575"}, + {file = "pycryptodome-3.23.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa0698f65e5b570426fc31b8162ed4603b0c2841cbb9088e2b01641e3065915b"}, + {file = "pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:53ecbafc2b55353edcebd64bf5da94a2a2cdf5090a6915bcca6eca6cc452585a"}, + {file = "pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:156df9667ad9f2ad26255926524e1c136d6664b741547deb0a86a9acf5ea631f"}, + {file = "pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:dea827b4d55ee390dc89b2afe5927d4308a8b538ae91d9c6f7a5090f397af1aa"}, + {file = "pycryptodome-3.23.0-cp37-abi3-win32.whl", hash = "sha256:507dbead45474b62b2bbe318eb1c4c8ee641077532067fec9c1aa82c31f84886"}, + {file = "pycryptodome-3.23.0-cp37-abi3-win_amd64.whl", hash = "sha256:c75b52aacc6c0c260f204cbdd834f76edc9fb0d8e0da9fbf8352ef58202564e2"}, + {file = "pycryptodome-3.23.0-cp37-abi3-win_arm64.whl", hash = "sha256:11eeeb6917903876f134b56ba11abe95c0b0fd5e3330def218083c7d98bbcb3c"}, + {file = "pycryptodome-3.23.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:350ebc1eba1da729b35ab7627a833a1a355ee4e852d8ba0447fafe7b14504d56"}, + {file = "pycryptodome-3.23.0-pp27-pypy_73-win32.whl", hash = "sha256:93837e379a3e5fd2bb00302a47aee9fdf7940d83595be3915752c74033d17ca7"}, + {file = "pycryptodome-3.23.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ddb95b49df036ddd264a0ad246d1be5b672000f12d6961ea2c267083a5e19379"}, + {file = "pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e95564beb8782abfd9e431c974e14563a794a4944c29d6d3b7b5ea042110b4"}, + {file = "pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14e15c081e912c4b0d75632acd8382dfce45b258667aa3c67caf7a4d4c13f630"}, + {file = "pycryptodome-3.23.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7fc76bf273353dc7e5207d172b83f569540fc9a28d63171061c42e361d22353"}, + {file = "pycryptodome-3.23.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:45c69ad715ca1a94f778215a11e66b7ff989d792a4d63b68dc586a1da1392ff5"}, + {file = "pycryptodome-3.23.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:865d83c906b0fc6a59b510deceee656b6bc1c4fa0d82176e2b77e97a420a996a"}, + {file = "pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89d4d56153efc4d81defe8b65fd0821ef8b2d5ddf8ed19df31ba2f00872b8002"}, + {file = "pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3f2d0aaf8080bda0587d58fc9fe4766e012441e2eed4269a77de6aea981c8be"}, + {file = "pycryptodome-3.23.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64093fc334c1eccfd3933c134c4457c34eaca235eeae49d69449dc4728079339"}, + {file = "pycryptodome-3.23.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ce64e84a962b63a47a592690bdc16a7eaf709d2c2697ababf24a0def566899a6"}, + {file = "pycryptodome-3.23.0.tar.gz", hash = "sha256:447700a657182d60338bab09fdb27518f8856aecd80ae4c6bdddb67ff5da44ef"}, ] [[package]] @@ -3131,6 +3143,10 @@ groups = ["main"] files = [ {file = "yara_python-4.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20aee068c8f14e8ebb40ebf03e7e2c14031736fbf6f32fca58ad89d211e4aaa0"}, {file = "yara_python-4.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9899c3a80e6c543585daf49c5b06ba5987e2f387994a5455d841262ea6e8577c"}, + {file = "yara_python-4.5.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:399bb09f81d38876a06e269f68bbe810349aa0bb47fe79866ea3fc58ce38d30f"}, + {file = "yara_python-4.5.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:c78608c6bf3d2c379514b1c118a104874df1844bf818087e1bf6bfec0edfd1aa"}, + {file = "yara_python-4.5.2-cp310-cp310-macosx_15_0_arm64.whl", hash = "sha256:f25db30f8ae88a4355e5090a5d6191ee6f2abfdd529b3babc68a1faeba7c2ac8"}, + {file = "yara_python-4.5.2-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:f2866c0b8404086c5acb68cab20854d439009a1b02077aca22913b96138d2f6a"}, {file = "yara_python-4.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fc5abddf8767ca923a5a88b38b8057d4fab039323d5c6b2b5be6cba5e6e7350"}, {file = "yara_python-4.5.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc2216bc73d4918012a4b270a93f9042445c7246b4a668a1bea220fbf64c7990"}, {file = "yara_python-4.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5558325eb7366f610a06e8c7c4845062d6880ee88f1fbc35e92fae333c3333c"}, From e3c327038412d691a4a08ba5c769529e4a97d854 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Tue, 3 Jun 2025 19:18:27 +0530 Subject: [PATCH 08/77] Fix broken chromium on M4 Mac --- bbot/core/helpers/misc.py | 4 ++-- bbot/modules/gowitness.py | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bbot/core/helpers/misc.py b/bbot/core/helpers/misc.py index a5bc8a2fca..0230e6f249 100644 --- a/bbot/core/helpers/misc.py +++ b/bbot/core/helpers/misc.py @@ -1300,7 +1300,7 @@ def make_netloc(host, port=None): return f"{host}:{port}" -def which(*executables): +def which(*executables, path=None): """Finds the full path of the first available executable from a list of executables. Args: @@ -1316,7 +1316,7 @@ def which(*executables): import shutil for e in executables: - location = shutil.which(e) + location = shutil.which(e, path=path) if location: return location diff --git a/bbot/modules/gowitness.py b/bbot/modules/gowitness.py index 6e3b2e19eb..d907d6e6f6 100644 --- a/bbot/modules/gowitness.py +++ b/bbot/modules/gowitness.py @@ -71,6 +71,10 @@ async def setup(self): custom_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome" if custom_chrome_path.is_file(): self.chrome_path = custom_chrome_path + config_chrome_path = self.config.get("chrome_path") + if config_chrome_path: + custom_chrome_path = config_chrome_path + self.chrome_path = Path(config_chrome_path) # fix ubuntu-specific sandbox bug chrome_devel_sandbox = self.helpers.tools_dir / "chrome-linux" / "chrome_sandbox" @@ -79,8 +83,8 @@ async def setup(self): # make sure we have a working chrome install chrome_test_pass = False - for binary in ("chrome", "chromium", "chromium-browser", custom_chrome_path): - binary_path = self.helpers.which(binary) + for binary in ("Google Chrome", "chrome", "chromium", "chromium-browser", custom_chrome_path): + binary_path = self.helpers.which(binary, path=custom_chrome_path) if binary_path and Path(binary_path).is_file(): chrome_test_proc = await self.run_process([binary_path, "--version"]) if getattr(chrome_test_proc, "returncode", 1) == 0: From 624a1e3ef795e20ec0534f07b65eadb3a545d4a8 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Tue, 3 Jun 2025 22:58:17 +0530 Subject: [PATCH 09/77] Respect PATH when searching for chrom(e/ium) --- bbot/modules/gowitness.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/bbot/modules/gowitness.py b/bbot/modules/gowitness.py index d907d6e6f6..ed39fe023c 100644 --- a/bbot/modules/gowitness.py +++ b/bbot/modules/gowitness.py @@ -68,13 +68,13 @@ async def setup(self): else: self.base_path = self.scan.home / "gowitness" self.chrome_path = None - custom_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome" - if custom_chrome_path.is_file(): - self.chrome_path = custom_chrome_path - config_chrome_path = self.config.get("chrome_path") - if config_chrome_path: - custom_chrome_path = config_chrome_path - self.chrome_path = Path(config_chrome_path) + + chrome_search_path = os.environ.get("PATH") + config_chrome_path = Path(self.config.get("chrome_path")) + if config_chrome_path.is_file(): + chrome_search_path = f"{config_chrome_path.parent}:{chrome_search_path}" + elif config_chrome_path.is_dir(): + chrome_search_path = f"{config_chrome_path}:{chrome_search_path}" # fix ubuntu-specific sandbox bug chrome_devel_sandbox = self.helpers.tools_dir / "chrome-linux" / "chrome_sandbox" @@ -83,12 +83,14 @@ async def setup(self): # make sure we have a working chrome install chrome_test_pass = False + custom_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome" for binary in ("Google Chrome", "chrome", "chromium", "chromium-browser", custom_chrome_path): - binary_path = self.helpers.which(binary, path=custom_chrome_path) + binary_path = self.helpers.which(binary, path=chrome_search_path) if binary_path and Path(binary_path).is_file(): chrome_test_proc = await self.run_process([binary_path, "--version"]) if getattr(chrome_test_proc, "returncode", 1) == 0: self.verbose(f"Found chrome executable at {binary_path}") + self.chrome_path = binary_path chrome_test_pass = True break if not chrome_test_pass: From cf719dd59c338b52f92681cefa35be3f77bb4e49 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Thu, 5 Jun 2025 12:18:11 +0530 Subject: [PATCH 10/77] Handle case where chrome_path is None --- bbot/modules/gowitness.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bbot/modules/gowitness.py b/bbot/modules/gowitness.py index ed39fe023c..b452562a71 100644 --- a/bbot/modules/gowitness.py +++ b/bbot/modules/gowitness.py @@ -70,11 +70,13 @@ async def setup(self): self.chrome_path = None chrome_search_path = os.environ.get("PATH") - config_chrome_path = Path(self.config.get("chrome_path")) - if config_chrome_path.is_file(): - chrome_search_path = f"{config_chrome_path.parent}:{chrome_search_path}" - elif config_chrome_path.is_dir(): - chrome_search_path = f"{config_chrome_path}:{chrome_search_path}" + config_chrome_path = self.config.get("chrome_path") + if config_chrome_path: + config_chrome_path = Path(config_chrome_path) + if config_chrome_path.is_file(): + chrome_search_path = f"{config_chrome_path.parent}:{chrome_search_path}" + elif config_chrome_path.is_dir(): + chrome_search_path = f"{config_chrome_path}:{chrome_search_path}" # fix ubuntu-specific sandbox bug chrome_devel_sandbox = self.helpers.tools_dir / "chrome-linux" / "chrome_sandbox" From 3cfa2862245062c6b453d6a4b83a101d84b10faa Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Thu, 5 Jun 2025 15:29:20 +0530 Subject: [PATCH 11/77] Don't retry securitytrails ping API on HTTP 429 securitytrails.com's ping API returns 429 if you've exceeded the quota for the API key. This delays the setup phase by 90 seconds. This fix introduces a ping_retry_on_http_429 flag which can be set to False to avoid this behaviour. The flag is set to False on the securitytrails module. --- bbot/modules/base.py | 6 ++++-- bbot/modules/securitytrails.py | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/bbot/modules/base.py b/bbot/modules/base.py index e085c99c93..b2c48009b9 100644 --- a/bbot/modules/base.py +++ b/bbot/modules/base.py @@ -381,8 +381,9 @@ async def ping(self): """ if url is None: url = getattr(self, "ping_url", "") + retry_on_http_429 = getattr(self, "ping_retry_on_http_429", True) if url: - r = await self.api_request(url) + r = await self.api_request(url, retry_on_http_429=retry_on_http_429) if getattr(r, "status_code", 0) != 200: response_text = getattr(r, "text", "no response from server") raise ValueError(response_text) @@ -1200,6 +1201,7 @@ async def api_request(self, *args, **kwargs): - cancelling after too many failed attempts """ url = args[0] if args else kwargs.pop("url", "") + retry_on_http_429 = kwargs.pop("retry_on_http_429", True) # loop until we have a successful request for _ in range(self.api_retries): @@ -1225,7 +1227,7 @@ async def api_request(self, *args, **kwargs): else: # sleep for a bit if we're being rate limited retry_after = self._get_retry_after(r) - if retry_after or status_code == 429: + if (retry_after or status_code == 429) and retry_on_http_429: sleep_interval = int(retry_after) if retry_after is not None else self._429_sleep_interval if retry_after and retry_after > self._429_max_sleep_interval: self.verbose( diff --git a/bbot/modules/securitytrails.py b/bbot/modules/securitytrails.py index b92ac07dc1..8b45b03cc6 100644 --- a/bbot/modules/securitytrails.py +++ b/bbot/modules/securitytrails.py @@ -16,6 +16,7 @@ class securitytrails(subdomain_enum_apikey): base_url = "https://api.securitytrails.com/v1" ping_url = f"{base_url}/ping?apikey={{api_key}}" + ping_retry_on_http_429 = False async def setup(self): self.limit = 100 From badd72f5029785155ecbdfa7010308df8c734744 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Thu, 5 Jun 2025 16:24:03 +0530 Subject: [PATCH 12/77] Remove binaryedge as it has been shut down https://help.coalitioninc.com/hc/en-us/articles/34383910057371-BinaryEdge-Transition-FAQ --- bbot/modules/binaryedge.py | 42 - .../module_tests/test_module_binaryedge.py | 33 - docs/data/chord_graph/entities.json | 921 +++++++++--------- docs/data/chord_graph/rels.json | 784 ++++++++------- docs/modules/list_of_modules.md | 1 - docs/scanning/advanced.md | 2 +- docs/scanning/configuration.md | 2 - docs/scanning/events.md | 2 +- docs/scanning/index.md | 6 +- docs/scanning/presets_list.md | 12 +- 10 files changed, 852 insertions(+), 953 deletions(-) delete mode 100644 bbot/modules/binaryedge.py delete mode 100644 bbot/test/test_step_2/module_tests/test_module_binaryedge.py diff --git a/bbot/modules/binaryedge.py b/bbot/modules/binaryedge.py deleted file mode 100644 index e712beec56..0000000000 --- a/bbot/modules/binaryedge.py +++ /dev/null @@ -1,42 +0,0 @@ -from bbot.modules.templates.subdomain_enum import subdomain_enum_apikey - - -class binaryedge(subdomain_enum_apikey): - watched_events = ["DNS_NAME"] - produced_events = ["DNS_NAME"] - flags = ["subdomain-enum", "passive", "safe"] - meta = { - "description": "Query the BinaryEdge API", - "created_date": "2022-08-17", - "author": "@TheTechromancer", - "auth_required": True, - } - options = {"api_key": "", "max_records": 1000} - options_desc = { - "api_key": "BinaryEdge API key", - "max_records": "Limit results to help prevent exceeding API quota", - } - - base_url = "https://api.binaryedge.io/v2" - - async def setup(self): - self.max_records = self.config.get("max_records", 1000) - return await super().setup() - - def prepare_api_request(self, url, kwargs): - kwargs["headers"]["X-Key"] = self.api_key - return url, kwargs - - async def ping(self): - url = f"{self.base_url}/user/subscription" - j = (await self.api_request(url)).json() - assert j.get("requests_left", 0) > 0 - - async def request_url(self, query): - # todo: host query (certs + services) - url = f"{self.base_url}/query/domains/subdomain/{self.helpers.quote(query)}" - return await self.api_request(url) - - async def parse_results(self, r, query): - j = r.json() - return j.get("events", []) diff --git a/bbot/test/test_step_2/module_tests/test_module_binaryedge.py b/bbot/test/test_step_2/module_tests/test_module_binaryedge.py deleted file mode 100644 index 348e2efb24..0000000000 --- a/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +++ /dev/null @@ -1,33 +0,0 @@ -from .base import ModuleTestBase - - -class TestBinaryEdge(ModuleTestBase): - config_overrides = {"modules": {"binaryedge": {"api_key": "asdf"}}} - - async def setup_before_prep(self, module_test): - module_test.httpx_mock.add_response( - url="https://api.binaryedge.io/v2/query/domains/subdomain/blacklanternsecurity.com", - match_headers={"X-Key": "asdf"}, - json={ - "query": "blacklanternsecurity.com", - "page": 1, - "pagesize": 100, - "total": 1, - "events": [ - "asdf.blacklanternsecurity.com", - ], - }, - ) - module_test.httpx_mock.add_response( - url="https://api.binaryedge.io/v2/user/subscription", - match_headers={"X-Key": "asdf"}, - json={ - "subscription": {"name": "Free"}, - "end_date": "2023-06-17", - "requests_left": 249, - "requests_plan": 250, - }, - ) - - def check(self, module_test, events): - assert any(e.data == "asdf.blacklanternsecurity.com" for e in events), "Failed to detect subdomain" diff --git a/docs/data/chord_graph/entities.json b/docs/data/chord_graph/entities.json index 153bb940f4..39863451d5 100644 --- a/docs/data/chord_graph/entities.json +++ b/docs/data/chord_graph/entities.json @@ -23,35 +23,35 @@ ] }, { - "id": 135, + "id": 134, "name": "AZURE_TENANT", "parent": 88888888, "consumes": [ - 134 + 133 ], "produces": [] }, { - "id": 43, + "id": 42, "name": "CODE_REPOSITORY", "parent": 88888888, "consumes": [ - 62, + 61, + 81, 82, - 83, - 87, - 89, - 122, - 142 + 86, + 88, + 121, + 141 ], "produces": [ - 42, - 63, - 81, + 41, + 62, + 80, + 83, 84, - 85, - 88, - 121 + 87, + 120 ] }, { @@ -69,104 +69,102 @@ 28, 29, 30, - 31, + 32, 33, 34, 35, - 36, + 37, 38, 39, 40, - 41, - 44, + 43, + 48, 49, 50, 51, 52, - 53, + 54, 55, 56, 57, 58, - 59, - 61, - 67, - 79, - 84, - 86, - 92, - 96, - 103, - 106, - 108, + 60, + 66, + 78, + 83, + 85, + 91, + 95, + 102, + 105, + 107, + 110, 111, - 112, + 115, 116, - 117, - 119, - 123, + 118, + 122, + 125, 126, 127, 128, 129, 130, - 131, - 134, + 133, + 136, 137, 138, - 139, - 141, - 145, + 140, + 144, + 147, 148, - 149, - 152, - 156 + 151, + 155 ], "produces": [ 6, 20, 27, - 28, + 34, 35, - 36, + 37, 38, 39, 40, - 41, + 48, 49, - 50, - 52, + 51, + 54, 55, 56, 57, 58, 59, - 60, - 79, - 92, - 96, - 103, - 106, - 109, + 78, + 91, + 95, + 102, + 105, + 108, + 110, 111, - 112, - 116, - 123, - 126, + 115, + 122, + 125, + 127, 128, 129, - 130, - 134, + 133, + 135, 136, 137, - 138, - 141, + 140, + 144, 145, - 146, + 147, 148, - 149, - 152, - 156 + 151, + 155 ] }, { @@ -175,30 +173,30 @@ "parent": 88888888, "consumes": [ 21, - 134, - 139 + 133, + 138 ], "produces": [] }, { - "id": 45, + "id": 44, "name": "EMAIL_ADDRESS", "parent": 88888888, "consumes": [ - 68 + 67 ], "produces": [ - 44, - 51, - 57, - 61, - 67, - 86, - 96, - 117, - 127, - 131, - 136 + 43, + 50, + 56, + 60, + 66, + 85, + 95, + 116, + 126, + 130, + 135 ] }, { @@ -206,21 +204,21 @@ "name": "FILESYSTEM", "parent": 88888888, "consumes": [ - 72, - 102, - 142, - 143 + 71, + 101, + 141, + 142 ], "produces": [ 8, - 62, - 76, + 61, + 75, + 81, 82, - 83, - 87, - 102, - 122, - 143 + 86, + 101, + 121, + 142 ] }, { @@ -229,7 +227,7 @@ "parent": 88888888, "consumes": [ 14, - 154 + 153 ], "produces": [ 1, @@ -237,50 +235,50 @@ 23, 25, 26, + 28, 29, 30, - 31, + 32, 33, - 34, - 37, - 81, - 88, - 93, - 95, - 104, - 107, + 36, + 80, + 87, + 92, + 94, + 103, + 106, + 108, 109, - 110, + 112, 113, - 114, - 124, - 129, - 132, - 134, - 140, - 142, - 144, - 155 + 123, + 128, + 131, + 133, + 139, + 141, + 143, + 154 ] }, { - "id": 99, + "id": 98, "name": "GEOLOCATION", "parent": 88888888, "consumes": [], "produces": [ - 98, - 101 + 97, + 100 ] }, { - "id": 46, + "id": 45, "name": "HASHED_PASSWORD", "parent": 88888888, "consumes": [], "produces": [ - 44, - 51 + 43, + 50 ] }, { @@ -291,25 +289,25 @@ 1, 14, 26, - 66, - 69, - 76, - 88, - 93, + 65, + 68, + 75, + 87, + 92, + 106, 107, 108, - 109, + 112, 113, 114, - 115, - 134, - 140, - 142, - 151, - 155 + 133, + 139, + 141, + 150, + 154 ], "produces": [ - 94 + 93 ] }, { @@ -319,28 +317,28 @@ "consumes": [ 11, 14, - 98, + 97, + 99, 100, - 101, - 108, - 119, - 129, - 134 + 107, + 118, + 128, + 133 ], "produces": [ 14, - 60, - 100, - 134 + 59, + 99, + 133 ] }, { - "id": 120, + "id": 119, "name": "IP_RANGE", "parent": 88888888, "consumes": [ - 119, - 134 + 118, + 133 ], "produces": [] }, @@ -352,7 +350,7 @@ 8 ], "produces": [ - 89 + 88 ] }, { @@ -361,95 +359,95 @@ "parent": 88888888, "consumes": [ 14, - 77, - 94, - 108, - 118, - 136 + 76, + 93, + 107, + 117, + 135 ], "produces": [ 14, - 119, - 129, - 134 + 118, + 128, + 133 ] }, { - "id": 64, + "id": 63, "name": "ORG_STUB", "parent": 88888888, "consumes": [ - 63, - 85, - 89, - 121 + 62, + 84, + 88, + 120 ], "produces": [ - 134 + 133 ] }, { - "id": 47, + "id": 46, "name": "PASSWORD", "parent": 88888888, "consumes": [], "produces": [ - 44, - 51 + 43, + 50 ] }, { - "id": 78, + "id": 77, "name": "PROTOCOL", "parent": 88888888, "consumes": [ - 105, - 108 + 104, + 107 ], "produces": [ - 77 + 76 ] }, { - "id": 54, + "id": 53, "name": "RAW_DNS_RECORD", "parent": 88888888, "consumes": [], "produces": [ - 53, - 60, - 61 + 52, + 59, + 60 ] }, { - "id": 70, + "id": 69, "name": "RAW_TEXT", "parent": 88888888, "consumes": [ - 69, - 142 + 68, + 141 ], "produces": [ - 72 + 71 ] }, { - "id": 65, + "id": 64, "name": "SOCIAL", "parent": 88888888, "consumes": [ - 63, - 85, - 88, - 90, - 121, - 134 + 62, + 84, + 87, + 89, + 120, + 133 ], "produces": [ - 63, - 86, - 88, - 133 + 62, + 85, + 87, + 132 ] }, { @@ -458,20 +456,20 @@ "parent": 88888888, "consumes": [ 23, + 28, 29, 30, 31, 32, 33, - 34, - 134 + 133 ], "produces": [ + 28, 29, 30, - 31, - 33, - 34 + 32, + 33 ] }, { @@ -480,19 +478,19 @@ "parent": 88888888, "consumes": [ 14, - 88, - 154, - 155 + 87, + 153, + 154 ], "produces": [ 26, - 66, - 88, - 90, - 110, - 129, - 151, - 155 + 65, + 87, + 89, + 109, + 128, + 150, + 154 ] }, { @@ -503,40 +501,40 @@ 1, 14, 23, - 37, - 73, + 36, + 72, + 79, 80, - 81, - 90, - 94, - 97, - 104, + 89, + 93, + 96, + 103, + 108, 109, - 110, - 118, - 125, - 132, - 134, - 140, - 144, - 146, - 150, - 154 + 117, + 124, + 131, + 133, + 139, + 143, + 145, + 149, + 153 ], "produces": [ - 90, - 94 + 89, + 93 ] }, { - "id": 75, + "id": 74, "name": "URL_HINT", "parent": 88888888, "consumes": [ - 74 + 73 ], "produces": [ - 97 + 96 ] }, { @@ -544,56 +542,56 @@ "name": "URL_UNVERIFIED", "parent": 88888888, "consumes": [ - 42, - 76, - 94, - 111, - 118, - 133, - 134 + 41, + 75, + 93, + 110, + 117, + 132, + 133 ], "produces": [ 18, 27, - 32, - 53, - 57, - 61, - 63, - 69, + 31, + 52, + 56, + 60, + 62, + 68, + 72, 73, - 74, - 84, - 90, - 96, - 125, - 127, - 145, - 152, - 155 + 83, + 89, + 95, + 124, + 126, + 144, + 151, + 154 ] }, { - "id": 48, + "id": 47, "name": "USERNAME", "parent": 88888888, "consumes": [ - 134 + 133 ], "produces": [ - 44, - 51 + 43, + 50 ] }, { - "id": 147, + "id": 146, "name": "VHOST", "parent": 88888888, "consumes": [ - 154 + 153 ], "produces": [ - 146 + 145 ] }, { @@ -602,7 +600,7 @@ "parent": 88888888, "consumes": [ 14, - 154 + 153 ], "produces": [ 1, @@ -610,15 +608,15 @@ 23, 25, 26, - 66, - 80, + 65, + 79, + 103, 104, - 105, - 110, - 129, - 140, - 142, - 155 + 109, + 128, + 139, + 141, + 154 ] }, { @@ -629,36 +627,36 @@ 14 ], "produces": [ - 150 + 149 ] }, { - "id": 91, + "id": 90, "name": "WEBSCREENSHOT", "parent": 88888888, "consumes": [], "produces": [ - 90 + 89 ] }, { - "id": 71, + "id": 70, "name": "WEB_PARAMETER", "parent": 88888888, "consumes": [ - 95, - 104, + 94, + 103, + 112, 113, 114, - 115, - 124, - 153 + 123, + 152 ], "produces": [ - 69, + 68, + 112, 113, - 114, - 115 + 114 ] }, { @@ -814,17 +812,6 @@ }, { "id": 28, - "name": "binaryedge", - "parent": 99999999, - "consumes": [ - 7 - ], - "produces": [ - 7 - ] - }, - { - "id": 29, "name": "bucket_amazon", "parent": 99999999, "consumes": [ @@ -837,7 +824,7 @@ ] }, { - "id": 30, + "id": 29, "name": "bucket_azure", "parent": 99999999, "consumes": [ @@ -850,7 +837,7 @@ ] }, { - "id": 31, + "id": 30, "name": "bucket_digitalocean", "parent": 99999999, "consumes": [ @@ -863,7 +850,7 @@ ] }, { - "id": 32, + "id": 31, "name": "bucket_file_enum", "parent": 99999999, "consumes": [ @@ -874,7 +861,7 @@ ] }, { - "id": 33, + "id": 32, "name": "bucket_firebase", "parent": 99999999, "consumes": [ @@ -887,7 +874,7 @@ ] }, { - "id": 34, + "id": 33, "name": "bucket_google", "parent": 99999999, "consumes": [ @@ -900,7 +887,7 @@ ] }, { - "id": 35, + "id": 34, "name": "bufferoverrun", "parent": 99999999, "consumes": [ @@ -911,7 +898,7 @@ ] }, { - "id": 36, + "id": 35, "name": "builtwith", "parent": 99999999, "consumes": [ @@ -922,7 +909,7 @@ ] }, { - "id": 37, + "id": 36, "name": "bypass403", "parent": 99999999, "consumes": [ @@ -933,7 +920,7 @@ ] }, { - "id": 38, + "id": 37, "name": "c99", "parent": 99999999, "consumes": [ @@ -944,7 +931,7 @@ ] }, { - "id": 39, + "id": 38, "name": "censys", "parent": 99999999, "consumes": [ @@ -955,7 +942,7 @@ ] }, { - "id": 40, + "id": 39, "name": "certspotter", "parent": 99999999, "consumes": [ @@ -966,7 +953,7 @@ ] }, { - "id": 41, + "id": 40, "name": "chaos", "parent": 99999999, "consumes": [ @@ -977,32 +964,32 @@ ] }, { - "id": 42, + "id": 41, "name": "code_repository", "parent": 99999999, "consumes": [ 19 ], "produces": [ - 43 + 42 ] }, { - "id": 44, + "id": 43, "name": "credshed", "parent": 99999999, "consumes": [ 7 ], "produces": [ + 44, 45, 46, - 47, - 48 + 47 ] }, { - "id": 49, + "id": 48, "name": "crt", "parent": 99999999, "consumes": [ @@ -1013,7 +1000,7 @@ ] }, { - "id": 50, + "id": 49, "name": "crt_db", "parent": 99999999, "consumes": [ @@ -1024,21 +1011,21 @@ ] }, { - "id": 51, + "id": 50, "name": "dehashed", "parent": 99999999, "consumes": [ 7 ], "produces": [ + 44, 45, 46, - 47, - 48 + 47 ] }, { - "id": 52, + "id": 51, "name": "digitorus", "parent": 99999999, "consumes": [ @@ -1049,19 +1036,19 @@ ] }, { - "id": 53, + "id": 52, "name": "dnsbimi", "parent": 99999999, "consumes": [ 7 ], "produces": [ - 54, + 53, 19 ] }, { - "id": 55, + "id": 54, "name": "dnsbrute", "parent": 99999999, "consumes": [ @@ -1072,7 +1059,7 @@ ] }, { - "id": 56, + "id": 55, "name": "dnsbrute_mutations", "parent": 99999999, "consumes": [ @@ -1083,7 +1070,7 @@ ] }, { - "id": 57, + "id": 56, "name": "dnscaa", "parent": 99999999, "consumes": [ @@ -1091,12 +1078,12 @@ ], "produces": [ 7, - 45, + 44, 19 ] }, { - "id": 58, + "id": 57, "name": "dnscommonsrv", "parent": 99999999, "consumes": [ @@ -1107,7 +1094,7 @@ ] }, { - "id": 59, + "id": 58, "name": "dnsdumpster", "parent": 99999999, "consumes": [ @@ -1118,56 +1105,56 @@ ] }, { - "id": 60, + "id": 59, "name": "dnsresolve", "parent": 99999999, "consumes": [], "produces": [ 7, 12, - 54 + 53 ] }, { - "id": 61, + "id": 60, "name": "dnstlsrpt", "parent": 99999999, "consumes": [ 7 ], "produces": [ - 45, - 54, + 44, + 53, 19 ] }, { - "id": 62, + "id": 61, "name": "docker_pull", "parent": 99999999, "consumes": [ - 43 + 42 ], "produces": [ 10 ] }, { - "id": 63, + "id": 62, "name": "dockerhub", "parent": 99999999, "consumes": [ - 64, - 65 + 63, + 64 ], "produces": [ - 43, - 65, + 42, + 64, 19 ] }, { - "id": 66, + "id": 65, "name": "dotnetnuke", "parent": 99999999, "consumes": [ @@ -1179,51 +1166,51 @@ ] }, { - "id": 67, + "id": 66, "name": "emailformat", "parent": 99999999, "consumes": [ 7 ], "produces": [ - 45 + 44 ] }, { - "id": 68, + "id": 67, "name": "emails", "parent": 99999999, "consumes": [ - 45 + 44 ], "produces": [] }, { - "id": 69, + "id": 68, "name": "excavate", "parent": 99999999, "consumes": [ 2, - 70 + 69 ], "produces": [ 19, - 71 + 70 ] }, { - "id": 72, + "id": 71, "name": "extractous", "parent": 99999999, "consumes": [ 10 ], "produces": [ - 70 + 69 ] }, { - "id": 73, + "id": 72, "name": "ffuf", "parent": 99999999, "consumes": [ @@ -1234,18 +1221,18 @@ ] }, { - "id": 74, + "id": 73, "name": "ffuf_shortnames", "parent": 99999999, "consumes": [ - 75 + 74 ], "produces": [ 19 ] }, { - "id": 76, + "id": 75, "name": "filedownload", "parent": 99999999, "consumes": [ @@ -1257,18 +1244,18 @@ ] }, { - "id": 77, + "id": 76, "name": "fingerprintx", "parent": 99999999, "consumes": [ 15 ], "produces": [ - 78 + 77 ] }, { - "id": 79, + "id": 78, "name": "fullhunt", "parent": 99999999, "consumes": [ @@ -1279,7 +1266,7 @@ ] }, { - "id": 80, + "id": 79, "name": "generic_ssrf", "parent": 99999999, "consumes": [ @@ -1290,131 +1277,131 @@ ] }, { - "id": 81, + "id": 80, "name": "git", "parent": 99999999, "consumes": [ 3 ], "produces": [ - 43, + 42, 4 ] }, { - "id": 82, + "id": 81, "name": "git_clone", "parent": 99999999, "consumes": [ - 43 + 42 ], "produces": [ 10 ] }, { - "id": 83, + "id": 82, "name": "gitdumper", "parent": 99999999, "consumes": [ - 43 + 42 ], "produces": [ 10 ] }, { - "id": 84, + "id": 83, "name": "github_codesearch", "parent": 99999999, "consumes": [ 7 ], "produces": [ - 43, + 42, 19 ] }, { - "id": 85, + "id": 84, "name": "github_org", "parent": 99999999, "consumes": [ - 64, - 65 + 63, + 64 ], "produces": [ - 43 + 42 ] }, { - "id": 86, + "id": 85, "name": "github_usersearch", "parent": 99999999, "consumes": [ 7 ], "produces": [ - 45, - 65 + 44, + 64 ] }, { - "id": 87, + "id": 86, "name": "github_workflows", "parent": 99999999, "consumes": [ - 43 + 42 ], "produces": [ 10 ] }, { - "id": 88, + "id": 87, "name": "gitlab", "parent": 99999999, "consumes": [ 2, - 65, + 64, 16 ], "produces": [ - 43, + 42, 4, - 65, + 64, 16 ] }, { - "id": 89, + "id": 88, "name": "google_playstore", "parent": 99999999, "consumes": [ - 43, - 64 + 42, + 63 ], "produces": [ 9 ] }, { - "id": 90, + "id": 89, "name": "gowitness", "parent": 99999999, "consumes": [ - 65, + 64, 3 ], "produces": [ 16, 3, 19, - 91 + 90 ] }, { - "id": 92, + "id": 91, "name": "hackertarget", "parent": 99999999, "consumes": [ @@ -1425,7 +1412,7 @@ ] }, { - "id": 93, + "id": 92, "name": "host_header", "parent": 99999999, "consumes": [ @@ -1436,7 +1423,7 @@ ] }, { - "id": 94, + "id": 93, "name": "httpx", "parent": 99999999, "consumes": [ @@ -1450,18 +1437,18 @@ ] }, { - "id": 95, + "id": 94, "name": "hunt", "parent": 99999999, "consumes": [ - 71 + 70 ], "produces": [ 4 ] }, { - "id": 96, + "id": 95, "name": "hunterio", "parent": 99999999, "consumes": [ @@ -1469,34 +1456,34 @@ ], "produces": [ 7, - 45, + 44, 19 ] }, { - "id": 97, + "id": 96, "name": "iis_shortnames", "parent": 99999999, "consumes": [ 3 ], "produces": [ - 75 + 74 ] }, { - "id": 98, + "id": 97, "name": "ip2location", "parent": 99999999, "consumes": [ 12 ], "produces": [ - 99 + 98 ] }, { - "id": 100, + "id": 99, "name": "ipneighbor", "parent": 99999999, "consumes": [ @@ -1507,18 +1494,18 @@ ] }, { - "id": 101, + "id": 100, "name": "ipstack", "parent": 99999999, "consumes": [ 12 ], "produces": [ - 99 + 98 ] }, { - "id": 102, + "id": 101, "name": "jadx", "parent": 99999999, "consumes": [ @@ -1529,7 +1516,7 @@ ] }, { - "id": 103, + "id": 102, "name": "leakix", "parent": 99999999, "consumes": [ @@ -1540,12 +1527,12 @@ ] }, { - "id": 104, + "id": 103, "name": "lightfuzz", "parent": 99999999, "consumes": [ 3, - 71 + 70 ], "produces": [ 4, @@ -1553,18 +1540,18 @@ ] }, { - "id": 105, + "id": 104, "name": "medusa", "parent": 99999999, "consumes": [ - 78 + 77 ], "produces": [ 5 ] }, { - "id": 106, + "id": 105, "name": "myssl", "parent": 99999999, "consumes": [ @@ -1575,7 +1562,7 @@ ] }, { - "id": 107, + "id": 106, "name": "newsletters", "parent": 99999999, "consumes": [ @@ -1586,7 +1573,7 @@ ] }, { - "id": 108, + "id": 107, "name": "nmap_xml", "parent": 99999999, "consumes": [ @@ -1594,12 +1581,12 @@ 2, 12, 15, - 78 + 77 ], "produces": [] }, { - "id": 109, + "id": 108, "name": "ntlm", "parent": 99999999, "consumes": [ @@ -1612,7 +1599,7 @@ ] }, { - "id": 110, + "id": 109, "name": "nuclei", "parent": 99999999, "consumes": [ @@ -1625,7 +1612,7 @@ ] }, { - "id": 111, + "id": 110, "name": "oauth", "parent": 99999999, "consumes": [ @@ -1637,7 +1624,7 @@ ] }, { - "id": 112, + "id": 111, "name": "otx", "parent": 99999999, "consumes": [ @@ -1648,45 +1635,45 @@ ] }, { - "id": 113, + "id": 112, "name": "paramminer_cookies", "parent": 99999999, "consumes": [ 2, - 71 + 70 ], "produces": [ 4, - 71 + 70 ] }, { - "id": 114, + "id": 113, "name": "paramminer_getparams", "parent": 99999999, "consumes": [ 2, - 71 + 70 ], "produces": [ 4, - 71 + 70 ] }, { - "id": 115, + "id": 114, "name": "paramminer_headers", "parent": 99999999, "consumes": [ 2, - 71 + 70 ], "produces": [ - 71 + 70 ] }, { - "id": 116, + "id": 115, "name": "passivetotal", "parent": 99999999, "consumes": [ @@ -1697,18 +1684,18 @@ ] }, { - "id": 117, + "id": 116, "name": "pgp", "parent": 99999999, "consumes": [ 7 ], "produces": [ - 45 + 44 ] }, { - "id": 118, + "id": 117, "name": "portfilter", "parent": 99999999, "consumes": [ @@ -1719,43 +1706,43 @@ "produces": [] }, { - "id": 119, + "id": 118, "name": "portscan", "parent": 99999999, "consumes": [ 7, 12, - 120 + 119 ], "produces": [ 15 ] }, { - "id": 121, + "id": 120, "name": "postman", "parent": 99999999, "consumes": [ - 64, - 65 + 63, + 64 ], "produces": [ - 43 + 42 ] }, { - "id": 122, + "id": 121, "name": "postman_download", "parent": 99999999, "consumes": [ - 43 + 42 ], "produces": [ 10 ] }, { - "id": 123, + "id": 122, "name": "rapiddns", "parent": 99999999, "consumes": [ @@ -1766,18 +1753,18 @@ ] }, { - "id": 124, + "id": 123, "name": "reflected_parameters", "parent": 99999999, "consumes": [ - 71 + 70 ], "produces": [ 4 ] }, { - "id": 125, + "id": 124, "name": "robots", "parent": 99999999, "consumes": [ @@ -1788,7 +1775,7 @@ ] }, { - "id": 126, + "id": 125, "name": "securitytrails", "parent": 99999999, "consumes": [ @@ -1799,19 +1786,19 @@ ] }, { - "id": 127, + "id": 126, "name": "securitytxt", "parent": 99999999, "consumes": [ 7 ], "produces": [ - 45, + 44, 19 ] }, { - "id": 128, + "id": 127, "name": "shodan_dns", "parent": 99999999, "consumes": [ @@ -1822,7 +1809,7 @@ ] }, { - "id": 129, + "id": 128, "name": "shodan_idb", "parent": 99999999, "consumes": [ @@ -1838,7 +1825,7 @@ ] }, { - "id": 130, + "id": 129, "name": "sitedossier", "parent": 99999999, "consumes": [ @@ -1849,18 +1836,18 @@ ] }, { - "id": 131, + "id": 130, "name": "skymem", "parent": 99999999, "consumes": [ 7 ], "produces": [ - 45 + 44 ] }, { - "id": 132, + "id": 131, "name": "smuggler", "parent": 99999999, "consumes": [ @@ -1871,43 +1858,43 @@ ] }, { - "id": 133, + "id": 132, "name": "social", "parent": 99999999, "consumes": [ 19 ], "produces": [ - 65 + 64 ] }, { - "id": 134, + "id": 133, "name": "speculate", "parent": 99999999, "consumes": [ - 135, + 134, 7, 22, 2, 12, - 120, - 65, + 119, + 64, 24, 3, 19, - 48 + 47 ], "produces": [ 7, 4, 12, 15, - 64 + 63 ] }, { - "id": 136, + "id": 135, "name": "sslcert", "parent": 99999999, "consumes": [ @@ -1915,11 +1902,11 @@ ], "produces": [ 7, - 45 + 44 ] }, { - "id": 137, + "id": 136, "name": "subdomaincenter", "parent": 99999999, "consumes": [ @@ -1930,7 +1917,7 @@ ] }, { - "id": 138, + "id": 137, "name": "subdomainradar", "parent": 99999999, "consumes": [ @@ -1941,7 +1928,7 @@ ] }, { - "id": 139, + "id": 138, "name": "subdomains", "parent": 99999999, "consumes": [ @@ -1951,7 +1938,7 @@ "produces": [] }, { - "id": 140, + "id": 139, "name": "telerik", "parent": 99999999, "consumes": [ @@ -1964,7 +1951,7 @@ ] }, { - "id": 141, + "id": 140, "name": "trickest", "parent": 99999999, "consumes": [ @@ -1975,14 +1962,14 @@ ] }, { - "id": 142, + "id": 141, "name": "trufflehog", "parent": 99999999, "consumes": [ - 43, + 42, 10, 2, - 70 + 69 ], "produces": [ 4, @@ -1990,7 +1977,7 @@ ] }, { - "id": 143, + "id": 142, "name": "unarchive", "parent": 99999999, "consumes": [ @@ -2001,7 +1988,7 @@ ] }, { - "id": 144, + "id": 143, "name": "url_manipulation", "parent": 99999999, "consumes": [ @@ -2012,7 +1999,7 @@ ] }, { - "id": 145, + "id": 144, "name": "urlscan", "parent": 99999999, "consumes": [ @@ -2024,7 +2011,7 @@ ] }, { - "id": 146, + "id": 145, "name": "vhost", "parent": 99999999, "consumes": [ @@ -2032,11 +2019,11 @@ ], "produces": [ 7, - 147 + 146 ] }, { - "id": 148, + "id": 147, "name": "viewdns", "parent": 99999999, "consumes": [ @@ -2047,7 +2034,7 @@ ] }, { - "id": 149, + "id": 148, "name": "virustotal", "parent": 99999999, "consumes": [ @@ -2058,7 +2045,7 @@ ] }, { - "id": 150, + "id": 149, "name": "wafw00f", "parent": 99999999, "consumes": [ @@ -2069,7 +2056,7 @@ ] }, { - "id": 151, + "id": 150, "name": "wappalyzer", "parent": 99999999, "consumes": [ @@ -2080,7 +2067,7 @@ ] }, { - "id": 152, + "id": 151, "name": "wayback", "parent": 99999999, "consumes": [ @@ -2092,29 +2079,29 @@ ] }, { - "id": 153, + "id": 152, "name": "web_parameters", "parent": 99999999, "consumes": [ - 71 + 70 ], "produces": [] }, { - "id": 154, + "id": 153, "name": "web_report", "parent": 99999999, "consumes": [ 4, 16, 3, - 147, + 146, 5 ], "produces": [] }, { - "id": 155, + "id": 154, "name": "wpscan", "parent": 99999999, "consumes": [ @@ -2129,7 +2116,7 @@ ] }, { - "id": 156, + "id": 155, "name": "zoomeye", "parent": 99999999, "consumes": [ diff --git a/docs/data/chord_graph/rels.json b/docs/data/chord_graph/rels.json index c468709135..f6ea6fce5d 100644 --- a/docs/data/chord_graph/rels.json +++ b/docs/data/chord_graph/rels.json @@ -220,7 +220,17 @@ "type": "consumes" }, { - "source": 7, + "source": 28, + "target": 24, + "type": "consumes" + }, + { + "source": 4, + "target": 28, + "type": "produces" + }, + { + "source": 24, "target": 28, "type": "produces" }, @@ -264,25 +274,20 @@ "target": 30, "type": "produces" }, - { - "source": 31, - "target": 7, - "type": "consumes" - }, { "source": 31, "target": 24, "type": "consumes" }, { - "source": 4, + "source": 19, "target": 31, "type": "produces" }, { - "source": 24, - "target": 31, - "type": "produces" + "source": 32, + "target": 7, + "type": "consumes" }, { "source": 32, @@ -290,7 +295,12 @@ "type": "consumes" }, { - "source": 19, + "source": 4, + "target": 32, + "type": "produces" + }, + { + "source": 24, "target": 32, "type": "produces" }, @@ -320,17 +330,7 @@ "type": "consumes" }, { - "source": 34, - "target": 24, - "type": "consumes" - }, - { - "source": 4, - "target": 34, - "type": "produces" - }, - { - "source": 24, + "source": 7, "target": 34, "type": "produces" }, @@ -346,21 +346,21 @@ }, { "source": 36, - "target": 7, + "target": 3, "type": "consumes" }, { - "source": 7, + "source": 4, "target": 36, "type": "produces" }, { "source": 37, - "target": 3, + "target": 7, "type": "consumes" }, { - "source": 4, + "source": 7, "target": 37, "type": "produces" }, @@ -396,47 +396,47 @@ }, { "source": 41, - "target": 7, + "target": 19, "type": "consumes" }, { - "source": 7, + "source": 42, "target": 41, "type": "produces" }, - { - "source": 42, - "target": 19, - "type": "consumes" - }, { "source": 43, - "target": 42, - "type": "produces" + "target": 7, + "type": "consumes" }, { "source": 44, - "target": 7, - "type": "consumes" + "target": 43, + "type": "produces" }, { "source": 45, - "target": 44, + "target": 43, "type": "produces" }, { "source": 46, - "target": 44, + "target": 43, "type": "produces" }, { "source": 47, - "target": 44, + "target": 43, "type": "produces" }, { "source": 48, - "target": 44, + "target": 7, + "type": "consumes" + }, + { + "source": 7, + "target": 48, "type": "produces" }, { @@ -455,1393 +455,1383 @@ "type": "consumes" }, { - "source": 7, + "source": 44, "target": 50, "type": "produces" }, - { - "source": 51, - "target": 7, - "type": "consumes" - }, { "source": 45, - "target": 51, + "target": 50, "type": "produces" }, { "source": 46, - "target": 51, + "target": 50, "type": "produces" }, { "source": 47, - "target": 51, - "type": "produces" - }, - { - "source": 48, - "target": 51, + "target": 50, "type": "produces" }, { - "source": 52, + "source": 51, "target": 7, "type": "consumes" }, { "source": 7, - "target": 52, + "target": 51, "type": "produces" }, { - "source": 53, + "source": 52, "target": 7, "type": "consumes" }, { - "source": 54, - "target": 53, + "source": 53, + "target": 52, "type": "produces" }, { "source": 19, - "target": 53, + "target": 52, "type": "produces" }, { - "source": 55, + "source": 54, "target": 7, "type": "consumes" }, { "source": 7, - "target": 55, + "target": 54, "type": "produces" }, { - "source": 56, + "source": 55, "target": 7, "type": "consumes" }, { "source": 7, - "target": 56, + "target": 55, "type": "produces" }, { - "source": 57, + "source": 56, "target": 7, "type": "consumes" }, { "source": 7, - "target": 57, + "target": 56, "type": "produces" }, { - "source": 45, - "target": 57, + "source": 44, + "target": 56, "type": "produces" }, { "source": 19, - "target": 57, + "target": 56, "type": "produces" }, { - "source": 58, + "source": 57, "target": 7, "type": "consumes" }, { "source": 7, - "target": 58, + "target": 57, "type": "produces" }, { - "source": 59, + "source": 58, "target": 7, "type": "consumes" }, { "source": 7, - "target": 59, + "target": 58, "type": "produces" }, { "source": 7, - "target": 60, + "target": 59, "type": "produces" }, { "source": 12, - "target": 60, + "target": 59, "type": "produces" }, { - "source": 54, - "target": 60, + "source": 53, + "target": 59, "type": "produces" }, { - "source": 61, + "source": 60, "target": 7, "type": "consumes" }, { - "source": 45, - "target": 61, + "source": 44, + "target": 60, "type": "produces" }, { - "source": 54, - "target": 61, + "source": 53, + "target": 60, "type": "produces" }, { "source": 19, - "target": 61, + "target": 60, "type": "produces" }, { - "source": 62, - "target": 43, + "source": 61, + "target": 42, "type": "consumes" }, { "source": 10, - "target": 62, + "target": 61, "type": "produces" }, { - "source": 63, - "target": 64, + "source": 62, + "target": 63, "type": "consumes" }, { - "source": 63, - "target": 65, + "source": 62, + "target": 64, "type": "consumes" }, { - "source": 43, - "target": 63, + "source": 42, + "target": 62, "type": "produces" }, { - "source": 65, - "target": 63, + "source": 64, + "target": 62, "type": "produces" }, { "source": 19, - "target": 63, + "target": 62, "type": "produces" }, { - "source": 66, + "source": 65, "target": 2, "type": "consumes" }, { "source": 16, - "target": 66, + "target": 65, "type": "produces" }, { "source": 5, - "target": 66, + "target": 65, "type": "produces" }, { - "source": 67, + "source": 66, "target": 7, "type": "consumes" }, { - "source": 45, - "target": 67, + "source": 44, + "target": 66, "type": "produces" }, { - "source": 68, - "target": 45, + "source": 67, + "target": 44, "type": "consumes" }, { - "source": 69, + "source": 68, "target": 2, "type": "consumes" }, { - "source": 69, - "target": 70, + "source": 68, + "target": 69, "type": "consumes" }, { "source": 19, - "target": 69, + "target": 68, "type": "produces" }, { - "source": 71, - "target": 69, + "source": 70, + "target": 68, "type": "produces" }, { - "source": 72, + "source": 71, "target": 10, "type": "consumes" }, { - "source": 70, - "target": 72, + "source": 69, + "target": 71, "type": "produces" }, { - "source": 73, + "source": 72, "target": 3, "type": "consumes" }, { "source": 19, - "target": 73, + "target": 72, "type": "produces" }, { - "source": 74, - "target": 75, + "source": 73, + "target": 74, "type": "consumes" }, { "source": 19, - "target": 74, + "target": 73, "type": "produces" }, { - "source": 76, + "source": 75, "target": 2, "type": "consumes" }, { - "source": 76, + "source": 75, "target": 19, "type": "consumes" }, { "source": 10, - "target": 76, + "target": 75, "type": "produces" }, { - "source": 77, + "source": 76, "target": 15, "type": "consumes" }, { - "source": 78, - "target": 77, + "source": 77, + "target": 76, "type": "produces" }, { - "source": 79, + "source": 78, "target": 7, "type": "consumes" }, { "source": 7, - "target": 79, + "target": 78, "type": "produces" }, { - "source": 80, + "source": 79, "target": 3, "type": "consumes" }, { "source": 5, - "target": 80, + "target": 79, "type": "produces" }, { - "source": 81, + "source": 80, "target": 3, "type": "consumes" }, { - "source": 43, - "target": 81, + "source": 42, + "target": 80, "type": "produces" }, { "source": 4, - "target": 81, + "target": 80, "type": "produces" }, { - "source": 82, - "target": 43, + "source": 81, + "target": 42, "type": "consumes" }, { "source": 10, - "target": 82, + "target": 81, "type": "produces" }, { - "source": 83, - "target": 43, + "source": 82, + "target": 42, "type": "consumes" }, { "source": 10, - "target": 83, + "target": 82, "type": "produces" }, { - "source": 84, + "source": 83, "target": 7, "type": "consumes" }, { - "source": 43, - "target": 84, + "source": 42, + "target": 83, "type": "produces" }, { "source": 19, - "target": 84, + "target": 83, "type": "produces" }, { - "source": 85, - "target": 64, + "source": 84, + "target": 63, "type": "consumes" }, { - "source": 85, - "target": 65, + "source": 84, + "target": 64, "type": "consumes" }, { - "source": 43, - "target": 85, + "source": 42, + "target": 84, "type": "produces" }, { - "source": 86, + "source": 85, "target": 7, "type": "consumes" }, { - "source": 45, - "target": 86, + "source": 44, + "target": 85, "type": "produces" }, { - "source": 65, - "target": 86, + "source": 64, + "target": 85, "type": "produces" }, { - "source": 87, - "target": 43, + "source": 86, + "target": 42, "type": "consumes" }, { "source": 10, - "target": 87, + "target": 86, "type": "produces" }, { - "source": 88, + "source": 87, "target": 2, "type": "consumes" }, { - "source": 88, - "target": 65, + "source": 87, + "target": 64, "type": "consumes" }, { - "source": 88, + "source": 87, "target": 16, "type": "consumes" }, { - "source": 43, - "target": 88, + "source": 42, + "target": 87, "type": "produces" }, { "source": 4, - "target": 88, + "target": 87, "type": "produces" }, { - "source": 65, - "target": 88, + "source": 64, + "target": 87, "type": "produces" }, { "source": 16, - "target": 88, + "target": 87, "type": "produces" }, { - "source": 89, - "target": 43, + "source": 88, + "target": 42, "type": "consumes" }, { - "source": 89, - "target": 64, + "source": 88, + "target": 63, "type": "consumes" }, { "source": 9, - "target": 89, + "target": 88, "type": "produces" }, { - "source": 90, - "target": 65, + "source": 89, + "target": 64, "type": "consumes" }, { - "source": 90, + "source": 89, "target": 3, "type": "consumes" }, { "source": 16, - "target": 90, + "target": 89, "type": "produces" }, { "source": 3, - "target": 90, + "target": 89, "type": "produces" }, { "source": 19, - "target": 90, + "target": 89, "type": "produces" }, { - "source": 91, - "target": 90, + "source": 90, + "target": 89, "type": "produces" }, { - "source": 92, + "source": 91, "target": 7, "type": "consumes" }, { "source": 7, - "target": 92, + "target": 91, "type": "produces" }, { - "source": 93, + "source": 92, "target": 2, "type": "consumes" }, { "source": 4, - "target": 93, + "target": 92, "type": "produces" }, { - "source": 94, + "source": 93, "target": 15, "type": "consumes" }, { - "source": 94, + "source": 93, "target": 3, "type": "consumes" }, { - "source": 94, + "source": 93, "target": 19, "type": "consumes" }, { "source": 2, - "target": 94, + "target": 93, "type": "produces" }, { "source": 3, - "target": 94, + "target": 93, "type": "produces" }, { - "source": 95, - "target": 71, + "source": 94, + "target": 70, "type": "consumes" }, { "source": 4, - "target": 95, + "target": 94, "type": "produces" }, { - "source": 96, + "source": 95, "target": 7, "type": "consumes" }, { "source": 7, - "target": 96, + "target": 95, "type": "produces" }, { - "source": 45, - "target": 96, + "source": 44, + "target": 95, "type": "produces" }, { "source": 19, - "target": 96, + "target": 95, "type": "produces" }, { - "source": 97, + "source": 96, "target": 3, "type": "consumes" }, { - "source": 75, - "target": 97, + "source": 74, + "target": 96, "type": "produces" }, { - "source": 98, + "source": 97, "target": 12, "type": "consumes" }, { - "source": 99, - "target": 98, + "source": 98, + "target": 97, "type": "produces" }, { - "source": 100, + "source": 99, "target": 12, "type": "consumes" }, { "source": 12, - "target": 100, + "target": 99, "type": "produces" }, { - "source": 101, + "source": 100, "target": 12, "type": "consumes" }, { - "source": 99, - "target": 101, + "source": 98, + "target": 100, "type": "produces" }, { - "source": 102, + "source": 101, "target": 10, "type": "consumes" }, { "source": 10, - "target": 102, + "target": 101, "type": "produces" }, { - "source": 103, + "source": 102, "target": 7, "type": "consumes" }, { "source": 7, - "target": 103, + "target": 102, "type": "produces" }, { - "source": 104, + "source": 103, "target": 3, "type": "consumes" }, { - "source": 104, - "target": 71, + "source": 103, + "target": 70, "type": "consumes" }, { "source": 4, - "target": 104, + "target": 103, "type": "produces" }, { "source": 5, - "target": 104, + "target": 103, "type": "produces" }, { - "source": 105, - "target": 78, + "source": 104, + "target": 77, "type": "consumes" }, { "source": 5, - "target": 105, + "target": 104, "type": "produces" }, { - "source": 106, + "source": 105, "target": 7, "type": "consumes" }, { "source": 7, - "target": 106, + "target": 105, "type": "produces" }, { - "source": 107, + "source": 106, "target": 2, "type": "consumes" }, { "source": 4, - "target": 107, + "target": 106, "type": "produces" }, { - "source": 108, + "source": 107, "target": 7, "type": "consumes" }, { - "source": 108, + "source": 107, "target": 2, "type": "consumes" }, { - "source": 108, + "source": 107, "target": 12, "type": "consumes" }, { - "source": 108, + "source": 107, "target": 15, "type": "consumes" }, { - "source": 108, - "target": 78, + "source": 107, + "target": 77, "type": "consumes" }, { - "source": 109, + "source": 108, "target": 2, "type": "consumes" }, { - "source": 109, + "source": 108, "target": 3, "type": "consumes" }, { "source": 7, - "target": 109, + "target": 108, "type": "produces" }, { "source": 4, - "target": 109, + "target": 108, "type": "produces" }, { - "source": 110, + "source": 109, "target": 3, "type": "consumes" }, { "source": 4, - "target": 110, + "target": 109, "type": "produces" }, { "source": 16, - "target": 110, + "target": 109, "type": "produces" }, { "source": 5, - "target": 110, + "target": 109, "type": "produces" }, { - "source": 111, + "source": 110, "target": 7, "type": "consumes" }, { - "source": 111, + "source": 110, "target": 19, "type": "consumes" }, { "source": 7, - "target": 111, + "target": 110, "type": "produces" }, { - "source": 112, + "source": 111, "target": 7, "type": "consumes" }, { "source": 7, - "target": 112, + "target": 111, "type": "produces" }, { - "source": 113, + "source": 112, "target": 2, "type": "consumes" }, { - "source": 113, - "target": 71, + "source": 112, + "target": 70, "type": "consumes" }, { "source": 4, - "target": 113, + "target": 112, "type": "produces" }, { - "source": 71, - "target": 113, + "source": 70, + "target": 112, "type": "produces" }, { - "source": 114, + "source": 113, "target": 2, "type": "consumes" }, { - "source": 114, - "target": 71, + "source": 113, + "target": 70, "type": "consumes" }, { "source": 4, - "target": 114, + "target": 113, "type": "produces" }, - { - "source": 71, - "target": 114, + { + "source": 70, + "target": 113, "type": "produces" }, { - "source": 115, + "source": 114, "target": 2, "type": "consumes" }, { - "source": 115, - "target": 71, + "source": 114, + "target": 70, "type": "consumes" }, { - "source": 71, - "target": 115, + "source": 70, + "target": 114, "type": "produces" }, { - "source": 116, + "source": 115, "target": 7, "type": "consumes" }, { "source": 7, - "target": 116, + "target": 115, "type": "produces" }, { - "source": 117, + "source": 116, "target": 7, "type": "consumes" }, { - "source": 45, - "target": 117, + "source": 44, + "target": 116, "type": "produces" }, { - "source": 118, + "source": 117, "target": 15, "type": "consumes" }, { - "source": 118, + "source": 117, "target": 3, "type": "consumes" }, { - "source": 118, + "source": 117, "target": 19, "type": "consumes" }, { - "source": 119, + "source": 118, "target": 7, "type": "consumes" }, { - "source": 119, + "source": 118, "target": 12, "type": "consumes" }, { - "source": 119, - "target": 120, + "source": 118, + "target": 119, "type": "consumes" }, { "source": 15, - "target": 119, + "target": 118, "type": "produces" }, { - "source": 121, - "target": 64, + "source": 120, + "target": 63, "type": "consumes" }, { - "source": 121, - "target": 65, + "source": 120, + "target": 64, "type": "consumes" }, { - "source": 43, - "target": 121, + "source": 42, + "target": 120, "type": "produces" }, { - "source": 122, - "target": 43, + "source": 121, + "target": 42, "type": "consumes" }, { "source": 10, - "target": 122, + "target": 121, "type": "produces" }, { - "source": 123, + "source": 122, "target": 7, "type": "consumes" }, { "source": 7, - "target": 123, + "target": 122, "type": "produces" }, { - "source": 124, - "target": 71, + "source": 123, + "target": 70, "type": "consumes" }, { "source": 4, - "target": 124, + "target": 123, "type": "produces" }, { - "source": 125, + "source": 124, "target": 3, "type": "consumes" }, { "source": 19, - "target": 125, + "target": 124, "type": "produces" }, { - "source": 126, + "source": 125, "target": 7, "type": "consumes" }, { "source": 7, - "target": 126, + "target": 125, "type": "produces" }, { - "source": 127, + "source": 126, "target": 7, "type": "consumes" }, { - "source": 45, - "target": 127, + "source": 44, + "target": 126, "type": "produces" }, { "source": 19, - "target": 127, + "target": 126, "type": "produces" }, { - "source": 128, + "source": 127, "target": 7, "type": "consumes" }, { "source": 7, - "target": 128, + "target": 127, "type": "produces" }, { - "source": 129, + "source": 128, "target": 7, "type": "consumes" }, { - "source": 129, + "source": 128, "target": 12, "type": "consumes" }, { "source": 7, - "target": 129, + "target": 128, "type": "produces" }, { "source": 4, - "target": 129, + "target": 128, "type": "produces" }, { "source": 15, - "target": 129, + "target": 128, "type": "produces" }, { "source": 16, - "target": 129, + "target": 128, "type": "produces" }, { "source": 5, - "target": 129, + "target": 128, "type": "produces" }, { - "source": 130, + "source": 129, "target": 7, "type": "consumes" }, { "source": 7, - "target": 130, + "target": 129, "type": "produces" }, { - "source": 131, + "source": 130, "target": 7, "type": "consumes" }, { - "source": 45, - "target": 131, + "source": 44, + "target": 130, "type": "produces" }, { - "source": 132, + "source": 131, "target": 3, "type": "consumes" }, { "source": 4, - "target": 132, + "target": 131, "type": "produces" }, { - "source": 133, + "source": 132, "target": 19, "type": "consumes" }, { - "source": 65, - "target": 133, + "source": 64, + "target": 132, "type": "produces" }, { - "source": 134, - "target": 135, + "source": 133, + "target": 134, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 7, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 22, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 2, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 12, "type": "consumes" }, { - "source": 134, - "target": 120, + "source": 133, + "target": 119, "type": "consumes" }, { - "source": 134, - "target": 65, + "source": 133, + "target": 64, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 24, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 3, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 19, "type": "consumes" }, { - "source": 134, - "target": 48, + "source": 133, + "target": 47, "type": "consumes" }, { "source": 7, - "target": 134, + "target": 133, "type": "produces" }, { "source": 4, - "target": 134, + "target": 133, "type": "produces" }, { "source": 12, - "target": 134, + "target": 133, "type": "produces" }, { "source": 15, - "target": 134, + "target": 133, "type": "produces" }, { - "source": 64, - "target": 134, + "source": 63, + "target": 133, "type": "produces" }, { - "source": 136, + "source": 135, "target": 15, "type": "consumes" }, { "source": 7, - "target": 136, + "target": 135, "type": "produces" }, { - "source": 45, - "target": 136, + "source": 44, + "target": 135, "type": "produces" }, { - "source": 137, + "source": 136, "target": 7, "type": "consumes" }, { "source": 7, - "target": 137, + "target": 136, "type": "produces" }, { - "source": 138, + "source": 137, "target": 7, "type": "consumes" }, { "source": 7, - "target": 138, + "target": 137, "type": "produces" }, { - "source": 139, + "source": 138, "target": 7, "type": "consumes" }, { - "source": 139, + "source": 138, "target": 22, "type": "consumes" }, { - "source": 140, + "source": 139, "target": 2, "type": "consumes" }, { - "source": 140, + "source": 139, "target": 3, "type": "consumes" }, { "source": 4, - "target": 140, + "target": 139, "type": "produces" }, { "source": 5, - "target": 140, + "target": 139, "type": "produces" }, { - "source": 141, + "source": 140, "target": 7, "type": "consumes" }, { "source": 7, - "target": 141, + "target": 140, "type": "produces" }, { - "source": 142, - "target": 43, + "source": 141, + "target": 42, "type": "consumes" }, { - "source": 142, + "source": 141, "target": 10, "type": "consumes" }, { - "source": 142, + "source": 141, "target": 2, "type": "consumes" }, { - "source": 142, - "target": 70, + "source": 141, + "target": 69, "type": "consumes" }, { "source": 4, - "target": 142, + "target": 141, "type": "produces" }, { "source": 5, - "target": 142, + "target": 141, "type": "produces" }, { - "source": 143, + "source": 142, "target": 10, "type": "consumes" }, { "source": 10, - "target": 143, + "target": 142, "type": "produces" }, { - "source": 144, + "source": 143, "target": 3, "type": "consumes" }, { "source": 4, - "target": 144, + "target": 143, "type": "produces" }, { - "source": 145, + "source": 144, "target": 7, "type": "consumes" }, { "source": 7, - "target": 145, + "target": 144, "type": "produces" }, { "source": 19, - "target": 145, + "target": 144, "type": "produces" }, { - "source": 146, + "source": 145, "target": 3, "type": "consumes" }, { "source": 7, - "target": 146, + "target": 145, "type": "produces" }, { - "source": 147, - "target": 146, + "source": 146, + "target": 145, "type": "produces" }, { - "source": 148, + "source": 147, "target": 7, "type": "consumes" }, { "source": 7, - "target": 148, + "target": 147, "type": "produces" }, { - "source": 149, + "source": 148, "target": 7, "type": "consumes" }, { "source": 7, - "target": 149, + "target": 148, "type": "produces" }, { - "source": 150, + "source": 149, "target": 3, "type": "consumes" }, { "source": 17, - "target": 150, + "target": 149, "type": "produces" }, { - "source": 151, + "source": 150, "target": 2, "type": "consumes" }, { "source": 16, - "target": 151, + "target": 150, "type": "produces" }, { - "source": 152, + "source": 151, "target": 7, "type": "consumes" }, { "source": 7, - "target": 152, + "target": 151, "type": "produces" }, { "source": 19, - "target": 152, + "target": 151, "type": "produces" }, { - "source": 153, - "target": 71, + "source": 152, + "target": 70, "type": "consumes" }, { - "source": 154, + "source": 153, "target": 4, "type": "consumes" }, { - "source": 154, + "source": 153, "target": 16, "type": "consumes" }, { - "source": 154, + "source": 153, "target": 3, "type": "consumes" }, { - "source": 154, - "target": 147, + "source": 153, + "target": 146, "type": "consumes" }, { - "source": 154, + "source": 153, "target": 5, "type": "consumes" }, { - "source": 155, + "source": 154, "target": 2, "type": "consumes" }, { - "source": 155, + "source": 154, "target": 16, "type": "consumes" }, { "source": 4, - "target": 155, + "target": 154, "type": "produces" }, { "source": 16, - "target": 155, + "target": 154, "type": "produces" }, { "source": 19, - "target": 155, + "target": 154, "type": "produces" }, { "source": 5, - "target": 155, + "target": 154, "type": "produces" }, { - "source": 156, + "source": 155, "target": 7, "type": "consumes" }, { "source": 7, - "target": 156, + "target": 155, "type": "produces" } ] \ No newline at end of file diff --git a/docs/modules/list_of_modules.md b/docs/modules/list_of_modules.md index 6c16ca7a8f..2fb7e23e87 100644 --- a/docs/modules/list_of_modules.md +++ b/docs/modules/list_of_modules.md @@ -58,7 +58,6 @@ | azure_realm | scan | No | Retrieves the "AuthURL" from login.microsoftonline.com/getuserrealm | affiliates, cloud-enum, passive, safe, subdomain-enum, web-basic | DNS_NAME | URL_UNVERIFIED | @TheTechromancer | 2023-07-12 | | azure_tenant | scan | No | Query Azure for tenant sister domains | affiliates, cloud-enum, passive, safe, subdomain-enum | DNS_NAME | DNS_NAME | @TheTechromancer | 2024-07-04 | | bevigil | scan | Yes | Retrieve OSINT data from mobile applications using BeVigil | passive, safe, subdomain-enum | DNS_NAME | DNS_NAME, URL_UNVERIFIED | @alt-glitch | 2022-10-26 | -| binaryedge | scan | Yes | Query the BinaryEdge API | passive, safe, subdomain-enum | DNS_NAME | DNS_NAME | @TheTechromancer | 2022-08-17 | | bucket_file_enum | scan | No | Works in conjunction with the filedownload module to download files from open storage buckets. Currently supported cloud providers: AWS, DigitalOcean | cloud-enum, passive, safe | STORAGE_BUCKET | URL_UNVERIFIED | @TheTechromancer | 2023-11-14 | | bufferoverrun | scan | Yes | Query BufferOverrun's TLS API for subdomains | passive, safe, subdomain-enum | DNS_NAME | DNS_NAME | @TheTechromancer | 2024-10-23 | | builtwith | scan | Yes | Query Builtwith.com for subdomains | affiliates, passive, safe, subdomain-enum | DNS_NAME | DNS_NAME | @TheTechromancer | 2022-08-23 | diff --git a/docs/scanning/advanced.md b/docs/scanning/advanced.md index 827622be4a..ee9ddc4b1f 100644 --- a/docs/scanning/advanced.md +++ b/docs/scanning/advanced.md @@ -61,7 +61,7 @@ Presets: Modules: -m, --modules MODULE [MODULE ...] - Modules to enable. Choices: affiliates,ajaxpro,anubisdb,apkpure,asn,azure_realm,azure_tenant,baddns,baddns_direct,baddns_zone,badsecrets,bevigil,binaryedge,bucket_amazon,bucket_azure,bucket_digitalocean,bucket_file_enum,bucket_firebase,bucket_google,bufferoverrun,builtwith,bypass403,c99,censys,certspotter,chaos,code_repository,credshed,crt,crt_db,dehashed,digitorus,dnsbimi,dnsbrute,dnsbrute_mutations,dnscaa,dnscommonsrv,dnsdumpster,dnstlsrpt,docker_pull,dockerhub,dotnetnuke,emailformat,extractous,ffuf,ffuf_shortnames,filedownload,fingerprintx,fullhunt,generic_ssrf,git,git_clone,gitdumper,github_codesearch,github_org,github_usersearch,github_workflows,gitlab,google_playstore,gowitness,hackertarget,host_header,httpx,hunt,hunterio,iis_shortnames,ip2location,ipneighbor,ipstack,jadx,leakix,lightfuzz,medusa,myssl,newsletters,ntlm,nuclei,oauth,otx,paramminer_cookies,paramminer_getparams,paramminer_headers,passivetotal,pgp,portfilter,portscan,postman,postman_download,rapiddns,reflected_parameters,robots,securitytrails,securitytxt,shodan_dns,shodan_idb,sitedossier,skymem,smuggler,social,sslcert,subdomaincenter,subdomainradar,telerik,trickest,trufflehog,url_manipulation,urlscan,vhost,viewdns,virustotal,wafw00f,wappalyzer,wayback,wpscan,zoomeye + Modules to enable. Choices: affiliates,ajaxpro,anubisdb,apkpure,asn,azure_realm,azure_tenant,baddns,baddns_direct,baddns_zone,badsecrets,bevigil,bucket_amazon,bucket_azure,bucket_digitalocean,bucket_file_enum,bucket_firebase,bucket_google,bufferoverrun,builtwith,bypass403,c99,censys,certspotter,chaos,code_repository,credshed,crt,crt_db,dehashed,digitorus,dnsbimi,dnsbrute,dnsbrute_mutations,dnscaa,dnscommonsrv,dnsdumpster,dnstlsrpt,docker_pull,dockerhub,dotnetnuke,emailformat,extractous,ffuf,ffuf_shortnames,filedownload,fingerprintx,fullhunt,generic_ssrf,git,git_clone,gitdumper,github_codesearch,github_org,github_usersearch,github_workflows,gitlab,google_playstore,gowitness,hackertarget,host_header,httpx,hunt,hunterio,iis_shortnames,ip2location,ipneighbor,ipstack,jadx,leakix,lightfuzz,medusa,myssl,newsletters,ntlm,nuclei,oauth,otx,paramminer_cookies,paramminer_getparams,paramminer_headers,passivetotal,pgp,portfilter,portscan,postman,postman_download,rapiddns,reflected_parameters,robots,securitytrails,securitytxt,shodan_dns,shodan_idb,sitedossier,skymem,smuggler,social,sslcert,subdomaincenter,subdomainradar,telerik,trickest,trufflehog,url_manipulation,urlscan,vhost,viewdns,virustotal,wafw00f,wappalyzer,wayback,wpscan,zoomeye -l, --list-modules List available modules. -lmo, --list-module-options Show all module config options diff --git a/docs/scanning/configuration.md b/docs/scanning/configuration.md index ddcd74f249..726416c2d6 100644 --- a/docs/scanning/configuration.md +++ b/docs/scanning/configuration.md @@ -482,8 +482,6 @@ In addition to the stated options for each module, the following universal optio | modules.apkpure.output_folder | str | Folder to download apk's to | | | modules.bevigil.api_key | str | BeVigil OSINT API Key | | | modules.bevigil.urls | bool | Emit URLs in addition to DNS_NAMEs | False | -| modules.binaryedge.api_key | str | BinaryEdge API key | | -| modules.binaryedge.max_records | int | Limit results to help prevent exceeding API quota | 1000 | | modules.bucket_file_enum.file_limit | int | Limit the number of files downloaded per bucket | 50 | | modules.bufferoverrun.api_key | str | BufferOverrun API key | | | modules.bufferoverrun.commercial | bool | Use commercial API | False | diff --git a/docs/scanning/events.md b/docs/scanning/events.md index 37a23552d4..f1d1e59fdc 100644 --- a/docs/scanning/events.md +++ b/docs/scanning/events.md @@ -110,7 +110,7 @@ Below is a full list of event types along with which modules produce/consume the | ASN | 0 | 1 | | asn | | AZURE_TENANT | 1 | 0 | speculate | | | CODE_REPOSITORY | 7 | 7 | docker_pull, git_clone, gitdumper, github_workflows, google_playstore, postman_download, trufflehog | code_repository, dockerhub, git, github_codesearch, github_org, gitlab, postman | -| DNS_NAME | 62 | 44 | anubisdb, asset_inventory, azure_realm, azure_tenant, baddns, baddns_zone, bevigil, binaryedge, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, emailformat, fullhunt, github_codesearch, github_usersearch, hackertarget, hunterio, leakix, myssl, nmap_xml, oauth, otx, passivetotal, pgp, portscan, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, speculate, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, viewdns, virustotal, wayback, zoomeye | anubisdb, azure_tenant, bevigil, binaryedge, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnsresolve, fullhunt, hackertarget, hunterio, leakix, myssl, ntlm, oauth, otx, passivetotal, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, speculate, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, vhost, viewdns, virustotal, wayback, zoomeye | +| DNS_NAME | 62 | 44 | anubisdb, asset_inventory, azure_realm, azure_tenant, baddns, baddns_zone, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, emailformat, fullhunt, github_codesearch, github_usersearch, hackertarget, hunterio, leakix, myssl, nmap_xml, oauth, otx, passivetotal, pgp, portscan, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, speculate, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, viewdns, virustotal, wayback, zoomeye | anubisdb, azure_tenant, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnsresolve, fullhunt, hackertarget, hunterio, leakix, myssl, ntlm, oauth, otx, passivetotal, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, speculate, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, vhost, viewdns, virustotal, wayback, zoomeye | | DNS_NAME_UNRESOLVED | 3 | 0 | baddns, speculate, subdomains | | | EMAIL_ADDRESS | 1 | 11 | emails | credshed, dehashed, dnscaa, dnstlsrpt, emailformat, github_usersearch, hunterio, pgp, securitytxt, skymem, sslcert | | FILESYSTEM | 4 | 9 | extractous, jadx, trufflehog, unarchive | apkpure, docker_pull, filedownload, git_clone, gitdumper, github_workflows, jadx, postman_download, unarchive | diff --git a/docs/scanning/index.md b/docs/scanning/index.md index cf65bb153d..25b23e08c9 100644 --- a/docs/scanning/index.md +++ b/docs/scanning/index.md @@ -114,9 +114,9 @@ A single module can have multiple flags. For example, the `securitytrails` modul | Flag | # Modules | Description | Modules | |------------------|-------------|----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| safe | 96 | Non-intrusive, safe to run | affiliates, aggregate, ajaxpro, anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, binaryedge, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, extractous, filedownload, fingerprintx, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ip2location, ipstack, jadx, leakix, myssl, newsletters, ntlm, oauth, otx, passivetotal, pgp, portfilter, portscan, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wappalyzer, wayback, zoomeye | -| passive | 71 | Never connects to target systems | affiliates, aggregate, anubisdb, apkpure, asn, azure_realm, azure_tenant, bevigil, binaryedge, bucket_file_enum, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, excavate, extractous, fullhunt, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, google_playstore, hackertarget, hunterio, ip2location, ipneighbor, ipstack, jadx, leakix, myssl, otx, passivetotal, pgp, portfilter, postman, postman_download, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, skymem, social, speculate, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wayback, zoomeye | -| subdomain-enum | 53 | Enumerates subdomains | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, binaryedge, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, sslcert, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, virustotal, wayback, zoomeye | +| safe | 96 | Non-intrusive, safe to run | affiliates, aggregate, ajaxpro, anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, extractous, filedownload, fingerprintx, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ip2location, ipstack, jadx, leakix, myssl, newsletters, ntlm, oauth, otx, passivetotal, pgp, portfilter, portscan, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wappalyzer, wayback, zoomeye | +| passive | 71 | Never connects to target systems | affiliates, aggregate, anubisdb, apkpure, asn, azure_realm, azure_tenant, bevigil, bucket_file_enum, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, excavate, extractous, fullhunt, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, google_playstore, hackertarget, hunterio, ip2location, ipneighbor, ipstack, jadx, leakix, myssl, otx, passivetotal, pgp, portfilter, postman, postman_download, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, skymem, social, speculate, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wayback, zoomeye | +| subdomain-enum | 53 | Enumerates subdomains | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, sslcert, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, virustotal, wayback, zoomeye | | active | 48 | Makes active connections to target systems | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, dnsbrute, dnsbrute_mutations, dnscommonsrv, dotnetnuke, ffuf, ffuf_shortnames, filedownload, fingerprintx, generic_ssrf, git, gitlab, gowitness, host_header, httpx, hunt, iis_shortnames, lightfuzz, medusa, newsletters, ntlm, nuclei, oauth, paramminer_cookies, paramminer_getparams, paramminer_headers, portscan, reflected_parameters, robots, securitytxt, smuggler, sslcert, telerik, url_manipulation, vhost, wafw00f, wappalyzer, wpscan | | aggressive | 21 | Generates a large amount of network traffic | bypass403, dnsbrute, dnsbrute_mutations, dotnetnuke, ffuf, ffuf_shortnames, generic_ssrf, host_header, ipneighbor, lightfuzz, medusa, nuclei, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, telerik, url_manipulation, vhost, wafw00f, wpscan | | code-enum | 17 | Find public code repositories and search them for secrets etc. | apkpure, code_repository, docker_pull, dockerhub, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, jadx, postman, postman_download, trufflehog | diff --git a/docs/scanning/presets_list.md b/docs/scanning/presets_list.md index 00aba13c8f..bb8a57d8d1 100644 --- a/docs/scanning/presets_list.md +++ b/docs/scanning/presets_list.md @@ -42,7 +42,7 @@ Enumerate cloud resources such as storage buckets, etc. -Modules: [60]("`anubisdb`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `baddns`, `bevigil`, `binaryedge`, `bucket_amazon`, `bucket_azure`, `bucket_digitalocean`, `bucket_file_enum`, `bucket_firebase`, `bucket_google`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `crt_db`, `crt`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `fullhunt`, `github_codesearch`, `github_org`, `hackertarget`, `httpx`, `hunterio`, `ipneighbor`, `leakix`, `myssl`, `oauth`, `otx`, `passivetotal`, `postman_download`, `postman`, `rapiddns`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `urlscan`, `virustotal`, `wayback`, `zoomeye`") +Modules: [60]("`anubisdb`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `baddns`, `bevigil`, `bucket_amazon`, `bucket_azure`, `bucket_digitalocean`, `bucket_file_enum`, `bucket_firebase`, `bucket_google`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `crt_db`, `crt`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `fullhunt`, `github_codesearch`, `github_org`, `hackertarget`, `httpx`, `hunterio`, `ipneighbor`, `leakix`, `myssl`, `oauth`, `otx`, `passivetotal`, `postman_download`, `postman`, `rapiddns`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `urlscan`, `virustotal`, `wayback`, `zoomeye`") ## **code-enum** @@ -270,7 +270,7 @@ Everything everywhere all at once -Modules: [91]("`anubisdb`, `apkpure`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `baddns`, `badsecrets`, `bevigil`, `binaryedge`, `bucket_amazon`, `bucket_azure`, `bucket_digitalocean`, `bucket_file_enum`, `bucket_firebase`, `bucket_google`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `code_repository`, `crt_db`, `crt`, `dehashed`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `docker_pull`, `dockerhub`, `emailformat`, `ffuf_shortnames`, `ffuf`, `filedownload`, `fullhunt`, `git_clone`, `git`, `gitdumper`, `github_codesearch`, `github_org`, `github_usersearch`, `github_workflows`, `gitlab`, `google_playstore`, `gowitness`, `hackertarget`, `httpx`, `hunt`, `hunterio`, `iis_shortnames`, `ipneighbor`, `jadx`, `leakix`, `myssl`, `ntlm`, `oauth`, `otx`, `paramminer_cookies`, `paramminer_getparams`, `paramminer_headers`, `passivetotal`, `pgp`, `postman_download`, `postman`, `rapiddns`, `reflected_parameters`, `robots`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `skymem`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `trufflehog`, `urlscan`, `virustotal`, `wappalyzer`, `wayback`, `zoomeye`") +Modules: [91]("`anubisdb`, `apkpure`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `baddns`, `badsecrets`, `bevigil`, `bucket_amazon`, `bucket_azure`, `bucket_digitalocean`, `bucket_file_enum`, `bucket_firebase`, `bucket_google`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `code_repository`, `crt_db`, `crt`, `dehashed`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `docker_pull`, `dockerhub`, `emailformat`, `ffuf_shortnames`, `ffuf`, `filedownload`, `fullhunt`, `git_clone`, `git`, `gitdumper`, `github_codesearch`, `github_org`, `github_usersearch`, `github_workflows`, `gitlab`, `google_playstore`, `gowitness`, `hackertarget`, `httpx`, `hunt`, `hunterio`, `iis_shortnames`, `ipneighbor`, `jadx`, `leakix`, `myssl`, `ntlm`, `oauth`, `otx`, `paramminer_cookies`, `paramminer_getparams`, `paramminer_headers`, `passivetotal`, `pgp`, `postman_download`, `postman`, `rapiddns`, `reflected_parameters`, `robots`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `skymem`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `trufflehog`, `urlscan`, `virustotal`, `wappalyzer`, `wayback`, `zoomeye`") ## **lightfuzz-heavy** @@ -682,7 +682,7 @@ Enumerate subdomains via APIs, brute-force -Modules: [53]("`anubisdb`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `bevigil`, `binaryedge`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `crt_db`, `crt`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `fullhunt`, `github_codesearch`, `github_org`, `hackertarget`, `httpx`, `hunterio`, `ipneighbor`, `leakix`, `myssl`, `oauth`, `otx`, `passivetotal`, `postman_download`, `postman`, `rapiddns`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `urlscan`, `virustotal`, `wayback`, `zoomeye`") +Modules: [53]("`anubisdb`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `bevigil`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `crt_db`, `crt`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `fullhunt`, `github_codesearch`, `github_org`, `hackertarget`, `httpx`, `hunterio`, `ipneighbor`, `leakix`, `myssl`, `oauth`, `otx`, `passivetotal`, `postman_download`, `postman`, `rapiddns`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `urlscan`, `virustotal`, `wayback`, `zoomeye`") ## **tech-detect** @@ -781,7 +781,7 @@ Here is a the same data, but in a table: | Preset | Category | Description | # Modules | Modules | |----------------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | baddns-intense | | Run all baddns modules and submodules. | 4 | baddns, baddns_direct, baddns_zone, httpx | -| cloud-enum | | Enumerate cloud resources such as storage buckets, etc. | 60 | anubisdb, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, bevigil, binaryedge, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, social, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, virustotal, wayback, zoomeye | +| cloud-enum | | Enumerate cloud resources such as storage buckets, etc. | 60 | anubisdb, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, social, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, virustotal, wayback, zoomeye | | code-enum | | Enumerate Git repositories, Docker images, etc. | 19 | apkpure, code_repository, docker_pull, dockerhub, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, httpx, jadx, postman, postman_download, social, trufflehog | | dirbust-heavy | web | Recursive web directory brute-force (aggressive) | 5 | ffuf, ffuf_shortnames, httpx, iis_shortnames, wayback | | dirbust-light | web | Basic web directory brute-force (surface-level directories only) | 4 | ffuf, ffuf_shortnames, httpx, iis_shortnames | @@ -789,7 +789,7 @@ Here is a the same data, but in a table: | email-enum | | Enumerate email addresses from APIs, web crawling, etc. | 8 | dehashed, dnscaa, dnstlsrpt, emailformat, hunterio, pgp, skymem, sslcert | | fast | | Scan only the provided targets as fast as possible - no extra discovery | 0 | | | iis-shortnames | web | Recursively enumerate IIS shortnames | 3 | ffuf_shortnames, httpx, iis_shortnames | -| kitchen-sink | | Everything everywhere all at once | 91 | anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, binaryedge, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, ffuf, ffuf_shortnames, filedownload, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ipneighbor, jadx, leakix, myssl, ntlm, oauth, otx, paramminer_cookies, paramminer_getparams, paramminer_headers, passivetotal, pgp, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, urlscan, virustotal, wappalyzer, wayback, zoomeye | +| kitchen-sink | | Everything everywhere all at once | 91 | anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, ffuf, ffuf_shortnames, filedownload, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ipneighbor, jadx, leakix, myssl, ntlm, oauth, otx, paramminer_cookies, paramminer_getparams, paramminer_headers, passivetotal, pgp, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, urlscan, virustotal, wappalyzer, wayback, zoomeye | | lightfuzz-heavy | web | Discover web parameters and lightly fuzz them for vulnerabilities, with more intense discovery techniques, including POST parameters, which are more invasive. Uses all lightfuzz modules, and adds paramminer modules for parameter discovery. | 10 | badsecrets, httpx, hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, portfilter, reflected_parameters, robots | | lightfuzz-light | web | Discover web parameters and lightly fuzz them for vulnerabilities, with only the most common vulnerabilities and minimal extra modules. Safest to run alongside larger scans. | 3 | httpx, lightfuzz, portfilter | | lightfuzz-medium | web | Discover web parameters and lightly fuzz them for vulnerabilities. Uses all lightfuzz modules, without some of the more intense discovery techniques. Does not send POST requests. This is the default lightfuzz preset; if you're not sure which one to use, this is a good starting point. | 6 | badsecrets, httpx, hunt, lightfuzz, portfilter, reflected_parameters | @@ -802,7 +802,7 @@ Here is a the same data, but in a table: | paramminer | web | Discover new web parameters via brute-force, and analyze them with additional modules | 6 | httpx, hunt, paramminer_cookies, paramminer_getparams, paramminer_headers, reflected_parameters | | spider | | Recursive web spider | 1 | httpx | | spider-intense | | Recursive web spider with more aggressive settings | 1 | httpx | -| subdomain-enum | | Enumerate subdomains via APIs, brute-force | 53 | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, binaryedge, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, social, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, virustotal, wayback, zoomeye | +| subdomain-enum | | Enumerate subdomains via APIs, brute-force | 53 | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, social, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, virustotal, wayback, zoomeye | | tech-detect | | Detect technologies via Wappalyzer, Nuclei, and FingerprintX | 4 | fingerprintx, httpx, nuclei, wappalyzer | | web-basic | | Quick web scan | 18 | azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_firebase, bucket_google, ffuf_shortnames, filedownload, git, httpx, iis_shortnames, ntlm, oauth, robots, securitytxt, sslcert, wappalyzer | | web-screenshots | | Take screenshots of webpages | 3 | gowitness, httpx, social | From 860aab3b50980dd2c1d73762cc245b974cda056a Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 10:20:48 -0400 Subject: [PATCH 13/77] run docs script --- docs/data/chord_graph/entities.json | 379 ++++++++++++++-------------- docs/data/chord_graph/rels.json | 328 ++++++++++++------------ docs/modules/list_of_modules.md | 5 +- docs/scanning/advanced.md | 16 +- docs/scanning/configuration.md | 26 +- docs/scanning/events.md | 70 ++--- docs/scanning/index.md | 47 ++-- docs/scanning/presets_list.md | 70 ++--- 8 files changed, 484 insertions(+), 457 deletions(-) diff --git a/docs/data/chord_graph/entities.json b/docs/data/chord_graph/entities.json index 39863451d5..dddbc3fdea 100644 --- a/docs/data/chord_graph/entities.json +++ b/docs/data/chord_graph/entities.json @@ -23,11 +23,11 @@ ] }, { - "id": 134, + "id": 135, "name": "AZURE_TENANT", "parent": 88888888, "consumes": [ - 133 + 134 ], "produces": [] }, @@ -41,8 +41,8 @@ 82, 86, 88, - 121, - 141 + 122, + 142 ], "produces": [ 41, @@ -51,7 +51,7 @@ 83, 84, 87, - 120 + 121 ] }, { @@ -96,30 +96,31 @@ 91, 95, 102, - 105, - 107, - 110, + 103, + 106, + 108, 111, - 115, + 112, 116, - 118, - 122, - 125, + 117, + 119, + 123, 126, 127, 128, 129, 130, - 133, - 136, + 131, + 134, 137, 138, - 140, - 144, - 147, + 139, + 141, + 145, 148, - 151, - 155 + 149, + 152, + 156 ], "produces": [ 6, @@ -144,27 +145,27 @@ 91, 95, 102, - 105, - 108, - 110, + 106, + 109, 111, - 115, - 122, - 125, - 127, + 112, + 116, + 123, + 126, 128, 129, - 133, - 135, + 130, + 134, 136, 137, - 140, - 144, + 138, + 141, 145, - 147, + 146, 148, - 151, - 155 + 149, + 152, + 156 ] }, { @@ -173,8 +174,8 @@ "parent": 88888888, "consumes": [ 21, - 133, - 138 + 134, + 139 ], "produces": [] }, @@ -193,10 +194,10 @@ 66, 85, 95, - 116, - 126, - 130, - 135 + 117, + 127, + 131, + 136 ] }, { @@ -206,8 +207,8 @@ "consumes": [ 71, 101, - 141, - 142 + 142, + 143 ], "produces": [ 8, @@ -217,8 +218,8 @@ 82, 86, 101, - 121, - 142 + 122, + 143 ] }, { @@ -227,7 +228,7 @@ "parent": 88888888, "consumes": [ 14, - 153 + 154 ], "produces": [ 1, @@ -245,20 +246,20 @@ 87, 92, 94, - 103, - 106, - 108, + 104, + 107, 109, - 112, + 110, 113, - 123, - 128, - 131, - 133, - 139, - 141, - 143, - 154 + 114, + 124, + 129, + 132, + 134, + 140, + 142, + 144, + 155 ] }, { @@ -294,17 +295,17 @@ 75, 87, 92, - 106, 107, 108, - 112, + 109, 113, 114, - 133, - 139, - 141, - 150, - 154 + 115, + 134, + 140, + 142, + 151, + 155 ], "produces": [ 93 @@ -320,25 +321,25 @@ 97, 99, 100, - 107, - 118, - 128, - 133 + 108, + 119, + 129, + 134 ], "produces": [ 14, 59, 99, - 133 + 134 ] }, { - "id": 119, + "id": 120, "name": "IP_RANGE", "parent": 88888888, "consumes": [ - 118, - 133 + 119, + 134 ], "produces": [] }, @@ -361,15 +362,15 @@ 14, 76, 93, - 107, - 117, - 135 + 108, + 118, + 136 ], "produces": [ 14, - 118, - 128, - 133 + 119, + 129, + 134 ] }, { @@ -380,10 +381,10 @@ 62, 84, 88, - 120 + 121 ], "produces": [ - 133 + 134 ] }, { @@ -401,8 +402,8 @@ "name": "PROTOCOL", "parent": 88888888, "consumes": [ - 104, - 107 + 105, + 108 ], "produces": [ 76 @@ -425,7 +426,7 @@ "parent": 88888888, "consumes": [ 68, - 141 + 142 ], "produces": [ 71 @@ -440,14 +441,14 @@ 84, 87, 89, - 120, - 133 + 121, + 134 ], "produces": [ 62, 85, 87, - 132 + 133 ] }, { @@ -462,7 +463,7 @@ 31, 32, 33, - 133 + 134 ], "produces": [ 28, @@ -479,18 +480,18 @@ "consumes": [ 14, 87, - 153, - 154 + 154, + 155 ], "produces": [ 26, 65, 87, 89, - 109, - 128, - 150, - 154 + 110, + 129, + 151, + 155 ] }, { @@ -508,18 +509,18 @@ 89, 93, 96, - 103, - 108, + 104, 109, - 117, - 124, - 131, - 133, - 139, - 143, - 145, - 149, - 153 + 110, + 118, + 125, + 132, + 134, + 140, + 144, + 146, + 150, + 154 ], "produces": [ 89, @@ -545,10 +546,10 @@ 41, 75, 93, - 110, - 117, - 132, - 133 + 111, + 118, + 133, + 134 ], "produces": [ 18, @@ -564,11 +565,11 @@ 83, 89, 95, - 124, - 126, - 144, - 151, - 154 + 125, + 127, + 145, + 152, + 155 ] }, { @@ -576,7 +577,7 @@ "name": "USERNAME", "parent": 88888888, "consumes": [ - 133 + 134 ], "produces": [ 43, @@ -584,14 +585,14 @@ ] }, { - "id": 146, + "id": 147, "name": "VHOST", "parent": 88888888, "consumes": [ - 153 + 154 ], "produces": [ - 145 + 146 ] }, { @@ -600,7 +601,7 @@ "parent": 88888888, "consumes": [ 14, - 153 + 154 ], "produces": [ 1, @@ -612,11 +613,12 @@ 79, 103, 104, - 109, - 128, - 139, - 141, - 154 + 105, + 110, + 129, + 140, + 142, + 155 ] }, { @@ -627,7 +629,7 @@ 14 ], "produces": [ - 149 + 150 ] }, { @@ -645,18 +647,18 @@ "parent": 88888888, "consumes": [ 94, - 103, - 112, + 104, 113, 114, - 123, - 152 + 115, + 124, + 153 ], "produces": [ 68, - 112, 113, - 114 + 114, + 115 ] }, { @@ -1528,6 +1530,17 @@ }, { "id": 103, + "name": "legba", + "parent": 99999999, + "consumes": [ + 7 + ], + "produces": [ + 5 + ] + }, + { + "id": 104, "name": "lightfuzz", "parent": 99999999, "consumes": [ @@ -1540,7 +1553,7 @@ ] }, { - "id": 104, + "id": 105, "name": "medusa", "parent": 99999999, "consumes": [ @@ -1551,7 +1564,7 @@ ] }, { - "id": 105, + "id": 106, "name": "myssl", "parent": 99999999, "consumes": [ @@ -1562,7 +1575,7 @@ ] }, { - "id": 106, + "id": 107, "name": "newsletters", "parent": 99999999, "consumes": [ @@ -1573,7 +1586,7 @@ ] }, { - "id": 107, + "id": 108, "name": "nmap_xml", "parent": 99999999, "consumes": [ @@ -1586,7 +1599,7 @@ "produces": [] }, { - "id": 108, + "id": 109, "name": "ntlm", "parent": 99999999, "consumes": [ @@ -1599,7 +1612,7 @@ ] }, { - "id": 109, + "id": 110, "name": "nuclei", "parent": 99999999, "consumes": [ @@ -1612,7 +1625,7 @@ ] }, { - "id": 110, + "id": 111, "name": "oauth", "parent": 99999999, "consumes": [ @@ -1624,7 +1637,7 @@ ] }, { - "id": 111, + "id": 112, "name": "otx", "parent": 99999999, "consumes": [ @@ -1635,7 +1648,7 @@ ] }, { - "id": 112, + "id": 113, "name": "paramminer_cookies", "parent": 99999999, "consumes": [ @@ -1648,7 +1661,7 @@ ] }, { - "id": 113, + "id": 114, "name": "paramminer_getparams", "parent": 99999999, "consumes": [ @@ -1661,7 +1674,7 @@ ] }, { - "id": 114, + "id": 115, "name": "paramminer_headers", "parent": 99999999, "consumes": [ @@ -1673,7 +1686,7 @@ ] }, { - "id": 115, + "id": 116, "name": "passivetotal", "parent": 99999999, "consumes": [ @@ -1684,7 +1697,7 @@ ] }, { - "id": 116, + "id": 117, "name": "pgp", "parent": 99999999, "consumes": [ @@ -1695,7 +1708,7 @@ ] }, { - "id": 117, + "id": 118, "name": "portfilter", "parent": 99999999, "consumes": [ @@ -1706,20 +1719,20 @@ "produces": [] }, { - "id": 118, + "id": 119, "name": "portscan", "parent": 99999999, "consumes": [ 7, 12, - 119 + 120 ], "produces": [ 15 ] }, { - "id": 120, + "id": 121, "name": "postman", "parent": 99999999, "consumes": [ @@ -1731,7 +1744,7 @@ ] }, { - "id": 121, + "id": 122, "name": "postman_download", "parent": 99999999, "consumes": [ @@ -1742,7 +1755,7 @@ ] }, { - "id": 122, + "id": 123, "name": "rapiddns", "parent": 99999999, "consumes": [ @@ -1753,7 +1766,7 @@ ] }, { - "id": 123, + "id": 124, "name": "reflected_parameters", "parent": 99999999, "consumes": [ @@ -1764,7 +1777,7 @@ ] }, { - "id": 124, + "id": 125, "name": "robots", "parent": 99999999, "consumes": [ @@ -1775,7 +1788,7 @@ ] }, { - "id": 125, + "id": 126, "name": "securitytrails", "parent": 99999999, "consumes": [ @@ -1786,7 +1799,7 @@ ] }, { - "id": 126, + "id": 127, "name": "securitytxt", "parent": 99999999, "consumes": [ @@ -1798,7 +1811,7 @@ ] }, { - "id": 127, + "id": 128, "name": "shodan_dns", "parent": 99999999, "consumes": [ @@ -1809,7 +1822,7 @@ ] }, { - "id": 128, + "id": 129, "name": "shodan_idb", "parent": 99999999, "consumes": [ @@ -1825,7 +1838,7 @@ ] }, { - "id": 129, + "id": 130, "name": "sitedossier", "parent": 99999999, "consumes": [ @@ -1836,7 +1849,7 @@ ] }, { - "id": 130, + "id": 131, "name": "skymem", "parent": 99999999, "consumes": [ @@ -1847,7 +1860,7 @@ ] }, { - "id": 131, + "id": 132, "name": "smuggler", "parent": 99999999, "consumes": [ @@ -1858,7 +1871,7 @@ ] }, { - "id": 132, + "id": 133, "name": "social", "parent": 99999999, "consumes": [ @@ -1869,16 +1882,16 @@ ] }, { - "id": 133, + "id": 134, "name": "speculate", "parent": 99999999, "consumes": [ - 134, + 135, 7, 22, 2, 12, - 119, + 120, 64, 24, 3, @@ -1894,7 +1907,7 @@ ] }, { - "id": 135, + "id": 136, "name": "sslcert", "parent": 99999999, "consumes": [ @@ -1906,7 +1919,7 @@ ] }, { - "id": 136, + "id": 137, "name": "subdomaincenter", "parent": 99999999, "consumes": [ @@ -1917,7 +1930,7 @@ ] }, { - "id": 137, + "id": 138, "name": "subdomainradar", "parent": 99999999, "consumes": [ @@ -1928,7 +1941,7 @@ ] }, { - "id": 138, + "id": 139, "name": "subdomains", "parent": 99999999, "consumes": [ @@ -1938,7 +1951,7 @@ "produces": [] }, { - "id": 139, + "id": 140, "name": "telerik", "parent": 99999999, "consumes": [ @@ -1951,7 +1964,7 @@ ] }, { - "id": 140, + "id": 141, "name": "trickest", "parent": 99999999, "consumes": [ @@ -1962,7 +1975,7 @@ ] }, { - "id": 141, + "id": 142, "name": "trufflehog", "parent": 99999999, "consumes": [ @@ -1977,7 +1990,7 @@ ] }, { - "id": 142, + "id": 143, "name": "unarchive", "parent": 99999999, "consumes": [ @@ -1988,7 +2001,7 @@ ] }, { - "id": 143, + "id": 144, "name": "url_manipulation", "parent": 99999999, "consumes": [ @@ -1999,7 +2012,7 @@ ] }, { - "id": 144, + "id": 145, "name": "urlscan", "parent": 99999999, "consumes": [ @@ -2011,7 +2024,7 @@ ] }, { - "id": 145, + "id": 146, "name": "vhost", "parent": 99999999, "consumes": [ @@ -2019,11 +2032,11 @@ ], "produces": [ 7, - 146 + 147 ] }, { - "id": 147, + "id": 148, "name": "viewdns", "parent": 99999999, "consumes": [ @@ -2034,7 +2047,7 @@ ] }, { - "id": 148, + "id": 149, "name": "virustotal", "parent": 99999999, "consumes": [ @@ -2045,7 +2058,7 @@ ] }, { - "id": 149, + "id": 150, "name": "wafw00f", "parent": 99999999, "consumes": [ @@ -2056,7 +2069,7 @@ ] }, { - "id": 150, + "id": 151, "name": "wappalyzer", "parent": 99999999, "consumes": [ @@ -2067,7 +2080,7 @@ ] }, { - "id": 151, + "id": 152, "name": "wayback", "parent": 99999999, "consumes": [ @@ -2079,7 +2092,7 @@ ] }, { - "id": 152, + "id": 153, "name": "web_parameters", "parent": 99999999, "consumes": [ @@ -2088,20 +2101,20 @@ "produces": [] }, { - "id": 153, + "id": 154, "name": "web_report", "parent": 99999999, "consumes": [ 4, 16, 3, - 146, + 147, 5 ], "produces": [] }, { - "id": 154, + "id": 155, "name": "wpscan", "parent": 99999999, "consumes": [ @@ -2116,7 +2129,7 @@ ] }, { - "id": 155, + "id": 156, "name": "zoomeye", "parent": 99999999, "consumes": [ diff --git a/docs/data/chord_graph/rels.json b/docs/data/chord_graph/rels.json index f6ea6fce5d..0262361ba1 100644 --- a/docs/data/chord_graph/rels.json +++ b/docs/data/chord_graph/rels.json @@ -1061,777 +1061,787 @@ }, { "source": 103, + "target": 7, + "type": "consumes" + }, + { + "source": 5, + "target": 103, + "type": "produces" + }, + { + "source": 104, "target": 3, "type": "consumes" }, { - "source": 103, + "source": 104, "target": 70, "type": "consumes" }, { "source": 4, - "target": 103, + "target": 104, "type": "produces" }, { "source": 5, - "target": 103, + "target": 104, "type": "produces" }, { - "source": 104, + "source": 105, "target": 77, "type": "consumes" }, { "source": 5, - "target": 104, + "target": 105, "type": "produces" }, { - "source": 105, + "source": 106, "target": 7, "type": "consumes" }, { "source": 7, - "target": 105, + "target": 106, "type": "produces" }, { - "source": 106, + "source": 107, "target": 2, "type": "consumes" }, { "source": 4, - "target": 106, + "target": 107, "type": "produces" }, { - "source": 107, + "source": 108, "target": 7, "type": "consumes" }, { - "source": 107, + "source": 108, "target": 2, "type": "consumes" }, { - "source": 107, + "source": 108, "target": 12, "type": "consumes" }, { - "source": 107, + "source": 108, "target": 15, "type": "consumes" }, { - "source": 107, + "source": 108, "target": 77, "type": "consumes" }, { - "source": 108, + "source": 109, "target": 2, "type": "consumes" }, { - "source": 108, + "source": 109, "target": 3, "type": "consumes" }, { "source": 7, - "target": 108, + "target": 109, "type": "produces" }, { "source": 4, - "target": 108, + "target": 109, "type": "produces" }, { - "source": 109, + "source": 110, "target": 3, "type": "consumes" }, { "source": 4, - "target": 109, + "target": 110, "type": "produces" }, { "source": 16, - "target": 109, + "target": 110, "type": "produces" }, { "source": 5, - "target": 109, + "target": 110, "type": "produces" }, { - "source": 110, + "source": 111, "target": 7, "type": "consumes" }, { - "source": 110, + "source": 111, "target": 19, "type": "consumes" }, { "source": 7, - "target": 110, + "target": 111, "type": "produces" }, { - "source": 111, + "source": 112, "target": 7, "type": "consumes" }, { "source": 7, - "target": 111, + "target": 112, "type": "produces" }, { - "source": 112, + "source": 113, "target": 2, "type": "consumes" }, { - "source": 112, + "source": 113, "target": 70, "type": "consumes" }, { "source": 4, - "target": 112, + "target": 113, "type": "produces" }, { "source": 70, - "target": 112, + "target": 113, "type": "produces" }, { - "source": 113, + "source": 114, "target": 2, "type": "consumes" }, { - "source": 113, + "source": 114, "target": 70, "type": "consumes" }, { "source": 4, - "target": 113, + "target": 114, "type": "produces" }, { "source": 70, - "target": 113, + "target": 114, "type": "produces" }, { - "source": 114, + "source": 115, "target": 2, "type": "consumes" }, { - "source": 114, + "source": 115, "target": 70, "type": "consumes" }, { "source": 70, - "target": 114, + "target": 115, "type": "produces" }, { - "source": 115, + "source": 116, "target": 7, "type": "consumes" }, { "source": 7, - "target": 115, + "target": 116, "type": "produces" }, { - "source": 116, + "source": 117, "target": 7, "type": "consumes" }, { "source": 44, - "target": 116, + "target": 117, "type": "produces" }, { - "source": 117, + "source": 118, "target": 15, "type": "consumes" }, { - "source": 117, + "source": 118, "target": 3, "type": "consumes" }, { - "source": 117, + "source": 118, "target": 19, "type": "consumes" }, { - "source": 118, + "source": 119, "target": 7, "type": "consumes" }, { - "source": 118, + "source": 119, "target": 12, "type": "consumes" }, { - "source": 118, - "target": 119, + "source": 119, + "target": 120, "type": "consumes" }, { "source": 15, - "target": 118, + "target": 119, "type": "produces" }, { - "source": 120, + "source": 121, "target": 63, "type": "consumes" }, { - "source": 120, + "source": 121, "target": 64, "type": "consumes" }, { "source": 42, - "target": 120, + "target": 121, "type": "produces" }, { - "source": 121, + "source": 122, "target": 42, "type": "consumes" }, { "source": 10, - "target": 121, + "target": 122, "type": "produces" }, { - "source": 122, + "source": 123, "target": 7, "type": "consumes" }, { "source": 7, - "target": 122, + "target": 123, "type": "produces" }, { - "source": 123, + "source": 124, "target": 70, "type": "consumes" }, { "source": 4, - "target": 123, + "target": 124, "type": "produces" }, { - "source": 124, + "source": 125, "target": 3, "type": "consumes" }, { "source": 19, - "target": 124, + "target": 125, "type": "produces" }, { - "source": 125, + "source": 126, "target": 7, "type": "consumes" }, { "source": 7, - "target": 125, + "target": 126, "type": "produces" }, { - "source": 126, + "source": 127, "target": 7, "type": "consumes" }, { "source": 44, - "target": 126, + "target": 127, "type": "produces" }, { "source": 19, - "target": 126, + "target": 127, "type": "produces" }, { - "source": 127, + "source": 128, "target": 7, "type": "consumes" }, { "source": 7, - "target": 127, + "target": 128, "type": "produces" }, { - "source": 128, + "source": 129, "target": 7, "type": "consumes" }, { - "source": 128, + "source": 129, "target": 12, "type": "consumes" }, { "source": 7, - "target": 128, + "target": 129, "type": "produces" }, { "source": 4, - "target": 128, + "target": 129, "type": "produces" }, { "source": 15, - "target": 128, + "target": 129, "type": "produces" }, { "source": 16, - "target": 128, + "target": 129, "type": "produces" }, { "source": 5, - "target": 128, + "target": 129, "type": "produces" }, { - "source": 129, + "source": 130, "target": 7, "type": "consumes" }, { "source": 7, - "target": 129, + "target": 130, "type": "produces" }, { - "source": 130, + "source": 131, "target": 7, "type": "consumes" }, { "source": 44, - "target": 130, + "target": 131, "type": "produces" }, { - "source": 131, + "source": 132, "target": 3, "type": "consumes" }, { "source": 4, - "target": 131, + "target": 132, "type": "produces" }, { - "source": 132, + "source": 133, "target": 19, "type": "consumes" }, { "source": 64, - "target": 132, + "target": 133, "type": "produces" }, { - "source": 133, - "target": 134, + "source": 134, + "target": 135, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 7, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 22, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 2, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 12, "type": "consumes" }, { - "source": 133, - "target": 119, + "source": 134, + "target": 120, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 64, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 24, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 3, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 19, "type": "consumes" }, { - "source": 133, + "source": 134, "target": 47, "type": "consumes" }, { "source": 7, - "target": 133, + "target": 134, "type": "produces" }, { "source": 4, - "target": 133, + "target": 134, "type": "produces" }, { "source": 12, - "target": 133, + "target": 134, "type": "produces" }, { "source": 15, - "target": 133, + "target": 134, "type": "produces" }, { "source": 63, - "target": 133, + "target": 134, "type": "produces" }, { - "source": 135, + "source": 136, "target": 15, "type": "consumes" }, { "source": 7, - "target": 135, + "target": 136, "type": "produces" }, { "source": 44, - "target": 135, + "target": 136, "type": "produces" }, { - "source": 136, + "source": 137, "target": 7, "type": "consumes" }, { "source": 7, - "target": 136, + "target": 137, "type": "produces" }, { - "source": 137, + "source": 138, "target": 7, "type": "consumes" }, { "source": 7, - "target": 137, + "target": 138, "type": "produces" }, { - "source": 138, + "source": 139, "target": 7, "type": "consumes" }, { - "source": 138, + "source": 139, "target": 22, "type": "consumes" }, { - "source": 139, + "source": 140, "target": 2, "type": "consumes" }, { - "source": 139, + "source": 140, "target": 3, "type": "consumes" }, { "source": 4, - "target": 139, + "target": 140, "type": "produces" }, { "source": 5, - "target": 139, + "target": 140, "type": "produces" }, { - "source": 140, + "source": 141, "target": 7, "type": "consumes" }, { "source": 7, - "target": 140, + "target": 141, "type": "produces" }, { - "source": 141, + "source": 142, "target": 42, "type": "consumes" }, { - "source": 141, + "source": 142, "target": 10, "type": "consumes" }, { - "source": 141, + "source": 142, "target": 2, "type": "consumes" }, { - "source": 141, + "source": 142, "target": 69, "type": "consumes" }, { "source": 4, - "target": 141, + "target": 142, "type": "produces" }, { "source": 5, - "target": 141, + "target": 142, "type": "produces" }, { - "source": 142, + "source": 143, "target": 10, "type": "consumes" }, { "source": 10, - "target": 142, + "target": 143, "type": "produces" }, { - "source": 143, + "source": 144, "target": 3, "type": "consumes" }, { "source": 4, - "target": 143, + "target": 144, "type": "produces" }, { - "source": 144, + "source": 145, "target": 7, "type": "consumes" }, { "source": 7, - "target": 144, + "target": 145, "type": "produces" }, { "source": 19, - "target": 144, + "target": 145, "type": "produces" }, { - "source": 145, + "source": 146, "target": 3, "type": "consumes" }, { "source": 7, - "target": 145, + "target": 146, "type": "produces" }, { - "source": 146, - "target": 145, + "source": 147, + "target": 146, "type": "produces" }, { - "source": 147, + "source": 148, "target": 7, "type": "consumes" }, { "source": 7, - "target": 147, + "target": 148, "type": "produces" }, { - "source": 148, + "source": 149, "target": 7, "type": "consumes" }, { "source": 7, - "target": 148, + "target": 149, "type": "produces" }, { - "source": 149, + "source": 150, "target": 3, "type": "consumes" }, { "source": 17, - "target": 149, + "target": 150, "type": "produces" }, { - "source": 150, + "source": 151, "target": 2, "type": "consumes" }, { "source": 16, - "target": 150, + "target": 151, "type": "produces" }, { - "source": 151, + "source": 152, "target": 7, "type": "consumes" }, { "source": 7, - "target": 151, + "target": 152, "type": "produces" }, { "source": 19, - "target": 151, + "target": 152, "type": "produces" }, { - "source": 152, + "source": 153, "target": 70, "type": "consumes" }, { - "source": 153, + "source": 154, "target": 4, "type": "consumes" }, { - "source": 153, + "source": 154, "target": 16, "type": "consumes" }, { - "source": 153, + "source": 154, "target": 3, "type": "consumes" }, { - "source": 153, - "target": 146, + "source": 154, + "target": 147, "type": "consumes" }, { - "source": 153, + "source": 154, "target": 5, "type": "consumes" }, { - "source": 154, + "source": 155, "target": 2, "type": "consumes" }, { - "source": 154, + "source": 155, "target": 16, "type": "consumes" }, { "source": 4, - "target": 154, + "target": 155, "type": "produces" }, { "source": 16, - "target": 154, + "target": 155, "type": "produces" }, { "source": 19, - "target": 154, + "target": 155, "type": "produces" }, { "source": 5, - "target": 154, + "target": 155, "type": "produces" }, { - "source": 155, + "source": 156, "target": 7, "type": "consumes" }, { "source": 7, - "target": 155, + "target": 156, "type": "produces" } ] \ No newline at end of file diff --git a/docs/modules/list_of_modules.md b/docs/modules/list_of_modules.md index 2fb7e23e87..af2e9c0a1c 100644 --- a/docs/modules/list_of_modules.md +++ b/docs/modules/list_of_modules.md @@ -30,6 +30,7 @@ | httpx | scan | No | Visit webpages. Many other modules rely on httpx | active, cloud-enum, safe, social-enum, subdomain-enum, web-basic | OPEN_TCP_PORT, URL, URL_UNVERIFIED | HTTP_RESPONSE, URL | @TheTechromancer | 2022-07-08 | | hunt | scan | No | Watch for commonly-exploitable HTTP parameters | active, safe, web-thorough | WEB_PARAMETER | FINDING | @liquidsec | 2022-07-20 | | iis_shortnames | scan | No | Check for IIS shortname vulnerability | active, iis-shortnames, safe, web-basic | URL | URL_HINT | @liquidsec | 2022-04-15 | +| legba | scan | No | Fingerprint exposed services like RDP, SSH, MySQL, etc. | active, safe, service-enum, slow | DNS_NAME | VULNERABILITY | @TheTechromancer | 2023-01-30 | | lightfuzz | scan | No | Find Web Parameters and Lightly Fuzz them using a heuristic based scanner | active, aggressive, deadly, web-thorough | URL, WEB_PARAMETER | FINDING, VULNERABILITY | @liquidsec | 2024-06-28 | | medusa | scan | No | Medusa SNMP bruteforcing with v1, v2c and R/W check. | active, aggressive, deadly | PROTOCOL | VULNERABILITY | @christianfl | 2025-05-16 | | newsletters | scan | No | Searches for Newsletter Submission Entry Fields on Websites | active, safe | HTTP_RESPONSE | FINDING | @stryker2k2 | 2024-02-02 | @@ -51,10 +52,10 @@ | wafw00f | scan | No | Web Application Firewall Fingerprinting Tool | active, aggressive | URL | WAF | @liquidsec | 2023-02-15 | | wappalyzer | scan | No | Extract technologies from web responses | active, safe, web-basic | HTTP_RESPONSE | TECHNOLOGY | @liquidsec | 2022-04-15 | | wpscan | scan | No | Wordpress security scanner. Highly recommended to use an API key for better results. | active, aggressive | HTTP_RESPONSE, TECHNOLOGY | FINDING, TECHNOLOGY, URL_UNVERIFIED, VULNERABILITY | @domwhewell-sage | 2024-05-29 | -| affiliates | scan | No | Summarize affiliate domains at the end of a scan | affiliates, passive, safe | * | | @TheTechromancer | 2022-07-25 | +| affiliates | scan | No | Summarize affiliate domains at the end of a scan | affiliates, passive, report, safe | * | | @TheTechromancer | 2022-07-25 | | anubisdb | scan | No | Query jldc.me's database for subdomains | passive, safe, subdomain-enum | DNS_NAME | DNS_NAME | @TheTechromancer | 2022-10-04 | | apkpure | scan | No | Download android applications from apkpure.com | code-enum, passive, safe | MOBILE_APP | FILESYSTEM | @domwhewell-sage | 2024-10-11 | -| asn | scan | No | Query ripe and bgpview.io for ASNs | passive, safe, subdomain-enum | IP_ADDRESS | ASN | @TheTechromancer | 2022-07-25 | +| asn | scan | No | Query ripe and bgpview.io for ASNs | passive, report, safe, subdomain-enum | IP_ADDRESS | ASN | @TheTechromancer | 2022-07-25 | | azure_realm | scan | No | Retrieves the "AuthURL" from login.microsoftonline.com/getuserrealm | affiliates, cloud-enum, passive, safe, subdomain-enum, web-basic | DNS_NAME | URL_UNVERIFIED | @TheTechromancer | 2023-07-12 | | azure_tenant | scan | No | Query Azure for tenant sister domains | affiliates, cloud-enum, passive, safe, subdomain-enum | DNS_NAME | DNS_NAME | @TheTechromancer | 2024-07-04 | | bevigil | scan | Yes | Retrieve OSINT data from mobile applications using BeVigil | passive, safe, subdomain-enum | DNS_NAME | DNS_NAME, URL_UNVERIFIED | @alt-glitch | 2022-10-26 | diff --git a/docs/scanning/advanced.md b/docs/scanning/advanced.md index ee9ddc4b1f..5a77401200 100644 --- a/docs/scanning/advanced.md +++ b/docs/scanning/advanced.md @@ -32,11 +32,13 @@ if __name__ == "__main__": ```text -usage: bbot [-h] [-t TARGET [TARGET ...]] [-w WHITELIST [WHITELIST ...]] [-b BLACKLIST [BLACKLIST ...]] [--strict-scope] [-p [PRESET ...]] [-c [CONFIG ...]] [-lp] - [-m MODULE [MODULE ...]] [-l] [-lmo] [-em MODULE [MODULE ...]] [-f FLAG [FLAG ...]] [-lf] [-rf FLAG [FLAG ...]] [-ef FLAG [FLAG ...]] [--allow-deadly] [-n SCAN_NAME] [-v] - [-d] [-s] [--force] [-y] [--fast-mode] [--dry-run] [--current-preset] [--current-preset-full] [-mh MODULE] [-o DIR] [-om MODULE [MODULE ...]] [-lo] [--json] [--brief] - [--event-types EVENT_TYPES [EVENT_TYPES ...]] [--exclude-cdn] [--no-deps | --force-deps | --retry-deps | --ignore-failed-deps | --install-all-deps] [--version] - [--proxy HTTP_PROXY] [-H CUSTOM_HEADERS [CUSTOM_HEADERS ...]] [-C CUSTOM_COOKIES [CUSTOM_COOKIES ...]] [--custom-yara-rules CUSTOM_YARA_RULES] [--user-agent USER_AGENT] +usage: bbot [-h] [-t TARGET [TARGET ...]] [-w WHITELIST [WHITELIST ...]] [-b BLACKLIST [BLACKLIST ...]] [--strict-scope] [-p [PRESET ...]] + [-c [CONFIG ...]] [-lp] [-m MODULE [MODULE ...]] [-l] [-lmo] [-em MODULE [MODULE ...]] [-f FLAG [FLAG ...]] [-lf] + [-rf FLAG [FLAG ...]] [-ef FLAG [FLAG ...]] [--allow-deadly] [-n SCAN_NAME] [-v] [-d] [-s] [--force] [-y] [--fast-mode] + [--dry-run] [--current-preset] [--current-preset-full] [-mh MODULE] [-o DIR] [-om MODULE [MODULE ...]] [-lo] [--json] [--brief] + [--event-types EVENT_TYPES [EVENT_TYPES ...]] [--exclude-cdn] [--no-deps | --force-deps | --retry-deps | --ignore-failed-deps | + --install-all-deps] [--version] [--proxy HTTP_PROXY] [-H CUSTOM_HEADERS [CUSTOM_HEADERS ...]] + [-C CUSTOM_COOKIES [CUSTOM_COOKIES ...]] [--custom-yara-rules CUSTOM_YARA_RULES] [--user-agent USER_AGENT] Bighuge BLS OSINT Tool @@ -61,14 +63,14 @@ Presets: Modules: -m, --modules MODULE [MODULE ...] - Modules to enable. Choices: affiliates,ajaxpro,anubisdb,apkpure,asn,azure_realm,azure_tenant,baddns,baddns_direct,baddns_zone,badsecrets,bevigil,bucket_amazon,bucket_azure,bucket_digitalocean,bucket_file_enum,bucket_firebase,bucket_google,bufferoverrun,builtwith,bypass403,c99,censys,certspotter,chaos,code_repository,credshed,crt,crt_db,dehashed,digitorus,dnsbimi,dnsbrute,dnsbrute_mutations,dnscaa,dnscommonsrv,dnsdumpster,dnstlsrpt,docker_pull,dockerhub,dotnetnuke,emailformat,extractous,ffuf,ffuf_shortnames,filedownload,fingerprintx,fullhunt,generic_ssrf,git,git_clone,gitdumper,github_codesearch,github_org,github_usersearch,github_workflows,gitlab,google_playstore,gowitness,hackertarget,host_header,httpx,hunt,hunterio,iis_shortnames,ip2location,ipneighbor,ipstack,jadx,leakix,lightfuzz,medusa,myssl,newsletters,ntlm,nuclei,oauth,otx,paramminer_cookies,paramminer_getparams,paramminer_headers,passivetotal,pgp,portfilter,portscan,postman,postman_download,rapiddns,reflected_parameters,robots,securitytrails,securitytxt,shodan_dns,shodan_idb,sitedossier,skymem,smuggler,social,sslcert,subdomaincenter,subdomainradar,telerik,trickest,trufflehog,url_manipulation,urlscan,vhost,viewdns,virustotal,wafw00f,wappalyzer,wayback,wpscan,zoomeye + Modules to enable. Choices: affiliates,ajaxpro,anubisdb,apkpure,asn,azure_realm,azure_tenant,baddns,baddns_direct,baddns_zone,badsecrets,bevigil,bucket_amazon,bucket_azure,bucket_digitalocean,bucket_file_enum,bucket_firebase,bucket_google,bufferoverrun,builtwith,bypass403,c99,censys,certspotter,chaos,code_repository,credshed,crt,crt_db,dehashed,digitorus,dnsbimi,dnsbrute,dnsbrute_mutations,dnscaa,dnscommonsrv,dnsdumpster,dnstlsrpt,docker_pull,dockerhub,dotnetnuke,emailformat,extractous,ffuf,ffuf_shortnames,filedownload,fingerprintx,fullhunt,generic_ssrf,git,git_clone,gitdumper,github_codesearch,github_org,github_usersearch,github_workflows,gitlab,google_playstore,gowitness,hackertarget,host_header,httpx,hunt,hunterio,iis_shortnames,ip2location,ipneighbor,ipstack,jadx,leakix,legba,lightfuzz,medusa,myssl,newsletters,ntlm,nuclei,oauth,otx,paramminer_cookies,paramminer_getparams,paramminer_headers,passivetotal,pgp,portfilter,portscan,postman,postman_download,rapiddns,reflected_parameters,robots,securitytrails,securitytxt,shodan_dns,shodan_idb,sitedossier,skymem,smuggler,social,sslcert,subdomaincenter,subdomainradar,telerik,trickest,trufflehog,url_manipulation,urlscan,vhost,viewdns,virustotal,wafw00f,wappalyzer,wayback,wpscan,zoomeye -l, --list-modules List available modules. -lmo, --list-module-options Show all module config options -em, --exclude-modules MODULE [MODULE ...] Exclude these modules. -f, --flags FLAG [FLAG ...] - Enable modules by flag. Choices: active,affiliates,aggressive,baddns,cloud-enum,code-enum,deadly,email-enum,iis-shortnames,passive,portscan,safe,service-enum,slow,social-enum,subdomain-enum,subdomain-hijack,web-basic,web-paramminer,web-screenshots,web-thorough + Enable modules by flag. Choices: active,affiliates,aggressive,baddns,cloud-enum,code-enum,deadly,email-enum,iis-shortnames,passive,portscan,report,safe,service-enum,slow,social-enum,subdomain-enum,subdomain-hijack,web-basic,web-paramminer,web-screenshots,web-thorough -lf, --list-flags List available flags. -rf, --require-flags FLAG [FLAG ...] Only enable modules with these flags (e.g. -rf passive) diff --git a/docs/scanning/configuration.md b/docs/scanning/configuration.md index 726416c2d6..1c684f31a0 100644 --- a/docs/scanning/configuration.md +++ b/docs/scanning/configuration.md @@ -192,11 +192,11 @@ deps: # Load BBOT modules from these custom paths module_dirs: [] -# maximum runtime in seconds for each module's handle_event() is 30 minutes +# maximum runtime in seconds for each module's handle_event() is 60 minutes # when the timeout is reached, the offending handle_event() will be cancelled and the module will move on to the next event -module_handle_event_timeout: 1800 -# handle_batch() default timeout is 1 hour -module_handle_batch_timeout: 3600 +module_handle_event_timeout: 3600 +# handle_batch() default timeout is 2 hours +module_handle_batch_timeout: 7200 # Infer certain events from others, e.g. IPs from IP ranges, DNS_NAMEs from URLs, etc. speculate: True @@ -348,7 +348,7 @@ In addition to the stated options for each module, the following universal optio **batch_size**: The number of events to process in a single batch (only applies to batch modules) **module_threads**: How many event handlers to run in parallel -**module_timeout**: Max time in seconds to spend handling each event or batch of events. The default is 3600s (1 hour) for non-batch modules, and 7200s (2 hours) for batch modules. +**module_timeout**: Max time in seconds to spend handling each event or batch of events @@ -389,9 +389,9 @@ In addition to the stated options for each module, the following universal optio | modules.ffuf_shortnames.rate | int | Rate of requests per second (default: 0) | 0 | | modules.ffuf_shortnames.version | str | ffuf version | 2.0.0 | | modules.ffuf_shortnames.wordlist_extensions | str | Specify wordlist to use when making extension lists | | -| modules.filedownload.base_64_encoded_file | str | Stream the bytes of a file and encode them in base 64 for event data. | false | | modules.filedownload.extensions | list | File extensions to download | ['bak', 'bash', 'bashrc', 'cfg', 'conf', 'crt', 'csv', 'db', 'dll', 'doc', 'docx', 'exe', 'ica', 'indd', 'ini', 'jar', 'json', 'key', 'log', 'markdown', 'md', 'msi', 'odg', 'odp', 'ods', 'odt', 'pdf', 'pem', 'pps', 'ppsx', 'ppt', 'pptx', 'ps1', 'pub', 'raw', 'rdp', 'rsa', 'sh', 'sql', 'sqlite', 'swp', 'sxw', 'tar.gz', 'tgz', 'tar', 'txt', 'vbs', 'war', 'wpd', 'xls', 'xlsx', 'xml', 'yaml', 'yml', 'zip', 'lzma', 'rar', '7z', 'xz', 'bz2'] | | modules.filedownload.max_filesize | str | Cancel download if filesize is greater than this size | 10MB | +| modules.filedownload.output_folder | str | Folder to download files to. If not specified, downloaded files will be deleted when the scan completes, to minimize disk usage. | | | modules.fingerprintx.skip_common_web | bool | Skip common web ports such as 80, 443, 8080, 8443, etc. | True | | modules.fingerprintx.version | str | fingerprintx version | 1.1.4 | | modules.generic_ssrf.skip_dns_interaction | bool | Do not report DNS interactions (only HTTP interaction) | False | @@ -414,7 +414,7 @@ In addition to the stated options for each module, the following universal optio | modules.iis_shortnames.max_node_count | int | Limit how many nodes to attempt to resolve on any given recursion branch | 50 | | modules.iis_shortnames.speculate_magic_urls | bool | Attempt to discover iis 'magic' special folders | True | | modules.lightfuzz.disable_post | bool | Disable processing of POST parameters, avoiding form submissions. | False | -| modules.lightfuzz.enabled_submodules | list | A list of submodules to enable. Empty list enabled all modules. | ['sqli', 'cmdi', 'xss', 'path', 'ssti', 'crypto', 'serial', 'nosqli'] | +| modules.lightfuzz.enabled_submodules | list | A list of submodules to enable. Empty list enabled all modules. | ['sqli', 'cmdi', 'xss', 'path', 'ssti', 'crypto', 'serial'] | | modules.lightfuzz.force_common_headers | bool | Force emit commonly exploitable parameters that may be difficult to detect | False | | modules.medusa.snmp_versions | list | List of SNMP versions to attempt against the SNMP server (default ['1', '2C']) | ['1', '2C'] | | modules.medusa.snmp_wordlist | str | Wordlist url for SNMP community strings, newline separated (default https://raw.githubusercontent.com/danielmiessler/SecLists/refs/heads/master/Discovery/SNMP/snmp.txt) | https://raw.githubusercontent.com/danielmiessler/SecLists/refs/heads/master/Discovery/SNMP/common-snmp-community-strings.txt | @@ -479,7 +479,7 @@ In addition to the stated options for each module, the following universal optio | modules.wpscan.request_timeout | int | The request timeout in seconds (default 5) | 5 | | modules.wpscan.threads | int | How many wpscan threads to spawn (default is 5) | 5 | | modules.anubisdb.limit | int | Limit the number of subdomains returned per query (increasing this may slow the scan due to garbage results from this API) | 1000 | -| modules.apkpure.output_folder | str | Folder to download apk's to | | +| modules.apkpure.output_folder | str | Folder to download APKs to. If not specified, downloaded APKs will be deleted when the scan completes, to minimize disk usage. | | | modules.bevigil.api_key | str | BeVigil OSINT API Key | | | modules.bevigil.urls | bool | Emit URLs in addition to DNS_NAMEs | False | | modules.bucket_file_enum.file_limit | int | Limit the number of files downloaded per bucket | 50 | @@ -507,14 +507,14 @@ In addition to the stated options for each module, the following universal optio | modules.dnstlsrpt.emit_urls | bool | Emit URL_UNVERIFIED events | True | | modules.dnstlsrpt.emit_vulnerabilities | bool | Emit VULNERABILITY events | True | | modules.docker_pull.all_tags | bool | Download all tags from each registry (Default False) | False | -| modules.docker_pull.output_folder | str | Folder to download docker repositories to | | +| modules.docker_pull.output_folder | str | Folder to download docker repositories to. If not specified, downloaded docker images will be deleted when the scan completes, to minimize disk usage. | | | modules.extractous.extensions | list | File extensions to parse | ['bak', 'bash', 'bashrc', 'conf', 'cfg', 'crt', 'csv', 'db', 'sqlite', 'doc', 'docx', 'ica', 'indd', 'ini', 'json', 'key', 'pub', 'log', 'markdown', 'md', 'odg', 'odp', 'ods', 'odt', 'pdf', 'pem', 'pps', 'ppsx', 'ppt', 'pptx', 'ps1', 'rdp', 'rsa', 'sh', 'sql', 'swp', 'sxw', 'txt', 'vbs', 'wpd', 'xls', 'xlsx', 'xml', 'yml', 'yaml'] | | modules.fullhunt.api_key | str | FullHunt API Key | | | modules.git_clone.api_key | str | Github token | | -| modules.git_clone.output_folder | str | Folder to clone repositories to | | +| modules.git_clone.output_folder | str | Folder to clone repositories to. If not specified, cloned repositories will be deleted when the scan completes, to minimize disk usage. | | | modules.gitdumper.fuzz_tags | bool | Fuzz for common git tag names (v0.0.1, 0.0.2, etc.) up to the max_semanic_version | False | | modules.gitdumper.max_semanic_version | int |` Maximum version number to fuzz for (default < v10.10.10) `| 10 | -| modules.gitdumper.output_folder | str | Folder to download repositories to | | +| modules.gitdumper.output_folder | str | Folder to download repositories to. If not specified, downloaded repositories will be deleted when the scan completes, to minimize disk usage. | | | modules.github_codesearch.api_key | str | Github token | | | modules.github_codesearch.limit | int | Limit code search to this many results | 100 | | modules.github_org.api_key | str | Github token | | @@ -537,7 +537,7 @@ In addition to the stated options for each module, the following universal optio | modules.portfilter.cdn_tags | str | Comma-separated list of tags to skip, e.g. 'cdn,cloud' | cdn- | | modules.postman.api_key | str | Postman API Key | | | modules.postman_download.api_key | str | Postman API Key | | -| modules.postman_download.output_folder | str | Folder to download postman workspaces to | | +| modules.postman_download.output_folder | str | Folder to download postman workspaces to. If not specified, downloaded workspaces will be deleted when the scan completes, to minimize disk usage. | | | modules.securitytrails.api_key | str | SecurityTrails API key | | | modules.shodan_dns.api_key | str | Shodan API key | | | modules.shodan_idb.retries | NoneType | How many times to retry API requests (e.g. after a 429 error). Overrides the global web.api_retries setting. | None | @@ -549,7 +549,7 @@ In addition to the stated options for each module, the following universal optio | modules.trufflehog.config | str | File path or URL to YAML trufflehog config | | | modules.trufflehog.deleted_forks | bool | Scan for deleted github forks. WARNING: This is SLOW. For a smaller repository, this process can take 20 minutes. For a larger repository, it could take hours. | False | | modules.trufflehog.only_verified | bool | Only report credentials that have been verified | True | -| modules.trufflehog.version | str | trufflehog version | 3.88.31 | +| modules.trufflehog.version | str | trufflehog version | 3.88.34 | | modules.urlscan.urls | bool | Emit URLs in addition to DNS_NAMEs | False | | modules.virustotal.api_key | str | VirusTotal API Key | | | modules.wayback.garbage_threshold | int | Dedupe similar urls if they are in a group of this size or higher (lower values == less garbage data) | 10 | diff --git a/docs/scanning/events.md b/docs/scanning/events.md index f1d1e59fdc..046388f996 100644 --- a/docs/scanning/events.md +++ b/docs/scanning/events.md @@ -104,41 +104,41 @@ Below is a full list of event types along with which modules produce/consume the ## List of Event Types -| Event Type | # Consuming Modules | # Producing Modules | Consuming Modules | Producing Modules | -|---------------------|-----------------------|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| * | 18 | 0 | affiliates, cloudcheck, csv, discord, dnsresolve, http, json, mysql, neo4j, postgres, python, slack, splunk, sqlite, stdout, teams, txt, websocket | | -| ASN | 0 | 1 | | asn | -| AZURE_TENANT | 1 | 0 | speculate | | -| CODE_REPOSITORY | 7 | 7 | docker_pull, git_clone, gitdumper, github_workflows, google_playstore, postman_download, trufflehog | code_repository, dockerhub, git, github_codesearch, github_org, gitlab, postman | -| DNS_NAME | 62 | 44 | anubisdb, asset_inventory, azure_realm, azure_tenant, baddns, baddns_zone, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, emailformat, fullhunt, github_codesearch, github_usersearch, hackertarget, hunterio, leakix, myssl, nmap_xml, oauth, otx, passivetotal, pgp, portscan, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, speculate, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, viewdns, virustotal, wayback, zoomeye | anubisdb, azure_tenant, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnsresolve, fullhunt, hackertarget, hunterio, leakix, myssl, ntlm, oauth, otx, passivetotal, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, speculate, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, vhost, viewdns, virustotal, wayback, zoomeye | -| DNS_NAME_UNRESOLVED | 3 | 0 | baddns, speculate, subdomains | | -| EMAIL_ADDRESS | 1 | 11 | emails | credshed, dehashed, dnscaa, dnstlsrpt, emailformat, github_usersearch, hunterio, pgp, securitytxt, skymem, sslcert | -| FILESYSTEM | 4 | 9 | extractous, jadx, trufflehog, unarchive | apkpure, docker_pull, filedownload, git_clone, gitdumper, github_workflows, jadx, postman_download, unarchive | -| FINDING | 2 | 29 | asset_inventory, web_report | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, git, gitlab, host_header, hunt, lightfuzz, newsletters, ntlm, nuclei, paramminer_cookies, paramminer_getparams, reflected_parameters, shodan_idb, smuggler, speculate, telerik, trufflehog, url_manipulation, wpscan | -| GEOLOCATION | 0 | 2 | | ip2location, ipstack | -| HASHED_PASSWORD | 0 | 2 | | credshed, dehashed | -| HTTP_RESPONSE | 19 | 1 | ajaxpro, asset_inventory, badsecrets, dotnetnuke, excavate, filedownload, gitlab, host_header, newsletters, nmap_xml, ntlm, paramminer_cookies, paramminer_getparams, paramminer_headers, speculate, telerik, trufflehog, wappalyzer, wpscan | httpx | -| IP_ADDRESS | 9 | 4 | asn, asset_inventory, ip2location, ipneighbor, ipstack, nmap_xml, portscan, shodan_idb, speculate | asset_inventory, dnsresolve, ipneighbor, speculate | -| IP_RANGE | 2 | 0 | portscan, speculate | | -| MOBILE_APP | 1 | 1 | apkpure | google_playstore | -| OPEN_TCP_PORT | 6 | 4 | asset_inventory, fingerprintx, httpx, nmap_xml, portfilter, sslcert | asset_inventory, portscan, shodan_idb, speculate | -| ORG_STUB | 4 | 1 | dockerhub, github_org, google_playstore, postman | speculate | -| PASSWORD | 0 | 2 | | credshed, dehashed | -| PROTOCOL | 2 | 1 | medusa, nmap_xml | fingerprintx | -| RAW_DNS_RECORD | 0 | 3 | | dnsbimi, dnsresolve, dnstlsrpt | -| RAW_TEXT | 2 | 1 | excavate, trufflehog | extractous | -| SOCIAL | 6 | 4 | dockerhub, github_org, gitlab, gowitness, postman, speculate | dockerhub, github_usersearch, gitlab, social | -| STORAGE_BUCKET | 8 | 5 | baddns_direct, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, speculate | bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google | -| TECHNOLOGY | 4 | 8 | asset_inventory, gitlab, web_report, wpscan | badsecrets, dotnetnuke, gitlab, gowitness, nuclei, shodan_idb, wappalyzer, wpscan | -| URL | 22 | 2 | ajaxpro, asset_inventory, baddns_direct, bypass403, ffuf, generic_ssrf, git, gowitness, httpx, iis_shortnames, lightfuzz, ntlm, nuclei, portfilter, robots, smuggler, speculate, telerik, url_manipulation, vhost, wafw00f, web_report | gowitness, httpx | -| URL_HINT | 1 | 1 | ffuf_shortnames | iis_shortnames | -| URL_UNVERIFIED | 7 | 18 | code_repository, filedownload, httpx, oauth, portfilter, social, speculate | azure_realm, bevigil, bucket_file_enum, dnsbimi, dnscaa, dnstlsrpt, dockerhub, excavate, ffuf, ffuf_shortnames, github_codesearch, gowitness, hunterio, robots, securitytxt, urlscan, wayback, wpscan | -| USERNAME | 1 | 2 | speculate | credshed, dehashed | -| VHOST | 1 | 1 | web_report | vhost | -| VULNERABILITY | 2 | 14 | asset_inventory, web_report | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, dotnetnuke, generic_ssrf, lightfuzz, medusa, nuclei, shodan_idb, telerik, trufflehog, wpscan | -| WAF | 1 | 1 | asset_inventory | wafw00f | -| WEBSCREENSHOT | 0 | 1 | | gowitness | -| WEB_PARAMETER | 7 | 4 | hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, reflected_parameters, web_parameters | excavate, paramminer_cookies, paramminer_getparams, paramminer_headers | +| Event Type | # Consuming Modules | # Producing Modules | Consuming Modules | Producing Modules | +|---------------------|-----------------------|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| * | 18 | 0 | affiliates, cloudcheck, csv, discord, dnsresolve, http, json, mysql, neo4j, postgres, python, slack, splunk, sqlite, stdout, teams, txt, websocket | | +| ASN | 0 | 1 | | asn | +| AZURE_TENANT | 1 | 0 | speculate | | +| CODE_REPOSITORY | 7 | 7 | docker_pull, git_clone, gitdumper, github_workflows, google_playstore, postman_download, trufflehog | code_repository, dockerhub, git, github_codesearch, github_org, gitlab, postman | +| DNS_NAME | 62 | 43 | anubisdb, asset_inventory, azure_realm, azure_tenant, baddns, baddns_zone, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, emailformat, fullhunt, github_codesearch, github_usersearch, hackertarget, hunterio, leakix, legba, myssl, nmap_xml, oauth, otx, passivetotal, pgp, portscan, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, speculate, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, viewdns, virustotal, wayback, zoomeye | anubisdb, azure_tenant, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnsresolve, fullhunt, hackertarget, hunterio, leakix, myssl, ntlm, oauth, otx, passivetotal, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, speculate, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, vhost, viewdns, virustotal, wayback, zoomeye | +| DNS_NAME_UNRESOLVED | 3 | 0 | baddns, speculate, subdomains | | +| EMAIL_ADDRESS | 1 | 11 | emails | credshed, dehashed, dnscaa, dnstlsrpt, emailformat, github_usersearch, hunterio, pgp, securitytxt, skymem, sslcert | +| FILESYSTEM | 4 | 9 | extractous, jadx, trufflehog, unarchive | apkpure, docker_pull, filedownload, git_clone, gitdumper, github_workflows, jadx, postman_download, unarchive | +| FINDING | 2 | 29 | asset_inventory, web_report | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, git, gitlab, host_header, hunt, lightfuzz, newsletters, ntlm, nuclei, paramminer_cookies, paramminer_getparams, reflected_parameters, shodan_idb, smuggler, speculate, telerik, trufflehog, url_manipulation, wpscan | +| GEOLOCATION | 0 | 2 | | ip2location, ipstack | +| HASHED_PASSWORD | 0 | 2 | | credshed, dehashed | +| HTTP_RESPONSE | 19 | 1 | ajaxpro, asset_inventory, badsecrets, dotnetnuke, excavate, filedownload, gitlab, host_header, newsletters, nmap_xml, ntlm, paramminer_cookies, paramminer_getparams, paramminer_headers, speculate, telerik, trufflehog, wappalyzer, wpscan | httpx | +| IP_ADDRESS | 9 | 4 | asn, asset_inventory, ip2location, ipneighbor, ipstack, nmap_xml, portscan, shodan_idb, speculate | asset_inventory, dnsresolve, ipneighbor, speculate | +| IP_RANGE | 2 | 0 | portscan, speculate | | +| MOBILE_APP | 1 | 1 | apkpure | google_playstore | +| OPEN_TCP_PORT | 6 | 4 | asset_inventory, fingerprintx, httpx, nmap_xml, portfilter, sslcert | asset_inventory, portscan, shodan_idb, speculate | +| ORG_STUB | 4 | 1 | dockerhub, github_org, google_playstore, postman | speculate | +| PASSWORD | 0 | 2 | | credshed, dehashed | +| PROTOCOL | 2 | 1 | medusa, nmap_xml | fingerprintx | +| RAW_DNS_RECORD | 0 | 3 | | dnsbimi, dnsresolve, dnstlsrpt | +| RAW_TEXT | 2 | 1 | excavate, trufflehog | extractous | +| SOCIAL | 6 | 4 | dockerhub, github_org, gitlab, gowitness, postman, speculate | dockerhub, github_usersearch, gitlab, social | +| STORAGE_BUCKET | 8 | 5 | baddns_direct, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, speculate | bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google | +| TECHNOLOGY | 4 | 8 | asset_inventory, gitlab, web_report, wpscan | badsecrets, dotnetnuke, gitlab, gowitness, nuclei, shodan_idb, wappalyzer, wpscan | +| URL | 22 | 2 | ajaxpro, asset_inventory, baddns_direct, bypass403, ffuf, generic_ssrf, git, gowitness, httpx, iis_shortnames, lightfuzz, ntlm, nuclei, portfilter, robots, smuggler, speculate, telerik, url_manipulation, vhost, wafw00f, web_report | gowitness, httpx | +| URL_HINT | 1 | 1 | ffuf_shortnames | iis_shortnames | +| URL_UNVERIFIED | 7 | 18 | code_repository, filedownload, httpx, oauth, portfilter, social, speculate | azure_realm, bevigil, bucket_file_enum, dnsbimi, dnscaa, dnstlsrpt, dockerhub, excavate, ffuf, ffuf_shortnames, github_codesearch, gowitness, hunterio, robots, securitytxt, urlscan, wayback, wpscan | +| USERNAME | 1 | 2 | speculate | credshed, dehashed | +| VHOST | 1 | 1 | web_report | vhost | +| VULNERABILITY | 2 | 15 | asset_inventory, web_report | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, dotnetnuke, generic_ssrf, legba, lightfuzz, medusa, nuclei, shodan_idb, telerik, trufflehog, wpscan | +| WAF | 1 | 1 | asset_inventory | wafw00f | +| WEBSCREENSHOT | 0 | 1 | | gowitness | +| WEB_PARAMETER | 7 | 4 | hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, reflected_parameters, web_parameters | excavate, paramminer_cookies, paramminer_getparams, paramminer_headers | ## Findings Vs. Vulnerabilities diff --git a/docs/scanning/index.md b/docs/scanning/index.md index 25b23e08c9..b7353d3a4d 100644 --- a/docs/scanning/index.md +++ b/docs/scanning/index.md @@ -112,29 +112,30 @@ A single module can have multiple flags. For example, the `securitytrails` modul ### List of Flags -| Flag | # Modules | Description | Modules | -|------------------|-------------|----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| safe | 96 | Non-intrusive, safe to run | affiliates, aggregate, ajaxpro, anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, extractous, filedownload, fingerprintx, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ip2location, ipstack, jadx, leakix, myssl, newsletters, ntlm, oauth, otx, passivetotal, pgp, portfilter, portscan, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wappalyzer, wayback, zoomeye | -| passive | 71 | Never connects to target systems | affiliates, aggregate, anubisdb, apkpure, asn, azure_realm, azure_tenant, bevigil, bucket_file_enum, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, excavate, extractous, fullhunt, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, google_playstore, hackertarget, hunterio, ip2location, ipneighbor, ipstack, jadx, leakix, myssl, otx, passivetotal, pgp, portfilter, postman, postman_download, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, skymem, social, speculate, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wayback, zoomeye | -| subdomain-enum | 53 | Enumerates subdomains | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, sslcert, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, virustotal, wayback, zoomeye | -| active | 48 | Makes active connections to target systems | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, dnsbrute, dnsbrute_mutations, dnscommonsrv, dotnetnuke, ffuf, ffuf_shortnames, filedownload, fingerprintx, generic_ssrf, git, gitlab, gowitness, host_header, httpx, hunt, iis_shortnames, lightfuzz, medusa, newsletters, ntlm, nuclei, oauth, paramminer_cookies, paramminer_getparams, paramminer_headers, portscan, reflected_parameters, robots, securitytxt, smuggler, sslcert, telerik, url_manipulation, vhost, wafw00f, wappalyzer, wpscan | -| aggressive | 21 | Generates a large amount of network traffic | bypass403, dnsbrute, dnsbrute_mutations, dotnetnuke, ffuf, ffuf_shortnames, generic_ssrf, host_header, ipneighbor, lightfuzz, medusa, nuclei, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, telerik, url_manipulation, vhost, wafw00f, wpscan | -| code-enum | 17 | Find public code repositories and search them for secrets etc. | apkpure, code_repository, docker_pull, dockerhub, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, jadx, postman, postman_download, trufflehog | -| web-basic | 17 | Basic, non-intrusive web scan functionality | azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_firebase, bucket_google, filedownload, git, httpx, iis_shortnames, ntlm, oauth, robots, securitytxt, sslcert, wappalyzer | -| cloud-enum | 16 | Enumerates cloud resources | azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, dnsbimi, dnstlsrpt, httpx, oauth, securitytxt | -| web-thorough | 13 | More advanced web scanning functionality | ajaxpro, bucket_digitalocean, bypass403, dotnetnuke, ffuf_shortnames, generic_ssrf, host_header, hunt, lightfuzz, reflected_parameters, smuggler, telerik, url_manipulation | -| slow | 11 | May take a long time to complete | bucket_digitalocean, dnsbrute_mutations, docker_pull, fingerprintx, git_clone, gitdumper, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, vhost | -| affiliates | 9 | Discovers affiliated hostnames/domains | affiliates, azure_realm, azure_tenant, builtwith, oauth, sslcert, trickest, viewdns, zoomeye | -| email-enum | 9 | Enumerates email addresses | dehashed, dnscaa, dnstlsrpt, emailformat, emails, hunterio, pgp, skymem, sslcert | -| deadly | 5 | Highly aggressive | ffuf, lightfuzz, medusa, nuclei, vhost | -| baddns | 3 | Runs all modules from the DNS auditing tool BadDNS | baddns, baddns_direct, baddns_zone | -| web-paramminer | 3 | Discovers HTTP parameters through brute-force | paramminer_cookies, paramminer_getparams, paramminer_headers | -| iis-shortnames | 2 | Scans for IIS Shortname vulnerability | ffuf_shortnames, iis_shortnames | -| portscan | 2 | Discovers open ports | portscan, shodan_idb | -| social-enum | 2 | Enumerates social media | httpx, social | -| service-enum | 1 | Identifies protocols running on open ports | fingerprintx | -| subdomain-hijack | 1 | Detects hijackable subdomains | baddns | -| web-screenshots | 1 | Takes screenshots of web pages | gowitness | +| Flag | # Modules | Description | Modules | +|------------------|-------------|----------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| safe | 96 | Non-intrusive, safe to run | affiliates, aggregate, ajaxpro, anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, extractous, filedownload, fingerprintx, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ip2location, ipstack, jadx, leakix, legba, myssl, newsletters, ntlm, oauth, otx, passivetotal, pgp, portfilter, portscan, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wappalyzer, wayback, zoomeye | +| passive | 70 | Never connects to target systems | affiliates, aggregate, anubisdb, apkpure, asn, azure_realm, azure_tenant, bevigil, bucket_file_enum, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, excavate, extractous, fullhunt, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, google_playstore, hackertarget, hunterio, ip2location, ipneighbor, ipstack, jadx, leakix, myssl, otx, passivetotal, pgp, portfilter, postman, postman_download, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, skymem, social, speculate, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wayback, zoomeye | +| subdomain-enum | 52 | Enumerates subdomains | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, sslcert, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, virustotal, wayback, zoomeye | +| active | 49 | Makes active connections to target systems | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, dnsbrute, dnsbrute_mutations, dnscommonsrv, dotnetnuke, ffuf, ffuf_shortnames, filedownload, fingerprintx, generic_ssrf, git, gitlab, gowitness, host_header, httpx, hunt, iis_shortnames, legba, lightfuzz, medusa, newsletters, ntlm, nuclei, oauth, paramminer_cookies, paramminer_getparams, paramminer_headers, portscan, reflected_parameters, robots, securitytxt, smuggler, sslcert, telerik, url_manipulation, vhost, wafw00f, wappalyzer, wpscan | +| aggressive | 21 | Generates a large amount of network traffic | bypass403, dnsbrute, dnsbrute_mutations, dotnetnuke, ffuf, ffuf_shortnames, generic_ssrf, host_header, ipneighbor, lightfuzz, medusa, nuclei, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, telerik, url_manipulation, vhost, wafw00f, wpscan | +| code-enum | 17 | Find public code repositories and search them for secrets etc. | apkpure, code_repository, docker_pull, dockerhub, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, jadx, postman, postman_download, trufflehog | +| web-basic | 17 | Basic, non-intrusive web scan functionality | azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_firebase, bucket_google, filedownload, git, httpx, iis_shortnames, ntlm, oauth, robots, securitytxt, sslcert, wappalyzer | +| cloud-enum | 16 | Enumerates cloud resources | azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, dnsbimi, dnstlsrpt, httpx, oauth, securitytxt | +| web-thorough | 13 | More advanced web scanning functionality | ajaxpro, bucket_digitalocean, bypass403, dotnetnuke, ffuf_shortnames, generic_ssrf, host_header, hunt, lightfuzz, reflected_parameters, smuggler, telerik, url_manipulation | +| slow | 12 | May take a long time to complete | bucket_digitalocean, dnsbrute_mutations, docker_pull, fingerprintx, git_clone, gitdumper, legba, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, vhost | +| affiliates | 9 | Discovers affiliated hostnames/domains | affiliates, azure_realm, azure_tenant, builtwith, oauth, sslcert, trickest, viewdns, zoomeye | +| email-enum | 9 | Enumerates email addresses | dehashed, dnscaa, dnstlsrpt, emailformat, emails, hunterio, pgp, skymem, sslcert | +| deadly | 5 | Highly aggressive | ffuf, lightfuzz, medusa, nuclei, vhost | +| baddns | 3 | Runs all modules from the DNS auditing tool BadDNS | baddns, baddns_direct, baddns_zone | +| web-paramminer | 3 | Discovers HTTP parameters through brute-force | paramminer_cookies, paramminer_getparams, paramminer_headers | +| iis-shortnames | 2 | Scans for IIS Shortname vulnerability | ffuf_shortnames, iis_shortnames | +| portscan | 2 | Discovers open ports | portscan, shodan_idb | +| report | 2 | Generates a report at the end of the scan | affiliates, asn | +| service-enum | 2 | Identifies protocols running on open ports | fingerprintx, legba | +| social-enum | 2 | Enumerates social media | httpx, social | +| subdomain-hijack | 1 | Detects hijackable subdomains | baddns | +| web-screenshots | 1 | Takes screenshots of web pages | gowitness | ## Dependencies diff --git a/docs/scanning/presets_list.md b/docs/scanning/presets_list.md index bb8a57d8d1..5e6a9125c1 100644 --- a/docs/scanning/presets_list.md +++ b/docs/scanning/presets_list.md @@ -42,7 +42,7 @@ Enumerate cloud resources such as storage buckets, etc. -Modules: [60]("`anubisdb`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `baddns`, `bevigil`, `bucket_amazon`, `bucket_azure`, `bucket_digitalocean`, `bucket_file_enum`, `bucket_firebase`, `bucket_google`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `crt_db`, `crt`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `fullhunt`, `github_codesearch`, `github_org`, `hackertarget`, `httpx`, `hunterio`, `ipneighbor`, `leakix`, `myssl`, `oauth`, `otx`, `passivetotal`, `postman_download`, `postman`, `rapiddns`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `urlscan`, `virustotal`, `wayback`, `zoomeye`") +Modules: [59]("`anubisdb`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `baddns`, `bevigil`, `bucket_amazon`, `bucket_azure`, `bucket_digitalocean`, `bucket_file_enum`, `bucket_firebase`, `bucket_google`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `crt_db`, `crt`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `fullhunt`, `github_codesearch`, `github_org`, `hackertarget`, `httpx`, `hunterio`, `ipneighbor`, `leakix`, `myssl`, `oauth`, `otx`, `passivetotal`, `postman_download`, `postman`, `rapiddns`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `urlscan`, `virustotal`, `wayback`, `zoomeye`") ## **code-enum** @@ -270,7 +270,7 @@ Everything everywhere all at once -Modules: [91]("`anubisdb`, `apkpure`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `baddns`, `badsecrets`, `bevigil`, `bucket_amazon`, `bucket_azure`, `bucket_digitalocean`, `bucket_file_enum`, `bucket_firebase`, `bucket_google`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `code_repository`, `crt_db`, `crt`, `dehashed`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `docker_pull`, `dockerhub`, `emailformat`, `ffuf_shortnames`, `ffuf`, `filedownload`, `fullhunt`, `git_clone`, `git`, `gitdumper`, `github_codesearch`, `github_org`, `github_usersearch`, `github_workflows`, `gitlab`, `google_playstore`, `gowitness`, `hackertarget`, `httpx`, `hunt`, `hunterio`, `iis_shortnames`, `ipneighbor`, `jadx`, `leakix`, `myssl`, `ntlm`, `oauth`, `otx`, `paramminer_cookies`, `paramminer_getparams`, `paramminer_headers`, `passivetotal`, `pgp`, `postman_download`, `postman`, `rapiddns`, `reflected_parameters`, `robots`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `skymem`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `trufflehog`, `urlscan`, `virustotal`, `wappalyzer`, `wayback`, `zoomeye`") +Modules: [90]("`anubisdb`, `apkpure`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `baddns`, `badsecrets`, `bevigil`, `bucket_amazon`, `bucket_azure`, `bucket_digitalocean`, `bucket_file_enum`, `bucket_firebase`, `bucket_google`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `code_repository`, `crt_db`, `crt`, `dehashed`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `docker_pull`, `dockerhub`, `emailformat`, `ffuf_shortnames`, `ffuf`, `filedownload`, `fullhunt`, `git_clone`, `git`, `gitdumper`, `github_codesearch`, `github_org`, `github_usersearch`, `github_workflows`, `gitlab`, `google_playstore`, `gowitness`, `hackertarget`, `httpx`, `hunt`, `hunterio`, `iis_shortnames`, `ipneighbor`, `jadx`, `leakix`, `myssl`, `ntlm`, `oauth`, `otx`, `paramminer_cookies`, `paramminer_getparams`, `paramminer_headers`, `passivetotal`, `pgp`, `postman_download`, `postman`, `rapiddns`, `reflected_parameters`, `robots`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `skymem`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `trufflehog`, `urlscan`, `virustotal`, `wappalyzer`, `wayback`, `zoomeye`") ## **lightfuzz-heavy** @@ -292,7 +292,7 @@ Discover web parameters and lightly fuzz them for vulnerabilities, with more int config: modules: lightfuzz: - enabled_submodules: [cmdi,crypto,nosqli,path,serial,sqli,ssti,xss] + enabled_submodules: [cmdi,crypto,path,serial,sqli,ssti,xss] disable_post: False ``` @@ -351,7 +351,7 @@ Discover web parameters and lightly fuzz them for vulnerabilities. Uses all ligh config: modules: lightfuzz: - enabled_submodules: [cmdi,crypto,nosqli,path,serial,sqli,ssti,xss] + enabled_submodules: [cmdi,crypto,path,serial,sqli,ssti,xss] ``` Category: web @@ -374,7 +374,7 @@ Discover web parameters and lightly fuzz them for vulnerabilities, with the most modules: lightfuzz: force_common_headers: True # Fuzz common headers like X-Forwarded-For even if they're not observed on the target - enabled_submodules: [cmdi,crypto,nosqli,path,serial,sqli,ssti,xss] + enabled_submodules: [cmdi,crypto,path,serial,sqli,ssti,xss] excavate: speculate_params: True # speculate potential parameters extracted from JSON/XML web responses ``` @@ -682,7 +682,7 @@ Enumerate subdomains via APIs, brute-force -Modules: [53]("`anubisdb`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `bevigil`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `crt_db`, `crt`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `fullhunt`, `github_codesearch`, `github_org`, `hackertarget`, `httpx`, `hunterio`, `ipneighbor`, `leakix`, `myssl`, `oauth`, `otx`, `passivetotal`, `postman_download`, `postman`, `rapiddns`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `urlscan`, `virustotal`, `wayback`, `zoomeye`") +Modules: [52]("`anubisdb`, `asn`, `azure_realm`, `azure_tenant`, `baddns_direct`, `baddns_zone`, `bevigil`, `bufferoverrun`, `builtwith`, `c99`, `censys`, `certspotter`, `chaos`, `crt_db`, `crt`, `digitorus`, `dnsbimi`, `dnsbrute_mutations`, `dnsbrute`, `dnscaa`, `dnscommonsrv`, `dnsdumpster`, `dnstlsrpt`, `fullhunt`, `github_codesearch`, `github_org`, `hackertarget`, `httpx`, `hunterio`, `ipneighbor`, `leakix`, `myssl`, `oauth`, `otx`, `passivetotal`, `postman_download`, `postman`, `rapiddns`, `securitytrails`, `securitytxt`, `shodan_dns`, `shodan_idb`, `sitedossier`, `social`, `sslcert`, `subdomaincenter`, `subdomainradar`, `trickest`, `urlscan`, `virustotal`, `wayback`, `zoomeye`") ## **tech-detect** @@ -778,33 +778,33 @@ Modules: [30]("`ajaxpro`, `azure_realm`, `baddns`, `badsecrets`, `bucket_amazon` Here is a the same data, but in a table: -| Preset | Category | Description | # Modules | Modules | -|----------------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| baddns-intense | | Run all baddns modules and submodules. | 4 | baddns, baddns_direct, baddns_zone, httpx | -| cloud-enum | | Enumerate cloud resources such as storage buckets, etc. | 60 | anubisdb, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, social, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, virustotal, wayback, zoomeye | -| code-enum | | Enumerate Git repositories, Docker images, etc. | 19 | apkpure, code_repository, docker_pull, dockerhub, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, httpx, jadx, postman, postman_download, social, trufflehog | -| dirbust-heavy | web | Recursive web directory brute-force (aggressive) | 5 | ffuf, ffuf_shortnames, httpx, iis_shortnames, wayback | -| dirbust-light | web | Basic web directory brute-force (surface-level directories only) | 4 | ffuf, ffuf_shortnames, httpx, iis_shortnames | -| dotnet-audit | web | Comprehensive scan for all IIS/.NET specific modules and module settings | 8 | ajaxpro, badsecrets, dotnetnuke, ffuf, ffuf_shortnames, httpx, iis_shortnames, telerik | -| email-enum | | Enumerate email addresses from APIs, web crawling, etc. | 8 | dehashed, dnscaa, dnstlsrpt, emailformat, hunterio, pgp, skymem, sslcert | -| fast | | Scan only the provided targets as fast as possible - no extra discovery | 0 | | -| iis-shortnames | web | Recursively enumerate IIS shortnames | 3 | ffuf_shortnames, httpx, iis_shortnames | -| kitchen-sink | | Everything everywhere all at once | 91 | anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, ffuf, ffuf_shortnames, filedownload, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ipneighbor, jadx, leakix, myssl, ntlm, oauth, otx, paramminer_cookies, paramminer_getparams, paramminer_headers, passivetotal, pgp, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, urlscan, virustotal, wappalyzer, wayback, zoomeye | -| lightfuzz-heavy | web | Discover web parameters and lightly fuzz them for vulnerabilities, with more intense discovery techniques, including POST parameters, which are more invasive. Uses all lightfuzz modules, and adds paramminer modules for parameter discovery. | 10 | badsecrets, httpx, hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, portfilter, reflected_parameters, robots | -| lightfuzz-light | web | Discover web parameters and lightly fuzz them for vulnerabilities, with only the most common vulnerabilities and minimal extra modules. Safest to run alongside larger scans. | 3 | httpx, lightfuzz, portfilter | -| lightfuzz-medium | web | Discover web parameters and lightly fuzz them for vulnerabilities. Uses all lightfuzz modules, without some of the more intense discovery techniques. Does not send POST requests. This is the default lightfuzz preset; if you're not sure which one to use, this is a good starting point. | 6 | badsecrets, httpx, hunt, lightfuzz, portfilter, reflected_parameters | -| lightfuzz-superheavy | web | Discover web parameters and lightly fuzz them for vulnerabilities, with the most intense discovery techniques, including POST parameters, which are more invasive. Uses all lightfuzz modules, adds paramminer modules for parameter discovery, and tests each unique parameter-value instance individually. | 10 | badsecrets, httpx, hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, portfilter, reflected_parameters, robots | -| lightfuzz-xss | web | Discover web parameters and lightly fuzz them, limited to just GET-based xss vulnerabilities. This is an example of a custom lightfuzz preset, selectively enabling a single lightfuzz module. | 5 | httpx, lightfuzz, paramminer_getparams, portfilter, reflected_parameters | -| nuclei | nuclei | Run nuclei scans against all discovered targets | 3 | httpx, nuclei, portfilter | -| nuclei-budget | nuclei | Run nuclei scans against all discovered targets, using budget mode to look for low hanging fruit with greatly reduced number of requests | 3 | httpx, nuclei, portfilter | -| nuclei-intense | nuclei | Run nuclei scans against all discovered targets, allowing for spidering, against ALL URLs, and with additional discovery modules. | 6 | httpx, nuclei, portfilter, robots, urlscan, wayback | -| nuclei-technology | nuclei | Run nuclei scans against all discovered targets, running templates which match discovered technologies | 3 | httpx, nuclei, portfilter | -| paramminer | web | Discover new web parameters via brute-force, and analyze them with additional modules | 6 | httpx, hunt, paramminer_cookies, paramminer_getparams, paramminer_headers, reflected_parameters | -| spider | | Recursive web spider | 1 | httpx | -| spider-intense | | Recursive web spider with more aggressive settings | 1 | httpx | -| subdomain-enum | | Enumerate subdomains via APIs, brute-force | 53 | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, social, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, virustotal, wayback, zoomeye | -| tech-detect | | Detect technologies via Wappalyzer, Nuclei, and FingerprintX | 4 | fingerprintx, httpx, nuclei, wappalyzer | -| web-basic | | Quick web scan | 18 | azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_firebase, bucket_google, ffuf_shortnames, filedownload, git, httpx, iis_shortnames, ntlm, oauth, robots, securitytxt, sslcert, wappalyzer | -| web-screenshots | | Take screenshots of webpages | 3 | gowitness, httpx, social | -| web-thorough | | Aggressive web scan | 30 | ajaxpro, azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, dotnetnuke, ffuf_shortnames, filedownload, generic_ssrf, git, host_header, httpx, hunt, iis_shortnames, lightfuzz, ntlm, oauth, reflected_parameters, robots, securitytxt, smuggler, sslcert, telerik, url_manipulation, wappalyzer | +| Preset | Category | Description | # Modules | Modules | +|----------------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| baddns-intense | | Run all baddns modules and submodules. | 4 | baddns, baddns_direct, baddns_zone, httpx | +| cloud-enum | | Enumerate cloud resources such as storage buckets, etc. | 59 | anubisdb, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, social, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, virustotal, wayback, zoomeye | +| code-enum | | Enumerate Git repositories, Docker images, etc. | 19 | apkpure, code_repository, docker_pull, dockerhub, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, httpx, jadx, postman, postman_download, social, trufflehog | +| dirbust-heavy | web | Recursive web directory brute-force (aggressive) | 5 | ffuf, ffuf_shortnames, httpx, iis_shortnames, wayback | +| dirbust-light | web | Basic web directory brute-force (surface-level directories only) | 4 | ffuf, ffuf_shortnames, httpx, iis_shortnames | +| dotnet-audit | web | Comprehensive scan for all IIS/.NET specific modules and module settings | 8 | ajaxpro, badsecrets, dotnetnuke, ffuf, ffuf_shortnames, httpx, iis_shortnames, telerik | +| email-enum | | Enumerate email addresses from APIs, web crawling, etc. | 8 | dehashed, dnscaa, dnstlsrpt, emailformat, hunterio, pgp, skymem, sslcert | +| fast | | Scan only the provided targets as fast as possible - no extra discovery | 0 | | +| iis-shortnames | web | Recursively enumerate IIS shortnames | 3 | ffuf_shortnames, httpx, iis_shortnames | +| kitchen-sink | | Everything everywhere all at once | 90 | anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, ffuf, ffuf_shortnames, filedownload, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ipneighbor, jadx, leakix, myssl, ntlm, oauth, otx, paramminer_cookies, paramminer_getparams, paramminer_headers, passivetotal, pgp, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, urlscan, virustotal, wappalyzer, wayback, zoomeye | +| lightfuzz-heavy | web | Discover web parameters and lightly fuzz them for vulnerabilities, with more intense discovery techniques, including POST parameters, which are more invasive. Uses all lightfuzz modules, and adds paramminer modules for parameter discovery. | 10 | badsecrets, httpx, hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, portfilter, reflected_parameters, robots | +| lightfuzz-light | web | Discover web parameters and lightly fuzz them for vulnerabilities, with only the most common vulnerabilities and minimal extra modules. Safest to run alongside larger scans. | 3 | httpx, lightfuzz, portfilter | +| lightfuzz-medium | web | Discover web parameters and lightly fuzz them for vulnerabilities. Uses all lightfuzz modules, without some of the more intense discovery techniques. Does not send POST requests. This is the default lightfuzz preset; if you're not sure which one to use, this is a good starting point. | 6 | badsecrets, httpx, hunt, lightfuzz, portfilter, reflected_parameters | +| lightfuzz-superheavy | web | Discover web parameters and lightly fuzz them for vulnerabilities, with the most intense discovery techniques, including POST parameters, which are more invasive. Uses all lightfuzz modules, adds paramminer modules for parameter discovery, and tests each unique parameter-value instance individually. | 10 | badsecrets, httpx, hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, portfilter, reflected_parameters, robots | +| lightfuzz-xss | web | Discover web parameters and lightly fuzz them, limited to just GET-based xss vulnerabilities. This is an example of a custom lightfuzz preset, selectively enabling a single lightfuzz module. | 5 | httpx, lightfuzz, paramminer_getparams, portfilter, reflected_parameters | +| nuclei | nuclei | Run nuclei scans against all discovered targets | 3 | httpx, nuclei, portfilter | +| nuclei-budget | nuclei | Run nuclei scans against all discovered targets, using budget mode to look for low hanging fruit with greatly reduced number of requests | 3 | httpx, nuclei, portfilter | +| nuclei-intense | nuclei | Run nuclei scans against all discovered targets, allowing for spidering, against ALL URLs, and with additional discovery modules. | 6 | httpx, nuclei, portfilter, robots, urlscan, wayback | +| nuclei-technology | nuclei | Run nuclei scans against all discovered targets, running templates which match discovered technologies | 3 | httpx, nuclei, portfilter | +| paramminer | web | Discover new web parameters via brute-force, and analyze them with additional modules | 6 | httpx, hunt, paramminer_cookies, paramminer_getparams, paramminer_headers, reflected_parameters | +| spider | | Recursive web spider | 1 | httpx | +| spider-intense | | Recursive web spider with more aggressive settings | 1 | httpx | +| subdomain-enum | | Enumerate subdomains via APIs, brute-force | 52 | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, social, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, virustotal, wayback, zoomeye | +| tech-detect | | Detect technologies via Wappalyzer, Nuclei, and FingerprintX | 4 | fingerprintx, httpx, nuclei, wappalyzer | +| web-basic | | Quick web scan | 18 | azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_firebase, bucket_google, ffuf_shortnames, filedownload, git, httpx, iis_shortnames, ntlm, oauth, robots, securitytxt, sslcert, wappalyzer | +| web-screenshots | | Take screenshots of webpages | 3 | gowitness, httpx, social | +| web-thorough | | Aggressive web scan | 30 | ajaxpro, azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, dotnetnuke, ffuf_shortnames, filedownload, generic_ssrf, git, host_header, httpx, hunt, iis_shortnames, lightfuzz, ntlm, oauth, reflected_parameters, robots, securitytxt, smuggler, sslcert, telerik, url_manipulation, wappalyzer | From 4e33a32dc66ab9da461264f1c527e1e701d95e53 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 10:22:34 -0400 Subject: [PATCH 14/77] docs update --- docs/data/chord_graph/entities.json | 379 ++++++++++++++-------------- docs/data/chord_graph/rels.json | 328 ++++++++++++------------ docs/modules/list_of_modules.md | 1 - docs/scanning/advanced.md | 2 +- docs/scanning/events.md | 70 ++--- docs/scanning/index.md | 48 ++-- 6 files changed, 402 insertions(+), 426 deletions(-) diff --git a/docs/data/chord_graph/entities.json b/docs/data/chord_graph/entities.json index dddbc3fdea..39863451d5 100644 --- a/docs/data/chord_graph/entities.json +++ b/docs/data/chord_graph/entities.json @@ -23,11 +23,11 @@ ] }, { - "id": 135, + "id": 134, "name": "AZURE_TENANT", "parent": 88888888, "consumes": [ - 134 + 133 ], "produces": [] }, @@ -41,8 +41,8 @@ 82, 86, 88, - 122, - 142 + 121, + 141 ], "produces": [ 41, @@ -51,7 +51,7 @@ 83, 84, 87, - 121 + 120 ] }, { @@ -96,31 +96,30 @@ 91, 95, 102, - 103, - 106, - 108, + 105, + 107, + 110, 111, - 112, + 115, 116, - 117, - 119, - 123, + 118, + 122, + 125, 126, 127, 128, 129, 130, - 131, - 134, + 133, + 136, 137, 138, - 139, - 141, - 145, + 140, + 144, + 147, 148, - 149, - 152, - 156 + 151, + 155 ], "produces": [ 6, @@ -145,27 +144,27 @@ 91, 95, 102, - 106, - 109, + 105, + 108, + 110, 111, - 112, - 116, - 123, - 126, + 115, + 122, + 125, + 127, 128, 129, - 130, - 134, + 133, + 135, 136, 137, - 138, - 141, + 140, + 144, 145, - 146, + 147, 148, - 149, - 152, - 156 + 151, + 155 ] }, { @@ -174,8 +173,8 @@ "parent": 88888888, "consumes": [ 21, - 134, - 139 + 133, + 138 ], "produces": [] }, @@ -194,10 +193,10 @@ 66, 85, 95, - 117, - 127, - 131, - 136 + 116, + 126, + 130, + 135 ] }, { @@ -207,8 +206,8 @@ "consumes": [ 71, 101, - 142, - 143 + 141, + 142 ], "produces": [ 8, @@ -218,8 +217,8 @@ 82, 86, 101, - 122, - 143 + 121, + 142 ] }, { @@ -228,7 +227,7 @@ "parent": 88888888, "consumes": [ 14, - 154 + 153 ], "produces": [ 1, @@ -246,20 +245,20 @@ 87, 92, 94, - 104, - 107, + 103, + 106, + 108, 109, - 110, + 112, 113, - 114, - 124, - 129, - 132, - 134, - 140, - 142, - 144, - 155 + 123, + 128, + 131, + 133, + 139, + 141, + 143, + 154 ] }, { @@ -295,17 +294,17 @@ 75, 87, 92, + 106, 107, 108, - 109, + 112, 113, 114, - 115, - 134, - 140, - 142, - 151, - 155 + 133, + 139, + 141, + 150, + 154 ], "produces": [ 93 @@ -321,25 +320,25 @@ 97, 99, 100, - 108, - 119, - 129, - 134 + 107, + 118, + 128, + 133 ], "produces": [ 14, 59, 99, - 134 + 133 ] }, { - "id": 120, + "id": 119, "name": "IP_RANGE", "parent": 88888888, "consumes": [ - 119, - 134 + 118, + 133 ], "produces": [] }, @@ -362,15 +361,15 @@ 14, 76, 93, - 108, - 118, - 136 + 107, + 117, + 135 ], "produces": [ 14, - 119, - 129, - 134 + 118, + 128, + 133 ] }, { @@ -381,10 +380,10 @@ 62, 84, 88, - 121 + 120 ], "produces": [ - 134 + 133 ] }, { @@ -402,8 +401,8 @@ "name": "PROTOCOL", "parent": 88888888, "consumes": [ - 105, - 108 + 104, + 107 ], "produces": [ 76 @@ -426,7 +425,7 @@ "parent": 88888888, "consumes": [ 68, - 142 + 141 ], "produces": [ 71 @@ -441,14 +440,14 @@ 84, 87, 89, - 121, - 134 + 120, + 133 ], "produces": [ 62, 85, 87, - 133 + 132 ] }, { @@ -463,7 +462,7 @@ 31, 32, 33, - 134 + 133 ], "produces": [ 28, @@ -480,18 +479,18 @@ "consumes": [ 14, 87, - 154, - 155 + 153, + 154 ], "produces": [ 26, 65, 87, 89, - 110, - 129, - 151, - 155 + 109, + 128, + 150, + 154 ] }, { @@ -509,18 +508,18 @@ 89, 93, 96, - 104, + 103, + 108, 109, - 110, - 118, - 125, - 132, - 134, - 140, - 144, - 146, - 150, - 154 + 117, + 124, + 131, + 133, + 139, + 143, + 145, + 149, + 153 ], "produces": [ 89, @@ -546,10 +545,10 @@ 41, 75, 93, - 111, - 118, - 133, - 134 + 110, + 117, + 132, + 133 ], "produces": [ 18, @@ -565,11 +564,11 @@ 83, 89, 95, - 125, - 127, - 145, - 152, - 155 + 124, + 126, + 144, + 151, + 154 ] }, { @@ -577,7 +576,7 @@ "name": "USERNAME", "parent": 88888888, "consumes": [ - 134 + 133 ], "produces": [ 43, @@ -585,14 +584,14 @@ ] }, { - "id": 147, + "id": 146, "name": "VHOST", "parent": 88888888, "consumes": [ - 154 + 153 ], "produces": [ - 146 + 145 ] }, { @@ -601,7 +600,7 @@ "parent": 88888888, "consumes": [ 14, - 154 + 153 ], "produces": [ 1, @@ -613,12 +612,11 @@ 79, 103, 104, - 105, - 110, - 129, - 140, - 142, - 155 + 109, + 128, + 139, + 141, + 154 ] }, { @@ -629,7 +627,7 @@ 14 ], "produces": [ - 150 + 149 ] }, { @@ -647,18 +645,18 @@ "parent": 88888888, "consumes": [ 94, - 104, + 103, + 112, 113, 114, - 115, - 124, - 153 + 123, + 152 ], "produces": [ 68, + 112, 113, - 114, - 115 + 114 ] }, { @@ -1530,17 +1528,6 @@ }, { "id": 103, - "name": "legba", - "parent": 99999999, - "consumes": [ - 7 - ], - "produces": [ - 5 - ] - }, - { - "id": 104, "name": "lightfuzz", "parent": 99999999, "consumes": [ @@ -1553,7 +1540,7 @@ ] }, { - "id": 105, + "id": 104, "name": "medusa", "parent": 99999999, "consumes": [ @@ -1564,7 +1551,7 @@ ] }, { - "id": 106, + "id": 105, "name": "myssl", "parent": 99999999, "consumes": [ @@ -1575,7 +1562,7 @@ ] }, { - "id": 107, + "id": 106, "name": "newsletters", "parent": 99999999, "consumes": [ @@ -1586,7 +1573,7 @@ ] }, { - "id": 108, + "id": 107, "name": "nmap_xml", "parent": 99999999, "consumes": [ @@ -1599,7 +1586,7 @@ "produces": [] }, { - "id": 109, + "id": 108, "name": "ntlm", "parent": 99999999, "consumes": [ @@ -1612,7 +1599,7 @@ ] }, { - "id": 110, + "id": 109, "name": "nuclei", "parent": 99999999, "consumes": [ @@ -1625,7 +1612,7 @@ ] }, { - "id": 111, + "id": 110, "name": "oauth", "parent": 99999999, "consumes": [ @@ -1637,7 +1624,7 @@ ] }, { - "id": 112, + "id": 111, "name": "otx", "parent": 99999999, "consumes": [ @@ -1648,7 +1635,7 @@ ] }, { - "id": 113, + "id": 112, "name": "paramminer_cookies", "parent": 99999999, "consumes": [ @@ -1661,7 +1648,7 @@ ] }, { - "id": 114, + "id": 113, "name": "paramminer_getparams", "parent": 99999999, "consumes": [ @@ -1674,7 +1661,7 @@ ] }, { - "id": 115, + "id": 114, "name": "paramminer_headers", "parent": 99999999, "consumes": [ @@ -1686,7 +1673,7 @@ ] }, { - "id": 116, + "id": 115, "name": "passivetotal", "parent": 99999999, "consumes": [ @@ -1697,7 +1684,7 @@ ] }, { - "id": 117, + "id": 116, "name": "pgp", "parent": 99999999, "consumes": [ @@ -1708,7 +1695,7 @@ ] }, { - "id": 118, + "id": 117, "name": "portfilter", "parent": 99999999, "consumes": [ @@ -1719,20 +1706,20 @@ "produces": [] }, { - "id": 119, + "id": 118, "name": "portscan", "parent": 99999999, "consumes": [ 7, 12, - 120 + 119 ], "produces": [ 15 ] }, { - "id": 121, + "id": 120, "name": "postman", "parent": 99999999, "consumes": [ @@ -1744,7 +1731,7 @@ ] }, { - "id": 122, + "id": 121, "name": "postman_download", "parent": 99999999, "consumes": [ @@ -1755,7 +1742,7 @@ ] }, { - "id": 123, + "id": 122, "name": "rapiddns", "parent": 99999999, "consumes": [ @@ -1766,7 +1753,7 @@ ] }, { - "id": 124, + "id": 123, "name": "reflected_parameters", "parent": 99999999, "consumes": [ @@ -1777,7 +1764,7 @@ ] }, { - "id": 125, + "id": 124, "name": "robots", "parent": 99999999, "consumes": [ @@ -1788,7 +1775,7 @@ ] }, { - "id": 126, + "id": 125, "name": "securitytrails", "parent": 99999999, "consumes": [ @@ -1799,7 +1786,7 @@ ] }, { - "id": 127, + "id": 126, "name": "securitytxt", "parent": 99999999, "consumes": [ @@ -1811,7 +1798,7 @@ ] }, { - "id": 128, + "id": 127, "name": "shodan_dns", "parent": 99999999, "consumes": [ @@ -1822,7 +1809,7 @@ ] }, { - "id": 129, + "id": 128, "name": "shodan_idb", "parent": 99999999, "consumes": [ @@ -1838,7 +1825,7 @@ ] }, { - "id": 130, + "id": 129, "name": "sitedossier", "parent": 99999999, "consumes": [ @@ -1849,7 +1836,7 @@ ] }, { - "id": 131, + "id": 130, "name": "skymem", "parent": 99999999, "consumes": [ @@ -1860,7 +1847,7 @@ ] }, { - "id": 132, + "id": 131, "name": "smuggler", "parent": 99999999, "consumes": [ @@ -1871,7 +1858,7 @@ ] }, { - "id": 133, + "id": 132, "name": "social", "parent": 99999999, "consumes": [ @@ -1882,16 +1869,16 @@ ] }, { - "id": 134, + "id": 133, "name": "speculate", "parent": 99999999, "consumes": [ - 135, + 134, 7, 22, 2, 12, - 120, + 119, 64, 24, 3, @@ -1907,7 +1894,7 @@ ] }, { - "id": 136, + "id": 135, "name": "sslcert", "parent": 99999999, "consumes": [ @@ -1919,7 +1906,7 @@ ] }, { - "id": 137, + "id": 136, "name": "subdomaincenter", "parent": 99999999, "consumes": [ @@ -1930,7 +1917,7 @@ ] }, { - "id": 138, + "id": 137, "name": "subdomainradar", "parent": 99999999, "consumes": [ @@ -1941,7 +1928,7 @@ ] }, { - "id": 139, + "id": 138, "name": "subdomains", "parent": 99999999, "consumes": [ @@ -1951,7 +1938,7 @@ "produces": [] }, { - "id": 140, + "id": 139, "name": "telerik", "parent": 99999999, "consumes": [ @@ -1964,7 +1951,7 @@ ] }, { - "id": 141, + "id": 140, "name": "trickest", "parent": 99999999, "consumes": [ @@ -1975,7 +1962,7 @@ ] }, { - "id": 142, + "id": 141, "name": "trufflehog", "parent": 99999999, "consumes": [ @@ -1990,7 +1977,7 @@ ] }, { - "id": 143, + "id": 142, "name": "unarchive", "parent": 99999999, "consumes": [ @@ -2001,7 +1988,7 @@ ] }, { - "id": 144, + "id": 143, "name": "url_manipulation", "parent": 99999999, "consumes": [ @@ -2012,7 +1999,7 @@ ] }, { - "id": 145, + "id": 144, "name": "urlscan", "parent": 99999999, "consumes": [ @@ -2024,7 +2011,7 @@ ] }, { - "id": 146, + "id": 145, "name": "vhost", "parent": 99999999, "consumes": [ @@ -2032,11 +2019,11 @@ ], "produces": [ 7, - 147 + 146 ] }, { - "id": 148, + "id": 147, "name": "viewdns", "parent": 99999999, "consumes": [ @@ -2047,7 +2034,7 @@ ] }, { - "id": 149, + "id": 148, "name": "virustotal", "parent": 99999999, "consumes": [ @@ -2058,7 +2045,7 @@ ] }, { - "id": 150, + "id": 149, "name": "wafw00f", "parent": 99999999, "consumes": [ @@ -2069,7 +2056,7 @@ ] }, { - "id": 151, + "id": 150, "name": "wappalyzer", "parent": 99999999, "consumes": [ @@ -2080,7 +2067,7 @@ ] }, { - "id": 152, + "id": 151, "name": "wayback", "parent": 99999999, "consumes": [ @@ -2092,7 +2079,7 @@ ] }, { - "id": 153, + "id": 152, "name": "web_parameters", "parent": 99999999, "consumes": [ @@ -2101,20 +2088,20 @@ "produces": [] }, { - "id": 154, + "id": 153, "name": "web_report", "parent": 99999999, "consumes": [ 4, 16, 3, - 147, + 146, 5 ], "produces": [] }, { - "id": 155, + "id": 154, "name": "wpscan", "parent": 99999999, "consumes": [ @@ -2129,7 +2116,7 @@ ] }, { - "id": 156, + "id": 155, "name": "zoomeye", "parent": 99999999, "consumes": [ diff --git a/docs/data/chord_graph/rels.json b/docs/data/chord_graph/rels.json index 0262361ba1..f6ea6fce5d 100644 --- a/docs/data/chord_graph/rels.json +++ b/docs/data/chord_graph/rels.json @@ -1061,787 +1061,777 @@ }, { "source": 103, - "target": 7, - "type": "consumes" - }, - { - "source": 5, - "target": 103, - "type": "produces" - }, - { - "source": 104, "target": 3, "type": "consumes" }, { - "source": 104, + "source": 103, "target": 70, "type": "consumes" }, { "source": 4, - "target": 104, + "target": 103, "type": "produces" }, { "source": 5, - "target": 104, + "target": 103, "type": "produces" }, { - "source": 105, + "source": 104, "target": 77, "type": "consumes" }, { "source": 5, - "target": 105, + "target": 104, "type": "produces" }, { - "source": 106, + "source": 105, "target": 7, "type": "consumes" }, { "source": 7, - "target": 106, + "target": 105, "type": "produces" }, { - "source": 107, + "source": 106, "target": 2, "type": "consumes" }, { "source": 4, - "target": 107, + "target": 106, "type": "produces" }, { - "source": 108, + "source": 107, "target": 7, "type": "consumes" }, { - "source": 108, + "source": 107, "target": 2, "type": "consumes" }, { - "source": 108, + "source": 107, "target": 12, "type": "consumes" }, { - "source": 108, + "source": 107, "target": 15, "type": "consumes" }, { - "source": 108, + "source": 107, "target": 77, "type": "consumes" }, { - "source": 109, + "source": 108, "target": 2, "type": "consumes" }, { - "source": 109, + "source": 108, "target": 3, "type": "consumes" }, { "source": 7, - "target": 109, + "target": 108, "type": "produces" }, { "source": 4, - "target": 109, + "target": 108, "type": "produces" }, { - "source": 110, + "source": 109, "target": 3, "type": "consumes" }, { "source": 4, - "target": 110, + "target": 109, "type": "produces" }, { "source": 16, - "target": 110, + "target": 109, "type": "produces" }, { "source": 5, - "target": 110, + "target": 109, "type": "produces" }, { - "source": 111, + "source": 110, "target": 7, "type": "consumes" }, { - "source": 111, + "source": 110, "target": 19, "type": "consumes" }, { "source": 7, - "target": 111, + "target": 110, "type": "produces" }, { - "source": 112, + "source": 111, "target": 7, "type": "consumes" }, { "source": 7, - "target": 112, + "target": 111, "type": "produces" }, { - "source": 113, + "source": 112, "target": 2, "type": "consumes" }, { - "source": 113, + "source": 112, "target": 70, "type": "consumes" }, { "source": 4, - "target": 113, + "target": 112, "type": "produces" }, { "source": 70, - "target": 113, + "target": 112, "type": "produces" }, { - "source": 114, + "source": 113, "target": 2, "type": "consumes" }, { - "source": 114, + "source": 113, "target": 70, "type": "consumes" }, { "source": 4, - "target": 114, + "target": 113, "type": "produces" }, { "source": 70, - "target": 114, + "target": 113, "type": "produces" }, { - "source": 115, + "source": 114, "target": 2, "type": "consumes" }, { - "source": 115, + "source": 114, "target": 70, "type": "consumes" }, { "source": 70, - "target": 115, + "target": 114, "type": "produces" }, { - "source": 116, + "source": 115, "target": 7, "type": "consumes" }, { "source": 7, - "target": 116, + "target": 115, "type": "produces" }, { - "source": 117, + "source": 116, "target": 7, "type": "consumes" }, { "source": 44, - "target": 117, + "target": 116, "type": "produces" }, { - "source": 118, + "source": 117, "target": 15, "type": "consumes" }, { - "source": 118, + "source": 117, "target": 3, "type": "consumes" }, { - "source": 118, + "source": 117, "target": 19, "type": "consumes" }, { - "source": 119, + "source": 118, "target": 7, "type": "consumes" }, { - "source": 119, + "source": 118, "target": 12, "type": "consumes" }, { - "source": 119, - "target": 120, + "source": 118, + "target": 119, "type": "consumes" }, { "source": 15, - "target": 119, + "target": 118, "type": "produces" }, { - "source": 121, + "source": 120, "target": 63, "type": "consumes" }, { - "source": 121, + "source": 120, "target": 64, "type": "consumes" }, { "source": 42, - "target": 121, + "target": 120, "type": "produces" }, { - "source": 122, + "source": 121, "target": 42, "type": "consumes" }, { "source": 10, - "target": 122, + "target": 121, "type": "produces" }, { - "source": 123, + "source": 122, "target": 7, "type": "consumes" }, { "source": 7, - "target": 123, + "target": 122, "type": "produces" }, { - "source": 124, + "source": 123, "target": 70, "type": "consumes" }, { "source": 4, - "target": 124, + "target": 123, "type": "produces" }, { - "source": 125, + "source": 124, "target": 3, "type": "consumes" }, { "source": 19, - "target": 125, + "target": 124, "type": "produces" }, { - "source": 126, + "source": 125, "target": 7, "type": "consumes" }, { "source": 7, - "target": 126, + "target": 125, "type": "produces" }, { - "source": 127, + "source": 126, "target": 7, "type": "consumes" }, { "source": 44, - "target": 127, + "target": 126, "type": "produces" }, { "source": 19, - "target": 127, + "target": 126, "type": "produces" }, { - "source": 128, + "source": 127, "target": 7, "type": "consumes" }, { "source": 7, - "target": 128, + "target": 127, "type": "produces" }, { - "source": 129, + "source": 128, "target": 7, "type": "consumes" }, { - "source": 129, + "source": 128, "target": 12, "type": "consumes" }, { "source": 7, - "target": 129, + "target": 128, "type": "produces" }, { "source": 4, - "target": 129, + "target": 128, "type": "produces" }, { "source": 15, - "target": 129, + "target": 128, "type": "produces" }, { "source": 16, - "target": 129, + "target": 128, "type": "produces" }, { "source": 5, - "target": 129, + "target": 128, "type": "produces" }, { - "source": 130, + "source": 129, "target": 7, "type": "consumes" }, { "source": 7, - "target": 130, + "target": 129, "type": "produces" }, { - "source": 131, + "source": 130, "target": 7, "type": "consumes" }, { "source": 44, - "target": 131, + "target": 130, "type": "produces" }, { - "source": 132, + "source": 131, "target": 3, "type": "consumes" }, { "source": 4, - "target": 132, + "target": 131, "type": "produces" }, { - "source": 133, + "source": 132, "target": 19, "type": "consumes" }, { "source": 64, - "target": 133, + "target": 132, "type": "produces" }, { - "source": 134, - "target": 135, + "source": 133, + "target": 134, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 7, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 22, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 2, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 12, "type": "consumes" }, { - "source": 134, - "target": 120, + "source": 133, + "target": 119, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 64, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 24, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 3, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 19, "type": "consumes" }, { - "source": 134, + "source": 133, "target": 47, "type": "consumes" }, { "source": 7, - "target": 134, + "target": 133, "type": "produces" }, { "source": 4, - "target": 134, + "target": 133, "type": "produces" }, { "source": 12, - "target": 134, + "target": 133, "type": "produces" }, { "source": 15, - "target": 134, + "target": 133, "type": "produces" }, { "source": 63, - "target": 134, + "target": 133, "type": "produces" }, { - "source": 136, + "source": 135, "target": 15, "type": "consumes" }, { "source": 7, - "target": 136, + "target": 135, "type": "produces" }, { "source": 44, - "target": 136, + "target": 135, "type": "produces" }, { - "source": 137, + "source": 136, "target": 7, "type": "consumes" }, { "source": 7, - "target": 137, + "target": 136, "type": "produces" }, { - "source": 138, + "source": 137, "target": 7, "type": "consumes" }, { "source": 7, - "target": 138, + "target": 137, "type": "produces" }, { - "source": 139, + "source": 138, "target": 7, "type": "consumes" }, { - "source": 139, + "source": 138, "target": 22, "type": "consumes" }, { - "source": 140, + "source": 139, "target": 2, "type": "consumes" }, { - "source": 140, + "source": 139, "target": 3, "type": "consumes" }, { "source": 4, - "target": 140, + "target": 139, "type": "produces" }, { "source": 5, - "target": 140, + "target": 139, "type": "produces" }, { - "source": 141, + "source": 140, "target": 7, "type": "consumes" }, { "source": 7, - "target": 141, + "target": 140, "type": "produces" }, { - "source": 142, + "source": 141, "target": 42, "type": "consumes" }, { - "source": 142, + "source": 141, "target": 10, "type": "consumes" }, { - "source": 142, + "source": 141, "target": 2, "type": "consumes" }, { - "source": 142, + "source": 141, "target": 69, "type": "consumes" }, { "source": 4, - "target": 142, + "target": 141, "type": "produces" }, { "source": 5, - "target": 142, + "target": 141, "type": "produces" }, { - "source": 143, + "source": 142, "target": 10, "type": "consumes" }, { "source": 10, - "target": 143, + "target": 142, "type": "produces" }, { - "source": 144, + "source": 143, "target": 3, "type": "consumes" }, { "source": 4, - "target": 144, + "target": 143, "type": "produces" }, { - "source": 145, + "source": 144, "target": 7, "type": "consumes" }, { "source": 7, - "target": 145, + "target": 144, "type": "produces" }, { "source": 19, - "target": 145, + "target": 144, "type": "produces" }, { - "source": 146, + "source": 145, "target": 3, "type": "consumes" }, { "source": 7, - "target": 146, + "target": 145, "type": "produces" }, { - "source": 147, - "target": 146, + "source": 146, + "target": 145, "type": "produces" }, { - "source": 148, + "source": 147, "target": 7, "type": "consumes" }, { "source": 7, - "target": 148, + "target": 147, "type": "produces" }, { - "source": 149, + "source": 148, "target": 7, "type": "consumes" }, { "source": 7, - "target": 149, + "target": 148, "type": "produces" }, { - "source": 150, + "source": 149, "target": 3, "type": "consumes" }, { "source": 17, - "target": 150, + "target": 149, "type": "produces" }, { - "source": 151, + "source": 150, "target": 2, "type": "consumes" }, { "source": 16, - "target": 151, + "target": 150, "type": "produces" }, { - "source": 152, + "source": 151, "target": 7, "type": "consumes" }, { "source": 7, - "target": 152, + "target": 151, "type": "produces" }, { "source": 19, - "target": 152, + "target": 151, "type": "produces" }, { - "source": 153, + "source": 152, "target": 70, "type": "consumes" }, { - "source": 154, + "source": 153, "target": 4, "type": "consumes" }, { - "source": 154, + "source": 153, "target": 16, "type": "consumes" }, { - "source": 154, + "source": 153, "target": 3, "type": "consumes" }, { - "source": 154, - "target": 147, + "source": 153, + "target": 146, "type": "consumes" }, { - "source": 154, + "source": 153, "target": 5, "type": "consumes" }, { - "source": 155, + "source": 154, "target": 2, "type": "consumes" }, { - "source": 155, + "source": 154, "target": 16, "type": "consumes" }, { "source": 4, - "target": 155, + "target": 154, "type": "produces" }, { "source": 16, - "target": 155, + "target": 154, "type": "produces" }, { "source": 19, - "target": 155, + "target": 154, "type": "produces" }, { "source": 5, - "target": 155, + "target": 154, "type": "produces" }, { - "source": 156, + "source": 155, "target": 7, "type": "consumes" }, { "source": 7, - "target": 156, + "target": 155, "type": "produces" } ] \ No newline at end of file diff --git a/docs/modules/list_of_modules.md b/docs/modules/list_of_modules.md index af2e9c0a1c..9affadcfa3 100644 --- a/docs/modules/list_of_modules.md +++ b/docs/modules/list_of_modules.md @@ -30,7 +30,6 @@ | httpx | scan | No | Visit webpages. Many other modules rely on httpx | active, cloud-enum, safe, social-enum, subdomain-enum, web-basic | OPEN_TCP_PORT, URL, URL_UNVERIFIED | HTTP_RESPONSE, URL | @TheTechromancer | 2022-07-08 | | hunt | scan | No | Watch for commonly-exploitable HTTP parameters | active, safe, web-thorough | WEB_PARAMETER | FINDING | @liquidsec | 2022-07-20 | | iis_shortnames | scan | No | Check for IIS shortname vulnerability | active, iis-shortnames, safe, web-basic | URL | URL_HINT | @liquidsec | 2022-04-15 | -| legba | scan | No | Fingerprint exposed services like RDP, SSH, MySQL, etc. | active, safe, service-enum, slow | DNS_NAME | VULNERABILITY | @TheTechromancer | 2023-01-30 | | lightfuzz | scan | No | Find Web Parameters and Lightly Fuzz them using a heuristic based scanner | active, aggressive, deadly, web-thorough | URL, WEB_PARAMETER | FINDING, VULNERABILITY | @liquidsec | 2024-06-28 | | medusa | scan | No | Medusa SNMP bruteforcing with v1, v2c and R/W check. | active, aggressive, deadly | PROTOCOL | VULNERABILITY | @christianfl | 2025-05-16 | | newsletters | scan | No | Searches for Newsletter Submission Entry Fields on Websites | active, safe | HTTP_RESPONSE | FINDING | @stryker2k2 | 2024-02-02 | diff --git a/docs/scanning/advanced.md b/docs/scanning/advanced.md index 5a77401200..f6d9a57619 100644 --- a/docs/scanning/advanced.md +++ b/docs/scanning/advanced.md @@ -63,7 +63,7 @@ Presets: Modules: -m, --modules MODULE [MODULE ...] - Modules to enable. Choices: affiliates,ajaxpro,anubisdb,apkpure,asn,azure_realm,azure_tenant,baddns,baddns_direct,baddns_zone,badsecrets,bevigil,bucket_amazon,bucket_azure,bucket_digitalocean,bucket_file_enum,bucket_firebase,bucket_google,bufferoverrun,builtwith,bypass403,c99,censys,certspotter,chaos,code_repository,credshed,crt,crt_db,dehashed,digitorus,dnsbimi,dnsbrute,dnsbrute_mutations,dnscaa,dnscommonsrv,dnsdumpster,dnstlsrpt,docker_pull,dockerhub,dotnetnuke,emailformat,extractous,ffuf,ffuf_shortnames,filedownload,fingerprintx,fullhunt,generic_ssrf,git,git_clone,gitdumper,github_codesearch,github_org,github_usersearch,github_workflows,gitlab,google_playstore,gowitness,hackertarget,host_header,httpx,hunt,hunterio,iis_shortnames,ip2location,ipneighbor,ipstack,jadx,leakix,legba,lightfuzz,medusa,myssl,newsletters,ntlm,nuclei,oauth,otx,paramminer_cookies,paramminer_getparams,paramminer_headers,passivetotal,pgp,portfilter,portscan,postman,postman_download,rapiddns,reflected_parameters,robots,securitytrails,securitytxt,shodan_dns,shodan_idb,sitedossier,skymem,smuggler,social,sslcert,subdomaincenter,subdomainradar,telerik,trickest,trufflehog,url_manipulation,urlscan,vhost,viewdns,virustotal,wafw00f,wappalyzer,wayback,wpscan,zoomeye + Modules to enable. Choices: affiliates,ajaxpro,anubisdb,apkpure,asn,azure_realm,azure_tenant,baddns,baddns_direct,baddns_zone,badsecrets,bevigil,bucket_amazon,bucket_azure,bucket_digitalocean,bucket_file_enum,bucket_firebase,bucket_google,bufferoverrun,builtwith,bypass403,c99,censys,certspotter,chaos,code_repository,credshed,crt,crt_db,dehashed,digitorus,dnsbimi,dnsbrute,dnsbrute_mutations,dnscaa,dnscommonsrv,dnsdumpster,dnstlsrpt,docker_pull,dockerhub,dotnetnuke,emailformat,extractous,ffuf,ffuf_shortnames,filedownload,fingerprintx,fullhunt,generic_ssrf,git,git_clone,gitdumper,github_codesearch,github_org,github_usersearch,github_workflows,gitlab,google_playstore,gowitness,hackertarget,host_header,httpx,hunt,hunterio,iis_shortnames,ip2location,ipneighbor,ipstack,jadx,leakix,lightfuzz,medusa,myssl,newsletters,ntlm,nuclei,oauth,otx,paramminer_cookies,paramminer_getparams,paramminer_headers,passivetotal,pgp,portfilter,portscan,postman,postman_download,rapiddns,reflected_parameters,robots,securitytrails,securitytxt,shodan_dns,shodan_idb,sitedossier,skymem,smuggler,social,sslcert,subdomaincenter,subdomainradar,telerik,trickest,trufflehog,url_manipulation,urlscan,vhost,viewdns,virustotal,wafw00f,wappalyzer,wayback,wpscan,zoomeye -l, --list-modules List available modules. -lmo, --list-module-options Show all module config options diff --git a/docs/scanning/events.md b/docs/scanning/events.md index 046388f996..4eff71cf96 100644 --- a/docs/scanning/events.md +++ b/docs/scanning/events.md @@ -104,41 +104,41 @@ Below is a full list of event types along with which modules produce/consume the ## List of Event Types -| Event Type | # Consuming Modules | # Producing Modules | Consuming Modules | Producing Modules | -|---------------------|-----------------------|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| * | 18 | 0 | affiliates, cloudcheck, csv, discord, dnsresolve, http, json, mysql, neo4j, postgres, python, slack, splunk, sqlite, stdout, teams, txt, websocket | | -| ASN | 0 | 1 | | asn | -| AZURE_TENANT | 1 | 0 | speculate | | -| CODE_REPOSITORY | 7 | 7 | docker_pull, git_clone, gitdumper, github_workflows, google_playstore, postman_download, trufflehog | code_repository, dockerhub, git, github_codesearch, github_org, gitlab, postman | -| DNS_NAME | 62 | 43 | anubisdb, asset_inventory, azure_realm, azure_tenant, baddns, baddns_zone, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, emailformat, fullhunt, github_codesearch, github_usersearch, hackertarget, hunterio, leakix, legba, myssl, nmap_xml, oauth, otx, passivetotal, pgp, portscan, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, speculate, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, viewdns, virustotal, wayback, zoomeye | anubisdb, azure_tenant, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnsresolve, fullhunt, hackertarget, hunterio, leakix, myssl, ntlm, oauth, otx, passivetotal, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, speculate, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, vhost, viewdns, virustotal, wayback, zoomeye | -| DNS_NAME_UNRESOLVED | 3 | 0 | baddns, speculate, subdomains | | -| EMAIL_ADDRESS | 1 | 11 | emails | credshed, dehashed, dnscaa, dnstlsrpt, emailformat, github_usersearch, hunterio, pgp, securitytxt, skymem, sslcert | -| FILESYSTEM | 4 | 9 | extractous, jadx, trufflehog, unarchive | apkpure, docker_pull, filedownload, git_clone, gitdumper, github_workflows, jadx, postman_download, unarchive | -| FINDING | 2 | 29 | asset_inventory, web_report | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, git, gitlab, host_header, hunt, lightfuzz, newsletters, ntlm, nuclei, paramminer_cookies, paramminer_getparams, reflected_parameters, shodan_idb, smuggler, speculate, telerik, trufflehog, url_manipulation, wpscan | -| GEOLOCATION | 0 | 2 | | ip2location, ipstack | -| HASHED_PASSWORD | 0 | 2 | | credshed, dehashed | -| HTTP_RESPONSE | 19 | 1 | ajaxpro, asset_inventory, badsecrets, dotnetnuke, excavate, filedownload, gitlab, host_header, newsletters, nmap_xml, ntlm, paramminer_cookies, paramminer_getparams, paramminer_headers, speculate, telerik, trufflehog, wappalyzer, wpscan | httpx | -| IP_ADDRESS | 9 | 4 | asn, asset_inventory, ip2location, ipneighbor, ipstack, nmap_xml, portscan, shodan_idb, speculate | asset_inventory, dnsresolve, ipneighbor, speculate | -| IP_RANGE | 2 | 0 | portscan, speculate | | -| MOBILE_APP | 1 | 1 | apkpure | google_playstore | -| OPEN_TCP_PORT | 6 | 4 | asset_inventory, fingerprintx, httpx, nmap_xml, portfilter, sslcert | asset_inventory, portscan, shodan_idb, speculate | -| ORG_STUB | 4 | 1 | dockerhub, github_org, google_playstore, postman | speculate | -| PASSWORD | 0 | 2 | | credshed, dehashed | -| PROTOCOL | 2 | 1 | medusa, nmap_xml | fingerprintx | -| RAW_DNS_RECORD | 0 | 3 | | dnsbimi, dnsresolve, dnstlsrpt | -| RAW_TEXT | 2 | 1 | excavate, trufflehog | extractous | -| SOCIAL | 6 | 4 | dockerhub, github_org, gitlab, gowitness, postman, speculate | dockerhub, github_usersearch, gitlab, social | -| STORAGE_BUCKET | 8 | 5 | baddns_direct, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, speculate | bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google | -| TECHNOLOGY | 4 | 8 | asset_inventory, gitlab, web_report, wpscan | badsecrets, dotnetnuke, gitlab, gowitness, nuclei, shodan_idb, wappalyzer, wpscan | -| URL | 22 | 2 | ajaxpro, asset_inventory, baddns_direct, bypass403, ffuf, generic_ssrf, git, gowitness, httpx, iis_shortnames, lightfuzz, ntlm, nuclei, portfilter, robots, smuggler, speculate, telerik, url_manipulation, vhost, wafw00f, web_report | gowitness, httpx | -| URL_HINT | 1 | 1 | ffuf_shortnames | iis_shortnames | -| URL_UNVERIFIED | 7 | 18 | code_repository, filedownload, httpx, oauth, portfilter, social, speculate | azure_realm, bevigil, bucket_file_enum, dnsbimi, dnscaa, dnstlsrpt, dockerhub, excavate, ffuf, ffuf_shortnames, github_codesearch, gowitness, hunterio, robots, securitytxt, urlscan, wayback, wpscan | -| USERNAME | 1 | 2 | speculate | credshed, dehashed | -| VHOST | 1 | 1 | web_report | vhost | -| VULNERABILITY | 2 | 15 | asset_inventory, web_report | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, dotnetnuke, generic_ssrf, legba, lightfuzz, medusa, nuclei, shodan_idb, telerik, trufflehog, wpscan | -| WAF | 1 | 1 | asset_inventory | wafw00f | -| WEBSCREENSHOT | 0 | 1 | | gowitness | -| WEB_PARAMETER | 7 | 4 | hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, reflected_parameters, web_parameters | excavate, paramminer_cookies, paramminer_getparams, paramminer_headers | +| Event Type | # Consuming Modules | # Producing Modules | Consuming Modules | Producing Modules | +|---------------------|-----------------------|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| * | 18 | 0 | affiliates, cloudcheck, csv, discord, dnsresolve, http, json, mysql, neo4j, postgres, python, slack, splunk, sqlite, stdout, teams, txt, websocket | | +| ASN | 0 | 1 | | asn | +| AZURE_TENANT | 1 | 0 | speculate | | +| CODE_REPOSITORY | 7 | 7 | docker_pull, git_clone, gitdumper, github_workflows, google_playstore, postman_download, trufflehog | code_repository, dockerhub, git, github_codesearch, github_org, gitlab, postman | +| DNS_NAME | 61 | 43 | anubisdb, asset_inventory, azure_realm, azure_tenant, baddns, baddns_zone, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, emailformat, fullhunt, github_codesearch, github_usersearch, hackertarget, hunterio, leakix, myssl, nmap_xml, oauth, otx, passivetotal, pgp, portscan, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, speculate, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, viewdns, virustotal, wayback, zoomeye | anubisdb, azure_tenant, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnsresolve, fullhunt, hackertarget, hunterio, leakix, myssl, ntlm, oauth, otx, passivetotal, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, speculate, sslcert, subdomaincenter, subdomainradar, trickest, urlscan, vhost, viewdns, virustotal, wayback, zoomeye | +| DNS_NAME_UNRESOLVED | 3 | 0 | baddns, speculate, subdomains | | +| EMAIL_ADDRESS | 1 | 11 | emails | credshed, dehashed, dnscaa, dnstlsrpt, emailformat, github_usersearch, hunterio, pgp, securitytxt, skymem, sslcert | +| FILESYSTEM | 4 | 9 | extractous, jadx, trufflehog, unarchive | apkpure, docker_pull, filedownload, git_clone, gitdumper, github_workflows, jadx, postman_download, unarchive | +| FINDING | 2 | 29 | asset_inventory, web_report | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, git, gitlab, host_header, hunt, lightfuzz, newsletters, ntlm, nuclei, paramminer_cookies, paramminer_getparams, reflected_parameters, shodan_idb, smuggler, speculate, telerik, trufflehog, url_manipulation, wpscan | +| GEOLOCATION | 0 | 2 | | ip2location, ipstack | +| HASHED_PASSWORD | 0 | 2 | | credshed, dehashed | +| HTTP_RESPONSE | 19 | 1 | ajaxpro, asset_inventory, badsecrets, dotnetnuke, excavate, filedownload, gitlab, host_header, newsletters, nmap_xml, ntlm, paramminer_cookies, paramminer_getparams, paramminer_headers, speculate, telerik, trufflehog, wappalyzer, wpscan | httpx | +| IP_ADDRESS | 9 | 4 | asn, asset_inventory, ip2location, ipneighbor, ipstack, nmap_xml, portscan, shodan_idb, speculate | asset_inventory, dnsresolve, ipneighbor, speculate | +| IP_RANGE | 2 | 0 | portscan, speculate | | +| MOBILE_APP | 1 | 1 | apkpure | google_playstore | +| OPEN_TCP_PORT | 6 | 4 | asset_inventory, fingerprintx, httpx, nmap_xml, portfilter, sslcert | asset_inventory, portscan, shodan_idb, speculate | +| ORG_STUB | 4 | 1 | dockerhub, github_org, google_playstore, postman | speculate | +| PASSWORD | 0 | 2 | | credshed, dehashed | +| PROTOCOL | 2 | 1 | medusa, nmap_xml | fingerprintx | +| RAW_DNS_RECORD | 0 | 3 | | dnsbimi, dnsresolve, dnstlsrpt | +| RAW_TEXT | 2 | 1 | excavate, trufflehog | extractous | +| SOCIAL | 6 | 4 | dockerhub, github_org, gitlab, gowitness, postman, speculate | dockerhub, github_usersearch, gitlab, social | +| STORAGE_BUCKET | 8 | 5 | baddns_direct, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, speculate | bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google | +| TECHNOLOGY | 4 | 8 | asset_inventory, gitlab, web_report, wpscan | badsecrets, dotnetnuke, gitlab, gowitness, nuclei, shodan_idb, wappalyzer, wpscan | +| URL | 22 | 2 | ajaxpro, asset_inventory, baddns_direct, bypass403, ffuf, generic_ssrf, git, gowitness, httpx, iis_shortnames, lightfuzz, ntlm, nuclei, portfilter, robots, smuggler, speculate, telerik, url_manipulation, vhost, wafw00f, web_report | gowitness, httpx | +| URL_HINT | 1 | 1 | ffuf_shortnames | iis_shortnames | +| URL_UNVERIFIED | 7 | 18 | code_repository, filedownload, httpx, oauth, portfilter, social, speculate | azure_realm, bevigil, bucket_file_enum, dnsbimi, dnscaa, dnstlsrpt, dockerhub, excavate, ffuf, ffuf_shortnames, github_codesearch, gowitness, hunterio, robots, securitytxt, urlscan, wayback, wpscan | +| USERNAME | 1 | 2 | speculate | credshed, dehashed | +| VHOST | 1 | 1 | web_report | vhost | +| VULNERABILITY | 2 | 14 | asset_inventory, web_report | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, dotnetnuke, generic_ssrf, lightfuzz, medusa, nuclei, shodan_idb, telerik, trufflehog, wpscan | +| WAF | 1 | 1 | asset_inventory | wafw00f | +| WEBSCREENSHOT | 0 | 1 | | gowitness | +| WEB_PARAMETER | 7 | 4 | hunt, lightfuzz, paramminer_cookies, paramminer_getparams, paramminer_headers, reflected_parameters, web_parameters | excavate, paramminer_cookies, paramminer_getparams, paramminer_headers | ## Findings Vs. Vulnerabilities diff --git a/docs/scanning/index.md b/docs/scanning/index.md index b7353d3a4d..5dc568aaa3 100644 --- a/docs/scanning/index.md +++ b/docs/scanning/index.md @@ -112,30 +112,30 @@ A single module can have multiple flags. For example, the `securitytrails` modul ### List of Flags -| Flag | # Modules | Description | Modules | -|------------------|-------------|----------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| safe | 96 | Non-intrusive, safe to run | affiliates, aggregate, ajaxpro, anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, extractous, filedownload, fingerprintx, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ip2location, ipstack, jadx, leakix, legba, myssl, newsletters, ntlm, oauth, otx, passivetotal, pgp, portfilter, portscan, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wappalyzer, wayback, zoomeye | -| passive | 70 | Never connects to target systems | affiliates, aggregate, anubisdb, apkpure, asn, azure_realm, azure_tenant, bevigil, bucket_file_enum, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, excavate, extractous, fullhunt, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, google_playstore, hackertarget, hunterio, ip2location, ipneighbor, ipstack, jadx, leakix, myssl, otx, passivetotal, pgp, portfilter, postman, postman_download, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, skymem, social, speculate, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wayback, zoomeye | -| subdomain-enum | 52 | Enumerates subdomains | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, sslcert, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, virustotal, wayback, zoomeye | -| active | 49 | Makes active connections to target systems | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, dnsbrute, dnsbrute_mutations, dnscommonsrv, dotnetnuke, ffuf, ffuf_shortnames, filedownload, fingerprintx, generic_ssrf, git, gitlab, gowitness, host_header, httpx, hunt, iis_shortnames, legba, lightfuzz, medusa, newsletters, ntlm, nuclei, oauth, paramminer_cookies, paramminer_getparams, paramminer_headers, portscan, reflected_parameters, robots, securitytxt, smuggler, sslcert, telerik, url_manipulation, vhost, wafw00f, wappalyzer, wpscan | -| aggressive | 21 | Generates a large amount of network traffic | bypass403, dnsbrute, dnsbrute_mutations, dotnetnuke, ffuf, ffuf_shortnames, generic_ssrf, host_header, ipneighbor, lightfuzz, medusa, nuclei, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, telerik, url_manipulation, vhost, wafw00f, wpscan | -| code-enum | 17 | Find public code repositories and search them for secrets etc. | apkpure, code_repository, docker_pull, dockerhub, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, jadx, postman, postman_download, trufflehog | -| web-basic | 17 | Basic, non-intrusive web scan functionality | azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_firebase, bucket_google, filedownload, git, httpx, iis_shortnames, ntlm, oauth, robots, securitytxt, sslcert, wappalyzer | -| cloud-enum | 16 | Enumerates cloud resources | azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, dnsbimi, dnstlsrpt, httpx, oauth, securitytxt | -| web-thorough | 13 | More advanced web scanning functionality | ajaxpro, bucket_digitalocean, bypass403, dotnetnuke, ffuf_shortnames, generic_ssrf, host_header, hunt, lightfuzz, reflected_parameters, smuggler, telerik, url_manipulation | -| slow | 12 | May take a long time to complete | bucket_digitalocean, dnsbrute_mutations, docker_pull, fingerprintx, git_clone, gitdumper, legba, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, vhost | -| affiliates | 9 | Discovers affiliated hostnames/domains | affiliates, azure_realm, azure_tenant, builtwith, oauth, sslcert, trickest, viewdns, zoomeye | -| email-enum | 9 | Enumerates email addresses | dehashed, dnscaa, dnstlsrpt, emailformat, emails, hunterio, pgp, skymem, sslcert | -| deadly | 5 | Highly aggressive | ffuf, lightfuzz, medusa, nuclei, vhost | -| baddns | 3 | Runs all modules from the DNS auditing tool BadDNS | baddns, baddns_direct, baddns_zone | -| web-paramminer | 3 | Discovers HTTP parameters through brute-force | paramminer_cookies, paramminer_getparams, paramminer_headers | -| iis-shortnames | 2 | Scans for IIS Shortname vulnerability | ffuf_shortnames, iis_shortnames | -| portscan | 2 | Discovers open ports | portscan, shodan_idb | -| report | 2 | Generates a report at the end of the scan | affiliates, asn | -| service-enum | 2 | Identifies protocols running on open ports | fingerprintx, legba | -| social-enum | 2 | Enumerates social media | httpx, social | -| subdomain-hijack | 1 | Detects hijackable subdomains | baddns | -| web-screenshots | 1 | Takes screenshots of web pages | gowitness | +| Flag | # Modules | Description | Modules | +|------------------|-------------|----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| safe | 95 | Non-intrusive, safe to run | affiliates, aggregate, ajaxpro, anubisdb, apkpure, asn, azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, badsecrets, bevigil, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, extractous, filedownload, fingerprintx, fullhunt, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, gowitness, hackertarget, httpx, hunt, hunterio, iis_shortnames, ip2location, ipstack, jadx, leakix, myssl, newsletters, ntlm, oauth, otx, passivetotal, pgp, portfilter, portscan, postman, postman_download, rapiddns, reflected_parameters, robots, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, skymem, social, sslcert, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wappalyzer, wayback, zoomeye | +| passive | 70 | Never connects to target systems | affiliates, aggregate, anubisdb, apkpure, asn, azure_realm, azure_tenant, bevigil, bucket_file_enum, bufferoverrun, builtwith, c99, censys, certspotter, chaos, code_repository, credshed, crt, crt_db, dehashed, digitorus, dnsbimi, dnscaa, dnsdumpster, dnstlsrpt, docker_pull, dockerhub, emailformat, excavate, extractous, fullhunt, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, google_playstore, hackertarget, hunterio, ip2location, ipneighbor, ipstack, jadx, leakix, myssl, otx, passivetotal, pgp, portfilter, postman, postman_download, rapiddns, securitytrails, shodan_dns, shodan_idb, sitedossier, skymem, social, speculate, subdomaincenter, subdomainradar, trickest, trufflehog, unarchive, urlscan, viewdns, virustotal, wayback, zoomeye | +| subdomain-enum | 52 | Enumerates subdomains | anubisdb, asn, azure_realm, azure_tenant, baddns_direct, baddns_zone, bevigil, bufferoverrun, builtwith, c99, censys, certspotter, chaos, crt, crt_db, digitorus, dnsbimi, dnsbrute, dnsbrute_mutations, dnscaa, dnscommonsrv, dnsdumpster, dnstlsrpt, fullhunt, github_codesearch, github_org, hackertarget, httpx, hunterio, ipneighbor, leakix, myssl, oauth, otx, passivetotal, postman, postman_download, rapiddns, securitytrails, securitytxt, shodan_dns, shodan_idb, sitedossier, sslcert, subdomaincenter, subdomainradar, subdomains, trickest, urlscan, virustotal, wayback, zoomeye | +| active | 48 | Makes active connections to target systems | ajaxpro, baddns, baddns_direct, baddns_zone, badsecrets, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_firebase, bucket_google, bypass403, dnsbrute, dnsbrute_mutations, dnscommonsrv, dotnetnuke, ffuf, ffuf_shortnames, filedownload, fingerprintx, generic_ssrf, git, gitlab, gowitness, host_header, httpx, hunt, iis_shortnames, lightfuzz, medusa, newsletters, ntlm, nuclei, oauth, paramminer_cookies, paramminer_getparams, paramminer_headers, portscan, reflected_parameters, robots, securitytxt, smuggler, sslcert, telerik, url_manipulation, vhost, wafw00f, wappalyzer, wpscan | +| aggressive | 21 | Generates a large amount of network traffic | bypass403, dnsbrute, dnsbrute_mutations, dotnetnuke, ffuf, ffuf_shortnames, generic_ssrf, host_header, ipneighbor, lightfuzz, medusa, nuclei, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, telerik, url_manipulation, vhost, wafw00f, wpscan | +| code-enum | 17 | Find public code repositories and search them for secrets etc. | apkpure, code_repository, docker_pull, dockerhub, git, git_clone, gitdumper, github_codesearch, github_org, github_usersearch, github_workflows, gitlab, google_playstore, jadx, postman, postman_download, trufflehog | +| web-basic | 17 | Basic, non-intrusive web scan functionality | azure_realm, baddns, badsecrets, bucket_amazon, bucket_azure, bucket_firebase, bucket_google, filedownload, git, httpx, iis_shortnames, ntlm, oauth, robots, securitytxt, sslcert, wappalyzer | +| cloud-enum | 16 | Enumerates cloud resources | azure_realm, azure_tenant, baddns, baddns_direct, baddns_zone, bucket_amazon, bucket_azure, bucket_digitalocean, bucket_file_enum, bucket_firebase, bucket_google, dnsbimi, dnstlsrpt, httpx, oauth, securitytxt | +| web-thorough | 13 | More advanced web scanning functionality | ajaxpro, bucket_digitalocean, bypass403, dotnetnuke, ffuf_shortnames, generic_ssrf, host_header, hunt, lightfuzz, reflected_parameters, smuggler, telerik, url_manipulation | +| slow | 11 | May take a long time to complete | bucket_digitalocean, dnsbrute_mutations, docker_pull, fingerprintx, git_clone, gitdumper, paramminer_cookies, paramminer_getparams, paramminer_headers, smuggler, vhost | +| affiliates | 9 | Discovers affiliated hostnames/domains | affiliates, azure_realm, azure_tenant, builtwith, oauth, sslcert, trickest, viewdns, zoomeye | +| email-enum | 9 | Enumerates email addresses | dehashed, dnscaa, dnstlsrpt, emailformat, emails, hunterio, pgp, skymem, sslcert | +| deadly | 5 | Highly aggressive | ffuf, lightfuzz, medusa, nuclei, vhost | +| baddns | 3 | Runs all modules from the DNS auditing tool BadDNS | baddns, baddns_direct, baddns_zone | +| web-paramminer | 3 | Discovers HTTP parameters through brute-force | paramminer_cookies, paramminer_getparams, paramminer_headers | +| iis-shortnames | 2 | Scans for IIS Shortname vulnerability | ffuf_shortnames, iis_shortnames | +| portscan | 2 | Discovers open ports | portscan, shodan_idb | +| report | 2 | Generates a report at the end of the scan | affiliates, asn | +| social-enum | 2 | Enumerates social media | httpx, social | +| service-enum | 1 | Identifies protocols running on open ports | fingerprintx | +| subdomain-hijack | 1 | Detects hijackable subdomains | baddns | +| web-screenshots | 1 | Takes screenshots of web pages | gowitness | ## Dependencies From 1335ff28a1756cf38955f5a1dfb2e5509e6f4c2c Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 14:45:26 -0400 Subject: [PATCH 15/77] by default never retry 429s when pinging --- bbot/modules/base.py | 4 +++- bbot/modules/c99.py | 2 +- bbot/modules/censys.py | 2 +- bbot/modules/fullhunt.py | 2 +- bbot/modules/ip2location.py | 2 +- bbot/modules/passivetotal.py | 2 +- bbot/modules/securitytrails.py | 1 - bbot/modules/zoomeye.py | 2 +- 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/bbot/modules/base.py b/bbot/modules/base.py index b2c48009b9..ed54a34723 100644 --- a/bbot/modules/base.py +++ b/bbot/modules/base.py @@ -103,6 +103,8 @@ class BaseModule: # disable the module after this many failed attempts in a row _api_failure_abort_threshold = 3 + # whether to retry on 429s when first pinging the API at scan start + _ping_retry_on_http_429 = False default_discovery_context = "{module} discovered {event.type}: {event.data}" @@ -381,7 +383,7 @@ async def ping(self): """ if url is None: url = getattr(self, "ping_url", "") - retry_on_http_429 = getattr(self, "ping_retry_on_http_429", True) + retry_on_http_429 = getattr(self, "_ping_retry_on_http_429", False) if url: r = await self.api_request(url, retry_on_http_429=retry_on_http_429) if getattr(r, "status_code", 0) != 200: diff --git a/bbot/modules/c99.py b/bbot/modules/c99.py index 17fea87a13..5f3792b45f 100644 --- a/bbot/modules/c99.py +++ b/bbot/modules/c99.py @@ -19,7 +19,7 @@ class c99(subdomain_enum_apikey): async def ping(self): url = f"{self.base_url}/randomnumber?key={{api_key}}&between=1,100&json" - response = await self.api_request(url) + response = await self.api_request(url, retry_on_http_429=False) assert response.json()["success"] is True, getattr(response, "text", "no response from server") async def request_url(self, query): diff --git a/bbot/modules/censys.py b/bbot/modules/censys.py index 69e1f6f945..67aaa37306 100644 --- a/bbot/modules/censys.py +++ b/bbot/modules/censys.py @@ -29,7 +29,7 @@ async def setup(self): async def ping(self): url = f"{self.base_url}/v1/account" - resp = await self.api_request(url) + resp = await self.api_request(url, retry_on_http_429=False) d = resp.json() assert isinstance(d, dict), f"Invalid response from {url}: {resp}" quota = d.get("quota", {}) diff --git a/bbot/modules/fullhunt.py b/bbot/modules/fullhunt.py index 85106e5827..13a3de5f56 100644 --- a/bbot/modules/fullhunt.py +++ b/bbot/modules/fullhunt.py @@ -22,7 +22,7 @@ async def setup(self): async def ping(self): url = f"{self.base_url}/auth/status" - j = (await self.api_request(url)).json() + j = (await self.api_request(url, retry_on_http_429=False)).json() remaining = j["user_credits"]["remaining_credits"] assert remaining > 0, "No credits remaining" diff --git a/bbot/modules/ip2location.py b/bbot/modules/ip2location.py index 2a4b387f45..d65e63f1db 100644 --- a/bbot/modules/ip2location.py +++ b/bbot/modules/ip2location.py @@ -32,7 +32,7 @@ async def setup(self): async def ping(self): url = self.build_url("8.8.8.8") - await super().ping(url) + await super().ping(url, retry_on_http_429=False) def build_url(self, data): url = f"{self.base_url}/?key={{api_key}}&ip={data}&format=json&source=bbot" diff --git a/bbot/modules/passivetotal.py b/bbot/modules/passivetotal.py index b20c7bbac0..b72f43cefd 100644 --- a/bbot/modules/passivetotal.py +++ b/bbot/modules/passivetotal.py @@ -21,7 +21,7 @@ async def setup(self): async def ping(self): url = f"{self.base_url}/account/quota" - j = (await self.api_request(url)).json() + j = (await self.api_request(url, retry_on_http_429=False)).json() limit = j["user"]["limits"]["search_api"] used = j["user"]["counts"]["search_api"] assert used < limit, "No quota remaining" diff --git a/bbot/modules/securitytrails.py b/bbot/modules/securitytrails.py index 8b45b03cc6..b92ac07dc1 100644 --- a/bbot/modules/securitytrails.py +++ b/bbot/modules/securitytrails.py @@ -16,7 +16,6 @@ class securitytrails(subdomain_enum_apikey): base_url = "https://api.securitytrails.com/v1" ping_url = f"{base_url}/ping?apikey={{api_key}}" - ping_retry_on_http_429 = False async def setup(self): self.limit = 100 diff --git a/bbot/modules/zoomeye.py b/bbot/modules/zoomeye.py index c6cb256df0..3c4c68d3e0 100644 --- a/bbot/modules/zoomeye.py +++ b/bbot/modules/zoomeye.py @@ -31,7 +31,7 @@ def prepare_api_request(self, url, kwargs): async def ping(self): url = f"{self.base_url}/resources-info" - r = await self.api_request(url) + r = await self.api_request(url, retry_on_http_429=False) assert int(r.json()["quota_info"]["remain_total_quota"]) > 0, "No quota remaining" async def handle_event(self, event): From dab7b8c3e346c6eb8e7557f8703b5f904f43dbff Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 15:06:08 -0400 Subject: [PATCH 16/77] chrome path tweaks --- bbot/modules/gowitness.py | 56 ++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/bbot/modules/gowitness.py b/bbot/modules/gowitness.py index b452562a71..4a523e08ff 100644 --- a/bbot/modules/gowitness.py +++ b/bbot/modules/gowitness.py @@ -23,6 +23,7 @@ class gowitness(BaseModule): "output_path": "", "social": False, "idle_timeout": 1800, + "chrome_path": "", } options_desc = { "version": "Gowitness version", @@ -33,6 +34,7 @@ class gowitness(BaseModule): "output_path": "Where to save screenshots", "social": "Whether to screenshot social media webpages", "idle_timeout": "Skip the current gowitness batch if it stalls for longer than this many seconds", + "chrome_path": "Path to chrome executable", } deps_common = ["chromium"] deps_pip = ["aiosqlite"] @@ -67,37 +69,49 @@ async def setup(self): self.base_path = Path(output_path) / "gowitness" else: self.base_path = self.scan.home / "gowitness" - self.chrome_path = None - chrome_search_path = os.environ.get("PATH") + self.chrome_path = None config_chrome_path = self.config.get("chrome_path") if config_chrome_path: config_chrome_path = Path(config_chrome_path) - if config_chrome_path.is_file(): - chrome_search_path = f"{config_chrome_path.parent}:{chrome_search_path}" - elif config_chrome_path.is_dir(): - chrome_search_path = f"{config_chrome_path}:{chrome_search_path}" + if not config_chrome_path.is_file(): + return False, f"Could not find custom Chrome path at {config_chrome_path}" + self.chrome_path = config_chrome_path + else: + bbot_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome" + if bbot_chrome_path.is_file(): + self.chrome_path = bbot_chrome_path + + # make sure our chrome path works + chrome_test_pass = False + if self.chrome_path and self.chrome_path.is_file(): + chrome_test_proc = await self.run_process([str(self.chrome_path), "--version"]) + if getattr(chrome_test_proc, "returncode", 1) == 0: + self.verbose(f"Found chrome executable at {self.chrome_path}") + chrome_test_pass = True + + if not chrome_test_pass: + # last resort - try to find a working chrome install + for binary in ("Google Chrome", "chrome", "chromium", "chromium-browser"): + binary_path = self.helpers.which(binary) + if binary_path and Path(binary_path).is_file(): + chrome_test_proc = await self.run_process([str(binary_path), "--version"]) + if getattr(chrome_test_proc, "returncode", 1) == 0: + self.verbose(f"Found chrome executable at {binary_path}") + chrome_test_pass = True + break + + if not chrome_test_pass: + return ( + False, + "Failed to set up Google chrome. Please install manually and set `chrome_path`, or try again with --force-deps.", + ) # fix ubuntu-specific sandbox bug chrome_devel_sandbox = self.helpers.tools_dir / "chrome-linux" / "chrome_sandbox" if chrome_devel_sandbox.is_file(): os.environ["CHROME_DEVEL_SANDBOX"] = str(chrome_devel_sandbox) - # make sure we have a working chrome install - chrome_test_pass = False - custom_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome" - for binary in ("Google Chrome", "chrome", "chromium", "chromium-browser", custom_chrome_path): - binary_path = self.helpers.which(binary, path=chrome_search_path) - if binary_path and Path(binary_path).is_file(): - chrome_test_proc = await self.run_process([binary_path, "--version"]) - if getattr(chrome_test_proc, "returncode", 1) == 0: - self.verbose(f"Found chrome executable at {binary_path}") - self.chrome_path = binary_path - chrome_test_pass = True - break - if not chrome_test_pass: - return False, "Failed to set up Google chrome. Please install manually or try again with --force-deps." - self.db_path = self.base_path / "gowitness.sqlite3" self.screenshot_path = self.base_path / "screenshots" self.command = self.construct_command() From 5118cdcf12364615a4c7670650eb3816f371b70f Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 6 Jun 2025 00:00:51 -0400 Subject: [PATCH 17/77] fix test --- bbot/modules/ip2location.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/modules/ip2location.py b/bbot/modules/ip2location.py index d65e63f1db..2a4b387f45 100644 --- a/bbot/modules/ip2location.py +++ b/bbot/modules/ip2location.py @@ -32,7 +32,7 @@ async def setup(self): async def ping(self): url = self.build_url("8.8.8.8") - await super().ping(url, retry_on_http_429=False) + await super().ping(url) def build_url(self, data): url = f"{self.base_url}/?key={{api_key}}&ip={data}&format=json&source=bbot" From 9b2c5ccec4bdb6051454c9404874940261c8bbad Mon Sep 17 00:00:00 2001 From: blsaccess Date: Sat, 7 Jun 2025 00:26:21 +0000 Subject: [PATCH 18/77] Update trufflehog --- bbot/modules/trufflehog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/modules/trufflehog.py b/bbot/modules/trufflehog.py index 56aabdea46..b86cf6b82f 100644 --- a/bbot/modules/trufflehog.py +++ b/bbot/modules/trufflehog.py @@ -14,7 +14,7 @@ class trufflehog(BaseModule): } options = { - "version": "3.88.34", + "version": "3.89.0", "config": "", "only_verified": True, "concurrency": 8, From a87c83f9752f07f96ba3e58a0700b8abe96a598c Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Sun, 8 Jun 2025 16:22:22 +0530 Subject: [PATCH 19/77] Respect --force-deps for common dependencies --- bbot/core/helpers/depsinstaller/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/core/helpers/depsinstaller/installer.py b/bbot/core/helpers/depsinstaller/installer.py index 5bea5f508a..ffb7e2fb12 100644 --- a/bbot/core/helpers/depsinstaller/installer.py +++ b/bbot/core/helpers/depsinstaller/installer.py @@ -196,7 +196,7 @@ async def install_module(self, module): deps_common = preloaded["deps"]["common"] if deps_common: for dep_common in deps_common: - if self.setup_status.get(dep_common, False) is True: + if self.setup_status.get(dep_common, False) is True and self.deps_behavior != "force_install": log.debug( f'Skipping installation of dependency "{dep_common}" for module "{module}" since it is already installed' ) From 7b2d7defbaa718296ec2fc4b1eacb28fa8493198 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Sun, 8 Jun 2025 16:22:46 +0530 Subject: [PATCH 20/77] Add chromium auto-install for Darwin --- bbot/core/shared_deps.py | 38 ++++++++++++++++++++++++++++++++++++++ bbot/modules/gowitness.py | 6 +++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/bbot/core/shared_deps.py b/bbot/core/shared_deps.py index cd338093fc..c73c710da8 100644 --- a/bbot/core/shared_deps.py +++ b/bbot/core/shared_deps.py @@ -108,6 +108,24 @@ "when": "ansible_facts['os_family'] == 'Debian'", "ignore_errors": True, }, + { + "name": "Get latest Chromium version (Darwin x86_64)", + "uri": { + "url": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac%2FLAST_CHANGE?alt=media", + "return_content": True, + }, + "register": "chromium_version", + "when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'x86_64'", + }, + { + "name": "Get latest Chromium version (Darwin arm64)", + "uri": { + "url": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac_Arm%2FLAST_CHANGE?alt=media", + "return_content": True, + }, + "register": "chromium_version", + "when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'arm64'", + }, { "name": "Download Chromium (Debian)", "unarchive": { @@ -119,6 +137,26 @@ "when": "ansible_facts['os_family'] == 'Debian'", "ignore_errors": True, }, + { + "name": "Download Chromium (Darwin x86_64)", + "unarchive": { + "src": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac%2F{{ chromium_version.content }}%2Fchrome-mac.zip?alt=media", + "remote_src": True, + "dest": "#{BBOT_TOOLS}", + "creates": "#{BBOT_TOOLS}/chrome-mac", + }, + "when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'x86_64'", + }, + { + "name": "Download Chromium (Darwin arm64)", + "unarchive": { + "src": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac_Arm%2F{{ chromium_version.content }}%2Fchrome-mac.zip?alt=media", + "remote_src": True, + "dest": "#{BBOT_TOOLS}", + "creates": "#{BBOT_TOOLS}/chrome-mac", + }, + "when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'arm64'", + }, # Because Ubuntu is a special snowflake, we have to bend over backwards to fix the chrome sandbox # see https://chromium.googlesource.com/chromium/src/+/main/docs/security/apparmor-userns-restrictions.md { diff --git a/bbot/modules/gowitness.py b/bbot/modules/gowitness.py index 4a523e08ff..e845ea28b9 100644 --- a/bbot/modules/gowitness.py +++ b/bbot/modules/gowitness.py @@ -2,6 +2,7 @@ import asyncio import aiosqlite import multiprocessing +import platform from pathlib import Path from contextlib import suppress from shutil import copyfile, copymode @@ -78,7 +79,10 @@ async def setup(self): return False, f"Could not find custom Chrome path at {config_chrome_path}" self.chrome_path = config_chrome_path else: - bbot_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome" + if platform.system() == "Darwin": + bbot_chrome_path = self.helpers.tools_dir / "chrome-mac" / "Chromium.app" / "Contents" / "MacOS" / "Chromium" + else: + bbot_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome" if bbot_chrome_path.is_file(): self.chrome_path = bbot_chrome_path From a962e90f0a7c083a955e4d6869233ddbef5b45bd Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Sun, 8 Jun 2025 16:56:11 +0530 Subject: [PATCH 21/77] Fix failing tests --- bbot/core/shared_deps.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bbot/core/shared_deps.py b/bbot/core/shared_deps.py index c73c710da8..013a8b4d67 100644 --- a/bbot/core/shared_deps.py +++ b/bbot/core/shared_deps.py @@ -114,7 +114,7 @@ "url": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac%2FLAST_CHANGE?alt=media", "return_content": True, }, - "register": "chromium_version", + "register": "chromium_version_darwin_x86_64", "when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'x86_64'", }, { @@ -123,7 +123,7 @@ "url": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac_Arm%2FLAST_CHANGE?alt=media", "return_content": True, }, - "register": "chromium_version", + "register": "chromium_version_darwin_arm64", "when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'arm64'", }, { @@ -140,7 +140,7 @@ { "name": "Download Chromium (Darwin x86_64)", "unarchive": { - "src": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac%2F{{ chromium_version.content }}%2Fchrome-mac.zip?alt=media", + "src": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac%2F{{ chromium_version_darwin_x86_64.content }}%2Fchrome-mac.zip?alt=media", "remote_src": True, "dest": "#{BBOT_TOOLS}", "creates": "#{BBOT_TOOLS}/chrome-mac", @@ -150,7 +150,7 @@ { "name": "Download Chromium (Darwin arm64)", "unarchive": { - "src": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac_Arm%2F{{ chromium_version.content }}%2Fchrome-mac.zip?alt=media", + "src": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac_Arm%2F{{ chromium_version_darwin_arm64.content }}%2Fchrome-mac.zip?alt=media", "remote_src": True, "dest": "#{BBOT_TOOLS}", "creates": "#{BBOT_TOOLS}/chrome-mac", From dfef2c95e468b984bcffe7fb48d7f8f2db7ed13e Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Sun, 8 Jun 2025 17:02:20 +0530 Subject: [PATCH 22/77] Fix linting error --- bbot/modules/gowitness.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bbot/modules/gowitness.py b/bbot/modules/gowitness.py index e845ea28b9..ec1199bd37 100644 --- a/bbot/modules/gowitness.py +++ b/bbot/modules/gowitness.py @@ -80,7 +80,9 @@ async def setup(self): self.chrome_path = config_chrome_path else: if platform.system() == "Darwin": - bbot_chrome_path = self.helpers.tools_dir / "chrome-mac" / "Chromium.app" / "Contents" / "MacOS" / "Chromium" + bbot_chrome_path = ( + self.helpers.tools_dir / "chrome-mac" / "Chromium.app" / "Contents" / "MacOS" / "Chromium" + ) else: bbot_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome" if bbot_chrome_path.is_file(): From 1456bc6ba60b5a636279bb43b26982a0591ba60c Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 10 Jun 2025 15:33:37 -0400 Subject: [PATCH 23/77] ruthless --- bbot/core/helpers/names_generator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bbot/core/helpers/names_generator.py b/bbot/core/helpers/names_generator.py index 84e7ac4e4f..669cc60d96 100644 --- a/bbot/core/helpers/names_generator.py +++ b/bbot/core/helpers/names_generator.py @@ -201,6 +201,7 @@ "reckless", "reductive", "ripped", + "ruthless", "sadistic", "satanic", "savvy", From 28cfbd89b253e6da7b1601702543300540433ee5 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 10 Jun 2025 15:33:46 -0400 Subject: [PATCH 24/77] saucy, demonstrative --- bbot/core/helpers/names_generator.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bbot/core/helpers/names_generator.py b/bbot/core/helpers/names_generator.py index 669cc60d96..61ff611ac6 100644 --- a/bbot/core/helpers/names_generator.py +++ b/bbot/core/helpers/names_generator.py @@ -50,6 +50,7 @@ "delicious", "demented", "demonic", + "demonstrative", "depraved", "depressed", "deranged", @@ -204,6 +205,7 @@ "ruthless", "sadistic", "satanic", + "saucy", "savvy", "scheming", "schizophrenic", From 0b1d7206ae8b2dbf61d49553994373c23821ad28 Mon Sep 17 00:00:00 2001 From: blsaccess Date: Thu, 12 Jun 2025 00:26:30 +0000 Subject: [PATCH 25/77] Update trufflehog --- bbot/modules/trufflehog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/modules/trufflehog.py b/bbot/modules/trufflehog.py index b86cf6b82f..d7254bcee3 100644 --- a/bbot/modules/trufflehog.py +++ b/bbot/modules/trufflehog.py @@ -14,7 +14,7 @@ class trufflehog(BaseModule): } options = { - "version": "3.89.0", + "version": "3.89.1", "config": "", "only_verified": True, "concurrency": 8, From 24f1669604130eb7b53495503044d2c9a67e4661 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Fri, 13 Jun 2025 10:49:34 -0400 Subject: [PATCH 26/77] ruff format --- bbot/modules/aspnet_bin_exposure.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/bbot/modules/aspnet_bin_exposure.py b/bbot/modules/aspnet_bin_exposure.py index 153559735d..7be4da29a7 100644 --- a/bbot/modules/aspnet_bin_exposure.py +++ b/bbot/modules/aspnet_bin_exposure.py @@ -46,23 +46,26 @@ async def handle_event(self, event): f"Got positive result for probe with test url: [{test_url}]. Status Code: [{test_result.status_code}] Content Length: [{len(test_result.content)}]" ) - - if test_result.status_code == 200 and ( "content-type" in test_result.headers and "application/x-msdownload" in test_result.headers["content-type"] ): - confirm_url = f"{normalized_url}{technique.replace('###DLL_PLACEHOLDER###', 'oopsnotarealdll.dll')}" + confirm_url = ( + f"{normalized_url}{technique.replace('###DLL_PLACEHOLDER###', 'oopsnotarealdll.dll')}" + ) confirm_result = await self.helpers.request(confirm_url, **kwargs) - if confirm_result and (confirm_result.status_code != 200 or not ( - "content-type" in confirm_result.headers and - "application/x-msdownload" in confirm_result.headers["content-type"] - )): + if confirm_result and ( + confirm_result.status_code != 200 + or not ( + "content-type" in confirm_result.headers + and "application/x-msdownload" in confirm_result.headers["content-type"] + ) + ): description = f"IIS Bin Directory DLL Exposure. Detection Url: [{test_url}]" await self.emit_event( { - "severity": "HIGH", + "severity": "HIGH", "host": str(event.host), "url": normalized_url, "description": description, From 5f9e9b5dae3f60d059467ec5d716f253fa1de150 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Fri, 13 Jun 2025 11:56:04 -0400 Subject: [PATCH 27/77] adding module test --- .../module_tests/test_aspnet_bin_exposure.py | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 bbot/test/test_step_2/module_tests/test_aspnet_bin_exposure.py diff --git a/bbot/test/test_step_2/module_tests/test_aspnet_bin_exposure.py b/bbot/test/test_step_2/module_tests/test_aspnet_bin_exposure.py new file mode 100644 index 0000000000..ca14ff7d03 --- /dev/null +++ b/bbot/test/test_step_2/module_tests/test_aspnet_bin_exposure.py @@ -0,0 +1,73 @@ +from .base import ModuleTestBase +import re + + +class TestAspnetBinExposure(ModuleTestBase): + targets = ["http://127.0.0.1:8888"] + modules_overrides = ["httpx", "aspnet_bin_exposure"] + config_overrides = { + "modules": { + "aspnet_bin_exposure": { + "test_dlls": [ + "Newtonsoft.Json.dll", + ] + } + } + } + + async def setup_before_prep(self, module_test): + # Simulate successful DLL exposure + expect_args = { + "method": "GET", + "uri": "/b/(S(X))in/Newtonsoft.Json.dll/(S(X))/", + } + respond_args = { + "status": 200, + "headers": {"content-type": "application/x-msdownload"}, + "response_data": b"MZ\x90\x00\x03\x00\x00\x00", + } + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + # Simulate failed DLL exposure (confirmation test) + expect_args = { + "method": "GET", + "uri": "/b/(S(X))in/oopsnotarealdll.dll/(S(X))/", + } + respond_args = {"status": 404} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + # Simulate alternative technique + expect_args = { + "method": "GET", + "uri": "/(S(X))/b/(S(X))in/Newtonsoft.Json.dll", + } + respond_args = { + "status": 200, + "headers": {"content-type": "application/x-msdownload"}, + "response_data": b"MZ\x90\x00\x03\x00\x00\x00", + } + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + # Simulate failed alternative technique (confirmation test) + expect_args = { + "method": "GET", + "uri": "/(S(X))/b/(S(X))in/oopsnotarealdll.dll", + } + respond_args = {"status": 404} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + # Fallback for any other requests + expect_args = {"uri": re.compile(r"^/.*$")} + respond_args = {"status": 404} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + def check(self, module_test, events): + vulnerability_found = False + for e in events: + if e.type == "VULNERABILITY" and "IIS Bin Directory DLL Exposure" in e.data["description"]: + vulnerability_found = True + assert e.data["severity"] == "HIGH", "Vulnerability severity should be HIGH" + assert "Detection Url" in e.data["description"], "Description should include detection URL" + break + + assert vulnerability_found, "No vulnerability event was found" From 77d799c36d172f5646d7febe907e8649da5ac102 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Fri, 13 Jun 2025 12:32:42 -0400 Subject: [PATCH 28/77] add zip extention finding --- bbot/modules/iis_shortnames.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bbot/modules/iis_shortnames.py b/bbot/modules/iis_shortnames.py index 48860445f5..2adf07cf85 100644 --- a/bbot/modules/iis_shortnames.py +++ b/bbot/modules/iis_shortnames.py @@ -334,6 +334,18 @@ class safety_counter_obj: for url_hint in url_hint_list: if "." in url_hint: hint_type = "shortname-endpoint" + # Check if it's a ZIP file + if url_hint.lower().endswith(".zip"): + await self.emit_event( + { + "host": str(event.host), + "url": event.data, + "description": f"Possible backup file (zip) in web root: {normalized_url}{url_hint}", + }, + "FINDING", + event, + context=f"{{module}} discovered possible backup file in web root: {url_hint}", + ) else: hint_type = "shortname-directory" From 4fe7a7444b806e0a6ca000e4d7330be8d2863b3d Mon Sep 17 00:00:00 2001 From: liquidsec Date: Fri, 13 Jun 2025 12:33:26 -0400 Subject: [PATCH 29/77] correct naming of test --- ..._aspnet_bin_exposure.py => test_module_aspnet_bin_exposure.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename bbot/test/test_step_2/module_tests/{test_aspnet_bin_exposure.py => test_module_aspnet_bin_exposure.py} (100%) diff --git a/bbot/test/test_step_2/module_tests/test_aspnet_bin_exposure.py b/bbot/test/test_step_2/module_tests/test_module_aspnet_bin_exposure.py similarity index 100% rename from bbot/test/test_step_2/module_tests/test_aspnet_bin_exposure.py rename to bbot/test/test_step_2/module_tests/test_module_aspnet_bin_exposure.py From 2ddcc8bde40941fabd3506cc1785fcccf222c420 Mon Sep 17 00:00:00 2001 From: Giardi Date: Fri, 13 Jun 2025 18:51:17 +0200 Subject: [PATCH 30/77] removing scope_distance_modifier from hunt module --- bbot/modules/hunt.py | 17 ++--- pytest_debug.log | 145 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 155 insertions(+), 7 deletions(-) create mode 100644 pytest_debug.log diff --git a/bbot/modules/hunt.py b/bbot/modules/hunt.py index 814b22eab0..4c337e365d 100644 --- a/bbot/modules/hunt.py +++ b/bbot/modules/hunt.py @@ -50,7 +50,16 @@ "cfg", "config", ], - "Directory Traversal": ["entry", "download", "attachment", "basepath", "path", "file", "source", "dest"], + "Directory Traversal": [ + "entry", + "download", + "attachment", + "basepath", + "path", + "file", + "source", + "dest", + ], "Local File Include": [ "file", "document", @@ -279,12 +288,6 @@ class hunt(BaseModule): "author": "@liquidsec", "created_date": "2022-07-20", } - # accept all events regardless of scope distance by default - options = {"scope_distance_modifier": None} - - async def setup(self): - self.scope_distance_modifier = self.config.get("scope_distance", None) - return True async def handle_event(self, event): p = event.data["name"] diff --git a/pytest_debug.log b/pytest_debug.log new file mode 100644 index 0000000000..da2b43735d --- /dev/null +++ b/pytest_debug.log @@ -0,0 +1,145 @@ +2025-05-17 21:27:57,718 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/report +2025-05-17 21:27:57,752 [DEBUG] bbot.module_loader modules.py:154 Preloading affiliates from disk +2025-05-17 21:27:57,753 [DEBUG] bbot.module_loader modules.py:154 Preloading asn from disk +2025-05-17 21:27:57,756 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/output +2025-05-17 21:27:57,756 [DEBUG] bbot.module_loader modules.py:154 Preloading asset_inventory from disk +2025-05-17 21:27:57,760 [DEBUG] bbot.module_loader modules.py:154 Preloading csv from disk +2025-05-17 21:27:57,761 [DEBUG] bbot.module_loader modules.py:154 Preloading discord from disk +2025-05-17 21:27:57,763 [DEBUG] bbot.module_loader modules.py:154 Preloading emails from disk +2025-05-17 21:27:57,764 [DEBUG] bbot.module_loader modules.py:154 Preloading http from disk +2025-05-17 21:27:57,766 [DEBUG] bbot.module_loader modules.py:154 Preloading json from disk +2025-05-17 21:27:57,767 [DEBUG] bbot.module_loader modules.py:154 Preloading mysql from disk +2025-05-17 21:27:57,769 [DEBUG] bbot.module_loader modules.py:154 Preloading neo4j from disk +2025-05-17 21:27:57,770 [DEBUG] bbot.module_loader modules.py:154 Preloading nmap_xml from disk +2025-05-17 21:27:57,775 [DEBUG] bbot.module_loader modules.py:154 Preloading postgres from disk +2025-05-17 21:27:57,776 [DEBUG] bbot.module_loader modules.py:154 Preloading python from disk +2025-05-17 21:27:57,777 [DEBUG] bbot.module_loader modules.py:154 Preloading slack from disk +2025-05-17 21:27:57,779 [DEBUG] bbot.module_loader modules.py:154 Preloading splunk from disk +2025-05-17 21:27:57,780 [DEBUG] bbot.module_loader modules.py:154 Preloading sqlite from disk +2025-05-17 21:27:57,781 [DEBUG] bbot.module_loader modules.py:154 Preloading stdout from disk +2025-05-17 21:27:57,783 [DEBUG] bbot.module_loader modules.py:154 Preloading subdomains from disk +2025-05-17 21:27:57,784 [DEBUG] bbot.module_loader modules.py:154 Preloading teams from disk +2025-05-17 21:27:57,786 [DEBUG] bbot.module_loader modules.py:154 Preloading txt from disk +2025-05-17 21:27:57,787 [DEBUG] bbot.module_loader modules.py:154 Preloading web_parameters from disk +2025-05-17 21:27:57,788 [DEBUG] bbot.module_loader modules.py:154 Preloading web_report from disk +2025-05-17 21:27:57,790 [DEBUG] bbot.module_loader modules.py:154 Preloading websocket from disk +2025-05-17 21:27:57,791 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules +2025-05-17 21:27:57,792 [DEBUG] bbot.module_loader modules.py:154 Preloading ajaxpro from disk +2025-05-17 21:27:57,793 [DEBUG] bbot.module_loader modules.py:154 Preloading anubisdb from disk +2025-05-17 21:27:57,794 [DEBUG] bbot.module_loader modules.py:154 Preloading apkpure from disk +2025-05-17 21:27:57,795 [DEBUG] bbot.module_loader modules.py:154 Preloading azure_realm from disk +2025-05-17 21:27:57,796 [DEBUG] bbot.module_loader modules.py:154 Preloading azure_tenant from disk +2025-05-17 21:27:57,798 [DEBUG] bbot.module_loader modules.py:154 Preloading baddns from disk +2025-05-17 21:27:57,800 [DEBUG] bbot.module_loader modules.py:154 Preloading baddns_direct from disk +2025-05-17 21:27:57,801 [DEBUG] bbot.module_loader modules.py:154 Preloading baddns_zone from disk +2025-05-17 21:27:57,802 [DEBUG] bbot.module_loader modules.py:154 Preloading badsecrets from disk +2025-05-17 21:27:57,803 [DEBUG] bbot.module_loader modules.py:154 Preloading bevigil from disk +2025-05-17 21:27:57,805 [DEBUG] bbot.module_loader modules.py:154 Preloading binaryedge from disk +2025-05-17 21:27:57,806 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_amazon from disk +2025-05-17 21:27:57,807 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_azure from disk +2025-05-17 21:27:57,808 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_digitalocean from disk +2025-05-17 21:27:57,809 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_file_enum from disk +2025-05-17 21:27:57,810 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_firebase from disk +2025-05-17 21:27:57,811 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_google from disk +2025-05-17 21:27:57,813 [DEBUG] bbot.module_loader modules.py:154 Preloading bufferoverrun from disk +2025-05-17 21:27:57,814 [DEBUG] bbot.module_loader modules.py:154 Preloading builtwith from disk +2025-05-17 21:27:57,815 [DEBUG] bbot.module_loader modules.py:154 Preloading bypass403 from disk +2025-05-17 21:27:57,817 [DEBUG] bbot.module_loader modules.py:154 Preloading c99 from disk +2025-05-17 21:27:57,818 [DEBUG] bbot.module_loader modules.py:154 Preloading censys from disk +2025-05-17 21:27:57,819 [DEBUG] bbot.module_loader modules.py:154 Preloading certspotter from disk +2025-05-17 21:27:57,820 [DEBUG] bbot.module_loader modules.py:154 Preloading chaos from disk +2025-05-17 21:27:57,821 [DEBUG] bbot.module_loader modules.py:154 Preloading code_repository from disk +2025-05-17 21:27:57,822 [DEBUG] bbot.module_loader modules.py:154 Preloading credshed from disk +2025-05-17 21:27:57,824 [DEBUG] bbot.module_loader modules.py:154 Preloading crt from disk +2025-05-17 21:27:57,826 [DEBUG] bbot.module_loader modules.py:154 Preloading crt_db from disk +2025-05-17 21:27:57,828 [DEBUG] bbot.module_loader modules.py:154 Preloading dehashed from disk +2025-05-17 21:27:57,830 [DEBUG] bbot.module_loader modules.py:154 Preloading digitorus from disk +2025-05-17 21:27:57,831 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsbimi from disk +2025-05-17 21:27:57,833 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsbrute from disk +2025-05-17 21:27:57,834 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsbrute_mutations from disk +2025-05-17 21:27:57,836 [DEBUG] bbot.module_loader modules.py:154 Preloading dnscaa from disk +2025-05-17 21:27:57,838 [DEBUG] bbot.module_loader modules.py:154 Preloading dnscommonsrv from disk +2025-05-17 21:27:57,839 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsdumpster from disk +2025-05-17 21:27:57,840 [DEBUG] bbot.module_loader modules.py:154 Preloading dnstlsrpt from disk +2025-05-17 21:27:57,842 [DEBUG] bbot.module_loader modules.py:154 Preloading docker_pull from disk +2025-05-17 21:27:57,844 [DEBUG] bbot.module_loader modules.py:154 Preloading dockerhub from disk +2025-05-17 21:27:57,845 [DEBUG] bbot.module_loader modules.py:154 Preloading dotnetnuke from disk +2025-05-17 21:27:57,847 [DEBUG] bbot.module_loader modules.py:154 Preloading emailformat from disk +2025-05-17 21:27:57,848 [DEBUG] bbot.module_loader modules.py:154 Preloading extractous from disk +2025-05-17 21:27:57,854 [DEBUG] bbot.module_loader modules.py:154 Preloading ffuf_shortnames from disk +2025-05-17 21:27:57,858 [DEBUG] bbot.module_loader modules.py:154 Preloading filedownload from disk +2025-05-17 21:27:57,867 [DEBUG] bbot.module_loader modules.py:154 Preloading fingerprintx from disk +2025-05-17 21:27:57,868 [DEBUG] bbot.module_loader modules.py:154 Preloading fullhunt from disk +2025-05-17 21:27:57,869 [DEBUG] bbot.module_loader modules.py:154 Preloading generic_ssrf from disk +2025-05-17 21:27:57,872 [DEBUG] bbot.module_loader modules.py:154 Preloading git from disk +2025-05-17 21:27:57,872 [DEBUG] bbot.module_loader modules.py:154 Preloading git_clone from disk +2025-05-17 21:27:57,874 [DEBUG] bbot.module_loader modules.py:154 Preloading gitdumper from disk +2025-05-17 21:27:57,876 [DEBUG] bbot.module_loader modules.py:154 Preloading github_codesearch from disk +2025-05-17 21:27:57,878 [DEBUG] bbot.module_loader modules.py:154 Preloading github_org from disk +2025-05-17 21:27:57,880 [DEBUG] bbot.module_loader modules.py:154 Preloading github_workflows from disk +2025-05-17 21:27:57,883 [DEBUG] bbot.module_loader modules.py:154 Preloading gitlab from disk +2025-05-17 21:27:57,884 [DEBUG] bbot.module_loader modules.py:154 Preloading google_playstore from disk +2025-05-17 21:27:57,885 [DEBUG] bbot.module_loader modules.py:154 Preloading gowitness from disk +2025-05-17 21:27:57,888 [DEBUG] bbot.module_loader modules.py:154 Preloading hackertarget from disk +2025-05-17 21:27:57,889 [DEBUG] bbot.module_loader modules.py:154 Preloading host_header from disk +2025-05-17 21:27:57,891 [DEBUG] bbot.module_loader modules.py:154 Preloading httpx from disk +2025-05-17 21:27:57,893 [DEBUG] bbot.module_loader modules.py:154 Preloading hunterio from disk +2025-05-17 21:27:57,894 [DEBUG] bbot.module_loader modules.py:154 Preloading iis_shortnames from disk +2025-05-17 21:27:57,897 [DEBUG] bbot.module_loader modules.py:154 Preloading ip2location from disk +2025-05-17 21:27:57,898 [DEBUG] bbot.module_loader modules.py:154 Preloading ipneighbor from disk +2025-05-17 21:27:57,899 [DEBUG] bbot.module_loader modules.py:154 Preloading ipstack from disk +2025-05-17 21:27:57,901 [DEBUG] bbot.module_loader modules.py:154 Preloading jadx from disk +2025-05-17 21:27:57,902 [DEBUG] bbot.module_loader modules.py:154 Preloading leakix from disk +2025-05-17 21:27:57,903 [DEBUG] bbot.module_loader modules.py:154 Preloading myssl from disk +2025-05-17 21:27:57,904 [DEBUG] bbot.module_loader modules.py:154 Preloading newsletters from disk +2025-05-17 21:27:57,905 [DEBUG] bbot.module_loader modules.py:154 Preloading ntlm from disk +2025-05-17 21:27:57,906 [DEBUG] bbot.module_loader modules.py:154 Preloading oauth from disk +2025-05-17 21:27:57,908 [DEBUG] bbot.module_loader modules.py:154 Preloading otx from disk +2025-05-17 21:27:57,908 [DEBUG] bbot.module_loader modules.py:154 Preloading paramminer_cookies from disk +2025-05-17 21:27:57,909 [DEBUG] bbot.module_loader modules.py:154 Preloading paramminer_getparams from disk +2025-05-17 21:27:57,911 [DEBUG] bbot.module_loader modules.py:154 Preloading paramminer_headers from disk +2025-05-17 21:27:57,914 [DEBUG] bbot.module_loader modules.py:154 Preloading passivetotal from disk +2025-05-17 21:27:57,915 [DEBUG] bbot.module_loader modules.py:154 Preloading pgp from disk +2025-05-17 21:27:57,916 [DEBUG] bbot.module_loader modules.py:154 Preloading portfilter from disk +2025-05-17 21:27:57,917 [DEBUG] bbot.module_loader modules.py:154 Preloading portscan from disk +2025-05-17 21:27:57,921 [DEBUG] bbot.module_loader modules.py:154 Preloading postman from disk +2025-05-17 21:27:57,922 [DEBUG] bbot.module_loader modules.py:154 Preloading postman_download from disk +2025-05-17 21:27:57,923 [DEBUG] bbot.module_loader modules.py:154 Preloading rapiddns from disk +2025-05-17 21:27:57,924 [DEBUG] bbot.module_loader modules.py:154 Preloading robots from disk +2025-05-17 21:27:57,925 [DEBUG] bbot.module_loader modules.py:154 Preloading securitytrails from disk +2025-05-17 21:27:57,926 [DEBUG] bbot.module_loader modules.py:154 Preloading securitytxt from disk +2025-05-17 21:27:57,927 [DEBUG] bbot.module_loader modules.py:154 Preloading shodan_dns from disk +2025-05-17 21:27:57,928 [DEBUG] bbot.module_loader modules.py:154 Preloading shodan_idb from disk +2025-05-17 21:27:57,930 [DEBUG] bbot.module_loader modules.py:154 Preloading sitedossier from disk +2025-05-17 21:27:57,931 [DEBUG] bbot.module_loader modules.py:154 Preloading skymem from disk +2025-05-17 21:27:57,932 [DEBUG] bbot.module_loader modules.py:154 Preloading smuggler from disk +2025-05-17 21:27:57,933 [DEBUG] bbot.module_loader modules.py:154 Preloading social from disk +2025-05-17 21:27:57,933 [DEBUG] bbot.module_loader modules.py:154 Preloading sslcert from disk +2025-05-17 21:27:57,936 [DEBUG] bbot.module_loader modules.py:154 Preloading subdomaincenter from disk +2025-05-17 21:27:57,937 [DEBUG] bbot.module_loader modules.py:154 Preloading subdomainradar from disk +2025-05-17 21:27:57,938 [DEBUG] bbot.module_loader modules.py:154 Preloading telerik from disk +2025-05-17 21:27:57,941 [DEBUG] bbot.module_loader modules.py:154 Preloading trickest from disk +2025-05-17 21:27:57,942 [DEBUG] bbot.module_loader modules.py:154 Preloading trufflehog from disk +2025-05-17 21:27:57,944 [DEBUG] bbot.module_loader modules.py:154 Preloading url_manipulation from disk +2025-05-17 21:27:57,945 [DEBUG] bbot.module_loader modules.py:154 Preloading urlscan from disk +2025-05-17 21:27:57,946 [DEBUG] bbot.module_loader modules.py:154 Preloading viewdns from disk +2025-05-17 21:27:57,947 [DEBUG] bbot.module_loader modules.py:154 Preloading virustotal from disk +2025-05-17 21:27:57,948 [DEBUG] bbot.module_loader modules.py:154 Preloading wafw00f from disk +2025-05-17 21:27:57,949 [DEBUG] bbot.module_loader modules.py:154 Preloading wappalyzer from disk +2025-05-17 21:27:57,950 [DEBUG] bbot.module_loader modules.py:154 Preloading wayback from disk +2025-05-17 21:27:57,952 [DEBUG] bbot.module_loader modules.py:154 Preloading wpscan from disk +2025-05-17 21:27:57,955 [DEBUG] bbot.module_loader modules.py:154 Preloading zoomeye from disk +2025-05-17 21:27:57,956 [DEBUG] bbot.module_loader modules.py:154 Preloading hunt from disk +2025-05-17 21:27:57,957 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/templates +2025-05-17 21:27:57,958 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/deadly +2025-05-17 21:27:57,959 [DEBUG] bbot.module_loader modules.py:154 Preloading dastardly from disk +2025-05-17 21:27:57,960 [DEBUG] bbot.module_loader modules.py:154 Preloading ffuf from disk +2025-05-17 21:27:57,963 [DEBUG] bbot.module_loader modules.py:154 Preloading nuclei from disk +2025-05-17 21:27:57,968 [DEBUG] bbot.module_loader modules.py:154 Preloading vhost from disk +2025-05-17 21:27:57,969 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/internal +2025-05-17 21:27:57,970 [DEBUG] bbot.module_loader modules.py:154 Preloading aggregate from disk +2025-05-17 21:27:57,971 [DEBUG] bbot.module_loader modules.py:154 Preloading cloudcheck from disk +2025-05-17 21:27:57,972 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsresolve from disk +2025-05-17 21:27:57,974 [DEBUG] bbot.module_loader modules.py:154 Preloading excavate from disk +2025-05-17 21:27:57,981 [DEBUG] bbot.module_loader modules.py:154 Preloading speculate from disk +2025-05-17 21:27:57,983 [DEBUG] bbot.module_loader modules.py:154 Preloading unarchive from disk From ea4b533326c86e163140357d071e8fb2109b2549 Mon Sep 17 00:00:00 2001 From: Daniele <76905751+Giardi77@users.noreply.github.com> Date: Fri, 13 Jun 2025 18:54:12 +0200 Subject: [PATCH 31/77] Delete pytest_debug.log --- pytest_debug.log | 145 ----------------------------------------------- 1 file changed, 145 deletions(-) delete mode 100644 pytest_debug.log diff --git a/pytest_debug.log b/pytest_debug.log deleted file mode 100644 index da2b43735d..0000000000 --- a/pytest_debug.log +++ /dev/null @@ -1,145 +0,0 @@ -2025-05-17 21:27:57,718 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/report -2025-05-17 21:27:57,752 [DEBUG] bbot.module_loader modules.py:154 Preloading affiliates from disk -2025-05-17 21:27:57,753 [DEBUG] bbot.module_loader modules.py:154 Preloading asn from disk -2025-05-17 21:27:57,756 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/output -2025-05-17 21:27:57,756 [DEBUG] bbot.module_loader modules.py:154 Preloading asset_inventory from disk -2025-05-17 21:27:57,760 [DEBUG] bbot.module_loader modules.py:154 Preloading csv from disk -2025-05-17 21:27:57,761 [DEBUG] bbot.module_loader modules.py:154 Preloading discord from disk -2025-05-17 21:27:57,763 [DEBUG] bbot.module_loader modules.py:154 Preloading emails from disk -2025-05-17 21:27:57,764 [DEBUG] bbot.module_loader modules.py:154 Preloading http from disk -2025-05-17 21:27:57,766 [DEBUG] bbot.module_loader modules.py:154 Preloading json from disk -2025-05-17 21:27:57,767 [DEBUG] bbot.module_loader modules.py:154 Preloading mysql from disk -2025-05-17 21:27:57,769 [DEBUG] bbot.module_loader modules.py:154 Preloading neo4j from disk -2025-05-17 21:27:57,770 [DEBUG] bbot.module_loader modules.py:154 Preloading nmap_xml from disk -2025-05-17 21:27:57,775 [DEBUG] bbot.module_loader modules.py:154 Preloading postgres from disk -2025-05-17 21:27:57,776 [DEBUG] bbot.module_loader modules.py:154 Preloading python from disk -2025-05-17 21:27:57,777 [DEBUG] bbot.module_loader modules.py:154 Preloading slack from disk -2025-05-17 21:27:57,779 [DEBUG] bbot.module_loader modules.py:154 Preloading splunk from disk -2025-05-17 21:27:57,780 [DEBUG] bbot.module_loader modules.py:154 Preloading sqlite from disk -2025-05-17 21:27:57,781 [DEBUG] bbot.module_loader modules.py:154 Preloading stdout from disk -2025-05-17 21:27:57,783 [DEBUG] bbot.module_loader modules.py:154 Preloading subdomains from disk -2025-05-17 21:27:57,784 [DEBUG] bbot.module_loader modules.py:154 Preloading teams from disk -2025-05-17 21:27:57,786 [DEBUG] bbot.module_loader modules.py:154 Preloading txt from disk -2025-05-17 21:27:57,787 [DEBUG] bbot.module_loader modules.py:154 Preloading web_parameters from disk -2025-05-17 21:27:57,788 [DEBUG] bbot.module_loader modules.py:154 Preloading web_report from disk -2025-05-17 21:27:57,790 [DEBUG] bbot.module_loader modules.py:154 Preloading websocket from disk -2025-05-17 21:27:57,791 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules -2025-05-17 21:27:57,792 [DEBUG] bbot.module_loader modules.py:154 Preloading ajaxpro from disk -2025-05-17 21:27:57,793 [DEBUG] bbot.module_loader modules.py:154 Preloading anubisdb from disk -2025-05-17 21:27:57,794 [DEBUG] bbot.module_loader modules.py:154 Preloading apkpure from disk -2025-05-17 21:27:57,795 [DEBUG] bbot.module_loader modules.py:154 Preloading azure_realm from disk -2025-05-17 21:27:57,796 [DEBUG] bbot.module_loader modules.py:154 Preloading azure_tenant from disk -2025-05-17 21:27:57,798 [DEBUG] bbot.module_loader modules.py:154 Preloading baddns from disk -2025-05-17 21:27:57,800 [DEBUG] bbot.module_loader modules.py:154 Preloading baddns_direct from disk -2025-05-17 21:27:57,801 [DEBUG] bbot.module_loader modules.py:154 Preloading baddns_zone from disk -2025-05-17 21:27:57,802 [DEBUG] bbot.module_loader modules.py:154 Preloading badsecrets from disk -2025-05-17 21:27:57,803 [DEBUG] bbot.module_loader modules.py:154 Preloading bevigil from disk -2025-05-17 21:27:57,805 [DEBUG] bbot.module_loader modules.py:154 Preloading binaryedge from disk -2025-05-17 21:27:57,806 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_amazon from disk -2025-05-17 21:27:57,807 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_azure from disk -2025-05-17 21:27:57,808 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_digitalocean from disk -2025-05-17 21:27:57,809 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_file_enum from disk -2025-05-17 21:27:57,810 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_firebase from disk -2025-05-17 21:27:57,811 [DEBUG] bbot.module_loader modules.py:154 Preloading bucket_google from disk -2025-05-17 21:27:57,813 [DEBUG] bbot.module_loader modules.py:154 Preloading bufferoverrun from disk -2025-05-17 21:27:57,814 [DEBUG] bbot.module_loader modules.py:154 Preloading builtwith from disk -2025-05-17 21:27:57,815 [DEBUG] bbot.module_loader modules.py:154 Preloading bypass403 from disk -2025-05-17 21:27:57,817 [DEBUG] bbot.module_loader modules.py:154 Preloading c99 from disk -2025-05-17 21:27:57,818 [DEBUG] bbot.module_loader modules.py:154 Preloading censys from disk -2025-05-17 21:27:57,819 [DEBUG] bbot.module_loader modules.py:154 Preloading certspotter from disk -2025-05-17 21:27:57,820 [DEBUG] bbot.module_loader modules.py:154 Preloading chaos from disk -2025-05-17 21:27:57,821 [DEBUG] bbot.module_loader modules.py:154 Preloading code_repository from disk -2025-05-17 21:27:57,822 [DEBUG] bbot.module_loader modules.py:154 Preloading credshed from disk -2025-05-17 21:27:57,824 [DEBUG] bbot.module_loader modules.py:154 Preloading crt from disk -2025-05-17 21:27:57,826 [DEBUG] bbot.module_loader modules.py:154 Preloading crt_db from disk -2025-05-17 21:27:57,828 [DEBUG] bbot.module_loader modules.py:154 Preloading dehashed from disk -2025-05-17 21:27:57,830 [DEBUG] bbot.module_loader modules.py:154 Preloading digitorus from disk -2025-05-17 21:27:57,831 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsbimi from disk -2025-05-17 21:27:57,833 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsbrute from disk -2025-05-17 21:27:57,834 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsbrute_mutations from disk -2025-05-17 21:27:57,836 [DEBUG] bbot.module_loader modules.py:154 Preloading dnscaa from disk -2025-05-17 21:27:57,838 [DEBUG] bbot.module_loader modules.py:154 Preloading dnscommonsrv from disk -2025-05-17 21:27:57,839 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsdumpster from disk -2025-05-17 21:27:57,840 [DEBUG] bbot.module_loader modules.py:154 Preloading dnstlsrpt from disk -2025-05-17 21:27:57,842 [DEBUG] bbot.module_loader modules.py:154 Preloading docker_pull from disk -2025-05-17 21:27:57,844 [DEBUG] bbot.module_loader modules.py:154 Preloading dockerhub from disk -2025-05-17 21:27:57,845 [DEBUG] bbot.module_loader modules.py:154 Preloading dotnetnuke from disk -2025-05-17 21:27:57,847 [DEBUG] bbot.module_loader modules.py:154 Preloading emailformat from disk -2025-05-17 21:27:57,848 [DEBUG] bbot.module_loader modules.py:154 Preloading extractous from disk -2025-05-17 21:27:57,854 [DEBUG] bbot.module_loader modules.py:154 Preloading ffuf_shortnames from disk -2025-05-17 21:27:57,858 [DEBUG] bbot.module_loader modules.py:154 Preloading filedownload from disk -2025-05-17 21:27:57,867 [DEBUG] bbot.module_loader modules.py:154 Preloading fingerprintx from disk -2025-05-17 21:27:57,868 [DEBUG] bbot.module_loader modules.py:154 Preloading fullhunt from disk -2025-05-17 21:27:57,869 [DEBUG] bbot.module_loader modules.py:154 Preloading generic_ssrf from disk -2025-05-17 21:27:57,872 [DEBUG] bbot.module_loader modules.py:154 Preloading git from disk -2025-05-17 21:27:57,872 [DEBUG] bbot.module_loader modules.py:154 Preloading git_clone from disk -2025-05-17 21:27:57,874 [DEBUG] bbot.module_loader modules.py:154 Preloading gitdumper from disk -2025-05-17 21:27:57,876 [DEBUG] bbot.module_loader modules.py:154 Preloading github_codesearch from disk -2025-05-17 21:27:57,878 [DEBUG] bbot.module_loader modules.py:154 Preloading github_org from disk -2025-05-17 21:27:57,880 [DEBUG] bbot.module_loader modules.py:154 Preloading github_workflows from disk -2025-05-17 21:27:57,883 [DEBUG] bbot.module_loader modules.py:154 Preloading gitlab from disk -2025-05-17 21:27:57,884 [DEBUG] bbot.module_loader modules.py:154 Preloading google_playstore from disk -2025-05-17 21:27:57,885 [DEBUG] bbot.module_loader modules.py:154 Preloading gowitness from disk -2025-05-17 21:27:57,888 [DEBUG] bbot.module_loader modules.py:154 Preloading hackertarget from disk -2025-05-17 21:27:57,889 [DEBUG] bbot.module_loader modules.py:154 Preloading host_header from disk -2025-05-17 21:27:57,891 [DEBUG] bbot.module_loader modules.py:154 Preloading httpx from disk -2025-05-17 21:27:57,893 [DEBUG] bbot.module_loader modules.py:154 Preloading hunterio from disk -2025-05-17 21:27:57,894 [DEBUG] bbot.module_loader modules.py:154 Preloading iis_shortnames from disk -2025-05-17 21:27:57,897 [DEBUG] bbot.module_loader modules.py:154 Preloading ip2location from disk -2025-05-17 21:27:57,898 [DEBUG] bbot.module_loader modules.py:154 Preloading ipneighbor from disk -2025-05-17 21:27:57,899 [DEBUG] bbot.module_loader modules.py:154 Preloading ipstack from disk -2025-05-17 21:27:57,901 [DEBUG] bbot.module_loader modules.py:154 Preloading jadx from disk -2025-05-17 21:27:57,902 [DEBUG] bbot.module_loader modules.py:154 Preloading leakix from disk -2025-05-17 21:27:57,903 [DEBUG] bbot.module_loader modules.py:154 Preloading myssl from disk -2025-05-17 21:27:57,904 [DEBUG] bbot.module_loader modules.py:154 Preloading newsletters from disk -2025-05-17 21:27:57,905 [DEBUG] bbot.module_loader modules.py:154 Preloading ntlm from disk -2025-05-17 21:27:57,906 [DEBUG] bbot.module_loader modules.py:154 Preloading oauth from disk -2025-05-17 21:27:57,908 [DEBUG] bbot.module_loader modules.py:154 Preloading otx from disk -2025-05-17 21:27:57,908 [DEBUG] bbot.module_loader modules.py:154 Preloading paramminer_cookies from disk -2025-05-17 21:27:57,909 [DEBUG] bbot.module_loader modules.py:154 Preloading paramminer_getparams from disk -2025-05-17 21:27:57,911 [DEBUG] bbot.module_loader modules.py:154 Preloading paramminer_headers from disk -2025-05-17 21:27:57,914 [DEBUG] bbot.module_loader modules.py:154 Preloading passivetotal from disk -2025-05-17 21:27:57,915 [DEBUG] bbot.module_loader modules.py:154 Preloading pgp from disk -2025-05-17 21:27:57,916 [DEBUG] bbot.module_loader modules.py:154 Preloading portfilter from disk -2025-05-17 21:27:57,917 [DEBUG] bbot.module_loader modules.py:154 Preloading portscan from disk -2025-05-17 21:27:57,921 [DEBUG] bbot.module_loader modules.py:154 Preloading postman from disk -2025-05-17 21:27:57,922 [DEBUG] bbot.module_loader modules.py:154 Preloading postman_download from disk -2025-05-17 21:27:57,923 [DEBUG] bbot.module_loader modules.py:154 Preloading rapiddns from disk -2025-05-17 21:27:57,924 [DEBUG] bbot.module_loader modules.py:154 Preloading robots from disk -2025-05-17 21:27:57,925 [DEBUG] bbot.module_loader modules.py:154 Preloading securitytrails from disk -2025-05-17 21:27:57,926 [DEBUG] bbot.module_loader modules.py:154 Preloading securitytxt from disk -2025-05-17 21:27:57,927 [DEBUG] bbot.module_loader modules.py:154 Preloading shodan_dns from disk -2025-05-17 21:27:57,928 [DEBUG] bbot.module_loader modules.py:154 Preloading shodan_idb from disk -2025-05-17 21:27:57,930 [DEBUG] bbot.module_loader modules.py:154 Preloading sitedossier from disk -2025-05-17 21:27:57,931 [DEBUG] bbot.module_loader modules.py:154 Preloading skymem from disk -2025-05-17 21:27:57,932 [DEBUG] bbot.module_loader modules.py:154 Preloading smuggler from disk -2025-05-17 21:27:57,933 [DEBUG] bbot.module_loader modules.py:154 Preloading social from disk -2025-05-17 21:27:57,933 [DEBUG] bbot.module_loader modules.py:154 Preloading sslcert from disk -2025-05-17 21:27:57,936 [DEBUG] bbot.module_loader modules.py:154 Preloading subdomaincenter from disk -2025-05-17 21:27:57,937 [DEBUG] bbot.module_loader modules.py:154 Preloading subdomainradar from disk -2025-05-17 21:27:57,938 [DEBUG] bbot.module_loader modules.py:154 Preloading telerik from disk -2025-05-17 21:27:57,941 [DEBUG] bbot.module_loader modules.py:154 Preloading trickest from disk -2025-05-17 21:27:57,942 [DEBUG] bbot.module_loader modules.py:154 Preloading trufflehog from disk -2025-05-17 21:27:57,944 [DEBUG] bbot.module_loader modules.py:154 Preloading url_manipulation from disk -2025-05-17 21:27:57,945 [DEBUG] bbot.module_loader modules.py:154 Preloading urlscan from disk -2025-05-17 21:27:57,946 [DEBUG] bbot.module_loader modules.py:154 Preloading viewdns from disk -2025-05-17 21:27:57,947 [DEBUG] bbot.module_loader modules.py:154 Preloading virustotal from disk -2025-05-17 21:27:57,948 [DEBUG] bbot.module_loader modules.py:154 Preloading wafw00f from disk -2025-05-17 21:27:57,949 [DEBUG] bbot.module_loader modules.py:154 Preloading wappalyzer from disk -2025-05-17 21:27:57,950 [DEBUG] bbot.module_loader modules.py:154 Preloading wayback from disk -2025-05-17 21:27:57,952 [DEBUG] bbot.module_loader modules.py:154 Preloading wpscan from disk -2025-05-17 21:27:57,955 [DEBUG] bbot.module_loader modules.py:154 Preloading zoomeye from disk -2025-05-17 21:27:57,956 [DEBUG] bbot.module_loader modules.py:154 Preloading hunt from disk -2025-05-17 21:27:57,957 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/templates -2025-05-17 21:27:57,958 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/deadly -2025-05-17 21:27:57,959 [DEBUG] bbot.module_loader modules.py:154 Preloading dastardly from disk -2025-05-17 21:27:57,960 [DEBUG] bbot.module_loader modules.py:154 Preloading ffuf from disk -2025-05-17 21:27:57,963 [DEBUG] bbot.module_loader modules.py:154 Preloading nuclei from disk -2025-05-17 21:27:57,968 [DEBUG] bbot.module_loader modules.py:154 Preloading vhost from disk -2025-05-17 21:27:57,969 [DEBUG] bbot.module_loader modules.py:141 Preloading modules from /home/giardi/tools/bbot/bbot/modules/internal -2025-05-17 21:27:57,970 [DEBUG] bbot.module_loader modules.py:154 Preloading aggregate from disk -2025-05-17 21:27:57,971 [DEBUG] bbot.module_loader modules.py:154 Preloading cloudcheck from disk -2025-05-17 21:27:57,972 [DEBUG] bbot.module_loader modules.py:154 Preloading dnsresolve from disk -2025-05-17 21:27:57,974 [DEBUG] bbot.module_loader modules.py:154 Preloading excavate from disk -2025-05-17 21:27:57,981 [DEBUG] bbot.module_loader modules.py:154 Preloading speculate from disk -2025-05-17 21:27:57,983 [DEBUG] bbot.module_loader modules.py:154 Preloading unarchive from disk From 1ec28e373aad778e516dee10cfaceb7b4b11f367 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Fri, 13 Jun 2025 16:48:30 -0400 Subject: [PATCH 32/77] testing for extension --- bbot/modules/iis_shortnames.py | 4 ++ .../test_module_iis_shortnames.py | 47 ++++++++++++++++++- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/bbot/modules/iis_shortnames.py b/bbot/modules/iis_shortnames.py index 2adf07cf85..29325417c5 100644 --- a/bbot/modules/iis_shortnames.py +++ b/bbot/modules/iis_shortnames.py @@ -166,6 +166,10 @@ async def solve_shortname_recursive( cl = ext_char_list if extension_mode is True else char_list + self.debug( + f"Solving shortname recursive for {target} with prefix {prefix} and extension mode {extension_mode}" + ) + urls_and_kwargs = [] for c in cl: diff --git a/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py b/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py index 36369cdca4..6ca827f56a 100644 --- a/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +++ b/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py @@ -43,19 +43,64 @@ async def setup_after_prep(self, module_test): respond_args = {"response_data": "", "status": 400} module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) - for char in "BLSHAX": + expect_args = {"method": "GET", "uri": re.compile(r"\/BA\*~1\*.*$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": re.compile(r"\/BAC\*~1\*.*$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": re.compile(r"\/BACK\*~1\*.*$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": re.compile(r"\/BACKU\*~1\*.*$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": re.compile(r"\/BACKUP\*~1\*/a.aspx$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": re.compile(r"\/BACKUP~1\*$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": re.compile(r"\/BACKUP~1\.Z\*/a.aspx$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": re.compile(r"\/BACKUP~1\.ZI\*/a.aspx$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": re.compile(r"\/BACKUP~1\.ZIP\*/a.aspx$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + for char in "BLSHAXCKUP": expect_args = {"method": "GET", "uri": re.compile(rf"\/\*{char}\*~1\*.*$")} respond_args = {"response_data": "", "status": 400} module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + for char in "ZIP": + expect_args = {"method": "GET", "uri": re.compile(rf"\/\*~1\*{char}\*.*$")} + respond_args = {"response_data": "", "status": 400} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + def check(self, module_test, events): vulnerabilityEmitted = False url_hintEmitted = False + zip_findingEmitted = False for e in events: if e.type == "VULNERABILITY" and "iis-magic-url" not in e.tags: vulnerabilityEmitted = True if e.type == "URL_HINT" and e.data == "http://127.0.0.1:8888/BLSHAX~1": url_hintEmitted = True + if e.type == "FINDING" and "Possible backup file (zip) in web root" in e.data["description"]: + zip_findingEmitted = True assert vulnerabilityEmitted assert url_hintEmitted + assert zip_findingEmitted From 41586dce39f08012b2f33e99d8e12d280b76ea7a Mon Sep 17 00:00:00 2001 From: liquidsec Date: Mon, 16 Jun 2025 12:10:51 -0400 Subject: [PATCH 33/77] use integrated deduping --- bbot/modules/aspnet_bin_exposure.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/bbot/modules/aspnet_bin_exposure.py b/bbot/modules/aspnet_bin_exposure.py index 7be4da29a7..9367058412 100644 --- a/bbot/modules/aspnet_bin_exposure.py +++ b/bbot/modules/aspnet_bin_exposure.py @@ -20,17 +20,15 @@ class aspnet_bin_exposure(BaseModule): "AjaxControlToolkit.dll", ] - async def setup(self): - self.scanned_tracker = set() - return True - @staticmethod def normalize_url(url): return str(url.rstrip("/") + "/").lower() + def _incoming_dedup_hash(self, event): + return hash(self.normalize_url(event.data)) + async def handle_event(self, event): normalized_url = self.normalize_url(event.data) - self.scanned_tracker.add(normalized_url) for test_dll in self.test_dlls: for technique in ["b/(S(X))in/###DLL_PLACEHOLDER###/(S(X))/", "(S(X))/b/(S(X))in/###DLL_PLACEHOLDER###"]: test_url = f"{normalized_url}{technique.replace('###DLL_PLACEHOLDER###', test_dll)}" @@ -78,7 +76,5 @@ async def handle_event(self, event): async def filter_event(self, event): if "dir" in event.tags: - if self.normalize_url(event.data) not in self.scanned_tracker: - return True - return False + return True return False From 66167a7138d745dac70627a5f3cd73c3900eef74 Mon Sep 17 00:00:00 2001 From: Austin Stark <14080242+ausmaster@users.noreply.github.com> Date: Wed, 18 Jun 2025 11:05:51 -0700 Subject: [PATCH 34/77] Add "pensive" to adj, "trent" to names. --- bbot/core/helpers/names_generator.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bbot/core/helpers/names_generator.py b/bbot/core/helpers/names_generator.py index 61ff611ac6..c049a55c74 100644 --- a/bbot/core/helpers/names_generator.py +++ b/bbot/core/helpers/names_generator.py @@ -173,6 +173,7 @@ "pasty", "peckish", "pedantic", + "pensive", "pernicious", "perturbed", "perverted", @@ -670,6 +671,7 @@ "tony", "tracy", "travis", + "trent", "treebeard", "triss", "tyler", From 852136cdf47570e829cd1f6d2cceff53eb77e13d Mon Sep 17 00:00:00 2001 From: Austin Stark <14080242+ausmaster@users.noreply.github.com> Date: Wed, 18 Jun 2025 11:10:00 -0700 Subject: [PATCH 35/77] Order. --- bbot/core/helpers/names_generator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bbot/core/helpers/names_generator.py b/bbot/core/helpers/names_generator.py index c049a55c74..9df5c64231 100644 --- a/bbot/core/helpers/names_generator.py +++ b/bbot/core/helpers/names_generator.py @@ -289,6 +289,7 @@ "zesty", ] + names = [ "aaron", "abigail", @@ -671,8 +672,8 @@ "tony", "tracy", "travis", - "trent", "treebeard", + "trent", "triss", "tyler", "tyrell", @@ -703,7 +704,6 @@ "zachary", ] - def random_name(): name = random.choice(names) adjective = random.choice(adjectives) From 08ae6b7234f0cbc824a580f4a1c3ec793c7dab99 Mon Sep 17 00:00:00 2001 From: Austin Stark <14080242+ausmaster@users.noreply.github.com> Date: Wed, 18 Jun 2025 11:10:46 -0700 Subject: [PATCH 36/77] Idk what. --- bbot/core/helpers/names_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/core/helpers/names_generator.py b/bbot/core/helpers/names_generator.py index 9df5c64231..9c0da33607 100644 --- a/bbot/core/helpers/names_generator.py +++ b/bbot/core/helpers/names_generator.py @@ -289,7 +289,6 @@ "zesty", ] - names = [ "aaron", "abigail", @@ -704,6 +703,7 @@ "zachary", ] + def random_name(): name = random.choice(names) adjective = random.choice(adjectives) From e29c24c073633e24cab927745e5731082ee65887 Mon Sep 17 00:00:00 2001 From: blsaccess Date: Thu, 19 Jun 2025 00:27:01 +0000 Subject: [PATCH 37/77] Update trufflehog --- bbot/modules/trufflehog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/modules/trufflehog.py b/bbot/modules/trufflehog.py index d7254bcee3..a14d47164d 100644 --- a/bbot/modules/trufflehog.py +++ b/bbot/modules/trufflehog.py @@ -14,7 +14,7 @@ class trufflehog(BaseModule): } options = { - "version": "3.89.1", + "version": "3.89.2", "config": "", "only_verified": True, "concurrency": 8, From 6b18b4af7a6ccb6a3da81d3b904cfe7bce0e5617 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 20 Jun 2025 11:07:44 -0400 Subject: [PATCH 38/77] update tldextract --- poetry.lock | 14 +++++++------- pyproject.toml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2586e379b5..de3f77e598 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "annotated-types" @@ -173,7 +173,7 @@ description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" groups = ["main"] -markers = "platform_python_implementation != \"PyPy\" or implementation_name == \"pypy\"" +markers = "implementation_name == \"pypy\" or platform_python_implementation != \"PyPy\"" files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, @@ -795,7 +795,7 @@ files = [ {file = "importlib_metadata-6.2.1-py3-none-any.whl", hash = "sha256:f65e478a7c2177bd19517a3a15dac094d253446d8690c5f3e71e735a04312374"}, {file = "importlib_metadata-6.2.1.tar.gz", hash = "sha256:5a66966b39ff1c14ef5b2d60c1d842b0141fefff0f4cc6365b4bc9446c652807"}, ] -markers = {main = "python_version < \"3.10\""} +markers = {main = "python_version == \"3.9\""} [package.dependencies] zipp = ">=0.5" @@ -816,7 +816,7 @@ files = [ {file = "importlib_resources-5.0.7-py3-none-any.whl", hash = "sha256:2238159eb743bd85304a16e0536048b3e991c531d1cd51c4a834d1ccf2829057"}, {file = "importlib_resources-5.0.7.tar.gz", hash = "sha256:4df460394562b4581bb4e4087ad9447bd433148fba44241754ec3152499f1d1b"}, ] -markers = {main = "python_version < \"3.10\""} +markers = {main = "python_version == \"3.9\""} [package.extras] docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"] @@ -1741,7 +1741,7 @@ description = "C parser in Python" optional = false python-versions = ">=3.8" groups = ["main"] -markers = "platform_python_implementation != \"PyPy\" or implementation_name == \"pypy\"" +markers = "implementation_name == \"pypy\" or platform_python_implementation != \"PyPy\"" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, @@ -3209,7 +3209,7 @@ files = [ {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, ] -markers = {main = "python_version < \"3.10\""} +markers = {main = "python_version == \"3.9\""} [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] @@ -3222,4 +3222,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "9c855edb77c7d1473a492ce8567acdb285bb4e382c1e6a33cd32e96f2ad83e1f" +content-hash = "4a962ca39b9cea87deb9842a3f4ae767462c0855eac728516bcb9d57ff49e27f" diff --git a/pyproject.toml b/pyproject.toml index 67ae2af447..8a49126b29 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,6 @@ pyjwt = "^2.7.0" beautifulsoup4 = "^4.12.2" lxml = ">=4.9.2,<6.0.0" dnspython = "^2.4.2" -tldextract = "^5.1.1" cachetools = ">=5.3.2,<7.0.0" socksio = "^1.0.0" jinja2 = "^3.1.3" @@ -57,6 +56,7 @@ radixtarget = "^3.0.13" cloudcheck = "^7.2.11" orjson = "^3.10.12" ansible-core = "^2.15.13" +tldextract = "^5.3.0" [tool.poetry.group.dev.dependencies] poetry-dynamic-versioning = ">=0.21.4,<1.8.0" From 2124bcc944029bef96223269ebc21fb62820cb74 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 25 Jun 2025 18:24:17 -0400 Subject: [PATCH 39/77] add missing massdns dependency --- bbot/core/helpers/command.py | 4 +++- bbot/modules/dnscommonsrv.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/bbot/core/helpers/command.py b/bbot/core/helpers/command.py index d4f017b330..996fc41225 100644 --- a/bbot/core/helpers/command.py +++ b/bbot/core/helpers/command.py @@ -185,7 +185,9 @@ async def _spawn_proc(self, *command, **kwargs): try: command, kwargs = self._prepare_command_kwargs(command, kwargs) except SubprocessError as e: - log.warning(e) + command_str = " ".join(command) + log.warning(f"Error running command: '{command_str}': {e}") + log.trace(traceback.format_exc()) return None, None, None _input = kwargs.pop("input", None) if _input is not None: diff --git a/bbot/modules/dnscommonsrv.py b/bbot/modules/dnscommonsrv.py index f6dc263cb6..d12932079b 100644 --- a/bbot/modules/dnscommonsrv.py +++ b/bbot/modules/dnscommonsrv.py @@ -8,6 +8,7 @@ class dnscommonsrv(subdomain_enum): flags = ["subdomain-enum", "active", "safe"] meta = {"description": "Check for common SRV records", "created_date": "2022-05-15", "author": "@TheTechromancer"} dedup_strategy = "lowest_parent" + deps_common = ["massdns"] options = {"max_depth": 2} options_desc = {"max_depth": "The maximum subdomain depth to brute-force SRV records"} From 6034dd8d90bb969ffdad0e94f6d8a4a5f374bb11 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 25 Jun 2025 21:05:59 -0400 Subject: [PATCH 40/77] stringify command --- bbot/core/helpers/command.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/core/helpers/command.py b/bbot/core/helpers/command.py index 996fc41225..d19d28e3d5 100644 --- a/bbot/core/helpers/command.py +++ b/bbot/core/helpers/command.py @@ -182,6 +182,7 @@ async def _spawn_proc(self, *command, **kwargs): >>> _spawn_proc("ls", "-l", input="data") (, "data", ["ls", "-l"]) """ + command = [str(s) for s in command] try: command, kwargs = self._prepare_command_kwargs(command, kwargs) except SubprocessError as e: @@ -281,7 +282,6 @@ def _prepare_command_kwargs(self, command, kwargs): if len(command) == 1 and isinstance(command[0], (list, tuple)): command = command[0] - command = [str(s) for s in command] if not command: raise SubprocessError("Must specify a command") From 9c756ad56478af86d3e974c695fcd6eca5ef1621 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 25 Jun 2025 23:11:11 -0400 Subject: [PATCH 41/77] fix tests --- bbot/core/helpers/command.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bbot/core/helpers/command.py b/bbot/core/helpers/command.py index d19d28e3d5..7da96bbd38 100644 --- a/bbot/core/helpers/command.py +++ b/bbot/core/helpers/command.py @@ -123,7 +123,7 @@ async def run_live(self, *command, check=False, text=True, idle_timeout=None, ** proc.send_signal(SIGINT) raise except ValueError as e: - command_str = " ".join([str(c) for c in command]) + command_str = " ".join(command) log.warning(f"Error executing command {command_str}: {e}") log.trace(traceback.format_exc()) continue @@ -182,11 +182,10 @@ async def _spawn_proc(self, *command, **kwargs): >>> _spawn_proc("ls", "-l", input="data") (, "data", ["ls", "-l"]) """ - command = [str(s) for s in command] try: command, kwargs = self._prepare_command_kwargs(command, kwargs) except SubprocessError as e: - command_str = " ".join(command) + command_str = " ".join([str(s) for s in command]) log.warning(f"Error running command: '{command_str}': {e}") log.trace(traceback.format_exc()) return None, None, None @@ -283,6 +282,8 @@ def _prepare_command_kwargs(self, command, kwargs): if len(command) == 1 and isinstance(command[0], (list, tuple)): command = command[0] + command = [str(s) for s in command] + if not command: raise SubprocessError("Must specify a command") From 936cc42d12ec6fe14fa302c203122ff021d8ef08 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Tue, 1 Jul 2025 18:21:29 +0530 Subject: [PATCH 42/77] Add graphql introspection module --- bbot/modules/graphql_introspection.py | 145 ++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 bbot/modules/graphql_introspection.py diff --git a/bbot/modules/graphql_introspection.py b/bbot/modules/graphql_introspection.py new file mode 100644 index 0000000000..76170034f4 --- /dev/null +++ b/bbot/modules/graphql_introspection.py @@ -0,0 +1,145 @@ +import json +from pathlib import Path +from bbot.modules.base import BaseModule + + +class graphql_introspection(BaseModule): + watched_events = ["URL"] + produced_events = ["FINDING"] + flags = ["safe", "active"] + meta = { + "description": "Perform GraphQL introspection on a target", + "created_date": "2025-07-01", + "author": "@mukesh-dream11", + } + options = { + "graphql_endpoint_urls": ["", "graphql", "v1/graphql"], + "output_folder": "", + } + options_desc = { + "graphql_endpoint_urls": "List of GraphQL endpoint to suffix to the target URL", + "output_folder": "Folder to save the GraphQL schemas to", + } + per_domain_only = True + + async def setup(self): + output_folder = self.config.get("output_folder", "") + if output_folder: + self.output_dir = Path(output_folder) / "graphql-schemas" + else: + self.output_dir = self.scan.home / "graphql-schemas" + self.helpers.mkdir(self.output_dir) + return True + + async def handle_event(self, event): + if self.helpers.url_depth(event.data) > 1: + return + + for endpoint_url in self.config.get("graphql_endpoint_urls", []): + url = f"{event.data}{endpoint_url}" + request_args = { + "url": url, + "method": "POST", + "json": { + "query": """\ +query IntrospectionQuery { + __schema { + queryType { + name + } + mutationType { + name + } + types { + name + kind + description + fields(includeDeprecated: true) { + name + description + type { + ... TypeRef + } + isDeprecated + deprecationReason + } + interfaces { + ... TypeRef + } + possibleTypes { + ... TypeRef + } + enumValues(includeDeprecated: true) { + name + description + isDeprecated + deprecationReason + } + ofType { + ... TypeRef + } + } + } +} + +fragment TypeRef on __Type { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + } + } + } + } + } + } + } +}""" + }, + } + response = await self.helpers.request(**request_args) + if response.status_code != 200: + self.debug( + f"Failed to get GraphQL schema for {url} (status code {response.status_code})" + ) + continue + try: + response_json = response.json() + except json.JSONDecodeError: + self.debug(f"Failed to parse JSON for {url}") + continue + if response_json.get("data", {}).get("__schema", {}).get("types", []): + schema_output_dir = url.rstrip("/").replace(":", "-").replace("/", "-") + schema_output_dir = self.output_dir / schema_output_dir + self.helpers.mkdir(schema_output_dir) + + filename = "schema.json" + with open(schema_output_dir / filename, "w") as f: + json.dump(response_json, f) + await self.emit_event( + {"url": url, "description": "GraphQL schema"}, + "FINDING", + event, + context=f"{{module}} found GraphQL schema at {url}", + ) + # return, because we only want to find one schema per target + return From 242b046503cdecf74a3e244ad2894a2db694ba66 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Tue, 1 Jul 2025 18:26:50 +0530 Subject: [PATCH 43/77] Fix minor formatting error --- bbot/modules/graphql_introspection.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bbot/modules/graphql_introspection.py b/bbot/modules/graphql_introspection.py index 76170034f4..8b86c61d43 100644 --- a/bbot/modules/graphql_introspection.py +++ b/bbot/modules/graphql_introspection.py @@ -118,9 +118,7 @@ async def handle_event(self, event): } response = await self.helpers.request(**request_args) if response.status_code != 200: - self.debug( - f"Failed to get GraphQL schema for {url} (status code {response.status_code})" - ) + self.debug(f"Failed to get GraphQL schema for {url} (status code {response.status_code})") continue try: response_json = response.json() From 6704332d7e54c0fc32c2568e3b288ba4c936dcd3 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Thu, 3 Jul 2025 14:30:53 +0530 Subject: [PATCH 44/77] Add unit tests for graphql introspection module --- bbot/modules/graphql_introspection.py | 7 ++-- .../test_module_graphql_introspection.py | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 bbot/test/test_step_2/module_tests/test_module_graphql_introspection.py diff --git a/bbot/modules/graphql_introspection.py b/bbot/modules/graphql_introspection.py index 8b86c61d43..db176470f4 100644 --- a/bbot/modules/graphql_introspection.py +++ b/bbot/modules/graphql_introspection.py @@ -20,7 +20,6 @@ class graphql_introspection(BaseModule): "graphql_endpoint_urls": "List of GraphQL endpoint to suffix to the target URL", "output_folder": "Folder to save the GraphQL schemas to", } - per_domain_only = True async def setup(self): output_folder = self.config.get("output_folder", "") @@ -117,8 +116,10 @@ async def handle_event(self, event): }, } response = await self.helpers.request(**request_args) - if response.status_code != 200: - self.debug(f"Failed to get GraphQL schema for {url} (status code {response.status_code})") + if not response or response.status_code != 200: + self.debug( + f"Failed to get GraphQL schema for {url} (status code {response.status_code})" + ) continue try: response_json = response.json() diff --git a/bbot/test/test_step_2/module_tests/test_module_graphql_introspection.py b/bbot/test/test_step_2/module_tests/test_module_graphql_introspection.py new file mode 100644 index 0000000000..f6a47671c7 --- /dev/null +++ b/bbot/test/test_step_2/module_tests/test_module_graphql_introspection.py @@ -0,0 +1,34 @@ +from .base import ModuleTestBase + + +class TestGraphQLIntrospectionNon200(ModuleTestBase): + targets = ["http://127.0.0.1:8888"] + modules_overrides = ["graphql_introspection"] + + async def setup_after_prep(self, module_test): + module_test.set_expect_requests( + expect_args={"method": "POST", "uri": "/"}, + respond_args={"response_data": "ok"}, + ) + + def check(self, module_test, events): + assert all(e.type != "FINDING" for e in events), "should have raised 0 events" + + +class TestGraphQLIntrospection(ModuleTestBase): + targets = ["http://127.0.0.1:8888"] + modules_overrides = ["graphql_introspection"] + + async def setup_after_prep(self, module_test): + module_test.set_expect_requests( + expect_args={"method": "POST", "uri": "/"}, + respond_args={ + "response_data": """{"data": {"__schema": {"types": ["dummy"]}}}""", + }, + ) + + def check(self, module_test, events): + finding = [e for e in events if e.type == "FINDING"] + assert finding, "should have raised 1 FINDING event" + assert finding[0].data["url"] == "http://127.0.0.1:8888/" + assert finding[0].data["description"] == "GraphQL schema" From 3025ae690e6d8ed18c31de64885f2bfd44789b18 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Thu, 3 Jul 2025 14:32:13 +0530 Subject: [PATCH 45/77] Fix minor formatting error --- bbot/modules/graphql_introspection.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bbot/modules/graphql_introspection.py b/bbot/modules/graphql_introspection.py index db176470f4..9789dbb0e6 100644 --- a/bbot/modules/graphql_introspection.py +++ b/bbot/modules/graphql_introspection.py @@ -117,9 +117,7 @@ async def handle_event(self, event): } response = await self.helpers.request(**request_args) if not response or response.status_code != 200: - self.debug( - f"Failed to get GraphQL schema for {url} (status code {response.status_code})" - ) + self.debug(f"Failed to get GraphQL schema for {url} (status code {response.status_code})") continue try: response_json = response.json() From a9fa97d73656109bdedaaa8c6adfa37122f2bd49 Mon Sep 17 00:00:00 2001 From: Mukesh Sai Kumar Date: Thu, 3 Jul 2025 17:27:39 +0530 Subject: [PATCH 46/77] Add web-basic flag to graphql_introspection module --- bbot/modules/graphql_introspection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/modules/graphql_introspection.py b/bbot/modules/graphql_introspection.py index 9789dbb0e6..11df43ac9f 100644 --- a/bbot/modules/graphql_introspection.py +++ b/bbot/modules/graphql_introspection.py @@ -6,7 +6,7 @@ class graphql_introspection(BaseModule): watched_events = ["URL"] produced_events = ["FINDING"] - flags = ["safe", "active"] + flags = ["safe", "active", "web-basic"] meta = { "description": "Perform GraphQL introspection on a target", "created_date": "2025-07-01", From 8934884e1f6ed8d9626bdb867cef44bdf8c71108 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 8 Jul 2025 13:41:58 -0400 Subject: [PATCH 47/77] clean temp dir on exit --- bbot/core/helpers/helper.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bbot/core/helpers/helper.py b/bbot/core/helpers/helper.py index 776d00df82..69add3d192 100644 --- a/bbot/core/helpers/helper.py +++ b/bbot/core/helpers/helper.py @@ -68,6 +68,8 @@ def __init__(self, preset): self.keep_old_scans = self.config.get("keep_scans", 20) self.mkdir(self.cache_dir) self.mkdir(self.temp_dir) + # remove temp dir on exit + misc.rm_at_exit(self.temp_dir) self.mkdir(self.tools_dir) self.mkdir(self.lib_dir) From d069bd44228427c3b158d8d54c50c9fb23b68390 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 8 Jul 2025 14:04:18 -0400 Subject: [PATCH 48/77] rm tree at exit --- bbot/core/helpers/helper.py | 2 +- bbot/core/helpers/misc.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/bbot/core/helpers/helper.py b/bbot/core/helpers/helper.py index 69add3d192..a584159aa0 100644 --- a/bbot/core/helpers/helper.py +++ b/bbot/core/helpers/helper.py @@ -69,7 +69,7 @@ def __init__(self, preset): self.mkdir(self.cache_dir) self.mkdir(self.temp_dir) # remove temp dir on exit - misc.rm_at_exit(self.temp_dir) + misc.rmtree_at_exit(self.temp_dir) self.mkdir(self.tools_dir) self.mkdir(self.lib_dir) diff --git a/bbot/core/helpers/misc.py b/bbot/core/helpers/misc.py index 5267b3cbcb..4425c14f00 100644 --- a/bbot/core/helpers/misc.py +++ b/bbot/core/helpers/misc.py @@ -1212,6 +1212,13 @@ def rm_at_exit(path): atexit.register(delete_file, path) +def rmtree_at_exit(path): + """Registers a directory to be automatically deleted when the program exits. + """ + import atexit + atexit.register(rm_rf, path, ignore_errors=True) + + def delete_file(path): """Deletes a file at the given path. @@ -1642,7 +1649,7 @@ def filesize(f): return 0 -def rm_rf(f): +def rm_rf(f, ignore_errors=False): """Recursively delete a directory Args: @@ -1653,7 +1660,7 @@ def rm_rf(f): """ import shutil - shutil.rmtree(f) + shutil.rmtree(f, ignore_errors=ignore_errors) def clean_old(d, keep=10, filter=lambda x: True, key=latest_mtime, reverse=True, raise_error=False): From 1903313bf15c3600c4bca7ec6193d9a8e943927e Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 8 Jul 2025 14:21:32 -0400 Subject: [PATCH 49/77] clean temp dir at end of scan --- bbot/core/helpers/helper.py | 2 -- bbot/core/helpers/misc.py | 7 ------- bbot/scanner/scanner.py | 1 + bbot/test/test_step_1/test_helpers.py | 17 +++++++++++++++++ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/bbot/core/helpers/helper.py b/bbot/core/helpers/helper.py index a584159aa0..776d00df82 100644 --- a/bbot/core/helpers/helper.py +++ b/bbot/core/helpers/helper.py @@ -68,8 +68,6 @@ def __init__(self, preset): self.keep_old_scans = self.config.get("keep_scans", 20) self.mkdir(self.cache_dir) self.mkdir(self.temp_dir) - # remove temp dir on exit - misc.rmtree_at_exit(self.temp_dir) self.mkdir(self.tools_dir) self.mkdir(self.lib_dir) diff --git a/bbot/core/helpers/misc.py b/bbot/core/helpers/misc.py index 4425c14f00..ecd72ff512 100644 --- a/bbot/core/helpers/misc.py +++ b/bbot/core/helpers/misc.py @@ -1212,13 +1212,6 @@ def rm_at_exit(path): atexit.register(delete_file, path) -def rmtree_at_exit(path): - """Registers a directory to be automatically deleted when the program exits. - """ - import atexit - atexit.register(rm_rf, path, ignore_errors=True) - - def delete_file(path): """Deletes a file at the given path. diff --git a/bbot/scanner/scanner.py b/bbot/scanner/scanner.py index 3c99441b96..52c9a48fca 100644 --- a/bbot/scanner/scanner.py +++ b/bbot/scanner/scanner.py @@ -884,6 +884,7 @@ async def _cleanup(self): await mod._cleanup() with contextlib.suppress(Exception): self.home.rmdir() + self.helpers.rm_rf(self.helpers.temp_dir, ignore_errors=True) self.helpers.clean_old_scans() def in_scope(self, *args, **kwargs): diff --git a/bbot/test/test_step_1/test_helpers.py b/bbot/test/test_step_1/test_helpers.py index 12fb15278f..5c6b1918b7 100644 --- a/bbot/test/test_step_1/test_helpers.py +++ b/bbot/test/test_step_1/test_helpers.py @@ -954,3 +954,20 @@ async def test_parameter_validation(helpers): assert p in cookie_valid_params and p not in cookie_invalid_params else: assert p in cookie_invalid_params and p not in cookie_valid_params + + +@pytest.mark.asyncio +async def test_rmtree_at_exit(helpers): + from bbot.scanner import Scanner + + scan = Scanner("127.0.0.1", modules=["httpx"]) + await scan._prep() + + # temp dir should exist + assert scan.helpers.temp_dir.exists() + + events = [e async for e in scan.async_start()] + assert events + + # temp dir should be removed + assert not scan.helpers.temp_dir.exists() From 590394959ea44227bc6c73a7a1b40cd077ae51be Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 8 Jul 2025 14:25:31 -0400 Subject: [PATCH 50/77] rename test --- bbot/test/test_step_1/test_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/test/test_step_1/test_helpers.py b/bbot/test/test_step_1/test_helpers.py index 5c6b1918b7..96888dc78d 100644 --- a/bbot/test/test_step_1/test_helpers.py +++ b/bbot/test/test_step_1/test_helpers.py @@ -957,7 +957,7 @@ async def test_parameter_validation(helpers): @pytest.mark.asyncio -async def test_rmtree_at_exit(helpers): +async def test_rm_temp_dir_at_exit(helpers): from bbot.scanner import Scanner scan = Scanner("127.0.0.1", modules=["httpx"]) From fca60723f339ec172dba5dc67bda4d10c951dca6 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 9 Jul 2025 10:48:39 -0400 Subject: [PATCH 51/77] troubleshoot tests --- .../module_tests/test_module_excavate.py | 8 +++++++- .../module_tests/test_module_extractous.py | 14 +++++++++++++- .../test_step_2/module_tests/test_module_jadx.py | 9 +++++++++ .../module_tests/test_module_unarchive.py | 9 +++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/bbot/test/test_step_2/module_tests/test_module_excavate.py b/bbot/test/test_step_2/module_tests/test_module_excavate.py index e13dd72223..b7542d3beb 100644 --- a/bbot/test/test_step_2/module_tests/test_module_excavate.py +++ b/bbot/test/test_step_2/module_tests/test_module_excavate.py @@ -1221,7 +1221,13 @@ def check(self, module_test, events): class TestExcavateRAWTEXT(ModuleTestBase): targets = ["http://127.0.0.1:8888/", "test.notreal"] modules_overrides = ["excavate", "httpx", "filedownload", "extractous"] - config_overrides = {"scope": {"report_distance": 1}, "web": {"spider_distance": 2, "spider_depth": 2}} + config_overrides = { + "scope": {"report_distance": 1}, + "web": {"spider_distance": 2, "spider_depth": 2}, + "modules": { + "filedownload": {"output_folder": str(bbot_test_dir / "filedownload")}, + }, + } pdf_data = r"""%PDF-1.3 %���� ReportLab Generated PDF document http://www.reportlab.com diff --git a/bbot/test/test_step_2/module_tests/test_module_extractous.py b/bbot/test/test_step_2/module_tests/test_module_extractous.py index c32173163d..19380dbf06 100644 --- a/bbot/test/test_step_2/module_tests/test_module_extractous.py +++ b/bbot/test/test_step_2/module_tests/test_module_extractous.py @@ -2,11 +2,23 @@ from pathlib import Path from .base import ModuleTestBase +from ...bbot_fixtures import * + class TestExtractous(ModuleTestBase): targets = ["http://127.0.0.1:8888"] modules_overrides = ["extractous", "filedownload", "httpx", "excavate", "speculate"] - config_overrides = {"web": {"spider_distance": 2, "spider_depth": 2}} + config_overrides = { + "web": { + "spider_distance": 2, + "spider_depth": 2, + }, + "modules": { + "filedownload": { + "output_folder": bbot_test_dir / "filedownload", + }, + }, + } pdf_data = base64.b64decode( "JVBERi0xLjMKJe+/ve+/ve+/ve+/vSBSZXBvcnRMYWIgR2VuZXJhdGVkIFBERiBkb2N1bWVudCBodHRwOi8vd3d3LnJlcG9ydGxhYi5jb20KMSAwIG9iago8PAovRjEgMiAwIFIKPj4KZW5kb2JqCjIgMCBvYmoKPDwKL0Jhc2VGb250IC9IZWx2ZXRpY2EgL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcgL05hbWUgL0YxIC9TdWJ0eXBlIC9UeXBlMSAvVHlwZSAvRm9udAo+PgplbmRvYmoKMyAwIG9iago8PAovQ29udGVudHMgNyAwIFIgL01lZGlhQm94IFsgMCAwIDU5NS4yNzU2IDg0MS44ODk4IF0gL1BhcmVudCA2IDAgUiAvUmVzb3VyY2VzIDw8Ci9Gb250IDEgMCBSIC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCj4+IC9Sb3RhdGUgMCAvVHJhbnMgPDwKCj4+IAogIC9UeXBlIC9QYWdlCj4+CmVuZG9iago0IDAgb2JqCjw8Ci9QYWdlTW9kZSAvVXNlTm9uZSAvUGFnZXMgNiAwIFIgL1R5cGUgL0NhdGFsb2cKPj4KZW5kb2JqCjUgMCBvYmoKPDwKL0F1dGhvciAoYW5vbnltb3VzKSAvQ3JlYXRpb25EYXRlIChEOjIwMjQwNjAzMTg1ODE2KzAwJzAwJykgL0NyZWF0b3IgKFJlcG9ydExhYiBQREYgTGlicmFyeSAtIHd3dy5yZXBvcnRsYWIuY29tKSAvS2V5d29yZHMgKCkgL01vZERhdGUgKEQ6MjAyNDA2MDMxODU4MTYrMDAnMDAnKSAvUHJvZHVjZXIgKFJlcG9ydExhYiBQREYgTGlicmFyeSAtIHd3dy5yZXBvcnRsYWIuY29tKSAKICAvU3ViamVjdCAodW5zcGVjaWZpZWQpIC9UaXRsZSAodW50aXRsZWQpIC9UcmFwcGVkIC9GYWxzZQo+PgplbmRvYmoKNiAwIG9iago8PAovQ291bnQgMSAvS2lkcyBbIDMgMCBSIF0gL1R5cGUgL1BhZ2VzCj4+CmVuZG9iago3IDAgb2JqCjw8Ci9GaWx0ZXIgWyAvQVNDSUk4NURlY29kZSAvRmxhdGVEZWNvZGUgXSAvTGVuZ3RoIDEwNwo+PgpzdHJlYW0KR2FwUWgwRT1GLDBVXEgzVFxwTllUXlFLaz90Yz5JUCw7VyNVMV4yM2loUEVNXz9DVzRLSVNpOTBNakdeMixGUyM8UkM1K2MsbilaOyRiSyRiIjVJWzwhXlREI2dpXSY9NVgsWzVAWUBWfj5lbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDA3MyAwMDAwMCBuIAowMDAwMDAwMTA0IDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDQxNCAwMDAwMCBuIAowMDAwMDAwNDgyIDAwMDAwIG4gCjAwMDAwMDA3NzggMDAwMDAgbiAKMDAwMDAwMDgzNyAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9JRCAKWzw4MGQ5ZjViOTY0ZmM5OTI4NDUwMWRlYjdhNmE2MzdmNz48ODBkOWY1Yjk2NGZjOTkyODQ1MDFkZWI3YTZhNjM3Zjc+XQolIFJlcG9ydExhYiBnZW5lcmF0ZWQgUERGIGRvY3VtZW50IC0tIGRpZ2VzdCAoaHR0cDovL3d3dy5yZXBvcnRsYWIuY29tKQoKL0luZm8gNSAwIFIKL1Jvb3QgNCAwIFIKL1NpemUgOAo+PgpzdGFydHhyZWYKMTAzNAolJUVPRg==" diff --git a/bbot/test/test_step_2/module_tests/test_module_jadx.py b/bbot/test/test_step_2/module_tests/test_module_jadx.py index f57dabad89..2152778c2d 100644 --- a/bbot/test/test_step_2/module_tests/test_module_jadx.py +++ b/bbot/test/test_step_2/module_tests/test_module_jadx.py @@ -2,9 +2,18 @@ from bbot.core.helpers.libmagic import get_magic_info from bbot.test.test_step_2.module_tests.base import ModuleTestBase, tempapkfile +from ...bbot_fixtures import * + class TestJadx(ModuleTestBase): modules_overrides = ["apkpure", "google_playstore", "speculate", "jadx"] + config_overrides = { + "modules": { + "apkpure": { + "output_folder": bbot_test_dir / "apkpure", + }, + } + } apk_file = tempapkfile() async def setup_after_prep(self, module_test): diff --git a/bbot/test/test_step_2/module_tests/test_module_unarchive.py b/bbot/test/test_step_2/module_tests/test_module_unarchive.py index 41c96c49c7..5a742ef969 100644 --- a/bbot/test/test_step_2/module_tests/test_module_unarchive.py +++ b/bbot/test/test_step_2/module_tests/test_module_unarchive.py @@ -3,10 +3,19 @@ from pathlib import Path from .base import ModuleTestBase +from ...bbot_fixtures import * + class TestUnarchive(ModuleTestBase): targets = ["http://127.0.0.1:8888"] modules_overrides = ["filedownload", "httpx", "excavate", "speculate", "unarchive"] + config_overrides = { + "modules": { + "filedownload": { + "output_folder": bbot_test_dir / "filedownload", + }, + } + } async def setup_after_prep(self, module_test): temp_path = Path("/tmp/.bbot_test") From d18d766680765f62b4ca0ef3fe512e0b29477cd2 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 11 Jul 2025 17:04:59 -0400 Subject: [PATCH 52/77] download git repos, docker images etc. to scan-specific temp folder --- bbot/modules/apkpure.py | 2 +- bbot/modules/docker_pull.py | 2 +- bbot/modules/filedownload.py | 2 +- bbot/modules/git_clone.py | 2 +- bbot/modules/gitdumper.py | 2 +- bbot/modules/postman_download.py | 2 +- bbot/scanner/scanner.py | 8 +++++++- bbot/test/test_step_1/test_helpers.py | 6 ++++-- 8 files changed, 17 insertions(+), 9 deletions(-) diff --git a/bbot/modules/apkpure.py b/bbot/modules/apkpure.py index d5bd46151f..f667478c30 100644 --- a/bbot/modules/apkpure.py +++ b/bbot/modules/apkpure.py @@ -22,7 +22,7 @@ async def setup(self): if output_folder: self.output_dir = Path(output_folder) / "apk_files" else: - self.output_dir = self.helpers.temp_dir / "apk_files" + self.output_dir = self.scan.temp_dir / "apk_files" self.helpers.mkdir(self.output_dir) return await super().setup() diff --git a/bbot/modules/docker_pull.py b/bbot/modules/docker_pull.py index e6d4498bf7..4a711d0ea5 100644 --- a/bbot/modules/docker_pull.py +++ b/bbot/modules/docker_pull.py @@ -38,7 +38,7 @@ async def setup(self): if output_folder: self.output_dir = Path(output_folder) / "docker_images" else: - self.output_dir = self.helpers.temp_dir / "docker_images" + self.output_dir = self.scan.temp_dir / "docker_images" self.helpers.mkdir(self.output_dir) return await super().setup() diff --git a/bbot/modules/filedownload.py b/bbot/modules/filedownload.py index e291c1e477..c5b0b17c18 100644 --- a/bbot/modules/filedownload.py +++ b/bbot/modules/filedownload.py @@ -103,7 +103,7 @@ async def setup(self): if output_dir: self.download_dir = Path(output_dir) / "filedownload" else: - self.download_dir = self.helpers.temp_dir / "filedownload" + self.download_dir = self.scan.temp_dir / "filedownload" self.helpers.mkdir(self.download_dir) self.mime_db_file = await self.helpers.wordlist( "https://raw.githubusercontent.com/jshttp/mime-db/master/db.json" diff --git a/bbot/modules/git_clone.py b/bbot/modules/git_clone.py index efaa06573f..0e303b912b 100644 --- a/bbot/modules/git_clone.py +++ b/bbot/modules/git_clone.py @@ -27,7 +27,7 @@ async def setup(self): if output_folder: self.output_dir = Path(output_folder) / "git_repos" else: - self.output_dir = self.helpers.temp_dir / "git_repos" + self.output_dir = self.scan.temp_dir / "git_repos" self.helpers.mkdir(self.output_dir) return await super().setup() diff --git a/bbot/modules/gitdumper.py b/bbot/modules/gitdumper.py index 6ad3a69cc8..64e23e2638 100644 --- a/bbot/modules/gitdumper.py +++ b/bbot/modules/gitdumper.py @@ -33,7 +33,7 @@ async def setup(self): if output_folder: self.output_dir = Path(output_folder) / "git_repos" else: - self.output_dir = self.helpers.temp_dir / "git_repos" + self.output_dir = self.scan.temp_dir / "git_repos" self.helpers.mkdir(self.output_dir) self.unsafe_regex = self.helpers.re.compile(r"^\s*fsmonitor|sshcommand|askpass|editor|pager", re.IGNORECASE) self.ref_regex = self.helpers.re.compile(r"ref: refs/heads/([a-zA-Z\d_-]+)") diff --git a/bbot/modules/postman_download.py b/bbot/modules/postman_download.py index 2eebc597a7..0cb8bc3cd8 100644 --- a/bbot/modules/postman_download.py +++ b/bbot/modules/postman_download.py @@ -25,7 +25,7 @@ async def setup(self): if output_folder: self.output_dir = Path(output_folder) / "postman_workspaces" else: - self.output_dir = self.helpers.temp_dir / "postman_workspaces" + self.output_dir = self.scan.temp_dir / "postman_workspaces" self.helpers.mkdir(self.output_dir) return await super().setup() diff --git a/bbot/scanner/scanner.py b/bbot/scanner/scanner.py index 52c9a48fca..eacf4df762 100644 --- a/bbot/scanner/scanner.py +++ b/bbot/scanner/scanner.py @@ -175,6 +175,10 @@ def __init__( else: self.home = self.preset.bbot_home / "scans" / self.name + # scan temp dir + self.temp_dir = self.home / "temp" + self.helpers.mkdir(self.temp_dir) + self._status = "NOT_STARTED" self._status_code = 0 @@ -884,7 +888,9 @@ async def _cleanup(self): await mod._cleanup() with contextlib.suppress(Exception): self.home.rmdir() - self.helpers.rm_rf(self.helpers.temp_dir, ignore_errors=True) + self.critical(f"Removing temp dir: {self.temp_dir}") + self.helpers.rm_rf(self.temp_dir, ignore_errors=True) + self.critical(f"Removed temp dir: {self.temp_dir} (exists: {self.temp_dir.exists()})") self.helpers.clean_old_scans() def in_scope(self, *args, **kwargs): diff --git a/bbot/test/test_step_1/test_helpers.py b/bbot/test/test_step_1/test_helpers.py index 96888dc78d..0adbe233bf 100644 --- a/bbot/test/test_step_1/test_helpers.py +++ b/bbot/test/test_step_1/test_helpers.py @@ -963,11 +963,13 @@ async def test_rm_temp_dir_at_exit(helpers): scan = Scanner("127.0.0.1", modules=["httpx"]) await scan._prep() + temp_dir = scan.home / "temp" + # temp dir should exist - assert scan.helpers.temp_dir.exists() + assert temp_dir.exists() events = [e async for e in scan.async_start()] assert events # temp dir should be removed - assert not scan.helpers.temp_dir.exists() + assert not temp_dir.exists() From 6286c4706ef9ea4820f54b8f875e655dbfb2c592 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 14 Jul 2025 10:51:40 -0400 Subject: [PATCH 53/77] remove debugs --- bbot/scanner/scanner.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/bbot/scanner/scanner.py b/bbot/scanner/scanner.py index eacf4df762..b2cc0d56df 100644 --- a/bbot/scanner/scanner.py +++ b/bbot/scanner/scanner.py @@ -888,9 +888,7 @@ async def _cleanup(self): await mod._cleanup() with contextlib.suppress(Exception): self.home.rmdir() - self.critical(f"Removing temp dir: {self.temp_dir}") self.helpers.rm_rf(self.temp_dir, ignore_errors=True) - self.critical(f"Removed temp dir: {self.temp_dir} (exists: {self.temp_dir.exists()})") self.helpers.clean_old_scans() def in_scope(self, *args, **kwargs): From 28e1b6eed6b965303d83fad3ae2c1ef5a00eba30 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 17 Jul 2025 11:23:27 -0400 Subject: [PATCH 54/77] improve dedup filtering --- bbot/modules/graphql_introspection.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/bbot/modules/graphql_introspection.py b/bbot/modules/graphql_introspection.py index 11df43ac9f..d21ff1173e 100644 --- a/bbot/modules/graphql_introspection.py +++ b/bbot/modules/graphql_introspection.py @@ -13,7 +13,7 @@ class graphql_introspection(BaseModule): "author": "@mukesh-dream11", } options = { - "graphql_endpoint_urls": ["", "graphql", "v1/graphql"], + "graphql_endpoint_urls": ["/", "/graphql", "/v1/graphql"], "output_folder": "", } options_desc = { @@ -30,12 +30,15 @@ async def setup(self): self.helpers.mkdir(self.output_dir) return True - async def handle_event(self, event): - if self.helpers.url_depth(event.data) > 1: - return + async def filter_event(self, event): + # Dedup by the base URL + base_url = event.parsed_url._replace(path="/", query="", fragment="").geturl() + return hash(base_url) + async def handle_event(self, event): + base_url = event.parsed_url._replace(path="/", query="", fragment="").geturl().rstrip("/") for endpoint_url in self.config.get("graphql_endpoint_urls", []): - url = f"{event.data}{endpoint_url}" + url = f"{base_url}{endpoint_url}" request_args = { "url": url, "method": "POST", @@ -125,15 +128,16 @@ async def handle_event(self, event): self.debug(f"Failed to parse JSON for {url}") continue if response_json.get("data", {}).get("__schema", {}).get("types", []): - schema_output_dir = url.rstrip("/").replace(":", "-").replace("/", "-") + schema_output_dir = self.helpers.tagify(url) schema_output_dir = self.output_dir / schema_output_dir self.helpers.mkdir(schema_output_dir) filename = "schema.json" - with open(schema_output_dir / filename, "w") as f: + filename = schema_output_dir / filename + with open(filename, "w") as f: json.dump(response_json, f) await self.emit_event( - {"url": url, "description": "GraphQL schema"}, + {"url": url, "description": "GraphQL schema", "path": str(filename.relative_to(self.scan.home))}, "FINDING", event, context=f"{{module}} found GraphQL schema at {url}", From e984b37f23e9c71e16ffb87f0304d2a205ee32d6 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 17 Jul 2025 11:25:44 -0400 Subject: [PATCH 55/77] tagify filename --- bbot/modules/graphql_introspection.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/bbot/modules/graphql_introspection.py b/bbot/modules/graphql_introspection.py index d21ff1173e..43852f73d8 100644 --- a/bbot/modules/graphql_introspection.py +++ b/bbot/modules/graphql_introspection.py @@ -128,12 +128,8 @@ async def handle_event(self, event): self.debug(f"Failed to parse JSON for {url}") continue if response_json.get("data", {}).get("__schema", {}).get("types", []): - schema_output_dir = self.helpers.tagify(url) - schema_output_dir = self.output_dir / schema_output_dir - self.helpers.mkdir(schema_output_dir) - - filename = "schema.json" - filename = schema_output_dir / filename + filename = f"schema-{self.helpers.tagify(url)}.json" + filename = self.output_dir / filename with open(filename, "w") as f: json.dump(response_json, f) await self.emit_event( From 51ebdbc95d551034f54c07ab2bf881255ed29ff3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 05:51:53 +0000 Subject: [PATCH 56/77] Bump ruff from 0.11.11 to 0.12.4 --- updated-dependencies: - dependency-name: ruff dependency-version: 0.12.4 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 52 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/poetry.lock b/poetry.lock index de3f77e598..99d86aa92f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "annotated-types" @@ -173,7 +173,7 @@ description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" groups = ["main"] -markers = "implementation_name == \"pypy\" or platform_python_implementation != \"PyPy\"" +markers = "platform_python_implementation != \"PyPy\" or implementation_name == \"pypy\"" files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, @@ -795,7 +795,7 @@ files = [ {file = "importlib_metadata-6.2.1-py3-none-any.whl", hash = "sha256:f65e478a7c2177bd19517a3a15dac094d253446d8690c5f3e71e735a04312374"}, {file = "importlib_metadata-6.2.1.tar.gz", hash = "sha256:5a66966b39ff1c14ef5b2d60c1d842b0141fefff0f4cc6365b4bc9446c652807"}, ] -markers = {main = "python_version == \"3.9\""} +markers = {main = "python_version < \"3.10\""} [package.dependencies] zipp = ">=0.5" @@ -816,7 +816,7 @@ files = [ {file = "importlib_resources-5.0.7-py3-none-any.whl", hash = "sha256:2238159eb743bd85304a16e0536048b3e991c531d1cd51c4a834d1ccf2829057"}, {file = "importlib_resources-5.0.7.tar.gz", hash = "sha256:4df460394562b4581bb4e4087ad9447bd433148fba44241754ec3152499f1d1b"}, ] -markers = {main = "python_version == \"3.9\""} +markers = {main = "python_version < \"3.10\""} [package.extras] docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"] @@ -1741,7 +1741,7 @@ description = "C parser in Python" optional = false python-versions = ">=3.8" groups = ["main"] -markers = "implementation_name == \"pypy\" or platform_python_implementation != \"PyPy\"" +markers = "platform_python_implementation != \"PyPy\" or implementation_name == \"pypy\"" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, @@ -2538,30 +2538,30 @@ test = ["commentjson", "packaging", "pytest"] [[package]] name = "ruff" -version = "0.11.11" +version = "0.12.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092"}, - {file = "ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4"}, - {file = "ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd"}, - {file = "ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6"}, - {file = "ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4"}, - {file = "ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac"}, - {file = "ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709"}, - {file = "ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8"}, - {file = "ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b"}, - {file = "ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875"}, - {file = "ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1"}, - {file = "ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81"}, - {file = "ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639"}, - {file = "ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345"}, - {file = "ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112"}, - {file = "ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f"}, - {file = "ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b"}, - {file = "ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d"}, + {file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a"}, + {file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442"}, + {file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e"}, + {file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586"}, + {file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb"}, + {file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c"}, + {file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a"}, + {file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3"}, + {file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045"}, + {file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57"}, + {file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184"}, + {file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb"}, + {file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1"}, + {file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b"}, + {file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93"}, + {file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a"}, + {file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e"}, + {file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873"}, ] [[package]] @@ -3209,7 +3209,7 @@ files = [ {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, ] -markers = {main = "python_version == \"3.9\""} +markers = {main = "python_version < \"3.10\""} [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] @@ -3222,4 +3222,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "4a962ca39b9cea87deb9842a3f4ae767462c0855eac728516bcb9d57ff49e27f" +content-hash = "cefd865ecfb393c896bb24337bb03cc794a695084f1eb68a0f0d0a9e041eb8f2" diff --git a/pyproject.toml b/pyproject.toml index 8a49126b29..cac472936f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -73,7 +73,7 @@ pytest-asyncio = "0.25.3" uvicorn = ">=0.32,<0.35" fastapi = "^0.115.5" pytest-httpx = ">=0.35" -ruff = "0.11.11" +ruff = "0.12.4" [tool.poetry.group.docs.dependencies] mkdocs = "^1.5.2" From 4123e73f5013adb03aa5bbb435ca5a5306c559b6 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 23 Jul 2025 13:01:22 -0400 Subject: [PATCH 57/77] add openssl dev dependency --- bbot/core/helpers/depsinstaller/installer.py | 38 ++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/bbot/core/helpers/depsinstaller/installer.py b/bbot/core/helpers/depsinstaller/installer.py index ffb7e2fb12..35d9652552 100644 --- a/bbot/core/helpers/depsinstaller/installer.py +++ b/bbot/core/helpers/depsinstaller/installer.py @@ -53,6 +53,44 @@ class DepsInstaller: "when": "ansible_facts['distribution'] == 'Fedora'", }, ], + # to compile just about any tool, we need the openssl dev headers + "openssl": [ + { + "name": "Install OpenSSL library and development headers (Debian/Ubuntu)", + "package": {"name": ["libssl-dev", "openssl"], "state": "present"}, + "become": True, + "when": "ansible_facts['os_family'] == 'Debian'", + "ignore_errors": True, + }, + { + "name": "Install OpenSSL library and development headers (RedHat/CentOS/Fedora)", + "package": {"name": ["openssl", "openssl-devel"], "state": "present"}, + "become": True, + "when": "ansible_facts['os_family'] == 'RedHat' or ansible_facts['os_family'] == 'Suse' ", + "ignore_errors": True, + }, + { + "name": "Install OpenSSL library and development headers (Arch)", + "package": {"name": ["openssl"], "state": "present"}, + "become": True, + "when": "ansible_facts['os_family'] == 'Archlinux'", + "ignore_errors": True, + }, + { + "name": "Install OpenSSL library and development headers (Alpine)", + "package": {"name": ["openssl", "openssl-dev"], "state": "present"}, + "become": True, + "when": "ansible_facts['os_family'] == 'Alpine'", + "ignore_errors": True, + }, + { + "name": "Install OpenSSL library and development headers (FreeBSD)", + "package": {"name": ["openssl"], "state": "present"}, + "become": True, + "when": "ansible_facts['os_family'] == 'FreeBSD'", + "ignore_errors": True, + }, + ], } def __init__(self, parent_helper): From 43ac113d91cd1e06b26da5300006fc3ec50baa03 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 23 Jul 2025 13:47:38 -0400 Subject: [PATCH 58/77] add xz --- bbot/core/helpers/depsinstaller/installer.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bbot/core/helpers/depsinstaller/installer.py b/bbot/core/helpers/depsinstaller/installer.py index 35d9652552..f5aac02d03 100644 --- a/bbot/core/helpers/depsinstaller/installer.py +++ b/bbot/core/helpers/depsinstaller/installer.py @@ -32,6 +32,20 @@ class DepsInstaller: "bash": "bash", "which": "which", "tar": "tar", + "xz": [ + { + "name": "Install xz-utils (Debian)", + "package": {"name": ["xz-utils"], "state": "present"}, + "become": True, + "when": "ansible_facts['os_family'] == 'Debian'", + }, + { + "name": "Install xz (Non-Debian)", + "package": {"name": ["xz"], "state": "present"}, + "become": True, + "when": "ansible_facts['os_family'] != 'Debian'", + }, + ], # debian why are you like this "7z": [ { From 4e56edda5b71a4e3c6d602423dd9641b4acd6b5f Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 23 Jul 2025 13:50:01 -0400 Subject: [PATCH 59/77] missing_ok=True --- bbot/core/helpers/misc.py | 3 +-- bbot/modules/nuclei.py | 2 +- bbot/modules/portscan.py | 2 +- bbot/modules/trufflehog.py | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/bbot/core/helpers/misc.py b/bbot/core/helpers/misc.py index ecd72ff512..2b1ce6acb8 100644 --- a/bbot/core/helpers/misc.py +++ b/bbot/core/helpers/misc.py @@ -1494,8 +1494,7 @@ def mkdir(path, check_writable=True, raise_error=True): if raise_error: raise errors.DirectoryCreationError(f"Failed to create directory at {path}: {e}") finally: - with suppress(Exception): - touchfile.unlink() + touchfile.unlink(missing_ok=True) return False diff --git a/bbot/modules/nuclei.py b/bbot/modules/nuclei.py index db74636712..739cd6f8b6 100644 --- a/bbot/modules/nuclei.py +++ b/bbot/modules/nuclei.py @@ -282,7 +282,7 @@ async def execute_nuclei(self, nuclei_input): else: self.debug("Nuclei result missing one or more required elements, not reporting. JSON: ({j})") finally: - stats_file.unlink() + stats_file.unlink(missing_ok=True) def log_nuclei_status(self, line): if self.silent: diff --git a/bbot/modules/portscan.py b/bbot/modules/portscan.py index 40a97219c7..314ee2f94f 100644 --- a/bbot/modules/portscan.py +++ b/bbot/modules/portscan.py @@ -144,7 +144,7 @@ async def masscan(self, targets, correlator, ping=False): emitted_hosts.add(host) finally: for file in (stats_file, target_file): - file.unlink() + file.unlink(missing_ok=True) async def make_targets(self, events, scanned_tracker): """ diff --git a/bbot/modules/trufflehog.py b/bbot/modules/trufflehog.py index a14d47164d..76fde9a3f8 100644 --- a/bbot/modules/trufflehog.py +++ b/bbot/modules/trufflehog.py @@ -198,7 +198,7 @@ async def execute_trufflehog(self, module, path=None, string=None): yield (decoder_name, detector_name, raw_result, rawv2_result, verified, source_metadata) finally: - stats_file.unlink() + stats_file.unlink(missing_ok=True) def log_trufflehog_status(self, path, line): try: From 1d0b3de79d892b679f59060a75219f85e2cfdce7 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 23 Jul 2025 13:55:12 -0400 Subject: [PATCH 60/77] fix string truncation bug --- bbot/core/helpers/misc.py | 4 +++- bbot/core/helpers/web/engine.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bbot/core/helpers/misc.py b/bbot/core/helpers/misc.py index ecd72ff512..dd1c3d425e 100644 --- a/bbot/core/helpers/misc.py +++ b/bbot/core/helpers/misc.py @@ -831,7 +831,9 @@ def rand_string(length=10, digits=True, numeric_only=False): return "".join(random.choice(pool) for _ in range(length)) -def truncate_string(s, n): +def truncate_string(s: str, n: int) -> str: + if not isinstance(s, str): + raise ValueError(f"Expected string, got {type(s)}") if len(s) > n: return s[: n - 3] + "..." else: diff --git a/bbot/core/helpers/web/engine.py b/bbot/core/helpers/web/engine.py index 9e1c173bc9..1c3ecc0f52 100644 --- a/bbot/core/helpers/web/engine.py +++ b/bbot/core/helpers/web/engine.py @@ -208,7 +208,7 @@ async def _acatch(self, url, raise_error): raise else: log.warning( - f"Invalid URL (possibly due to dangerous redirect) on request to : {url}: {truncate_string(e, 200)}" + f"Invalid URL (possibly due to dangerous redirect) on request to : {url}: {truncate_string(str(e), 200)}" ) log.trace(traceback.format_exc()) except ssl.SSLError as e: From 79aedafdbbb53c4c5f55c0e3d84b6bd01190b067 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 23 Jul 2025 14:14:04 -0400 Subject: [PATCH 61/77] fix tests --- bbot/core/helpers/misc.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bbot/core/helpers/misc.py b/bbot/core/helpers/misc.py index 2b1ce6acb8..ecd72ff512 100644 --- a/bbot/core/helpers/misc.py +++ b/bbot/core/helpers/misc.py @@ -1494,7 +1494,8 @@ def mkdir(path, check_writable=True, raise_error=True): if raise_error: raise errors.DirectoryCreationError(f"Failed to create directory at {path}: {e}") finally: - touchfile.unlink(missing_ok=True) + with suppress(Exception): + touchfile.unlink() return False From 92496eddb2d049c4b790cb5adaf141b9bfd2f360 Mon Sep 17 00:00:00 2001 From: blsaccess Date: Thu, 24 Jul 2025 00:28:51 +0000 Subject: [PATCH 62/77] Update trufflehog --- bbot/modules/trufflehog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbot/modules/trufflehog.py b/bbot/modules/trufflehog.py index 76fde9a3f8..b15441b56d 100644 --- a/bbot/modules/trufflehog.py +++ b/bbot/modules/trufflehog.py @@ -14,7 +14,7 @@ class trufflehog(BaseModule): } options = { - "version": "3.89.2", + "version": "3.90.1", "config": "", "only_verified": True, "concurrency": 8, From ecfc4611d18df9d9f15d97c2b7a0d6bc9478319a Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 24 Jul 2025 15:52:53 -0400 Subject: [PATCH 63/77] upgrade gowitness --- bbot/modules/gowitness.py | 36 +++++++++++-------- bbot/test/conftest.py | 2 +- .../module_tests/test_module_gowitness.py | 10 +++--- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/bbot/modules/gowitness.py b/bbot/modules/gowitness.py index ec1199bd37..ad1a07b828 100644 --- a/bbot/modules/gowitness.py +++ b/bbot/modules/gowitness.py @@ -16,7 +16,7 @@ class gowitness(BaseModule): flags = ["active", "safe", "web-screenshots"] meta = {"description": "Take screenshots of webpages", "created_date": "2022-07-08", "author": "@TheTechromancer"} options = { - "version": "2.4.2", + "version": "3.0.5", "threads": 0, "timeout": 10, "resolution_x": 1440, @@ -161,6 +161,7 @@ async def handle_batch(self, *events): key = e.data["url"] event_dict[key] = e stdin = "\n".join(list(event_dict)) + self.hugeinfo(f"Gowitness input: {stdin}") try: async for line in self.run_process_live(self.command, input=stdin, idle_timeout=self.idle_timeout): @@ -174,12 +175,14 @@ async def handle_batch(self, *events): new_screenshots = await self.get_new_screenshots() for filename, screenshot in new_screenshots.items(): url = screenshot["url"] + url = self.helpers.clean_url(url).geturl() final_url = screenshot["final_url"] filename = self.screenshot_path / screenshot["filename"] filename = filename.relative_to(self.scan.home) # NOTE: this prevents long filenames from causing problems in BBOT, but gowitness will still fail to save it. filename = self.helpers.truncate_filename(filename) webscreenshot_data = {"path": str(filename), "url": final_url} + self.hugewarning(event_dict) parent_event = event_dict[url] await self.emit_event( webscreenshot_data, @@ -191,11 +194,11 @@ async def handle_batch(self, *events): # emit URLs new_network_logs = await self.get_new_network_logs() for url, row in new_network_logs.items(): - ip = row["ip"] + ip = row["remote_ip"] status_code = row["status_code"] tags = [f"status-{status_code}", f"ip-{ip}", "spider-danger"] - _id = row["url_id"] + _id = row["result_id"] parent_url = self.screenshots_taken[_id] parent_event = event_dict[parent_url] if url and url.startswith("http"): @@ -210,7 +213,7 @@ async def handle_batch(self, *events): # emit technologies new_technologies = await self.get_new_technologies() for row in new_technologies.values(): - parent_id = row["url_id"] + parent_id = row["result_id"] parent_url = self.screenshots_taken[parent_id] parent_event = event_dict[parent_url] technology = row["value"] @@ -224,28 +227,29 @@ async def handle_batch(self, *events): def construct_command(self): # base executable - command = ["gowitness"] + command = ["gowitness", "scan"] # chrome path if self.chrome_path is not None: command += ["--chrome-path", str(self.chrome_path)] # db path - command += ["--db-path", str(self.db_path)] + command += ["--write-db"] + command += ["--write-db-uri", f"sqlite://{self.db_path}"] # screenshot path command += ["--screenshot-path", str(self.screenshot_path)] # user agent - command += ["--user-agent", f"{self.scan.useragent}"] + command += ["--chrome-user-agent", f"{self.scan.useragent}"] # proxy if self.proxy: - command += ["--proxy", str(self.proxy)] + command += ["--chrome-proxy", str(self.proxy)] # resolution - command += ["--resolution-x", str(self.resolution_x)] - command += ["--resolution-y", str(self.resolution_y)] - # input - command += ["file", "-f", "-"] + command += ["--chrome-window-x", str(self.resolution_x)] + command += ["--chrome-window-y", str(self.resolution_y)] # threads command += ["--threads", str(self.threads)] # timeout command += ["--timeout", str(self.timeout)] + # input + command += ["file", "-f", "-"] return command async def get_new_screenshots(self): @@ -254,8 +258,10 @@ async def get_new_screenshots(self): async with aiosqlite.connect(str(self.db_path)) as con: con.row_factory = aiosqlite.Row con.text_factory = self.helpers.smart_decode - async with con.execute("SELECT * FROM urls") as cur: + async with con.execute("SELECT * FROM results") as cur: + self.critical(f"CUR: {cur}") async for row in cur: + self.critical(f"SCREENSHOT: {row}") row = dict(row) _id = row["id"] if _id not in self.screenshots_taken: @@ -270,8 +276,9 @@ async def get_new_network_logs(self): con.row_factory = aiosqlite.Row async with con.execute("SELECT * FROM network_logs") as cur: async for row in cur: + self.critical(f"NETWORK LOG: {row}") row = dict(row) - url = row["final_url"] + url = row["url"] if url not in self.connections_logged: self.connections_logged.add(url) network_logs[url] = row @@ -284,6 +291,7 @@ async def get_new_technologies(self): con.row_factory = aiosqlite.Row async with con.execute("SELECT * FROM technologies") as cur: async for row in cur: + self.critical(f"TECHNOLOGY: {row}") _id = row["id"] if _id not in self.technologies_found: self.technologies_found.add(_id) diff --git a/bbot/test/conftest.py b/bbot/test/conftest.py index af32987544..2b39ae2e2b 100644 --- a/bbot/test/conftest.py +++ b/bbot/test/conftest.py @@ -1,8 +1,8 @@ import os import ssl import time -import shutil import pytest +import shutil import asyncio import logging from pathlib import Path diff --git a/bbot/test/test_step_2/module_tests/test_module_gowitness.py b/bbot/test/test_step_2/module_tests/test_module_gowitness.py index 47246f931e..528cc3abec 100644 --- a/bbot/test/test_step_2/module_tests/test_module_gowitness.py +++ b/bbot/test/test_step_2/module_tests/test_module_gowitness.py @@ -51,9 +51,9 @@ def check(self, module_test, events): ) screenshots_path = self.home_dir / "scans" / module_test.scan.name / "gowitness" / "screenshots" - screenshots = list(screenshots_path.glob("*.png")) + screenshots = list(screenshots_path.glob("*.jpeg")) assert len(screenshots) == 1, ( - f"{len(screenshots):,} .png files found at {screenshots_path}, should have been 1" + f"{len(screenshots):,} .jpeg files found at {screenshots_path}, should have been 1" ) assert 1 == len([e for e in events if e.type == "URL" and e.data == "http://127.0.0.1:8888/"]) assert 1 == len( @@ -74,9 +74,9 @@ class TestGowitness_Social(TestGowitness): def check(self, module_test, events): screenshots_path = self.home_dir / "scans" / module_test.scan.name / "gowitness" / "screenshots" - screenshots = list(screenshots_path.glob("*.png")) + screenshots = list(screenshots_path.glob("*.jpeg")) assert len(screenshots) == 2, ( - f"{len(screenshots):,} .png files found at {screenshots_path}, should have been 2" + f"{len(screenshots):,} .jpeg files found at {screenshots_path}, should have been 2" ) assert 2 == len([e for e in events if e.type == "WEBSCREENSHOT"]) assert 1 == len( @@ -86,7 +86,7 @@ def check(self, module_test, events): if e.type == "WEBSCREENSHOT" and e.data["url"] == "http://127.0.0.1:8888/blacklanternsecurity" ] ) - assert 1 == len( + assert len( [ e for e in events From 49953031d556efd7acb07189cb37691302732b1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 05:59:23 +0000 Subject: [PATCH 64/77] Bump lxml from 5.4.0 to 6.0.0 Bumps [lxml](https://github.com/lxml/lxml) from 5.4.0 to 6.0.0. - [Release notes](https://github.com/lxml/lxml/releases) - [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt) - [Commits](https://github.com/lxml/lxml/compare/lxml-5.4.0...lxml-6.0.0) --- updated-dependencies: - dependency-name: lxml dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- poetry.lock | 233 ++++++++++++++++++++----------------------------- pyproject.toml | 2 +- 2 files changed, 98 insertions(+), 137 deletions(-) diff --git a/poetry.lock b/poetry.lock index 99d86aa92f..47080d8aca 100644 --- a/poetry.lock +++ b/poetry.lock @@ -897,144 +897,106 @@ files = [ [[package]] name = "lxml" -version = "5.4.0" +version = "6.0.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["main"] files = [ - {file = "lxml-5.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e7bc6df34d42322c5289e37e9971d6ed114e3776b45fa879f734bded9d1fea9c"}, - {file = "lxml-5.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6854f8bd8a1536f8a1d9a3655e6354faa6406621cf857dc27b681b69860645c7"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:696ea9e87442467819ac22394ca36cb3d01848dad1be6fac3fb612d3bd5a12cf"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ef80aeac414f33c24b3815ecd560cee272786c3adfa5f31316d8b349bfade28"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b9c2754cef6963f3408ab381ea55f47dabc6f78f4b8ebb0f0b25cf1ac1f7609"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7a62cc23d754bb449d63ff35334acc9f5c02e6dae830d78dab4dd12b78a524f4"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f82125bc7203c5ae8633a7d5d20bcfdff0ba33e436e4ab0abc026a53a8960b7"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:b67319b4aef1a6c56576ff544b67a2a6fbd7eaee485b241cabf53115e8908b8f"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:a8ef956fce64c8551221f395ba21d0724fed6b9b6242ca4f2f7beb4ce2f41997"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:0a01ce7d8479dce84fc03324e3b0c9c90b1ece9a9bb6a1b6c9025e7e4520e78c"}, - {file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:91505d3ddebf268bb1588eb0f63821f738d20e1e7f05d3c647a5ca900288760b"}, - {file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a3bcdde35d82ff385f4ede021df801b5c4a5bcdfb61ea87caabcebfc4945dc1b"}, - {file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:aea7c06667b987787c7d1f5e1dfcd70419b711cdb47d6b4bb4ad4b76777a0563"}, - {file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:a7fb111eef4d05909b82152721a59c1b14d0f365e2be4c742a473c5d7372f4f5"}, - {file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43d549b876ce64aa18b2328faff70f5877f8c6dede415f80a2f799d31644d776"}, - {file = "lxml-5.4.0-cp310-cp310-win32.whl", hash = "sha256:75133890e40d229d6c5837b0312abbe5bac1c342452cf0e12523477cd3aa21e7"}, - {file = "lxml-5.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:de5b4e1088523e2b6f730d0509a9a813355b7f5659d70eb4f319c76beea2e250"}, - {file = "lxml-5.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:98a3912194c079ef37e716ed228ae0dcb960992100461b704aea4e93af6b0bb9"}, - {file = "lxml-5.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ea0252b51d296a75f6118ed0d8696888e7403408ad42345d7dfd0d1e93309a7"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b92b69441d1bd39f4940f9eadfa417a25862242ca2c396b406f9272ef09cdcaa"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20e16c08254b9b6466526bc1828d9370ee6c0d60a4b64836bc3ac2917d1e16df"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7605c1c32c3d6e8c990dd28a0970a3cbbf1429d5b92279e37fda05fb0c92190e"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ecf4c4b83f1ab3d5a7ace10bafcb6f11df6156857a3c418244cef41ca9fa3e44"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cef4feae82709eed352cd7e97ae062ef6ae9c7b5dbe3663f104cd2c0e8d94ba"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:df53330a3bff250f10472ce96a9af28628ff1f4efc51ccba351a8820bca2a8ba"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:aefe1a7cb852fa61150fcb21a8c8fcea7b58c4cb11fbe59c97a0a4b31cae3c8c"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ef5a7178fcc73b7d8c07229e89f8eb45b2908a9238eb90dcfc46571ccf0383b8"}, - {file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d2ed1b3cb9ff1c10e6e8b00941bb2e5bb568b307bfc6b17dffbbe8be5eecba86"}, - {file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:72ac9762a9f8ce74c9eed4a4e74306f2f18613a6b71fa065495a67ac227b3056"}, - {file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f5cb182f6396706dc6cc1896dd02b1c889d644c081b0cdec38747573db88a7d7"}, - {file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:3a3178b4873df8ef9457a4875703488eb1622632a9cee6d76464b60e90adbfcd"}, - {file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e094ec83694b59d263802ed03a8384594fcce477ce484b0cbcd0008a211ca751"}, - {file = "lxml-5.4.0-cp311-cp311-win32.whl", hash = "sha256:4329422de653cdb2b72afa39b0aa04252fca9071550044904b2e7036d9d97fe4"}, - {file = "lxml-5.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd3be6481ef54b8cfd0e1e953323b7aa9d9789b94842d0e5b142ef4bb7999539"}, - {file = "lxml-5.4.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b5aff6f3e818e6bdbbb38e5967520f174b18f539c2b9de867b1e7fde6f8d95a4"}, - {file = "lxml-5.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942a5d73f739ad7c452bf739a62a0f83e2578afd6b8e5406308731f4ce78b16d"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:460508a4b07364d6abf53acaa0a90b6d370fafde5693ef37602566613a9b0779"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:529024ab3a505fed78fe3cc5ddc079464e709f6c892733e3f5842007cec8ac6e"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ca56ebc2c474e8f3d5761debfd9283b8b18c76c4fc0967b74aeafba1f5647f9"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a81e1196f0a5b4167a8dafe3a66aa67c4addac1b22dc47947abd5d5c7a3f24b5"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00b8686694423ddae324cf614e1b9659c2edb754de617703c3d29ff568448df5"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c5681160758d3f6ac5b4fea370495c48aac0989d6a0f01bb9a72ad8ef5ab75c4"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:2dc191e60425ad70e75a68c9fd90ab284df64d9cd410ba8d2b641c0c45bc006e"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:67f779374c6b9753ae0a0195a892a1c234ce8416e4448fe1e9f34746482070a7"}, - {file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:79d5bfa9c1b455336f52343130b2067164040604e41f6dc4d8313867ed540079"}, - {file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3d3c30ba1c9b48c68489dc1829a6eede9873f52edca1dda900066542528d6b20"}, - {file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1af80c6316ae68aded77e91cd9d80648f7dd40406cef73df841aa3c36f6907c8"}, - {file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4d885698f5019abe0de3d352caf9466d5de2baded00a06ef3f1216c1a58ae78f"}, - {file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea53d51859b6c64e7c51d522c03cc2c48b9b5d6172126854cc7f01aa11f52bc"}, - {file = "lxml-5.4.0-cp312-cp312-win32.whl", hash = "sha256:d90b729fd2732df28130c064aac9bb8aff14ba20baa4aee7bd0795ff1187545f"}, - {file = "lxml-5.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1dc4ca99e89c335a7ed47d38964abcb36c5910790f9bd106f2a8fa2ee0b909d2"}, - {file = "lxml-5.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:773e27b62920199c6197130632c18fb7ead3257fce1ffb7d286912e56ddb79e0"}, - {file = "lxml-5.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ce9c671845de9699904b1e9df95acfe8dfc183f2310f163cdaa91a3535af95de"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9454b8d8200ec99a224df8854786262b1bd6461f4280064c807303c642c05e76"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cccd007d5c95279e529c146d095f1d39ac05139de26c098166c4beb9374b0f4d"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0fce1294a0497edb034cb416ad3e77ecc89b313cff7adbee5334e4dc0d11f422"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:24974f774f3a78ac12b95e3a20ef0931795ff04dbb16db81a90c37f589819551"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:497cab4d8254c2a90bf988f162ace2ddbfdd806fce3bda3f581b9d24c852e03c"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:e794f698ae4c5084414efea0f5cc9f4ac562ec02d66e1484ff822ef97c2cadff"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:2c62891b1ea3094bb12097822b3d44b93fc6c325f2043c4d2736a8ff09e65f60"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:142accb3e4d1edae4b392bd165a9abdee8a3c432a2cca193df995bc3886249c8"}, - {file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1a42b3a19346e5601d1b8296ff6ef3d76038058f311902edd574461e9c036982"}, - {file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4291d3c409a17febf817259cb37bc62cb7eb398bcc95c1356947e2871911ae61"}, - {file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4f5322cf38fe0e21c2d73901abf68e6329dc02a4994e483adbcf92b568a09a54"}, - {file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0be91891bdb06ebe65122aa6bf3fc94489960cf7e03033c6f83a90863b23c58b"}, - {file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:15a665ad90054a3d4f397bc40f73948d48e36e4c09f9bcffc7d90c87410e478a"}, - {file = "lxml-5.4.0-cp313-cp313-win32.whl", hash = "sha256:d5663bc1b471c79f5c833cffbc9b87d7bf13f87e055a5c86c363ccd2348d7e82"}, - {file = "lxml-5.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:bcb7a1096b4b6b24ce1ac24d4942ad98f983cd3810f9711bcd0293f43a9d8b9f"}, - {file = "lxml-5.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7be701c24e7f843e6788353c055d806e8bd8466b52907bafe5d13ec6a6dbaecd"}, - {file = "lxml-5.4.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb54f7c6bafaa808f27166569b1511fc42701a7713858dddc08afdde9746849e"}, - {file = "lxml-5.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97dac543661e84a284502e0cf8a67b5c711b0ad5fb661d1bd505c02f8cf716d7"}, - {file = "lxml-5.4.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:c70e93fba207106cb16bf852e421c37bbded92acd5964390aad07cb50d60f5cf"}, - {file = "lxml-5.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9c886b481aefdf818ad44846145f6eaf373a20d200b5ce1a5c8e1bc2d8745410"}, - {file = "lxml-5.4.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:fa0e294046de09acd6146be0ed6727d1f42ded4ce3ea1e9a19c11b6774eea27c"}, - {file = "lxml-5.4.0-cp36-cp36m-win32.whl", hash = "sha256:61c7bbf432f09ee44b1ccaa24896d21075e533cd01477966a5ff5a71d88b2f56"}, - {file = "lxml-5.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7ce1a171ec325192c6a636b64c94418e71a1964f56d002cc28122fceff0b6121"}, - {file = "lxml-5.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:795f61bcaf8770e1b37eec24edf9771b307df3af74d1d6f27d812e15a9ff3872"}, - {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29f451a4b614a7b5b6c2e043d7b64a15bd8304d7e767055e8ab68387a8cacf4e"}, - {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:891f7f991a68d20c75cb13c5c9142b2a3f9eb161f1f12a9489c82172d1f133c0"}, - {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4aa412a82e460571fad592d0f93ce9935a20090029ba08eca05c614f99b0cc92"}, - {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:ac7ba71f9561cd7d7b55e1ea5511543c0282e2b6450f122672a2694621d63b7e"}, - {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:c5d32f5284012deaccd37da1e2cd42f081feaa76981f0eaa474351b68df813c5"}, - {file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:ce31158630a6ac85bddd6b830cffd46085ff90498b397bd0a259f59d27a12188"}, - {file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:31e63621e073e04697c1b2d23fcb89991790eef370ec37ce4d5d469f40924ed6"}, - {file = "lxml-5.4.0-cp37-cp37m-win32.whl", hash = "sha256:be2ba4c3c5b7900246a8f866580700ef0d538f2ca32535e991027bdaba944063"}, - {file = "lxml-5.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:09846782b1ef650b321484ad429217f5154da4d6e786636c38e434fa32e94e49"}, - {file = "lxml-5.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eaf24066ad0b30917186420d51e2e3edf4b0e2ea68d8cd885b14dc8afdcf6556"}, - {file = "lxml-5.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b31a3a77501d86d8ade128abb01082724c0dfd9524f542f2f07d693c9f1175f"}, - {file = "lxml-5.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e108352e203c7afd0eb91d782582f00a0b16a948d204d4dec8565024fafeea5"}, - {file = "lxml-5.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11a96c3b3f7551c8a8109aa65e8594e551d5a84c76bf950da33d0fb6dfafab7"}, - {file = "lxml-5.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:ca755eebf0d9e62d6cb013f1261e510317a41bf4650f22963474a663fdfe02aa"}, - {file = "lxml-5.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4cd915c0fb1bed47b5e6d6edd424ac25856252f09120e3e8ba5154b6b921860e"}, - {file = "lxml-5.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:226046e386556a45ebc787871d6d2467b32c37ce76c2680f5c608e25823ffc84"}, - {file = "lxml-5.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b108134b9667bcd71236c5a02aad5ddd073e372fb5d48ea74853e009fe38acb6"}, - {file = "lxml-5.4.0-cp38-cp38-win32.whl", hash = "sha256:1320091caa89805df7dcb9e908add28166113dcd062590668514dbd510798c88"}, - {file = "lxml-5.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:073eb6dcdf1f587d9b88c8c93528b57eccda40209cf9be549d469b942b41d70b"}, - {file = "lxml-5.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bda3ea44c39eb74e2488297bb39d47186ed01342f0022c8ff407c250ac3f498e"}, - {file = "lxml-5.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9ceaf423b50ecfc23ca00b7f50b64baba85fb3fb91c53e2c9d00bc86150c7e40"}, - {file = "lxml-5.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:664cdc733bc87449fe781dbb1f309090966c11cc0c0cd7b84af956a02a8a4729"}, - {file = "lxml-5.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67ed8a40665b84d161bae3181aa2763beea3747f748bca5874b4af4d75998f87"}, - {file = "lxml-5.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b4a3bd174cc9cdaa1afbc4620c049038b441d6ba07629d89a83b408e54c35cd"}, - {file = "lxml-5.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:b0989737a3ba6cf2a16efb857fb0dfa20bc5c542737fddb6d893fde48be45433"}, - {file = "lxml-5.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:dc0af80267edc68adf85f2a5d9be1cdf062f973db6790c1d065e45025fa26140"}, - {file = "lxml-5.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:639978bccb04c42677db43c79bdaa23785dc7f9b83bfd87570da8207872f1ce5"}, - {file = "lxml-5.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a99d86351f9c15e4a901fc56404b485b1462039db59288b203f8c629260a142"}, - {file = "lxml-5.4.0-cp39-cp39-win32.whl", hash = "sha256:3e6d5557989cdc3ebb5302bbdc42b439733a841891762ded9514e74f60319ad6"}, - {file = "lxml-5.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:a8c9b7f16b63e65bbba889acb436a1034a82d34fa09752d754f88d708eca80e1"}, - {file = "lxml-5.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1b717b00a71b901b4667226bba282dd462c42ccf618ade12f9ba3674e1fabc55"}, - {file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27a9ded0f0b52098ff89dd4c418325b987feed2ea5cc86e8860b0f844285d740"}, - {file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7ce10634113651d6f383aa712a194179dcd496bd8c41e191cec2099fa09de5"}, - {file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53370c26500d22b45182f98847243efb518d268374a9570409d2e2276232fd37"}, - {file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c6364038c519dffdbe07e3cf42e6a7f8b90c275d4d1617a69bb59734c1a2d571"}, - {file = "lxml-5.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b12cb6527599808ada9eb2cd6e0e7d3d8f13fe7bbb01c6311255a15ded4c7ab4"}, - {file = "lxml-5.4.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5f11a1526ebd0dee85e7b1e39e39a0cc0d9d03fb527f56d8457f6df48a10dc0c"}, - {file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48b4afaf38bf79109bb060d9016fad014a9a48fb244e11b94f74ae366a64d252"}, - {file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de6f6bb8a7840c7bf216fb83eec4e2f79f7325eca8858167b68708b929ab2172"}, - {file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5cca36a194a4eb4e2ed6be36923d3cffd03dcdf477515dea687185506583d4c9"}, - {file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b7c86884ad23d61b025989d99bfdd92a7351de956e01c61307cb87035960bcb1"}, - {file = "lxml-5.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:53d9469ab5460402c19553b56c3648746774ecd0681b1b27ea74d5d8a3ef5590"}, - {file = "lxml-5.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:56dbdbab0551532bb26c19c914848d7251d73edb507c3079d6805fa8bba5b706"}, - {file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14479c2ad1cb08b62bb941ba8e0e05938524ee3c3114644df905d2331c76cd57"}, - {file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32697d2ea994e0db19c1df9e40275ffe84973e4232b5c274f47e7c1ec9763cdd"}, - {file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:24f6df5f24fc3385f622c0c9d63fe34604893bc1a5bdbb2dbf5870f85f9a404a"}, - {file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:151d6c40bc9db11e960619d2bf2ec5829f0aaffb10b41dcf6ad2ce0f3c0b2325"}, - {file = "lxml-5.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4025bf2884ac4370a3243c5aa8d66d3cb9e15d3ddd0af2d796eccc5f0244390e"}, - {file = "lxml-5.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9459e6892f59ecea2e2584ee1058f5d8f629446eab52ba2305ae13a32a059530"}, - {file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47fb24cc0f052f0576ea382872b3fc7e1f7e3028e53299ea751839418ade92a6"}, - {file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50441c9de951a153c698b9b99992e806b71c1f36d14b154592580ff4a9d0d877"}, - {file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ab339536aa798b1e17750733663d272038bf28069761d5be57cb4a9b0137b4f8"}, - {file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9776af1aad5a4b4a1317242ee2bea51da54b2a7b7b48674be736d463c999f37d"}, - {file = "lxml-5.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:63e7968ff83da2eb6fdda967483a7a023aa497d85ad8f05c3ad9b1f2e8c84987"}, - {file = "lxml-5.4.0.tar.gz", hash = "sha256:d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd"}, + {file = "lxml-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:35bc626eec405f745199200ccb5c6b36f202675d204aa29bb52e27ba2b71dea8"}, + {file = "lxml-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:246b40f8a4aec341cbbf52617cad8ab7c888d944bfe12a6abd2b1f6cfb6f6082"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:2793a627e95d119e9f1e19720730472f5543a6d84c50ea33313ce328d870f2dd"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:46b9ed911f36bfeb6338e0b482e7fe7c27d362c52fde29f221fddbc9ee2227e7"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b4790b558bee331a933e08883c423f65bbcd07e278f91b2272489e31ab1e2b4"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e2030956cf4886b10be9a0285c6802e078ec2391e1dd7ff3eb509c2c95a69b76"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d23854ecf381ab1facc8f353dcd9adeddef3652268ee75297c1164c987c11dc"}, + {file = "lxml-6.0.0-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:43fe5af2d590bf4691531b1d9a2495d7aab2090547eaacd224a3afec95706d76"}, + {file = "lxml-6.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74e748012f8c19b47f7d6321ac929a9a94ee92ef12bc4298c47e8b7219b26541"}, + {file = "lxml-6.0.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:43cfbb7db02b30ad3926e8fceaef260ba2fb7df787e38fa2df890c1ca7966c3b"}, + {file = "lxml-6.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:34190a1ec4f1e84af256495436b2d196529c3f2094f0af80202947567fdbf2e7"}, + {file = "lxml-6.0.0-cp310-cp310-win32.whl", hash = "sha256:5967fe415b1920a3877a4195e9a2b779249630ee49ece22021c690320ff07452"}, + {file = "lxml-6.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3389924581d9a770c6caa4df4e74b606180869043b9073e2cec324bad6e306e"}, + {file = "lxml-6.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:522fe7abb41309e9543b0d9b8b434f2b630c5fdaf6482bee642b34c8c70079c8"}, + {file = "lxml-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ee56288d0df919e4aac43b539dd0e34bb55d6a12a6562038e8d6f3ed07f9e36"}, + {file = "lxml-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8dd6dd0e9c1992613ccda2bcb74fc9d49159dbe0f0ca4753f37527749885c25"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:d7ae472f74afcc47320238b5dbfd363aba111a525943c8a34a1b657c6be934c3"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5592401cdf3dc682194727c1ddaa8aa0f3ddc57ca64fd03226a430b955eab6f6"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58ffd35bd5425c3c3b9692d078bf7ab851441434531a7e517c4984d5634cd65b"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f720a14aa102a38907c6d5030e3d66b3b680c3e6f6bc95473931ea3c00c59967"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c2a5e8d207311a0170aca0eb6b160af91adc29ec121832e4ac151a57743a1e1e"}, + {file = "lxml-6.0.0-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:2dd1cc3ea7e60bfb31ff32cafe07e24839df573a5e7c2d33304082a5019bcd58"}, + {file = "lxml-6.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cfcf84f1defed7e5798ef4f88aa25fcc52d279be731ce904789aa7ccfb7e8d2"}, + {file = "lxml-6.0.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:a52a4704811e2623b0324a18d41ad4b9fabf43ce5ff99b14e40a520e2190c851"}, + {file = "lxml-6.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c16304bba98f48a28ae10e32a8e75c349dd742c45156f297e16eeb1ba9287a1f"}, + {file = "lxml-6.0.0-cp311-cp311-win32.whl", hash = "sha256:f8d19565ae3eb956d84da3ef367aa7def14a2735d05bd275cd54c0301f0d0d6c"}, + {file = "lxml-6.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b2d71cdefda9424adff9a3607ba5bbfc60ee972d73c21c7e3c19e71037574816"}, + {file = "lxml-6.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:8a2e76efbf8772add72d002d67a4c3d0958638696f541734304c7f28217a9cab"}, + {file = "lxml-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78718d8454a6e928470d511bf8ac93f469283a45c354995f7d19e77292f26108"}, + {file = "lxml-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:84ef591495ffd3f9dcabffd6391db7bb70d7230b5c35ef5148354a134f56f2be"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:2930aa001a3776c3e2601cb8e0a15d21b8270528d89cc308be4843ade546b9ab"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:219e0431ea8006e15005767f0351e3f7f9143e793e58519dc97fe9e07fae5563"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bd5913b4972681ffc9718bc2d4c53cde39ef81415e1671ff93e9aa30b46595e7"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:390240baeb9f415a82eefc2e13285016f9c8b5ad71ec80574ae8fa9605093cd7"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux_2_27_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d6e200909a119626744dd81bae409fc44134389e03fbf1d68ed2a55a2fb10991"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ca50bd612438258a91b5b3788c6621c1f05c8c478e7951899f492be42defc0da"}, + {file = "lxml-6.0.0-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:c24b8efd9c0f62bad0439283c2c795ef916c5a6b75f03c17799775c7ae3c0c9e"}, + {file = "lxml-6.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:afd27d8629ae94c5d863e32ab0e1d5590371d296b87dae0a751fb22bf3685741"}, + {file = "lxml-6.0.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:54c4855eabd9fc29707d30141be99e5cd1102e7d2258d2892314cf4c110726c3"}, + {file = "lxml-6.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c907516d49f77f6cd8ead1322198bdfd902003c3c330c77a1c5f3cc32a0e4d16"}, + {file = "lxml-6.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36531f81c8214e293097cd2b7873f178997dae33d3667caaae8bdfb9666b76c0"}, + {file = "lxml-6.0.0-cp312-cp312-win32.whl", hash = "sha256:690b20e3388a7ec98e899fd54c924e50ba6693874aa65ef9cb53de7f7de9d64a"}, + {file = "lxml-6.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:310b719b695b3dd442cdfbbe64936b2f2e231bb91d998e99e6f0daf991a3eba3"}, + {file = "lxml-6.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:8cb26f51c82d77483cdcd2b4a53cda55bbee29b3c2f3ddeb47182a2a9064e4eb"}, + {file = "lxml-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6da7cd4f405fd7db56e51e96bff0865b9853ae70df0e6720624049da76bde2da"}, + {file = "lxml-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b34339898bb556a2351a1830f88f751679f343eabf9cf05841c95b165152c9e7"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:51a5e4c61a4541bd1cd3ba74766d0c9b6c12d6a1a4964ef60026832aac8e79b3"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d18a25b19ca7307045581b18b3ec9ead2b1db5ccd8719c291f0cd0a5cec6cb81"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d4f0c66df4386b75d2ab1e20a489f30dc7fd9a06a896d64980541506086be1f1"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9f4b481b6cc3a897adb4279216695150bbe7a44c03daba3c894f49d2037e0a24"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux_2_27_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8a78d6c9168f5bcb20971bf3329c2b83078611fbe1f807baadc64afc70523b3a"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae06fbab4f1bb7db4f7c8ca9897dc8db4447d1a2b9bee78474ad403437bcc29"}, + {file = "lxml-6.0.0-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:1fa377b827ca2023244a06554c6e7dc6828a10aaf74ca41965c5d8a4925aebb4"}, + {file = "lxml-6.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1676b56d48048a62ef77a250428d1f31f610763636e0784ba67a9740823988ca"}, + {file = "lxml-6.0.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:0e32698462aacc5c1cf6bdfebc9c781821b7e74c79f13e5ffc8bfe27c42b1abf"}, + {file = "lxml-6.0.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4d6036c3a296707357efb375cfc24bb64cd955b9ec731abf11ebb1e40063949f"}, + {file = "lxml-6.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7488a43033c958637b1a08cddc9188eb06d3ad36582cebc7d4815980b47e27ef"}, + {file = "lxml-6.0.0-cp313-cp313-win32.whl", hash = "sha256:5fcd7d3b1d8ecb91445bd71b9c88bdbeae528fefee4f379895becfc72298d181"}, + {file = "lxml-6.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:2f34687222b78fff795feeb799a7d44eca2477c3d9d3a46ce17d51a4f383e32e"}, + {file = "lxml-6.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:21db1ec5525780fd07251636eb5f7acb84003e9382c72c18c542a87c416ade03"}, + {file = "lxml-6.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4eb114a0754fd00075c12648d991ec7a4357f9cb873042cc9a77bf3a7e30c9db"}, + {file = "lxml-6.0.0-cp38-cp38-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:7da298e1659e45d151b4028ad5c7974917e108afb48731f4ed785d02b6818994"}, + {file = "lxml-6.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7bf61bc4345c1895221357af8f3e89f8c103d93156ef326532d35c707e2fb19d"}, + {file = "lxml-6.0.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63b634facdfbad421d4b61c90735688465d4ab3a8853ac22c76ccac2baf98d97"}, + {file = "lxml-6.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e380e85b93f148ad28ac15f8117e2fd8e5437aa7732d65e260134f83ce67911b"}, + {file = "lxml-6.0.0-cp38-cp38-win32.whl", hash = "sha256:185efc2fed89cdd97552585c624d3c908f0464090f4b91f7d92f8ed2f3b18f54"}, + {file = "lxml-6.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:f97487996a39cb18278ca33f7be98198f278d0bc3c5d0fd4d7b3d63646ca3c8a"}, + {file = "lxml-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85b14a4689d5cff426c12eefe750738648706ea2753b20c2f973b2a000d3d261"}, + {file = "lxml-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f64ccf593916e93b8d36ed55401bb7fe9c7d5de3180ce2e10b08f82a8f397316"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:b372d10d17a701b0945f67be58fae4664fd056b85e0ff0fbc1e6c951cdbc0512"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a674c0948789e9136d69065cc28009c1b1874c6ea340253db58be7622ce6398f"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:edf6e4c8fe14dfe316939711e3ece3f9a20760aabf686051b537a7562f4da91a"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:048a930eb4572829604982e39a0c7289ab5dc8abc7fc9f5aabd6fbc08c154e93"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c0b5fa5eda84057a4f1bbb4bb77a8c28ff20ae7ce211588d698ae453e13c6281"}, + {file = "lxml-6.0.0-cp39-cp39-manylinux_2_31_armv7l.whl", hash = "sha256:c352fc8f36f7e9727db17adbf93f82499457b3d7e5511368569b4c5bd155a922"}, + {file = "lxml-6.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8db5dc617cb937ae17ff3403c3a70a7de9df4852a046f93e71edaec678f721d0"}, + {file = "lxml-6.0.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:2181e4b1d07dde53986023482673c0f1fba5178ef800f9ab95ad791e8bdded6a"}, + {file = "lxml-6.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b3c98d5b24c6095e89e03d65d5c574705be3d49c0d8ca10c17a8a4b5201b72f5"}, + {file = "lxml-6.0.0-cp39-cp39-win32.whl", hash = "sha256:04d67ceee6db4bcb92987ccb16e53bef6b42ced872509f333c04fb58a3315256"}, + {file = "lxml-6.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:e0b1520ef900e9ef62e392dd3d7ae4f5fa224d1dd62897a792cf353eb20b6cae"}, + {file = "lxml-6.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:e35e8aaaf3981489f42884b59726693de32dabfc438ac10ef4eb3409961fd402"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:dbdd7679a6f4f08152818043dbb39491d1af3332128b3752c3ec5cebc0011a72"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:40442e2a4456e9910875ac12951476d36c0870dcb38a68719f8c4686609897c4"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:db0efd6bae1c4730b9c863fc4f5f3c0fa3e8f05cae2c44ae141cb9dfc7d091dc"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ab542c91f5a47aaa58abdd8ea84b498e8e49fe4b883d67800017757a3eb78e8"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:013090383863b72c62a702d07678b658fa2567aa58d373d963cca245b017e065"}, + {file = "lxml-6.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c86df1c9af35d903d2b52d22ea3e66db8058d21dc0f59842ca5deb0595921141"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4337e4aec93b7c011f7ee2e357b0d30562edd1955620fdd4aeab6aacd90d43c5"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ae74f7c762270196d2dda56f8dd7309411f08a4084ff2dfcc0b095a218df2e06"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:059c4cbf3973a621b62ea3132934ae737da2c132a788e6cfb9b08d63a0ef73f9"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:17f090a9bc0ce8da51a5632092f98a7e7f84bca26f33d161a98b57f7fb0004ca"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9da022c14baeec36edfcc8daf0e281e2f55b950249a455776f0d1adeeada4734"}, + {file = "lxml-6.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a55da151d0b0c6ab176b4e761670ac0e2667817a1e0dadd04a01d0561a219349"}, + {file = "lxml-6.0.0.tar.gz", hash = "sha256:032e65120339d44cdc3efc326c9f660f5f7205f3a535c1fdbf898b29ea01fb72"}, ] [package.extras] @@ -1042,7 +1004,6 @@ cssselect = ["cssselect (>=0.7)"] html-clean = ["lxml_html_clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=3.0.11,<3.1.0)"] [[package]] name = "markdown" @@ -3222,4 +3183,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "cefd865ecfb393c896bb24337bb03cc794a695084f1eb68a0f0d0a9e041eb8f2" +content-hash = "3773f5f67a4346d810091386f46565c054a0c2851234d92f4e62ff9c39f0a37e" diff --git a/pyproject.toml b/pyproject.toml index cac472936f..19208ca464 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ tabulate = "0.8.10" websockets = ">=14.0.0,<16.0.0" pyjwt = "^2.7.0" beautifulsoup4 = "^4.12.2" -lxml = ">=4.9.2,<6.0.0" +lxml = ">=4.9.2,<7.0.0" dnspython = "^2.4.2" cachetools = ">=5.3.2,<7.0.0" socksio = "^1.0.0" From f1b977f42a37d359841e54717779b0e5b947df62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 06:03:41 +0000 Subject: [PATCH 65/77] Bump mkdocs-material from 9.6.12 to 9.6.16 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.6.12 to 9.6.16. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.12...9.6.16) --- updated-dependencies: - dependency-name: mkdocs-material dependency-version: 9.6.16 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 99d86aa92f..9c3c650786 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1258,14 +1258,14 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.6.12" +version = "9.6.16" description = "Documentation that simply works" optional = false python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e"}, - {file = "mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473"}, + {file = "mkdocs_material-9.6.16-py3-none-any.whl", hash = "sha256:8d1a1282b892fe1fdf77bfeb08c485ba3909dd743c9ba69a19a40f637c6ec18c"}, + {file = "mkdocs_material-9.6.16.tar.gz", hash = "sha256:d07011df4a5c02ee0877496d9f1bfc986cfb93d964799b032dd99fe34c0e9d19"}, ] [package.dependencies] From cab7a6e94c11c7ddd6de5a43a120bf1b41e9d30e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 06:08:33 +0000 Subject: [PATCH 66/77] Bump orjson from 3.10.16 to 3.11.1 Bumps [orjson](https://github.com/ijl/orjson) from 3.10.16 to 3.11.1. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.16...3.11.1) --- updated-dependencies: - dependency-name: orjson dependency-version: 3.11.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 153 ++++++++++++++++++++++++++++------------------------ 1 file changed, 84 insertions(+), 69 deletions(-) diff --git a/poetry.lock b/poetry.lock index 99d86aa92f..c43e277c30 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1483,80 +1483,95 @@ files = [ [[package]] name = "orjson" -version = "3.10.16" +version = "3.11.1" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "orjson-3.10.16-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4cb473b8e79154fa778fb56d2d73763d977be3dcc140587e07dbc545bbfc38f8"}, - {file = "orjson-3.10.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:622a8e85eeec1948690409a19ca1c7d9fd8ff116f4861d261e6ae2094fe59a00"}, - {file = "orjson-3.10.16-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c682d852d0ce77613993dc967e90e151899fe2d8e71c20e9be164080f468e370"}, - {file = "orjson-3.10.16-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c520ae736acd2e32df193bcff73491e64c936f3e44a2916b548da048a48b46b"}, - {file = "orjson-3.10.16-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:134f87c76bfae00f2094d85cfab261b289b76d78c6da8a7a3b3c09d362fd1e06"}, - {file = "orjson-3.10.16-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b59afde79563e2cf37cfe62ee3b71c063fd5546c8e662d7fcfc2a3d5031a5c4c"}, - {file = "orjson-3.10.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:113602f8241daaff05d6fad25bd481d54c42d8d72ef4c831bb3ab682a54d9e15"}, - {file = "orjson-3.10.16-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4fc0077d101f8fab4031e6554fc17b4c2ad8fdbc56ee64a727f3c95b379e31da"}, - {file = "orjson-3.10.16-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:9c6bf6ff180cd69e93f3f50380224218cfab79953a868ea3908430bcfaf9cb5e"}, - {file = "orjson-3.10.16-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5673eadfa952f95a7cd76418ff189df11b0a9c34b1995dff43a6fdbce5d63bf4"}, - {file = "orjson-3.10.16-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5fe638a423d852b0ae1e1a79895851696cb0d9fa0946fdbfd5da5072d9bb9551"}, - {file = "orjson-3.10.16-cp310-cp310-win32.whl", hash = "sha256:33af58f479b3c6435ab8f8b57999874b4b40c804c7a36b5cc6b54d8f28e1d3dd"}, - {file = "orjson-3.10.16-cp310-cp310-win_amd64.whl", hash = "sha256:0338356b3f56d71293c583350af26f053017071836b07e064e92819ecf1aa055"}, - {file = "orjson-3.10.16-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44fcbe1a1884f8bc9e2e863168b0f84230c3d634afe41c678637d2728ea8e739"}, - {file = "orjson-3.10.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78177bf0a9d0192e0b34c3d78bcff7fe21d1b5d84aeb5ebdfe0dbe637b885225"}, - {file = "orjson-3.10.16-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12824073a010a754bb27330cad21d6e9b98374f497f391b8707752b96f72e741"}, - {file = "orjson-3.10.16-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddd41007e56284e9867864aa2f29f3136bb1dd19a49ca43c0b4eda22a579cf53"}, - {file = "orjson-3.10.16-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0877c4d35de639645de83666458ca1f12560d9fa7aa9b25d8bb8f52f61627d14"}, - {file = "orjson-3.10.16-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9a09a539e9cc3beead3e7107093b4ac176d015bec64f811afb5965fce077a03c"}, - {file = "orjson-3.10.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31b98bc9b40610fec971d9a4d67bb2ed02eec0a8ae35f8ccd2086320c28526ca"}, - {file = "orjson-3.10.16-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0ce243f5a8739f3a18830bc62dc2e05b69a7545bafd3e3249f86668b2bcd8e50"}, - {file = "orjson-3.10.16-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:64792c0025bae049b3074c6abe0cf06f23c8e9f5a445f4bab31dc5ca23dbf9e1"}, - {file = "orjson-3.10.16-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ea53f7e68eec718b8e17e942f7ca56c6bd43562eb19db3f22d90d75e13f0431d"}, - {file = "orjson-3.10.16-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a741ba1a9488c92227711bde8c8c2b63d7d3816883268c808fbeada00400c164"}, - {file = "orjson-3.10.16-cp311-cp311-win32.whl", hash = "sha256:c7ed2c61bb8226384c3fdf1fb01c51b47b03e3f4536c985078cccc2fd19f1619"}, - {file = "orjson-3.10.16-cp311-cp311-win_amd64.whl", hash = "sha256:cd67d8b3e0e56222a2e7b7f7da9031e30ecd1fe251c023340b9f12caca85ab60"}, - {file = "orjson-3.10.16-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6d3444abbfa71ba21bb042caa4b062535b122248259fdb9deea567969140abca"}, - {file = "orjson-3.10.16-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:30245c08d818fdcaa48b7d5b81499b8cae09acabb216fe61ca619876b128e184"}, - {file = "orjson-3.10.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0ba1d0baa71bf7579a4ccdcf503e6f3098ef9542106a0eca82395898c8a500a"}, - {file = "orjson-3.10.16-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb0beefa5ef3af8845f3a69ff2a4aa62529b5acec1cfe5f8a6b4141033fd46ef"}, - {file = "orjson-3.10.16-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6daa0e1c9bf2e030e93c98394de94506f2a4d12e1e9dadd7c53d5e44d0f9628e"}, - {file = "orjson-3.10.16-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9da9019afb21e02410ef600e56666652b73eb3e4d213a0ec919ff391a7dd52aa"}, - {file = "orjson-3.10.16-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:daeb3a1ee17b69981d3aae30c3b4e786b0f8c9e6c71f2b48f1aef934f63f38f4"}, - {file = "orjson-3.10.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80fed80eaf0e20a31942ae5d0728849862446512769692474be5e6b73123a23b"}, - {file = "orjson-3.10.16-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73390ed838f03764540a7bdc4071fe0123914c2cc02fb6abf35182d5fd1b7a42"}, - {file = "orjson-3.10.16-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a22bba012a0c94ec02a7768953020ab0d3e2b884760f859176343a36c01adf87"}, - {file = "orjson-3.10.16-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5385bbfdbc90ff5b2635b7e6bebf259652db00a92b5e3c45b616df75b9058e88"}, - {file = "orjson-3.10.16-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:02c6279016346e774dd92625d46c6c40db687b8a0d685aadb91e26e46cc33e1e"}, - {file = "orjson-3.10.16-cp312-cp312-win32.whl", hash = "sha256:7ca55097a11426db80f79378e873a8c51f4dde9ffc22de44850f9696b7eb0e8c"}, - {file = "orjson-3.10.16-cp312-cp312-win_amd64.whl", hash = "sha256:86d127efdd3f9bf5f04809b70faca1e6836556ea3cc46e662b44dab3fe71f3d6"}, - {file = "orjson-3.10.16-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:148a97f7de811ba14bc6dbc4a433e0341ffd2cc285065199fb5f6a98013744bd"}, - {file = "orjson-3.10.16-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:1d960c1bf0e734ea36d0adc880076de3846aaec45ffad29b78c7f1b7962516b8"}, - {file = "orjson-3.10.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a318cd184d1269f68634464b12871386808dc8b7c27de8565234d25975a7a137"}, - {file = "orjson-3.10.16-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df23f8df3ef9223d1d6748bea63fca55aae7da30a875700809c500a05975522b"}, - {file = "orjson-3.10.16-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b94dda8dd6d1378f1037d7f3f6b21db769ef911c4567cbaa962bb6dc5021cf90"}, - {file = "orjson-3.10.16-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f12970a26666a8775346003fd94347d03ccb98ab8aa063036818381acf5f523e"}, - {file = "orjson-3.10.16-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15a1431a245d856bd56e4d29ea0023eb4d2c8f71efe914beb3dee8ab3f0cd7fb"}, - {file = "orjson-3.10.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83655cfc247f399a222567d146524674a7b217af7ef8289c0ff53cfe8db09f0"}, - {file = "orjson-3.10.16-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fa59ae64cb6ddde8f09bdbf7baf933c4cd05734ad84dcf4e43b887eb24e37652"}, - {file = "orjson-3.10.16-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ca5426e5aacc2e9507d341bc169d8af9c3cbe88f4cd4c1cf2f87e8564730eb56"}, - {file = "orjson-3.10.16-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6fd5da4edf98a400946cd3a195680de56f1e7575109b9acb9493331047157430"}, - {file = "orjson-3.10.16-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:980ecc7a53e567169282a5e0ff078393bac78320d44238da4e246d71a4e0e8f5"}, - {file = "orjson-3.10.16-cp313-cp313-win32.whl", hash = "sha256:28f79944dd006ac540a6465ebd5f8f45dfdf0948ff998eac7a908275b4c1add6"}, - {file = "orjson-3.10.16-cp313-cp313-win_amd64.whl", hash = "sha256:fe0a145e96d51971407cb8ba947e63ead2aa915db59d6631a355f5f2150b56b7"}, - {file = "orjson-3.10.16-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c35b5c1fb5a5d6d2fea825dec5d3d16bea3c06ac744708a8e1ff41d4ba10cdf1"}, - {file = "orjson-3.10.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9aac7ecc86218b4b3048c768f227a9452287001d7548500150bb75ee21bf55d"}, - {file = "orjson-3.10.16-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6e19f5102fff36f923b6dfdb3236ec710b649da975ed57c29833cb910c5a73ab"}, - {file = "orjson-3.10.16-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17210490408eb62755a334a6f20ed17c39f27b4f45d89a38cd144cd458eba80b"}, - {file = "orjson-3.10.16-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbbe04451db85916e52a9f720bd89bf41f803cf63b038595674691680cbebd1b"}, - {file = "orjson-3.10.16-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a966eba501a3a1f309f5a6af32ed9eb8f316fa19d9947bac3e6350dc63a6f0a"}, - {file = "orjson-3.10.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01e0d22f06c81e6c435723343e1eefc710e0510a35d897856766d475f2a15687"}, - {file = "orjson-3.10.16-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7c1e602d028ee285dbd300fb9820b342b937df64d5a3336e1618b354e95a2569"}, - {file = "orjson-3.10.16-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:d230e5020666a6725629df81e210dc11c3eae7d52fe909a7157b3875238484f3"}, - {file = "orjson-3.10.16-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0f8baac07d4555f57d44746a7d80fbe6b2c4fe2ed68136b4abb51cfec512a5e9"}, - {file = "orjson-3.10.16-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:524e48420b90fc66953e91b660b3d05faaf921277d6707e328fde1c218b31250"}, - {file = "orjson-3.10.16-cp39-cp39-win32.whl", hash = "sha256:a9f614e31423d7292dbca966a53b2d775c64528c7d91424ab2747d8ab8ce5c72"}, - {file = "orjson-3.10.16-cp39-cp39-win_amd64.whl", hash = "sha256:c338dc2296d1ed0d5c5c27dfb22d00b330555cb706c2e0be1e1c3940a0895905"}, - {file = "orjson-3.10.16.tar.gz", hash = "sha256:d2aaa5c495e11d17b9b93205f5fa196737ee3202f000aaebf028dc9a73750f10"}, + {file = "orjson-3.11.1-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:92d771c492b64119456afb50f2dff3e03a2db8b5af0eba32c5932d306f970532"}, + {file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0085ef83a4141c2ed23bfec5fecbfdb1e95dd42fc8e8c76057bdeeec1608ea65"}, + {file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5caf7f13f2e1b4e137060aed892d4541d07dabc3f29e6d891e2383c7ed483440"}, + {file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f716bcc166524eddfcf9f13f8209ac19a7f27b05cf591e883419079d98c8c99d"}, + {file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:507d6012fab05465d8bf21f5d7f4635ba4b6d60132874e349beff12fb51af7fe"}, + {file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1545083b0931f754c80fd2422a73d83bea7a6d1b6de104a5f2c8dd3d64c291e"}, + {file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e217ce3bad76351e1eb29ebe5ca630326f45cd2141f62620107a229909501a3"}, + {file = "orjson-3.11.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06ef26e009304bda4df42e4afe518994cde6f89b4b04c0ff24021064f83f4fbb"}, + {file = "orjson-3.11.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:ba49683b87bea3ae1489a88e766e767d4f423a669a61270b6d6a7ead1c33bd65"}, + {file = "orjson-3.11.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5072488fcc5cbcda2ece966d248e43ea1d222e19dd4c56d3f82747777f24d864"}, + {file = "orjson-3.11.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f58ae2bcd119226fe4aa934b5880fe57b8e97b69e51d5d91c88a89477a307016"}, + {file = "orjson-3.11.1-cp310-cp310-win32.whl", hash = "sha256:6723be919c07906781b9c63cc52dc7d2fb101336c99dd7e85d3531d73fb493f7"}, + {file = "orjson-3.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:5fd44d69ddfdfb4e8d0d83f09d27a4db34930fba153fbf79f8d4ae8b47914e04"}, + {file = "orjson-3.11.1-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:15e2a57ce3b57c1a36acffcc02e823afefceee0a532180c2568c62213c98e3ef"}, + {file = "orjson-3.11.1-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:17040a83ecaa130474af05bbb59a13cfeb2157d76385556041f945da936b1afd"}, + {file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a68f23f09e5626cc0867a96cf618f68b91acb4753d33a80bf16111fd7f9928c"}, + {file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47e07528bb6ccbd6e32a55e330979048b59bfc5518b47c89bc7ab9e3de15174a"}, + {file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3807cce72bf40a9d251d689cbec28d2efd27e0f6673709f948f971afd52cb09"}, + {file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b2dc7e88da4ca201c940f5e6127998d9e89aa64264292334dad62854bc7fc27"}, + {file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3091dad33ac9e67c0a550cfff8ad5be156e2614d6f5d2a9247df0627751a1495"}, + {file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ed0fce2307843b79a0c83de49f65b86197f1e2310de07af9db2a1a77a61ce4c"}, + {file = "orjson-3.11.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5a31e84782a18c30abd56774c0cfa7b9884589f4d37d9acabfa0504dad59bb9d"}, + {file = "orjson-3.11.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:26b6c821abf1ae515fbb8e140a2406c9f9004f3e52acb780b3dee9bfffddbd84"}, + {file = "orjson-3.11.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f857b3d134b36a8436f1e24dcb525b6b945108b30746c1b0b556200b5cb76d39"}, + {file = "orjson-3.11.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:df146f2a14116ce80f7da669785fcb411406d8e80136558b0ecda4c924b9ac55"}, + {file = "orjson-3.11.1-cp311-cp311-win32.whl", hash = "sha256:d777c57c1f86855fe5492b973f1012be776e0398571f7cc3970e9a58ecf4dc17"}, + {file = "orjson-3.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:e9a5fd589951f02ec2fcb8d69339258bbf74b41b104c556e6d4420ea5e059313"}, + {file = "orjson-3.11.1-cp311-cp311-win_arm64.whl", hash = "sha256:4cddbe41ee04fddad35d75b9cf3e3736ad0b80588280766156b94783167777af"}, + {file = "orjson-3.11.1-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2b7c8be96db3a977367250c6367793a3c5851a6ca4263f92f0b48d00702f9910"}, + {file = "orjson-3.11.1-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:72e18088f567bd4a45db5e3196677d9ed1605e356e500c8e32dd6e303167a13d"}, + {file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d346e2ae1ce17888f7040b65a5a4a0c9734cb20ffbd228728661e020b4c8b3a5"}, + {file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4bda5426ebb02ceb806a7d7ec9ba9ee5e0c93fca62375151a7b1c00bc634d06b"}, + {file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10506cebe908542c4f024861102673db534fd2e03eb9b95b30d94438fa220abf"}, + {file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45202ee3f5494644e064c41abd1320497fb92fd31fc73af708708af664ac3b56"}, + {file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5adaf01b92e0402a9ac5c3ebe04effe2bbb115f0914a0a53d34ea239a746289"}, + {file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6162a1a757a1f1f4a94bc6ffac834a3602e04ad5db022dd8395a54ed9dd51c81"}, + {file = "orjson-3.11.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:78404206977c9f946613d3f916727c189d43193e708d760ea5d4b2087d6b0968"}, + {file = "orjson-3.11.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:db48f8e81072e26df6cdb0e9fff808c28597c6ac20a13d595756cf9ba1fed48a"}, + {file = "orjson-3.11.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0c1e394e67ced6bb16fea7054d99fbdd99a539cf4d446d40378d4c06e0a8548d"}, + {file = "orjson-3.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e7a840752c93d4eecd1378e9bb465c3703e127b58f675cd5c620f361b6cf57a4"}, + {file = "orjson-3.11.1-cp312-cp312-win32.whl", hash = "sha256:4537b0e09f45d2b74cb69c7f39ca1e62c24c0488d6bf01cd24673c74cd9596bf"}, + {file = "orjson-3.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:dbee6b050062540ae404530cacec1bf25e56e8d87d8d9b610b935afeb6725cae"}, + {file = "orjson-3.11.1-cp312-cp312-win_arm64.whl", hash = "sha256:f55e557d4248322d87c4673e085c7634039ff04b47bfc823b87149ae12bef60d"}, + {file = "orjson-3.11.1-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:53cfefe4af059e65aabe9683f76b9c88bf34b4341a77d329227c2424e0e59b0e"}, + {file = "orjson-3.11.1-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:93d5abed5a6f9e1b6f9b5bf6ed4423c11932b5447c2f7281d3b64e0f26c6d064"}, + {file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbf06642f3db2966df504944cdd0eb68ca2717f0353bb20b20acd78109374a6"}, + {file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dddf4e78747fa7f2188273f84562017a3c4f0824485b78372513c1681ea7a894"}, + {file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa3fe8653c9f57f0e16f008e43626485b6723b84b2f741f54d1258095b655912"}, + {file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6334d2382aff975a61f6f4d1c3daf39368b887c7de08f7c16c58f485dcf7adb2"}, + {file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a3d0855b643f259ee0cb76fe3df4c04483354409a520a902b067c674842eb6b8"}, + {file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0eacdfeefd0a79987926476eb16e0245546bedeb8febbbbcf4b653e79257a8e4"}, + {file = "orjson-3.11.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0ed07faf9e4873518c60480325dcbc16d17c59a165532cccfb409b4cdbaeff24"}, + {file = "orjson-3.11.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:d6d308dd578ae3658f62bb9eba54801533225823cd3248c902be1ebc79b5e014"}, + {file = "orjson-3.11.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c4aa13ca959ba6b15c0a98d3d204b850f9dc36c08c9ce422ffb024eb30d6e058"}, + {file = "orjson-3.11.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:be3d0653322abc9b68e5bcdaee6cfd58fcbe9973740ab222b87f4d687232ab1f"}, + {file = "orjson-3.11.1-cp313-cp313-win32.whl", hash = "sha256:4dd34e7e2518de8d7834268846f8cab7204364f427c56fb2251e098da86f5092"}, + {file = "orjson-3.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:d6895d32032b6362540e6d0694b19130bb4f2ad04694002dce7d8af588ca5f77"}, + {file = "orjson-3.11.1-cp313-cp313-win_arm64.whl", hash = "sha256:bb7c36d5d3570fcbb01d24fa447a21a7fe5a41141fd88e78f7994053cc4e28f4"}, + {file = "orjson-3.11.1-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7b71ef394327b3d0b39f6ea7ade2ecda2731a56c6a7cbf0d6a7301203b92a89b"}, + {file = "orjson-3.11.1-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:77c0fe28ed659b62273995244ae2aa430e432c71f86e4573ab16caa2f2e3ca5e"}, + {file = "orjson-3.11.1-cp314-cp314-manylinux_2_34_aarch64.whl", hash = "sha256:1495692f1f1ba2467df429343388a0ed259382835922e124c0cfdd56b3d1f727"}, + {file = "orjson-3.11.1-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:08c6a762fca63ca4dc04f66c48ea5d2428db55839fec996890e1bfaf057b658c"}, + {file = "orjson-3.11.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9e26794fe3976810b2c01fda29bd9ac7c91a3c1284b29cc9a383989f7b614037"}, + {file = "orjson-3.11.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:4b4b4f8f0b1d3ef8dc73e55363a0ffe012a42f4e2f1a140bf559698dca39b3fa"}, + {file = "orjson-3.11.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:848be553ea35aa89bfefbed2e27c8a41244c862956ab8ba00dc0b27e84fd58de"}, + {file = "orjson-3.11.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c964c29711a4b1df52f8d9966f015402a6cf87753a406c1c4405c407dd66fd45"}, + {file = "orjson-3.11.1-cp314-cp314-win32.whl", hash = "sha256:33aada2e6b6bc9c540d396528b91e666cedb383740fee6e6a917f561b390ecb1"}, + {file = "orjson-3.11.1-cp314-cp314-win_amd64.whl", hash = "sha256:68e10fd804e44e36188b9952543e3fa22f5aa8394da1b5283ca2b423735c06e8"}, + {file = "orjson-3.11.1-cp314-cp314-win_arm64.whl", hash = "sha256:f3cf6c07f8b32127d836be8e1c55d4f34843f7df346536da768e9f73f22078a1"}, + {file = "orjson-3.11.1-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:3d593a9e0bccf2c7401ae53625b519a7ad7aa555b1c82c0042b322762dc8af4e"}, + {file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0baad413c498fc1eef568504f11ea46bc71f94b845c075e437da1e2b85b4fb86"}, + {file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:22cf17ae1dae3f9b5f37bfcdba002ed22c98bbdb70306e42dc18d8cc9b50399a"}, + {file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e855c1e97208133ce88b3ef6663c9a82ddf1d09390cd0856a1638deee0390c3c"}, + {file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5861c5f7acff10599132854c70ab10abf72aebf7c627ae13575e5f20b1ab8fe"}, + {file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1e6415c5b5ff3a616a6dafad7b6ec303a9fc625e9313c8e1268fb1370a63dcb"}, + {file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:912579642f5d7a4a84d93c5eed8daf0aa34e1f2d3f4dc6571a8e418703f5701e"}, + {file = "orjson-3.11.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2092e1d3b33f64e129ff8271642afddc43763c81f2c30823b4a4a4a5f2ea5b55"}, + {file = "orjson-3.11.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:b8ac64caba1add2c04e9cd4782d4d0c4d6c554b7a3369bdec1eed7854c98db7b"}, + {file = "orjson-3.11.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:23196b826ebc85c43f8e27bee0ab33c5fb13a29ea47fb4fcd6ebb1e660eb0252"}, + {file = "orjson-3.11.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f2d3364cfad43003f1e3d564a069c8866237cca30f9c914b26ed2740b596ed00"}, + {file = "orjson-3.11.1-cp39-cp39-win32.whl", hash = "sha256:20b0dca94ea4ebe4628330de50975b35817a3f52954c1efb6d5d0498a3bbe581"}, + {file = "orjson-3.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:200c3ad7ed8b5d31d49143265dfebd33420c4b61934ead16833b5cd2c3d241be"}, + {file = "orjson-3.11.1.tar.gz", hash = "sha256:48d82770a5fd88778063604c566f9c7c71820270c9cc9338d25147cbf34afd96"}, ] [[package]] From 33d308f6fa31cffb3eda759181ed41a871343a92 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 28 Jul 2025 13:56:44 -0400 Subject: [PATCH 67/77] run ansible tasks after all the other deps --- bbot/core/helpers/depsinstaller/installer.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bbot/core/helpers/depsinstaller/installer.py b/bbot/core/helpers/depsinstaller/installer.py index f5aac02d03..2a17ee5b90 100644 --- a/bbot/core/helpers/depsinstaller/installer.py +++ b/bbot/core/helpers/depsinstaller/installer.py @@ -223,11 +223,6 @@ async def install_module(self, module): success = True preloaded = self.all_modules_preloaded[module] - # ansible tasks - ansible_tasks = preloaded["deps"]["ansible"] - if ansible_tasks: - success &= self.tasks(module, ansible_tasks) - # apt deps_apt = preloaded["deps"]["apt"] if deps_apt: @@ -258,6 +253,11 @@ async def install_module(self, module): self.setup_status[dep_common] = result success &= result + # ansible tasks + ansible_tasks = preloaded["deps"]["ansible"] + if ansible_tasks: + success &= self.tasks(module, ansible_tasks) + return success async def pip_install(self, packages, constraints=None): From 6d91592ecfa444424853936ca3d6e183ccb203ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Aug 2025 06:02:03 +0000 Subject: [PATCH 68/77] Bump urllib3 from 2.4.0 to 2.5.0 Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.4.0 to 2.5.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.4.0...2.5.0) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.5.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 47080d8aca..43a071575f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2844,14 +2844,14 @@ files = [ [[package]] name = "urllib3" -version = "2.4.0" +version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" groups = ["main", "dev", "docs"] files = [ - {file = "urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"}, - {file = "urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466"}, + {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, + {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, ] [package.extras] From d303fb3e196923a78a8cf8744ec7fd9f282b8d10 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Mon, 11 Aug 2025 11:53:51 -0400 Subject: [PATCH 69/77] fixing TestNucleiSevere --- .../test_step_2/module_tests/test_module_nuclei.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/bbot/test/test_step_2/module_tests/test_module_nuclei.py b/bbot/test/test_step_2/module_tests/test_module_nuclei.py index 24638b4b86..1c200b2aee 100644 --- a/bbot/test/test_step_2/module_tests/test_module_nuclei.py +++ b/bbot/test/test_step_2/module_tests/test_module_nuclei.py @@ -67,21 +67,24 @@ class TestNucleiSevere(TestNucleiManual): "nuclei": { "mode": "severe", "concurrency": 1, - "templates": "/tmp/.bbot_test/tools/nuclei-templates/vulnerabilities/generic/generic-linux-lfi.yaml", + "templates": "/tmp/.bbot_test/tools/nuclei-templates/vulnerabilities/generic/generic-env.yaml", } }, "interactsh_disable": True, } async def setup_after_prep(self, module_test): - expect_args = {"method": "GET", "uri": "/etc/passwd"} - respond_args = {"response_data": "root:.*:0:0:"} + expect_args = {"method": "GET", "uri": "/.env"} + respond_args = {"response_data": "AAAKEYBBB="} + module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) + + expect_args = {"method": "GET", "uri": "/"} + respond_args = {"response_data": "alive"} module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args) def check(self, module_test, events): assert any( - e.type == "VULNERABILITY" and "Generic Linux - Local File Inclusion" in e.data["description"] - for e in events + e.type == "VULNERABILITY" and "Generic Env File Disclosure" in e.data["description"] for e in events ) From 99101eb323ac6892fa16946f6fc74c4b1d1c83f2 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Mon, 11 Aug 2025 12:03:32 -0400 Subject: [PATCH 70/77] fixing nuclei.py path --- .github/workflows/version_updater.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/version_updater.yml b/.github/workflows/version_updater.yml index 81f4490514..da90e9eeff 100644 --- a/.github/workflows/version_updater.yml +++ b/.github/workflows/version_updater.yml @@ -36,12 +36,12 @@ jobs: - name: Get current version id: get-current-version run: | - version=$(grep -m 1 -oP '(?<=version": ")[^"]*' bbot/modules/deadly/nuclei.py) + version=$(grep -m 1 -oP '(?<=version": ")[^"]*' bbot/modules/nuclei.py) echo "current_version=$version" >> $GITHUB_ENV - name: Update version id: update-version if: env.latest_version != env.current_version - run: "sed -i '0,/\"version\": \".*\",/ s/\"version\": \".*\",/\"version\": \"${{ env.latest_version }}\",/g' bbot/modules/deadly/nuclei.py" + run: "sed -i '0,/\"version\": \".*\",/ s/\"version\": \".*\",/\"version\": \"${{ env.latest_version }}\",/g' bbot/modules/nuclei.py" - name: Create pull request to update the version if: steps.update-version.outcome == 'success' uses: peter-evans/create-pull-request@v7 @@ -50,7 +50,7 @@ jobs: commit-message: "Update nuclei" title: "Update nuclei to ${{ env.latest_version }}" body: | - This PR uses https://api.github.com/repos/projectdiscovery/nuclei/releases/latest to obtain the latest version of nuclei and update the version in bbot/modules/deadly/nuclei.py." + This PR uses https://api.github.com/repos/projectdiscovery/nuclei/releases/latest to obtain the latest version of nuclei and update the version in bbot/modules/nuclei.py." # Release notes: ${{ env.release_notes }} From 595d30e06de389775b65af648d9e0855b02481a0 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Mon, 11 Aug 2025 12:11:38 -0400 Subject: [PATCH 71/77] re-remove deadly folder --- bbot/modules/{deadly => }/medusa.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename bbot/modules/{deadly => }/medusa.py (100%) diff --git a/bbot/modules/deadly/medusa.py b/bbot/modules/medusa.py similarity index 100% rename from bbot/modules/deadly/medusa.py rename to bbot/modules/medusa.py From 147cf7d05accbe2bf9b824afae990902364e0639 Mon Sep 17 00:00:00 2001 From: liquidsec Date: Mon, 11 Aug 2025 14:01:49 -0400 Subject: [PATCH 72/77] update doc --- docs/modules/custom_yara_rules.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/modules/custom_yara_rules.md b/docs/modules/custom_yara_rules.md index 3a7ab005cd..3ff81d052f 100644 --- a/docs/modules/custom_yara_rules.md +++ b/docs/modules/custom_yara_rules.md @@ -123,15 +123,15 @@ When set to True, the contents returned from a successful extraction via a YARA Consider the following example YARA rule: ``` -rule SubstackLink +rule ContainsTitle { meta: - description = "contains a Substack link" + description = "Contains an HTML title tag" emit_match = true strings: - $substack_link = /https?:\/\/[a-zA-Z0-9.-]+\.substack\.com/ + $title_value = /(.*)?<\/title>/i condition: - $substack_link + $title_value } ``` @@ -142,8 +142,8 @@ bbot -m httpx --custom-yara-rules=substack.yara -t http://www.blacklanternsecuri ``` -We get the following result. Note that the finding now contains the actual link that was identified with the regex. +We get the following result. Note that the finding now contains the actual title tag that was identified with the regex. ``` -[FINDING] {"description": "Custom Yara Rule [SubstackLink] with description: [contains a Substack link] Matched via identifier [substack_link] and extracted [https://blacklanternsecurity.substack.com]", "host": "www.blacklanternsecurity.com", "url": "https://www.blacklanternsecurity.com/"} excavate +[FINDING] {"description": "Custom Yara Rule [ContainsTitle] with description: [Contains an HTML title] Matched via identifier [title_value] and extracted [<title>Black Lantern Security]", "host": "www.blacklanternsecurity.com", "url": "https://www.blacklanternsecurity.com/"} excavate (cdn-github, cdn-ip) ``` From 1b78e1c8499cd16ffaedb43b45c46bc3dacfbedb Mon Sep 17 00:00:00 2001 From: liquidsec Date: Mon, 11 Aug 2025 14:04:04 -0400 Subject: [PATCH 73/77] cleanup --- docs/modules/custom_yara_rules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/custom_yara_rules.md b/docs/modules/custom_yara_rules.md index 3ff81d052f..5e40856173 100644 --- a/docs/modules/custom_yara_rules.md +++ b/docs/modules/custom_yara_rules.md @@ -145,5 +145,5 @@ bbot -m httpx --custom-yara-rules=substack.yara -t http://www.blacklanternsecuri We get the following result. Note that the finding now contains the actual title tag that was identified with the regex. ``` -[FINDING] {"description": "Custom Yara Rule [ContainsTitle] with description: [Contains an HTML title] Matched via identifier [title_value] and extracted [Black Lantern Security]", "host": "www.blacklanternsecurity.com", "url": "https://www.blacklanternsecurity.com/"} excavate (cdn-github, cdn-ip) +[FINDING] {"description": "Custom Yara Rule [ContainsTitle] with description: [Contains an HTML title] Matched via identifier [title_value] and extracted [Black Lantern Security]", "host": "www.blacklanternsecurity.com", "url": "https://www.blacklanternsecurity.com/"} excavate (cdn-github, cdn-ip) ``` From ba9cc2888b9cd8e83afcf23e123e897bb2bdbe53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 19:28:53 +0000 Subject: [PATCH 74/77] Bump uvicorn from 0.34.2 to 0.35.0 Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.34.2 to 0.35.0. - [Release notes](https://github.com/encode/uvicorn/releases) - [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md) - [Commits](https://github.com/encode/uvicorn/compare/0.34.2...0.35.0) --- updated-dependencies: - dependency-name: uvicorn dependency-version: 0.35.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 10 +++++----- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5cf0abf109..6399ebffe9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2862,14 +2862,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "uvicorn" -version = "0.34.2" +version = "0.35.0" description = "The lightning-fast ASGI server." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403"}, - {file = "uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328"}, + {file = "uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a"}, + {file = "uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01"}, ] [package.dependencies] @@ -2878,7 +2878,7 @@ h11 = ">=0.8" typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} [package.extras] -standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] +standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "verspec" @@ -3183,4 +3183,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "3773f5f67a4346d810091386f46565c054a0c2851234d92f4e62ff9c39f0a37e" +content-hash = "7bebbc324f09f3c87918fa56aa0ac80a3873d8835c9ac589734338637664ac83" diff --git a/pyproject.toml b/pyproject.toml index 19208ca464..610c69a8d1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,7 +70,7 @@ pytest-timeout = "^2.3.1" pytest-httpserver = "^1.0.11" pytest = "^8.3.1" pytest-asyncio = "0.25.3" -uvicorn = ">=0.32,<0.35" +uvicorn = ">=0.32,<0.36" fastapi = "^0.115.5" pytest-httpx = ">=0.35" ruff = "0.12.4" From 39b732b45e504ebe6996106ca8013059b3b5ea7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 21:09:15 +0000 Subject: [PATCH 75/77] Bump setproctitle from 1.3.5 to 1.3.6 Bumps [setproctitle](https://github.com/dvarrazzo/py-setproctitle) from 1.3.5 to 1.3.6. - [Changelog](https://github.com/dvarrazzo/py-setproctitle/blob/master/HISTORY.rst) - [Commits](https://github.com/dvarrazzo/py-setproctitle/compare/version-1.3.5...version-1.3.6) --- updated-dependencies: - dependency-name: setproctitle dependency-version: 1.3.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 184 ++++++++++++++++++++++++++++------------------------ 1 file changed, 98 insertions(+), 86 deletions(-) diff --git a/poetry.lock b/poetry.lock index d9e2415504..2900345079 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2542,97 +2542,109 @@ files = [ [[package]] name = "setproctitle" -version = "1.3.5" +version = "1.3.6" description = "A Python module to customize the process title" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "setproctitle-1.3.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02870e0cb0de7f68a7a8a5b23c2bc0ce63821cab3d9b126f9be80bb6cd674c80"}, - {file = "setproctitle-1.3.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:55b278135be742b8901067479626d909f6613bd2d2c4fd0de6bb46f80e07a919"}, - {file = "setproctitle-1.3.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53fc971f7bf7a674f571a23cdec70f2f0ac88152c59c06aa0808d0be6d834046"}, - {file = "setproctitle-1.3.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb0500e1bc6f00b8ba696c3743ddff14c8679e3c2ca9d292c008ac51488d17cf"}, - {file = "setproctitle-1.3.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:995b3ac1b5fe510f4e1d1c19ebf19f4bceb448f2d6e8d99ea23f33cb6f1a277e"}, - {file = "setproctitle-1.3.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5a05e2c3fdfbda32b9c9da72d0506398d1efb5bd2c5981b9e12d3622eb3d4f9"}, - {file = "setproctitle-1.3.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:310c7f4ca4c8476a9840b2cd4b22ee602a49a3c902fdcd2dd8284685abd10a9a"}, - {file = "setproctitle-1.3.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:867af4a5c3d85484fbcc50ea88bcd375acf709cff88a3259575361849c0da351"}, - {file = "setproctitle-1.3.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8ec0a7fe9f1ba90900144489bc93ce7dd4dec3f3df1e7f188c9e58364fe4a4c5"}, - {file = "setproctitle-1.3.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:aaee7acba2733a14a886488b7495bfec4a8d6407124c04a0946dbde1684230a3"}, - {file = "setproctitle-1.3.5-cp310-cp310-win32.whl", hash = "sha256:bd2cccd972e4282af4ce2c13cd9ebdf07be157eabafd8ce648fffdc8ae6fbe28"}, - {file = "setproctitle-1.3.5-cp310-cp310-win_amd64.whl", hash = "sha256:81f2328ac34c9584e1e5f87eea916c0bc48476a06606a07debae07acdd7ab5ea"}, - {file = "setproctitle-1.3.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1c8dcc250872385f2780a5ea58050b58cbc8b6a7e8444952a5a65c359886c593"}, - {file = "setproctitle-1.3.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ca82fae9eb4800231dd20229f06e8919787135a5581da245b8b05e864f34cc8b"}, - {file = "setproctitle-1.3.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0424e1d33232322541cb36fb279ea5242203cd6f20de7b4fb2a11973d8e8c2ce"}, - {file = "setproctitle-1.3.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fec8340ab543144d04a9d805d80a0aad73fdeb54bea6ff94e70d39a676ea4ec0"}, - {file = "setproctitle-1.3.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eab441c89f181271ab749077dcc94045a423e51f2fb0b120a1463ef9820a08d0"}, - {file = "setproctitle-1.3.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c371550a2288901a0dcd84192691ebd3197a43c95f3e0b396ed6d1cedf5c6c"}, - {file = "setproctitle-1.3.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:78288ff5f9c415c56595b2257ad218936dd9fa726b36341b373b31ca958590fe"}, - {file = "setproctitle-1.3.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f1f13a25fc46731acab518602bb1149bfd8b5fabedf8290a7c0926d61414769d"}, - {file = "setproctitle-1.3.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1534d6cd3854d035e40bf4c091984cbdd4d555d7579676d406c53c8f187c006f"}, - {file = "setproctitle-1.3.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:62a01c76708daac78b9688ffb95268c57cb57fa90b543043cda01358912fe2db"}, - {file = "setproctitle-1.3.5-cp311-cp311-win32.whl", hash = "sha256:ea07f29735d839eaed985990a0ec42c8aecefe8050da89fec35533d146a7826d"}, - {file = "setproctitle-1.3.5-cp311-cp311-win_amd64.whl", hash = "sha256:ab3ae11e10d13d514d4a5a15b4f619341142ba3e18da48c40e8614c5a1b5e3c3"}, - {file = "setproctitle-1.3.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:523424b9be4dea97d95b8a584b183f35c7bab2d0a3d995b01febf5b8a8de90e4"}, - {file = "setproctitle-1.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b6ec1d86c1b4d7b5f2bdceadf213310cf24696b82480a2a702194b8a0bfbcb47"}, - {file = "setproctitle-1.3.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea6c505264275a43e9b2acd2acfc11ac33caf52bc3167c9fced4418a810f6b1c"}, - {file = "setproctitle-1.3.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b91e68e6685998e6353f296100ecabc313a6cb3e413d66a03d74b988b61f5ff"}, - {file = "setproctitle-1.3.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc1fda208ae3a2285ad27aeab44c41daf2328abe58fa3270157a739866779199"}, - {file = "setproctitle-1.3.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:828727d220e46f048b82289018300a64547b46aaed96bf8810c05fe105426b41"}, - {file = "setproctitle-1.3.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:83b016221cf80028b2947be20630faa14e3e72a403e35f0ba29550b4e856767b"}, - {file = "setproctitle-1.3.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6d8a411e752e794d052434139ca4234ffeceeb8d8d8ddc390a9051d7942b2726"}, - {file = "setproctitle-1.3.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:50cfbf86b9c63a2c2903f1231f0a58edeb775e651ae1af84eec8430b0571f29b"}, - {file = "setproctitle-1.3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f3b5e2eacd572444770026c9dd3ddc7543ce427cdf452d40a408d1e95beefb30"}, - {file = "setproctitle-1.3.5-cp312-cp312-win32.whl", hash = "sha256:cf4e3ded98027de2596c6cc5bbd3302adfb3ca315c848f56516bb0b7e88de1e9"}, - {file = "setproctitle-1.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:f7a8c01ffd013dda2bed6e7d5cb59fbb609e72f805abf3ee98360f38f7758d9b"}, - {file = "setproctitle-1.3.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:162fd76781f57f42ddf27c475e5fef6a8df4fdd69b28dd554e53e2eb2bfe0f95"}, - {file = "setproctitle-1.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4969d996bdfbe23bbd023cd0bae6c73a27371615c4ec5296a60cecce268659ef"}, - {file = "setproctitle-1.3.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd70c95a94473216e7c7a7a1f7d8ecbaca5b16d4ba93ddbfd32050fc485a8451"}, - {file = "setproctitle-1.3.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a887582bfdb6dcbc482db0ef9e630ad23ca95875806ef2b444bf6fbd7b7d7ca"}, - {file = "setproctitle-1.3.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:755671c39a9e70834eeec6dc6b61e344399c49881d2e7ea3534a1c69669dd9cc"}, - {file = "setproctitle-1.3.5-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ab52b4c2ce056a1b60d439991a81ca90f019488d4b4f64b2779e6badd3677e6"}, - {file = "setproctitle-1.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36178b944019ec7fc52bb967ffeee296a11d373734a7be276755bedb3db5c141"}, - {file = "setproctitle-1.3.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:269d41cd4f085b69821d1ee6599124f02dbbc79962b256e260b6c9021d037994"}, - {file = "setproctitle-1.3.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d880630fd81d1b3bde121c352ca7ea2f2ff507ef40c3c011d0928ed491f912c9"}, - {file = "setproctitle-1.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8a7fed67ab49f60bd51f3b4cffff3f8d754d1bb0a40e42869911301ec6519b65"}, - {file = "setproctitle-1.3.5-cp313-cp313-win32.whl", hash = "sha256:e9c0d0cfcf715631b10d5950d04a9978f63bc46535724ef7c2eaf1dca9988642"}, - {file = "setproctitle-1.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:e1d28eb98c91fbebd3e443a45c7da5d84974959851ef304c330eabd654a386f1"}, - {file = "setproctitle-1.3.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8995a1217b52d11d92bafd069961a47c5e13d8751ca976a32b3ecbbd471eaf9b"}, - {file = "setproctitle-1.3.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ae2ce64ea87837c4e3e65a7a232ff80cf09aa7d916e74cb34a245c47fcd87981"}, - {file = "setproctitle-1.3.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20b84de1780bbb0adc67560a113a0ea57e6ecfce2325680de8efe6c2a2f781ac"}, - {file = "setproctitle-1.3.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b1d2628ac9868f960d7e87b3a9b2bb337104c3644b699e52e01efd7e106e4fe"}, - {file = "setproctitle-1.3.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa912c4d08c66afda30dd5af8f2e9c59065dfc36a51edbd5419c3a7c962875aa"}, - {file = "setproctitle-1.3.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4f783e100f8b451cd92fcabd3b831edfb1f7cb02be4a79b972f138e0001885"}, - {file = "setproctitle-1.3.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8ca56e39d10b6758046694a84950e5c5570a034c409ef3337595f64fc2cfa94d"}, - {file = "setproctitle-1.3.5-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:8915d69260ba6a6aaf9a48f6b53dbf9f8e4dc0cb4ae25bc5edb16a1666b6e47c"}, - {file = "setproctitle-1.3.5-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7edd4fbb9fd17ed0e5a7f8bde9fa61c3987a34372084c45bab4eab6a2e554762"}, - {file = "setproctitle-1.3.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d0b19fd76d46b8096a463724739c3b09cf5ce38317f559f56f424f6ce7158de3"}, - {file = "setproctitle-1.3.5-cp38-cp38-win32.whl", hash = "sha256:53ce572cdbd43a0bed2aa24299cd823ebf233a7fa720cc7f8634728c213679c0"}, - {file = "setproctitle-1.3.5-cp38-cp38-win_amd64.whl", hash = "sha256:a58f00f35d6038ce1e8a9e5f87cb5ecce13ce118c5977a603566ad1fccc8d2cb"}, - {file = "setproctitle-1.3.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c4b299b5bbadf00034978b8d741c85af25173146747eb9dab22596ec805a52d6"}, - {file = "setproctitle-1.3.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d57e7626329d4fb138da5ce15270b08a91326969956fb19c7a8fec2639066704"}, - {file = "setproctitle-1.3.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4272295721cf1fd2acf960b674d6dc09bec87f2a1e48995817b4ec4a3d483faf"}, - {file = "setproctitle-1.3.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8305b6e6c203222c61318f338f1de08269ec66c247bf251593c215ff1fbeaf9"}, - {file = "setproctitle-1.3.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:becc9f3f605936506d2bd63d9cf817b7ee66b10d204184c4a633064dbed579d6"}, - {file = "setproctitle-1.3.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4629de80c47155a26e8d87a0a92d9428aa8d79ccfe2c20fd18888580619704e1"}, - {file = "setproctitle-1.3.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f1af1d310b5b6cda692da52bd862a9833086c0a3f8380fa92505dd23857dcf60"}, - {file = "setproctitle-1.3.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3bb6ea3d6e690677619508050bc681d86223723bdf67e4e8a8dffc3d04ca3044"}, - {file = "setproctitle-1.3.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:322067ef1ffe70d297b00bee8a3862fed96021aa4318e3bce2d7c3bfa7a8d1e7"}, - {file = "setproctitle-1.3.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1b58d49c32a46c48dcc2812635a89e6bee31139b03818da49a0bbaeaf01edef9"}, - {file = "setproctitle-1.3.5-cp39-cp39-win32.whl", hash = "sha256:707c23d4a88f5e66f1005d93558bf84eb45fc0fb0c4f33480a0c7d0895e8e848"}, - {file = "setproctitle-1.3.5-cp39-cp39-win_amd64.whl", hash = "sha256:c64199a73d442a06d372b5286942229a43e86fa41bf36f317dcc60c036aff0bb"}, - {file = "setproctitle-1.3.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dc66b84beb0d5eb03abf0c3140c6d2cbe3d67ae9f0824a09dfa8c6ff164319a6"}, - {file = "setproctitle-1.3.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31dc9b330e7cac7685bdef790747c07914081c11ee1066eb0c597303dfb52010"}, - {file = "setproctitle-1.3.5-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4028639b511f5e641d116b3b54ad70c637ebd1b4baac0948283daf11b104119f"}, - {file = "setproctitle-1.3.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6bddef4e27d0ed74e44b58bf050bc3108591bf17d20d461fc59cd141282f849c"}, - {file = "setproctitle-1.3.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:9996be1d1df399c3cdc6d72ce0064e46bc74fc6e29fe16a328511a303dd4d418"}, - {file = "setproctitle-1.3.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5cefc2dbdc48121022c3c05644cd3706f08e0b3c0ce07814d3c04daba0617936"}, - {file = "setproctitle-1.3.5-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cef63879c79a570aabf7c158f453bf8d1285f0fda4b6b9b7a52d64b49c084d40"}, - {file = "setproctitle-1.3.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a863296a31fb578726c570314cb78ff3a3fddb65963dc01ea33731760f20a92c"}, - {file = "setproctitle-1.3.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b63bda3cb4b6526720dc7c6940b891c593f41771d119aeb8763875801ce2296d"}, - {file = "setproctitle-1.3.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95913af603da5b4c7635bf1fb67ecc5df7c18360b6cfb6740fd743bb150a6e17"}, - {file = "setproctitle-1.3.5-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b130cf8fe76dc05ad1d48cc9ff3699eb1f0d8edbf6f46a3ce46a7041e49d7b"}, - {file = "setproctitle-1.3.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe3bfd5e51c24349d022e062a96c316a1b8862ea9a0cf5ea2a8b2ae008b77cec"}, - {file = "setproctitle-1.3.5.tar.gz", hash = "sha256:1e6eaeaf8a734d428a95d8c104643b39af7d247d604f40a7bebcf3960a853c5e"}, + {file = "setproctitle-1.3.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ebcf34b69df4ca0eabaaaf4a3d890f637f355fed00ba806f7ebdd2d040658c26"}, + {file = "setproctitle-1.3.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1aa1935aa2195b76f377e5cb018290376b7bf085f0b53f5a95c0c21011b74367"}, + {file = "setproctitle-1.3.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13624d9925bb481bc0ccfbc7f533da38bfbfe6e80652314f789abc78c2e513bd"}, + {file = "setproctitle-1.3.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97a138fa875c6f281df7720dac742259e85518135cd0e3551aba1c628103d853"}, + {file = "setproctitle-1.3.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c86e9e82bfab579327dbe9b82c71475165fbc8b2134d24f9a3b2edaf200a5c3d"}, + {file = "setproctitle-1.3.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6af330ddc2ec05a99c3933ab3cba9365357c0b8470a7f2fa054ee4b0984f57d1"}, + {file = "setproctitle-1.3.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:109fc07b1cd6cef9c245b2028e3e98e038283342b220def311d0239179810dbe"}, + {file = "setproctitle-1.3.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:7df5fcc48588f82b6cc8073db069609ddd48a49b1e9734a20d0efb32464753c4"}, + {file = "setproctitle-1.3.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2407955dc359d735a20ac6e797ad160feb33d529a2ac50695c11a1ec680eafab"}, + {file = "setproctitle-1.3.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:38ca045626af693da042ac35d7332e7b9dbd52e6351d6973b310612e3acee6d6"}, + {file = "setproctitle-1.3.6-cp310-cp310-win32.whl", hash = "sha256:9483aa336687463f5497dd37a070094f3dff55e2c888994f8440fcf426a1a844"}, + {file = "setproctitle-1.3.6-cp310-cp310-win_amd64.whl", hash = "sha256:4efc91b437f6ff2578e89e3f17d010c0a0ff01736606473d082913ecaf7859ba"}, + {file = "setproctitle-1.3.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a1d856b0f4e4a33e31cdab5f50d0a14998f3a2d726a3fd5cb7c4d45a57b28d1b"}, + {file = "setproctitle-1.3.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:50706b9c0eda55f7de18695bfeead5f28b58aa42fd5219b3b1692d554ecbc9ec"}, + {file = "setproctitle-1.3.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af188f3305f0a65c3217c30c6d4c06891e79144076a91e8b454f14256acc7279"}, + {file = "setproctitle-1.3.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cce0ed8b3f64c71c140f0ec244e5fdf8ecf78ddf8d2e591d4a8b6aa1c1214235"}, + {file = "setproctitle-1.3.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70100e2087fe05359f249a0b5f393127b3a1819bf34dec3a3e0d4941138650c9"}, + {file = "setproctitle-1.3.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1065ed36bd03a3fd4186d6c6de5f19846650b015789f72e2dea2d77be99bdca1"}, + {file = "setproctitle-1.3.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4adf6a0013fe4e0844e3ba7583ec203ca518b9394c6cc0d3354df2bf31d1c034"}, + {file = "setproctitle-1.3.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:eb7452849f6615871eabed6560ffedfe56bc8af31a823b6be4ce1e6ff0ab72c5"}, + {file = "setproctitle-1.3.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a094b7ce455ca341b59a0f6ce6be2e11411ba6e2860b9aa3dbb37468f23338f4"}, + {file = "setproctitle-1.3.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ad1c2c2baaba62823a7f348f469a967ece0062140ca39e7a48e4bbb1f20d54c4"}, + {file = "setproctitle-1.3.6-cp311-cp311-win32.whl", hash = "sha256:8050c01331135f77ec99d99307bfbc6519ea24d2f92964b06f3222a804a3ff1f"}, + {file = "setproctitle-1.3.6-cp311-cp311-win_amd64.whl", hash = "sha256:9b73cf0fe28009a04a35bb2522e4c5b5176cc148919431dcb73fdbdfaab15781"}, + {file = "setproctitle-1.3.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:af44bb7a1af163806bbb679eb8432fa7b4fb6d83a5d403b541b675dcd3798638"}, + {file = "setproctitle-1.3.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cca16fd055316a48f0debfcbfb6af7cea715429fc31515ab3fcac05abd527d8"}, + {file = "setproctitle-1.3.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea002088d5554fd75e619742cefc78b84a212ba21632e59931b3501f0cfc8f67"}, + {file = "setproctitle-1.3.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb465dd5825356c1191a038a86ee1b8166e3562d6e8add95eec04ab484cfb8a2"}, + {file = "setproctitle-1.3.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2c8e20487b3b73c1fa72c56f5c89430617296cd380373e7af3a538a82d4cd6d"}, + {file = "setproctitle-1.3.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d6252098e98129a1decb59b46920d4eca17b0395f3d71b0d327d086fefe77d"}, + {file = "setproctitle-1.3.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf355fbf0d4275d86f9f57be705d8e5eaa7f8ddb12b24ced2ea6cbd68fdb14dc"}, + {file = "setproctitle-1.3.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e288f8a162d663916060beb5e8165a8551312b08efee9cf68302687471a6545d"}, + {file = "setproctitle-1.3.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b2e54f4a2dc6edf0f5ea5b1d0a608d2af3dcb5aa8c8eeab9c8841b23e1b054fe"}, + {file = "setproctitle-1.3.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b6f4abde9a2946f57e8daaf1160b2351bcf64274ef539e6675c1d945dbd75e2a"}, + {file = "setproctitle-1.3.6-cp312-cp312-win32.whl", hash = "sha256:db608db98ccc21248370d30044a60843b3f0f3d34781ceeea67067c508cd5a28"}, + {file = "setproctitle-1.3.6-cp312-cp312-win_amd64.whl", hash = "sha256:082413db8a96b1f021088e8ec23f0a61fec352e649aba20881895815388b66d3"}, + {file = "setproctitle-1.3.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e2a9e62647dc040a76d55563580bf3bb8fe1f5b6ead08447c2ed0d7786e5e794"}, + {file = "setproctitle-1.3.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:751ba352ed922e0af60458e961167fa7b732ac31c0ddd1476a2dfd30ab5958c5"}, + {file = "setproctitle-1.3.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7890e291bf4708e3b61db9069ea39b3ab0651e42923a5e1f4d78a7b9e4b18301"}, + {file = "setproctitle-1.3.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2b17855ed7f994f3f259cf2dfbfad78814538536fa1a91b50253d84d87fd88d"}, + {file = "setproctitle-1.3.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e51ec673513465663008ce402171192a053564865c2fc6dc840620871a9bd7c"}, + {file = "setproctitle-1.3.6-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63cc10352dc6cf35a33951656aa660d99f25f574eb78132ce41a85001a638aa7"}, + {file = "setproctitle-1.3.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0dba8faee2e4a96e934797c9f0f2d093f8239bf210406a99060b3eabe549628e"}, + {file = "setproctitle-1.3.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e3e44d08b61de0dd6f205528498f834a51a5c06689f8fb182fe26f3a3ce7dca9"}, + {file = "setproctitle-1.3.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:de004939fc3fd0c1200d26ea9264350bfe501ffbf46c8cf5dc7f345f2d87a7f1"}, + {file = "setproctitle-1.3.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3f8194b4d631b003a1176a75d1acd545e04b1f54b821638e098a93e6e62830ef"}, + {file = "setproctitle-1.3.6-cp313-cp313-win32.whl", hash = "sha256:d714e002dd3638170fe7376dc1b686dbac9cb712cde3f7224440af722cc9866a"}, + {file = "setproctitle-1.3.6-cp313-cp313-win_amd64.whl", hash = "sha256:b70c07409d465f3a8b34d52f863871fb8a00755370791d2bd1d4f82b3cdaf3d5"}, + {file = "setproctitle-1.3.6-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:23a57d3b8f1549515c2dbe4a2880ebc1f27780dc126c5e064167563e015817f5"}, + {file = "setproctitle-1.3.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81c443310831e29fabbd07b75ebbfa29d0740b56f5907c6af218482d51260431"}, + {file = "setproctitle-1.3.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d88c63bd395c787b0aa81d8bbc22c1809f311032ce3e823a6517b711129818e4"}, + {file = "setproctitle-1.3.6-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73f14b86d0e2858ece6bf5807c9889670e392c001d414b4293d0d9b291942c3"}, + {file = "setproctitle-1.3.6-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3393859eb8f19f5804049a685bf286cb08d447e28ba5c6d8543c7bf5500d5970"}, + {file = "setproctitle-1.3.6-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:785cd210c0311d9be28a70e281a914486d62bfd44ac926fcd70cf0b4d65dff1c"}, + {file = "setproctitle-1.3.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c051f46ed1e13ba8214b334cbf21902102807582fbfaf0fef341b9e52f0fafbf"}, + {file = "setproctitle-1.3.6-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:49498ebf68ca3e75321ffe634fcea5cc720502bfaa79bd6b03ded92ce0dc3c24"}, + {file = "setproctitle-1.3.6-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:4431629c178193f23c538cb1de3da285a99ccc86b20ee91d81eb5f1a80e0d2ba"}, + {file = "setproctitle-1.3.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d136fbf8ad4321716e44d6d6b3d8dffb4872626010884e07a1db54b7450836cf"}, + {file = "setproctitle-1.3.6-cp313-cp313t-win32.whl", hash = "sha256:d483cc23cc56ab32911ea0baa0d2d9ea7aa065987f47de847a0a93a58bf57905"}, + {file = "setproctitle-1.3.6-cp313-cp313t-win_amd64.whl", hash = "sha256:74973aebea3543ad033b9103db30579ec2b950a466e09f9c2180089e8346e0ec"}, + {file = "setproctitle-1.3.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3884002b3a9086f3018a32ab5d4e1e8214dd70695004e27b1a45c25a6243ad0b"}, + {file = "setproctitle-1.3.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6a1d3aa13acfe81f355b0ce4968facc7a19b0d17223a0f80c011a1dba8388f37"}, + {file = "setproctitle-1.3.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f24d5b9383318cbd1a5cd969377937d66cf0542f24aa728a4f49d9f98f9c0da8"}, + {file = "setproctitle-1.3.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4ae2ea9afcfdd2b931ddcebf1cf82532162677e00326637b31ed5dff7d985ca"}, + {file = "setproctitle-1.3.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:805bb33e92fc3d8aa05674db3068d14d36718e3f2c5c79b09807203f229bf4b5"}, + {file = "setproctitle-1.3.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1b20a5f4164cec7007be55c9cf18d2cd08ed7c3bf6769b3cd6d044ad888d74b"}, + {file = "setproctitle-1.3.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:793a23e8d9cb6c231aa3023d700008224c6ec5b8fd622d50f3c51665e3d0a190"}, + {file = "setproctitle-1.3.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:57bc54763bf741813a99fbde91f6be138c8706148b7b42d3752deec46545d470"}, + {file = "setproctitle-1.3.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:b0174ca6f3018ddeaa49847f29b69612e590534c1d2186d54ab25161ecc42975"}, + {file = "setproctitle-1.3.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:807796fe301b7ed76cf100113cc008c119daf4fea2f9f43c578002aef70c3ebf"}, + {file = "setproctitle-1.3.6-cp38-cp38-win32.whl", hash = "sha256:5313a4e9380e46ca0e2c681ba739296f9e7c899e6f4d12a6702b2dc9fb846a31"}, + {file = "setproctitle-1.3.6-cp38-cp38-win_amd64.whl", hash = "sha256:d5a6c4864bb6fa9fcf7b57a830d21aed69fd71742a5ebcdbafda476be673d212"}, + {file = "setproctitle-1.3.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:391bb6a29c4fe7ccc9c30812e3744060802d89b39264cfa77f3d280d7f387ea5"}, + {file = "setproctitle-1.3.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:156795b3db976611d09252fc80761fcdb65bb7c9b9581148da900851af25ecf4"}, + {file = "setproctitle-1.3.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdd7315314b0744a7dd506f3bd0f2cf90734181529cdcf75542ee35ad885cab7"}, + {file = "setproctitle-1.3.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d50bfcc1d1692dc55165b3dd2f0b9f8fb5b1f7b571a93e08d660ad54b9ca1a5"}, + {file = "setproctitle-1.3.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:163dba68f979c61e4e2e779c4d643e968973bdae7c33c3ec4d1869f7a9ba8390"}, + {file = "setproctitle-1.3.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d5a369eb7ec5b2fdfa9927530b5259dd21893fa75d4e04a223332f61b84b586"}, + {file = "setproctitle-1.3.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:18d0667bafaaae4c1dee831e2e59841c411ff399b9b4766822ba2685d419c3be"}, + {file = "setproctitle-1.3.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f33fbf96b52d51c23b6cff61f57816539c1c147db270cfc1cc3bc012f4a560a9"}, + {file = "setproctitle-1.3.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:543f59601a4e32daf44741b52f9a23e0ee374f9f13b39c41d917302d98fdd7b0"}, + {file = "setproctitle-1.3.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2156d55308431ac3b3ec4e5e05b1726d11a5215352d6a22bb933171dee292f8c"}, + {file = "setproctitle-1.3.6-cp39-cp39-win32.whl", hash = "sha256:17d7c833ed6545ada5ac4bb606b86a28f13a04431953d4beac29d3773aa00b1d"}, + {file = "setproctitle-1.3.6-cp39-cp39-win_amd64.whl", hash = "sha256:2940cf13f4fc11ce69ad2ed37a9f22386bfed314b98d8aebfd4f55459aa59108"}, + {file = "setproctitle-1.3.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3cde5b83ec4915cd5e6ae271937fd60d14113c8f7769b4a20d51769fe70d8717"}, + {file = "setproctitle-1.3.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:797f2846b546a8741413c57d9fb930ad5aa939d925c9c0fa6186d77580035af7"}, + {file = "setproctitle-1.3.6-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac3eb04bcf0119aadc6235a2c162bae5ed5f740e3d42273a7228b915722de20"}, + {file = "setproctitle-1.3.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0e6b5633c94c5111f7137f875e8f1ff48f53b991d5d5b90932f27dc8c1fa9ae4"}, + {file = "setproctitle-1.3.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:ded9e86397267732a0641d4776c7c663ea16b64d7dbc4d9cc6ad8536363a2d29"}, + {file = "setproctitle-1.3.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae82507fe458f7c0c8227017f2158111a4c9e7ce94de05178894a7ea9fefc8a1"}, + {file = "setproctitle-1.3.6-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fc97805f9d74444b027babff710bf39df1541437a6a585a983d090ae00cedde"}, + {file = "setproctitle-1.3.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:83066ffbf77a5f82b7e96e59bdccbdda203c8dccbfc3f9f0fdad3a08d0001d9c"}, + {file = "setproctitle-1.3.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b50700785eccac0819bea794d968ed8f6055c88f29364776b7ea076ac105c5d"}, + {file = "setproctitle-1.3.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92df0e70b884f5da35f2e01489dca3c06a79962fb75636985f1e3a17aec66833"}, + {file = "setproctitle-1.3.6-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8834ab7be6539f1bfadec7c8d12249bbbe6c2413b1d40ffc0ec408692232a0c6"}, + {file = "setproctitle-1.3.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a5963b663da69ad25fa1559ee064584935570def665917918938c1f1289f5ebc"}, + {file = "setproctitle-1.3.6.tar.gz", hash = "sha256:c9f32b96c700bb384f33f7cf07954bb609d35dd82752cef57fb2ee0968409169"}, ] [package.extras] From 1675814071fc49b8e7b0a97e2db3d6a08ea2cc14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 21:14:06 +0000 Subject: [PATCH 76/77] Bump poetry-dynamic-versioning from 1.7.1 to 1.9.1 Bumps [poetry-dynamic-versioning](https://github.com/mtkennerly/poetry-dynamic-versioning) from 1.7.1 to 1.9.1. - [Release notes](https://github.com/mtkennerly/poetry-dynamic-versioning/releases) - [Changelog](https://github.com/mtkennerly/poetry-dynamic-versioning/blob/master/CHANGELOG.md) - [Commits](https://github.com/mtkennerly/poetry-dynamic-versioning/compare/v1.7.1...v1.9.1) --- updated-dependencies: - dependency-name: poetry-dynamic-versioning dependency-version: 1.9.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 16 ++++++++-------- pyproject.toml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index d9e2415504..12e31c8791 100644 --- a/poetry.lock +++ b/poetry.lock @@ -595,14 +595,14 @@ wmi = ["wmi (>=1.5.1)"] [[package]] name = "dunamai" -version = "1.23.1" +version = "1.25.0" description = "Dynamic version generation" optional = false python-versions = ">=3.5" groups = ["dev"] files = [ - {file = "dunamai-1.23.1-py3-none-any.whl", hash = "sha256:2611b0b9105a5797149ef82f4968a01dd912bdac857d49fc06856a4cfa58cf78"}, - {file = "dunamai-1.23.1.tar.gz", hash = "sha256:0b5712fc63bfb235263d912bfc5eb84590ba2201bb737268d25a5dbad7085489"}, + {file = "dunamai-1.25.0-py3-none-any.whl", hash = "sha256:7f9dc687dd3256e613b6cc978d9daabfd2bb5deb8adc541fc135ee423ffa98ab"}, + {file = "dunamai-1.25.0.tar.gz", hash = "sha256:a7f8360ea286d3dbaf0b6a1473f9253280ac93d619836ad4514facb70c0719d1"}, ] [package.dependencies] @@ -1625,18 +1625,18 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "poetry-dynamic-versioning" -version = "1.7.1" +version = "1.9.1" description = "Plugin for Poetry to enable dynamic versioning based on VCS tags" optional = false python-versions = "<4.0,>=3.7" groups = ["dev"] files = [ - {file = "poetry_dynamic_versioning-1.7.1-py3-none-any.whl", hash = "sha256:70a4a54bee89aef276e3f2f8841f10a6f140b19c5aeb371a1a6095f84fcbe7b1"}, - {file = "poetry_dynamic_versioning-1.7.1.tar.gz", hash = "sha256:7304b8459af7b7114cd83429827c4d3d8b7d29df4129dde8dff61c76f93faaa3"}, + {file = "poetry_dynamic_versioning-1.9.1-py3-none-any.whl", hash = "sha256:65a0c814e6d30d4807734a3c34edf261fd7cc3b340dbd23b6a33ee41f7d0b547"}, + {file = "poetry_dynamic_versioning-1.9.1.tar.gz", hash = "sha256:d6e7b9df817aa2ca4946cd695c6c89e1379d2e6c640f008a9b6170d081a9da48"}, ] [package.dependencies] -dunamai = ">=1.21.0,<2.0.0" +dunamai = ">=1.25.0,<2.0.0" jinja2 = ">=2.11.1,<4" tomlkit = ">=0.4" @@ -3198,4 +3198,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.9" -content-hash = "7bebbc324f09f3c87918fa56aa0ac80a3873d8835c9ac589734338637664ac83" +content-hash = "7c6653c0f45363f4fd6fd131408f413748910a4e0aceaa41f0c76d513cdc746d" diff --git a/pyproject.toml b/pyproject.toml index 610c69a8d1..c7b3fddc30 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,7 +59,7 @@ ansible-core = "^2.15.13" tldextract = "^5.3.0" [tool.poetry.group.dev.dependencies] -poetry-dynamic-versioning = ">=0.21.4,<1.8.0" +poetry-dynamic-versioning = ">=0.21.4,<1.10.0" urllib3 = "^2.0.2" werkzeug = ">=2.3.4,<4.0.0" pytest-env = ">=0.8.2,<1.2.0" From bce3ab4b26770bcdd2ba257157b39f6870e4c035 Mon Sep 17 00:00:00 2001 From: TheTechromancer Date: Tue, 12 Aug 2025 10:45:29 -0400 Subject: [PATCH 77/77] bump version --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index c7b3fddc30..03d7c947c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "bbot" -version = "2.5.0" +version = "2.6.0" description = "OSINT automation for hackers." authors = [ "TheTechromancer", @@ -109,7 +109,7 @@ lint.ignore = ["E402", "E711", "E713", "E721", "E741", "F403", "F405", "E501"] [tool.poetry-dynamic-versioning] enable = true metadata = false -format-jinja = 'v2.5.0{% if branch == "dev" %}.{{ distance }}rc{% endif %}' +format-jinja = 'v2.6.0{% if branch == "dev" %}.{{ distance }}rc{% endif %}' [tool.poetry-dynamic-versioning.substitution] files = ["*/__init__.py"]