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 }}
diff --git a/bbot/core/helpers/command.py b/bbot/core/helpers/command.py
index d4f017b330..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
@@ -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([str(s) for s in 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:
@@ -279,6 +281,7 @@ 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:
diff --git a/bbot/core/helpers/depsinstaller/installer.py b/bbot/core/helpers/depsinstaller/installer.py
index 5bea5f508a..2a17ee5b90 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": [
{
@@ -53,6 +67,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):
@@ -171,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:
@@ -196,7 +243,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'
)
@@ -206,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):
diff --git a/bbot/core/helpers/misc.py b/bbot/core/helpers/misc.py
index 135e89fd80..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:
@@ -1309,7 +1311,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:
@@ -1325,7 +1327,7 @@ def which(*executables):
import shutil
for e in executables:
- location = shutil.which(e)
+ location = shutil.which(e, path=path)
if location:
return location
@@ -1642,7 +1644,7 @@ def filesize(f):
return 0
-def rm_rf(f):
+def rm_rf(f, ignore_errors=False):
"""Recursively delete a directory
Args:
@@ -1653,7 +1655,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):
diff --git a/bbot/core/helpers/names_generator.py b/bbot/core/helpers/names_generator.py
index 84e7ac4e4f..9c0da33607 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",
@@ -172,6 +173,7 @@
"pasty",
"peckish",
"pedantic",
+ "pensive",
"pernicious",
"perturbed",
"perverted",
@@ -201,8 +203,10 @@
"reckless",
"reductive",
"ripped",
+ "ruthless",
"sadistic",
"satanic",
+ "saucy",
"savvy",
"scheming",
"schizophrenic",
@@ -668,6 +672,7 @@
"tracy",
"travis",
"treebeard",
+ "trent",
"triss",
"tyler",
"tyrell",
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:
diff --git a/bbot/core/shared_deps.py b/bbot/core/shared_deps.py
index cd338093fc..013a8b4d67 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_darwin_x86_64",
+ "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_darwin_arm64",
+ "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_darwin_x86_64.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_darwin_arm64.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/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/aspnet_bin_exposure.py b/bbot/modules/aspnet_bin_exposure.py
new file mode 100644
index 0000000000..9367058412
--- /dev/null
+++ b/bbot/modules/aspnet_bin_exposure.py
@@ -0,0 +1,80 @@
+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",
+ ]
+
+ @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)
+ 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)}]"
+ )
+
+ 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:
+ return True
+ return False
diff --git a/bbot/modules/base.py b/bbot/modules/base.py
index e085c99c93..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,8 +383,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", False)
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 +1203,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 +1229,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/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/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/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"}
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/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/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/gowitness.py b/bbot/modules/gowitness.py
index 6e3b2e19eb..ad1a07b828 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
@@ -15,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,
@@ -23,6 +24,7 @@ class gowitness(BaseModule):
"output_path": "",
"social": False,
"idle_timeout": 1800,
+ "chrome_path": "",
}
options_desc = {
"version": "Gowitness version",
@@ -33,6 +35,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,29 +70,54 @@ async def setup(self):
self.base_path = Path(output_path) / "gowitness"
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:
+ config_chrome_path = Path(config_chrome_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:
+ 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
+
+ # 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
- for binary in ("chrome", "chromium", "chromium-browser", custom_chrome_path):
- binary_path = self.helpers.which(binary)
- 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}")
- 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()
@@ -133,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):
@@ -146,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,
@@ -163,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"):
@@ -182,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"]
@@ -196,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):
@@ -226,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:
@@ -242,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
@@ -256,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/modules/graphql_introspection.py b/bbot/modules/graphql_introspection.py
new file mode 100644
index 0000000000..43852f73d8
--- /dev/null
+++ b/bbot/modules/graphql_introspection.py
@@ -0,0 +1,142 @@
+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", "web-basic"]
+ 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",
+ }
+
+ 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 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"{base_url}{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 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()
+ except json.JSONDecodeError:
+ self.debug(f"Failed to parse JSON for {url}")
+ continue
+ if response_json.get("data", {}).get("__schema", {}).get("types", []):
+ 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(
+ {"url": url, "description": "GraphQL schema", "path": str(filename.relative_to(self.scan.home))},
+ "FINDING",
+ event,
+ context=f"{{module}} found GraphQL schema at {url}",
+ )
+ # return, because we only want to find one schema per target
+ return
diff --git a/bbot/modules/hunt.py b/bbot/modules/hunt.py
index 6f3e619965..57e064d4bf 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,8 +288,6 @@ class hunt(BaseModule):
"author": "@liquidsec",
"created_date": "2022-07-20",
}
- # accept all events regardless of scope distance
- scope_distance_modifier = None
async def handle_event(self, event):
p = event.data["name"]
diff --git a/bbot/modules/iis_shortnames.py b/bbot/modules/iis_shortnames.py
index 48860445f5..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:
@@ -334,6 +338,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"
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
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/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/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/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/modules/trufflehog.py b/bbot/modules/trufflehog.py
index 56aabdea46..b15441b56d 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.90.1",
"config": "",
"only_verified": True,
"concurrency": 8,
@@ -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:
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):
diff --git a/bbot/presets/web/dotnet-audit.yml b/bbot/presets/web/dotnet-audit.yml
index 993d6dd198..581c26c7ab 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:
diff --git a/bbot/scanner/scanner.py b/bbot/scanner/scanner.py
index 3c99441b96..b2cc0d56df 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,6 +888,7 @@ async def _cleanup(self):
await mod._cleanup()
with contextlib.suppress(Exception):
self.home.rmdir()
+ self.helpers.rm_rf(self.temp_dir, ignore_errors=True)
self.helpers.clean_old_scans()
def in_scope(self, *args, **kwargs):
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_1/test_helpers.py b/bbot/test/test_step_1/test_helpers.py
index 12fb15278f..0adbe233bf 100644
--- a/bbot/test/test_step_1/test_helpers.py
+++ b/bbot/test/test_step_1/test_helpers.py
@@ -954,3 +954,22 @@ 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_rm_temp_dir_at_exit(helpers):
+ from bbot.scanner import Scanner
+
+ scan = Scanner("127.0.0.1", modules=["httpx"])
+ await scan._prep()
+
+ temp_dir = scan.home / "temp"
+
+ # temp dir should exist
+ assert temp_dir.exists()
+
+ events = [e async for e in scan.async_start()]
+ assert events
+
+ # temp dir should be removed
+ assert not temp_dir.exists()
diff --git a/bbot/test/test_step_2/module_tests/test_module_aspnet_bin_exposure.py b/bbot/test/test_step_2/module_tests/test_module_aspnet_bin_exposure.py
new file mode 100644
index 0000000000..ca14ff7d03
--- /dev/null
+++ b/bbot/test/test_step_2/module_tests/test_module_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"
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/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_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
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"
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
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_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
)
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")
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/custom_yara_rules.md b/docs/modules/custom_yara_rules.md
index 3a7ab005cd..5e40856173 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 [Black Lantern Security]", "host": "www.blacklanternsecurity.com", "url": "https://www.blacklanternsecurity.com/"} excavate (cdn-github, cdn-ip)
```
diff --git a/docs/modules/list_of_modules.md b/docs/modules/list_of_modules.md
index 6c16ca7a8f..9affadcfa3 100644
--- a/docs/modules/list_of_modules.md
+++ b/docs/modules/list_of_modules.md
@@ -51,14 +51,13 @@
| 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 |
-| 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..f6d9a57619 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,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
-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 ddcd74f249..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,11 +479,9 @@ 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.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 |
@@ -509,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 | |
@@ -539,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 |
@@ -551,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 37a23552d4..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 | 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_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 | 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 cf65bb153d..5dc568aaa3 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, 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 |
-| 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 | 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
diff --git a/docs/scanning/presets_list.md b/docs/scanning/presets_list.md
index 00aba13c8f..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`, `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: [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`, `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: [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`, `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: [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, 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 |
-| 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, 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 |
-| 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, 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 |
-| 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 |
diff --git a/poetry.lock b/poetry.lock
index 5b5329af9b..cdf8576b85 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]
@@ -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"
@@ -1258,14 +1219,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]
@@ -1483,80 +1444,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]]
@@ -1649,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"
@@ -1749,41 +1725,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]]
@@ -2103,14 +2091,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]
@@ -2526,125 +2514,137 @@ 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]]
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]
@@ -2871,14 +2871,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]
@@ -2889,14 +2889,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]
@@ -2905,7 +2905,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"
@@ -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"},
@@ -3206,4 +3210,4 @@ type = ["pytest-mypy"]
[metadata]
lock-version = "2.1"
python-versions = "^3.9"
-content-hash = "9c855edb77c7d1473a492ce8567acdb285bb4e382c1e6a33cd32e96f2ad83e1f"
+content-hash = "7c6653c0f45363f4fd6fd131408f413748910a4e0aceaa41f0c76d513cdc746d"
diff --git a/pyproject.toml b/pyproject.toml
index 67ae2af447..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",
@@ -38,9 +38,8 @@ 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"
-tldextract = "^5.1.1"
cachetools = ">=5.3.2,<7.0.0"
socksio = "^1.0.0"
jinja2 = "^3.1.3"
@@ -57,9 +56,10 @@ 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"
+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"
@@ -70,10 +70,10 @@ 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.11.11"
+ruff = "0.12.4"
[tool.poetry.group.docs.dependencies]
mkdocs = "^1.5.2"
@@ -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"]