bbot 2.3.2.5950rc0__py3-none-any.whl → 2.3.2.5967rc0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bbot might be problematic. Click here for more details.
- bbot/__init__.py +1 -1
- bbot/core/helpers/validators.py +1 -0
- bbot/modules/base.py +1 -1
- bbot/modules/crt.py +46 -20
- bbot/modules/deadly/ffuf.py +6 -0
- bbot/modules/ffuf_shortnames.py +3 -0
- bbot/modules/portfilter.py +2 -0
- bbot/modules/{internetdb.py → shodan_idb.py} +5 -10
- bbot/scanner/scanner.py +1 -0
- bbot/test/test_step_2/module_tests/test_module_crt.py +16 -6
- bbot/test/test_step_2/module_tests/{test_module_internetdb.py → test_module_shodan_idb.py} +11 -5
- bbot/test/test_step_2/module_tests/test_module_speculate.py +1 -1
- {bbot-2.3.2.5950rc0.dist-info → bbot-2.3.2.5967rc0.dist-info}/METADATA +1 -1
- {bbot-2.3.2.5950rc0.dist-info → bbot-2.3.2.5967rc0.dist-info}/RECORD +17 -17
- {bbot-2.3.2.5950rc0.dist-info → bbot-2.3.2.5967rc0.dist-info}/LICENSE +0 -0
- {bbot-2.3.2.5950rc0.dist-info → bbot-2.3.2.5967rc0.dist-info}/WHEEL +0 -0
- {bbot-2.3.2.5950rc0.dist-info → bbot-2.3.2.5967rc0.dist-info}/entry_points.txt +0 -0
bbot/__init__.py
CHANGED
bbot/core/helpers/validators.py
CHANGED
bbot/modules/base.py
CHANGED
|
@@ -71,7 +71,7 @@ class BaseModule:
|
|
|
71
71
|
|
|
72
72
|
_qsize (int): Outgoing queue size (0 for infinite). Default is 0.
|
|
73
73
|
|
|
74
|
-
_priority (int): Priority level of
|
|
74
|
+
_priority (int): Priority level of the module. Lower values are higher priority. Default is 3.
|
|
75
75
|
|
|
76
76
|
_name (str): Module name, overridden automatically. Default is 'base'.
|
|
77
77
|
|
bbot/modules/crt.py
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import time
|
|
2
|
+
import asyncpg
|
|
3
|
+
|
|
1
4
|
from bbot.modules.templates.subdomain_enum import subdomain_enum
|
|
2
5
|
|
|
3
6
|
|
|
@@ -11,30 +14,53 @@ class crt(subdomain_enum):
|
|
|
11
14
|
"author": "@TheTechromancer",
|
|
12
15
|
}
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
deps_pip = ["asyncpg"]
|
|
18
|
+
|
|
19
|
+
db_host = "crt.sh"
|
|
20
|
+
db_port = 5432
|
|
21
|
+
db_user = "guest"
|
|
22
|
+
db_name = "certwatch"
|
|
15
23
|
reject_wildcards = False
|
|
16
24
|
|
|
17
25
|
async def setup(self):
|
|
18
|
-
self.
|
|
26
|
+
self.db_conn = None
|
|
19
27
|
return await super().setup()
|
|
20
28
|
|
|
21
29
|
async def request_url(self, query):
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
30
|
+
if not self.db_conn:
|
|
31
|
+
self.db_conn = await asyncpg.connect(
|
|
32
|
+
host=self.db_host, port=self.db_port, user=self.db_user, database=self.db_name
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
sql = """
|
|
36
|
+
WITH ci AS (
|
|
37
|
+
SELECT array_agg(DISTINCT sub.NAME_VALUE) NAME_VALUES
|
|
38
|
+
FROM (
|
|
39
|
+
SELECT DISTINCT cai.CERTIFICATE, cai.NAME_VALUE
|
|
40
|
+
FROM certificate_and_identities cai
|
|
41
|
+
WHERE plainto_tsquery('certwatch', $1) @@ identities(cai.CERTIFICATE)
|
|
42
|
+
AND cai.NAME_VALUE ILIKE ('%.' || $1)
|
|
43
|
+
LIMIT 50000
|
|
44
|
+
) sub
|
|
45
|
+
GROUP BY sub.CERTIFICATE
|
|
46
|
+
)
|
|
47
|
+
SELECT DISTINCT unnest(NAME_VALUES) as name_value FROM ci;
|
|
48
|
+
"""
|
|
49
|
+
start = time.time()
|
|
50
|
+
results = await self.db_conn.fetch(sql, query)
|
|
51
|
+
end = time.time()
|
|
52
|
+
self.verbose(f"SQL query executed in: {end - start} seconds with {len(results):,} results")
|
|
40
53
|
return results
|
|
54
|
+
|
|
55
|
+
async def parse_results(self, results, query):
|
|
56
|
+
domains = set()
|
|
57
|
+
for row in results:
|
|
58
|
+
domain = row["name_value"]
|
|
59
|
+
if domain:
|
|
60
|
+
for d in domain.splitlines():
|
|
61
|
+
domains.add(d.lower())
|
|
62
|
+
return domains
|
|
63
|
+
|
|
64
|
+
async def cleanup(self):
|
|
65
|
+
if self.db_conn:
|
|
66
|
+
await self.db_conn.close()
|
bbot/modules/deadly/ffuf.py
CHANGED
|
@@ -18,6 +18,7 @@ class ffuf(BaseModule):
|
|
|
18
18
|
"max_depth": 0,
|
|
19
19
|
"extensions": "",
|
|
20
20
|
"ignore_case": False,
|
|
21
|
+
"rate": 0,
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
options_desc = {
|
|
@@ -26,6 +27,7 @@ class ffuf(BaseModule):
|
|
|
26
27
|
"max_depth": "the maximum directory depth to attempt to solve",
|
|
27
28
|
"extensions": "Optionally include a list of extensions to extend the keyword with (comma separated)",
|
|
28
29
|
"ignore_case": "Only put lowercase words into the wordlist",
|
|
30
|
+
"rate": "Rate of requests per second (default: 0)",
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
deps_common = ["ffuf"]
|
|
@@ -43,6 +45,7 @@ class ffuf(BaseModule):
|
|
|
43
45
|
self.wordlist = await self.helpers.wordlist(wordlist_url)
|
|
44
46
|
self.wordlist_lines = self.generate_wordlist(self.wordlist)
|
|
45
47
|
self.tempfile, tempfile_len = self.generate_templist()
|
|
48
|
+
self.rate = self.config.get("rate", 0)
|
|
46
49
|
self.verbose(f"Generated dynamic wordlist with length [{str(tempfile_len)}]")
|
|
47
50
|
try:
|
|
48
51
|
self.extensions = self.helpers.chain_lists(self.config.get("extensions", ""), validate=True)
|
|
@@ -245,6 +248,9 @@ class ffuf(BaseModule):
|
|
|
245
248
|
self.debug("invalid mode specified, aborting")
|
|
246
249
|
return
|
|
247
250
|
|
|
251
|
+
if self.rate > 0:
|
|
252
|
+
command += ["-rate", f"{self.rate}"]
|
|
253
|
+
|
|
248
254
|
if self.proxy:
|
|
249
255
|
command += ["-x", self.proxy]
|
|
250
256
|
|
bbot/modules/ffuf_shortnames.py
CHANGED
|
@@ -26,6 +26,7 @@ class ffuf_shortnames(ffuf):
|
|
|
26
26
|
"find_delimiters": True,
|
|
27
27
|
"find_subwords": False,
|
|
28
28
|
"max_predictions": 250,
|
|
29
|
+
"rate": 0,
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
options_desc = {
|
|
@@ -38,6 +39,7 @@ class ffuf_shortnames(ffuf):
|
|
|
38
39
|
"find_delimiters": "Attempt to detect common delimiters and make additional ffuf runs against them",
|
|
39
40
|
"find_subwords": "Attempt to detect subwords and make additional ffuf runs against them",
|
|
40
41
|
"max_predictions": "The maximum number of predictions to generate per shortname prefix",
|
|
42
|
+
"rate": "Rate of requests per second (default: 0)",
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
deps_pip = ["numpy"]
|
|
@@ -96,6 +98,7 @@ class ffuf_shortnames(ffuf):
|
|
|
96
98
|
self.ignore_redirects = self.config.get("ignore_redirects")
|
|
97
99
|
self.max_predictions = self.config.get("max_predictions")
|
|
98
100
|
self.find_subwords = self.config.get("find_subwords")
|
|
101
|
+
self.rate = self.config.get("rate", 0)
|
|
99
102
|
|
|
100
103
|
class MinimalWordPredictor:
|
|
101
104
|
def __init__(self):
|
bbot/modules/portfilter.py
CHANGED
|
@@ -18,6 +18,8 @@ class portfilter(BaseInterceptModule):
|
|
|
18
18
|
"allowed_cdn_ports": "Comma-separated list of ports that are allowed to be scanned for CDNs",
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
_priority = 4
|
|
22
|
+
|
|
21
23
|
async def setup(self):
|
|
22
24
|
self.cdn_tags = [t.strip() for t in self.config.get("cdn_tags", "").split(",")]
|
|
23
25
|
self.allowed_cdn_ports = self.config.get("allowed_cdn_ports", "").strip()
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
from bbot.modules.base import BaseModule
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class shodan_idb(BaseModule):
|
|
5
5
|
"""
|
|
6
6
|
Query IP in Shodan InternetDB, returning open ports, discovered technologies, and findings/vulnerabilities
|
|
7
|
+
|
|
8
|
+
InternetDB is especially nice because it doesn't require an API key
|
|
9
|
+
|
|
7
10
|
API reference: https://internetdb.shodan.io/docs
|
|
8
11
|
|
|
9
12
|
Example API response:
|
|
@@ -43,22 +46,15 @@ class internetdb(BaseModule):
|
|
|
43
46
|
"created_date": "2023-12-22",
|
|
44
47
|
"author": "@TheTechromancer",
|
|
45
48
|
}
|
|
46
|
-
options = {"show_open_ports": False}
|
|
47
|
-
options_desc = {
|
|
48
|
-
"show_open_ports": "Display OPEN_TCP_PORT events in output, even if they didn't lead to an interesting discovery"
|
|
49
|
-
}
|
|
50
49
|
|
|
51
50
|
# we get lots of 404s, that's normal
|
|
52
51
|
_api_failure_abort_threshold = 9999999999
|
|
53
52
|
|
|
53
|
+
# there aren't any rate limits to speak of, so our outgoing queue can be pretty big
|
|
54
54
|
_qsize = 500
|
|
55
55
|
|
|
56
56
|
base_url = "https://internetdb.shodan.io"
|
|
57
57
|
|
|
58
|
-
async def setup(self):
|
|
59
|
-
self.show_open_ports = self.config.get("show_open_ports", False)
|
|
60
|
-
return True
|
|
61
|
-
|
|
62
58
|
def _incoming_dedup_hash(self, event):
|
|
63
59
|
return hash(self.get_ip(event))
|
|
64
60
|
|
|
@@ -115,7 +111,6 @@ class internetdb(BaseModule):
|
|
|
115
111
|
self.helpers.make_netloc(event.data, port),
|
|
116
112
|
"OPEN_TCP_PORT",
|
|
117
113
|
parent=event,
|
|
118
|
-
internal=(not self.show_open_ports),
|
|
119
114
|
context=f'{{module}} queried Shodan\'s InternetDB API for "{query_host}" and found {{event.type}}: {{event.data}}',
|
|
120
115
|
)
|
|
121
116
|
vulns = data.get("vulns", [])
|
bbot/scanner/scanner.py
CHANGED
|
@@ -289,6 +289,7 @@ class Scanner:
|
|
|
289
289
|
|
|
290
290
|
# intercept modules get sewn together like human centipede
|
|
291
291
|
self.intercept_modules = [m for m in self.modules.values() if m._intercept]
|
|
292
|
+
self.intercept_modules.sort(key=lambda x: x.priority)
|
|
292
293
|
for i, intercept_module in enumerate(self.intercept_modules[1:]):
|
|
293
294
|
prev_intercept_module = self.intercept_modules[i]
|
|
294
295
|
self.debug(
|
|
@@ -3,12 +3,22 @@ from .base import ModuleTestBase
|
|
|
3
3
|
|
|
4
4
|
class TestCRT(ModuleTestBase):
|
|
5
5
|
async def setup_after_prep(self, module_test):
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
class AsyncMock:
|
|
7
|
+
async def fetch(self, *args, **kwargs):
|
|
8
|
+
print("mock_fetch", args, kwargs)
|
|
9
|
+
return [
|
|
10
|
+
{"name_value": "asdf.blacklanternsecurity.com"},
|
|
11
|
+
{"name_value": "zzzz.blacklanternsecurity.com"},
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
async def close(self):
|
|
15
|
+
pass
|
|
16
|
+
|
|
17
|
+
async def mock_connect(*args, **kwargs):
|
|
18
|
+
print("mock_connect", args, kwargs)
|
|
19
|
+
return AsyncMock()
|
|
20
|
+
|
|
21
|
+
module_test.monkeypatch.setattr("asyncpg.connect", mock_connect)
|
|
12
22
|
|
|
13
23
|
def check(self, module_test, events):
|
|
14
24
|
assert any(e.data == "asdf.blacklanternsecurity.com" for e in events), "Failed to detect subdomain"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from .base import ModuleTestBase
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class TestShodan_IDB(ModuleTestBase):
|
|
5
5
|
config_overrides = {"dns": {"minimal": False}}
|
|
6
6
|
|
|
7
7
|
async def setup_before_prep(self, module_test):
|
|
@@ -36,15 +36,21 @@ class TestInternetDB(ModuleTestBase):
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
def check(self, module_test, events):
|
|
39
|
-
assert
|
|
39
|
+
assert 8 == len([e for e in events if str(e.module) == "shodan_idb"])
|
|
40
40
|
assert 1 == len(
|
|
41
41
|
[e for e in events if e.type == "DNS_NAME" and e.data == "autodiscover.blacklanternsecurity.com"]
|
|
42
42
|
)
|
|
43
43
|
assert 1 == len([e for e in events if e.type == "DNS_NAME" and e.data == "mail.blacklanternsecurity.com"])
|
|
44
|
-
assert
|
|
45
|
-
|
|
44
|
+
assert 3 == len(
|
|
45
|
+
[
|
|
46
|
+
e
|
|
47
|
+
for e in events
|
|
48
|
+
if e.type == "OPEN_TCP_PORT" and e.host == "blacklanternsecurity.com" and str(e.module) == "shodan_idb"
|
|
49
|
+
]
|
|
50
|
+
)
|
|
51
|
+
assert 1 == len([e for e in events if e.type == "FINDING" and str(e.module) == "shodan_idb"])
|
|
46
52
|
assert 1 == len([e for e in events if e.type == "FINDING" and "CVE-2021-26857" in e.data["description"]])
|
|
47
|
-
assert 2 == len([e for e in events if e.type == "TECHNOLOGY" and str(e.module) == "
|
|
53
|
+
assert 2 == len([e for e in events if e.type == "TECHNOLOGY" and str(e.module) == "shodan_idb"])
|
|
48
54
|
assert 1 == len(
|
|
49
55
|
[
|
|
50
56
|
e
|
|
@@ -24,7 +24,7 @@ class TestSpeculate_Subdirectories(ModuleTestBase):
|
|
|
24
24
|
|
|
25
25
|
class TestSpeculate_OpenPorts(ModuleTestBase):
|
|
26
26
|
targets = ["evilcorp.com"]
|
|
27
|
-
modules_overrides = ["speculate", "certspotter", "
|
|
27
|
+
modules_overrides = ["speculate", "certspotter", "shodan_idb"]
|
|
28
28
|
config_overrides = {"speculate": True}
|
|
29
29
|
|
|
30
30
|
async def setup_before_prep(self, module_test):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: bbot
|
|
3
|
-
Version: 2.3.2.
|
|
3
|
+
Version: 2.3.2.5967rc0
|
|
4
4
|
Summary: OSINT automation for hackers.
|
|
5
5
|
License: GPL-3.0
|
|
6
6
|
Keywords: python,cli,automation,osint,threat-intel,intelligence,neo4j,scanner,python-library,hacking,recursion,pentesting,recon,command-line-tool,bugbounty,subdomains,security-tools,subdomain-scanner,osint-framework,attack-surface,subdomain-enumeration,osint-tool
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
bbot/__init__.py,sha256=
|
|
1
|
+
bbot/__init__.py,sha256=gNH8a_FbsuSk_HfyZgqcLVb3MOH1DLEqkfpcnokHVBg,130
|
|
2
2
|
bbot/cli.py,sha256=H7L3yIoYuSpkrf1K1qqiBMQBTyt8UI9FfConpjqr7KI,11029
|
|
3
3
|
bbot/core/__init__.py,sha256=l255GJE_DvUnWvrRb0J5lG-iMztJ8zVvoweDOfegGtI,46
|
|
4
4
|
bbot/core/config/__init__.py,sha256=zYNw2Me6tsEr8hOOkLb4BQ97GB7Kis2k--G81S8vofU,342
|
|
@@ -37,7 +37,7 @@ bbot/core/helpers/ratelimiter.py,sha256=fQp5mKfqfCkDkZzgntDu4NWlRsWSMCto0V8vaV8-
|
|
|
37
37
|
bbot/core/helpers/regex.py,sha256=YCyvK78piK8p4YMTPH9hD1mILkZtPzLC0lNRf0vsj9g,4371
|
|
38
38
|
bbot/core/helpers/regexes.py,sha256=whzgjomHsXVvKtvXLS037EMPxT9RSOxdWukpUHY8Pfc,5818
|
|
39
39
|
bbot/core/helpers/url.py,sha256=1NDrvirODzzD6Mcssu-4WDNerMeMdekHCFzhRCS0m3g,5947
|
|
40
|
-
bbot/core/helpers/validators.py,sha256
|
|
40
|
+
bbot/core/helpers/validators.py,sha256=-WBYvjlwi5SsVtn_LankKGI8vaBza2NqvM1lGbVmiN4,9711
|
|
41
41
|
bbot/core/helpers/web/__init__.py,sha256=pIEkL3DhjaGTSmZ7D3yKKYwWpntoLRILekV2wWsbsws,27
|
|
42
42
|
bbot/core/helpers/web/client.py,sha256=12lKbyWJQpVKBnKGCuMNNUn47ifs1fsB02nebceX75Y,3591
|
|
43
43
|
bbot/core/helpers/web/engine.py,sha256=mzXpYmlB1pvNSXs8FuliGMv7myUwAcQWTtnMHqblMHA,8875
|
|
@@ -61,7 +61,7 @@ bbot/modules/baddns.py,sha256=y6zTuE668MvNdaQszmkwYSwWzrjqit5X3zf5kLJbQC8,6692
|
|
|
61
61
|
bbot/modules/baddns_direct.py,sha256=yoOSqi4Z1ZwrycGbwklCukDBjWRWlz6JV67v_xVwHbE,3818
|
|
62
62
|
bbot/modules/baddns_zone.py,sha256=IcewDBtA_-64NCNFojEFd9jt2YBek6ltB2mmqdDH6LE,1034
|
|
63
63
|
bbot/modules/badsecrets.py,sha256=LG37p48Rlxsfc3BmACMpkypsbuFTVvXqNhlP1IEsx0k,5109
|
|
64
|
-
bbot/modules/base.py,sha256=
|
|
64
|
+
bbot/modules/base.py,sha256=ufqXGnY6W8-umqvaU5om6ghijv9sfJbqBNvnGQZzkM4,72786
|
|
65
65
|
bbot/modules/bevigil.py,sha256=0VLIxmeXRUI2-EoR6IzuHJMcX8KCHNNta-WYa3gVlDg,2862
|
|
66
66
|
bbot/modules/binaryedge.py,sha256=5F9LnZwRM_rZnzTv29hLJLI2GEQdzOwSpahPFC1kJC0,1397
|
|
67
67
|
bbot/modules/bucket_amazon.py,sha256=mwjYeEAcdfOpjbOa1sD8U9KBMMVY_c8FoHjSGR9GQbg,730
|
|
@@ -79,9 +79,9 @@ bbot/modules/certspotter.py,sha256=AtL5BiOuDp4vu1-5fct4aQAGZM2qiODYsbgBsw0phoU,9
|
|
|
79
79
|
bbot/modules/chaos.py,sha256=JyuwytwE3IRmNbw-uyJ0gCaTnywhhsHzTiZ3OJ15PAw,1573
|
|
80
80
|
bbot/modules/code_repository.py,sha256=x70Z45VnNNMF8BPkHfGWZXsZXw_fStGB3y0-8jbP1Ns,2078
|
|
81
81
|
bbot/modules/credshed.py,sha256=HAF5wgRGKIIpdMAe4mIAtkZRLmFYjMFyXtjjst6RJ20,4203
|
|
82
|
-
bbot/modules/crt.py,sha256
|
|
82
|
+
bbot/modules/crt.py,sha256=-_ZTmQofCqhtGl-Xp4kWmDndivAKZx71I1JwHWjl4Rg,2048
|
|
83
83
|
bbot/modules/deadly/dastardly.py,sha256=dxPkJUfAsuddDDuI_uVyTUxkJ5eps92nSrPtpBOTlQg,5315
|
|
84
|
-
bbot/modules/deadly/ffuf.py,sha256=
|
|
84
|
+
bbot/modules/deadly/ffuf.py,sha256=VVehiHYEieVMuOjoAXD32NdgATW3aGg5PFm8NlQBjK0,14955
|
|
85
85
|
bbot/modules/deadly/nuclei.py,sha256=-Ne3NMQwa55oMG_AkYWyxQMOA1j6Omkk7VHdSjh8isU,17808
|
|
86
86
|
bbot/modules/deadly/vhost.py,sha256=m7RdR0w7Hs38IGVHUu_3Er-_5ABVdalRG_8znQepxD0,5456
|
|
87
87
|
bbot/modules/dehashed.py,sha256=iyzWHmJs6zC7FsRhw9_AdkckQKCf_0oNnL9RwG409r0,5071
|
|
@@ -98,7 +98,7 @@ bbot/modules/dockerhub.py,sha256=JQkujjqvQRzQuvHjQ7JbFs_VlJj8dLRPRObAkBgUQhc,349
|
|
|
98
98
|
bbot/modules/dotnetnuke.py,sha256=zipcHyNYr2FEecStb1Yrm938ps01RvHV8NnyqAvnGGc,10537
|
|
99
99
|
bbot/modules/emailformat.py,sha256=RLPJW-xitYB-VT4Lp08qVzFkXx_kMyV_035JT_Yf4fM,1082
|
|
100
100
|
bbot/modules/extractous.py,sha256=VSGKmHPAA_4r62jaN8Yqi3JcjehjxpI2lhe8i2j786s,4648
|
|
101
|
-
bbot/modules/ffuf_shortnames.py,sha256=
|
|
101
|
+
bbot/modules/ffuf_shortnames.py,sha256=VxAxSrkU_XqRrOdv03YgwPLgW4OD6VcVwYpyQ7kt6_U,18744
|
|
102
102
|
bbot/modules/filedownload.py,sha256=TOxftfxguaRSEKI8oG79XVRQqUGg1_IhYDYl_Jw9eYc,8694
|
|
103
103
|
bbot/modules/fingerprintx.py,sha256=rdlR9d64AntAhbS_eJzh8bZCeLPTJPSKdkdKdhH_qAo,3269
|
|
104
104
|
bbot/modules/fullhunt.py,sha256=zeehQb9akBSbHW9dF4icH8Vfd8LqoTrpIvnQEEMWes8,1311
|
|
@@ -126,7 +126,6 @@ bbot/modules/internal/dnsresolve.py,sha256=1fwWChIGpSEIIkswueiIhEwIahQ7YngZ-njFK
|
|
|
126
126
|
bbot/modules/internal/excavate.py,sha256=D5IDS6IQIRS5v5q3IbpDnL7k6MyGtV02zx6HUm1ZbHE,51983
|
|
127
127
|
bbot/modules/internal/speculate.py,sha256=NolqW2s8tokibc6gVM960KlrABkjhLB-7YlCdVx4O9s,9223
|
|
128
128
|
bbot/modules/internal/unarchive.py,sha256=X5lG8lh8vbwWNhQDCEADAHBZVcror5EZDLTUnvcuAuM,3723
|
|
129
|
-
bbot/modules/internetdb.py,sha256=Edg0Z84dH8dPTZMd7RlzvYBYNq8JHs_ns_ldnFxwRKo,5415
|
|
130
129
|
bbot/modules/ip2location.py,sha256=yGivX9fzvwvLpnqmYCP2a8SPjTarzrZxfRluog-nkME,2628
|
|
131
130
|
bbot/modules/ipneighbor.py,sha256=b_0IhorihFLtXJZEz57EGXjXW30gIOEzzVgz2GFvM3A,1591
|
|
132
131
|
bbot/modules/ipstack.py,sha256=j_S8WMNqQuSQgBT7AX4tO70fgbWuRYrpsS3tVsu_hn4,2200
|
|
@@ -165,7 +164,7 @@ bbot/modules/paramminer_getparams.py,sha256=_j6rgaqV5wGJoa8p5-KKbe2YsVGUtmWIanCV
|
|
|
165
164
|
bbot/modules/paramminer_headers.py,sha256=CuiqT3nY3eIrZhT4CAEkRDfCbCYci8CmnXsippf3Qb4,10450
|
|
166
165
|
bbot/modules/passivetotal.py,sha256=uGT6c_CUxBNInmClsTg8afIYA2ZykKYYCgjkyzujfHg,1653
|
|
167
166
|
bbot/modules/pgp.py,sha256=Xu2M9WEIlwTm5-Lv29g7BblI05tD9Dl0XsYSeY6UURs,2065
|
|
168
|
-
bbot/modules/portfilter.py,sha256=
|
|
167
|
+
bbot/modules/portfilter.py,sha256=4ZJ6tE0opC07D3xNCEvEcRfhT_rHk-GCN8x46CkavrQ,1742
|
|
169
168
|
bbot/modules/portscan.py,sha256=dM2p3tBGQKSdeZRMlCpOwqRpz0XJfIMwY2n3Ajaig_M,13441
|
|
170
169
|
bbot/modules/postman.py,sha256=vo761Nzu3kPBzfCY3KJcvsGEsjImaa7iA2z-LyASBDc,4589
|
|
171
170
|
bbot/modules/postman_download.py,sha256=LUB9cP-otkB1HaNACGS5YPwsxnwp1uSo28SpGvmQ60A,3467
|
|
@@ -177,6 +176,7 @@ bbot/modules/robots.py,sha256=LGG6ixsxrlaCk-mi4Lp6kB2RB1v-25NhTAQxdQEtH8s,2172
|
|
|
177
176
|
bbot/modules/securitytrails.py,sha256=5Jk_HTQP8FRq6A30sN19FU79uLJt7aiOsI2dxNkLDcM,1148
|
|
178
177
|
bbot/modules/securitytxt.py,sha256=nwaTOnRAl2NWcEc3i_I9agB56QjqK8dHqiKRHPPkCPE,4558
|
|
179
178
|
bbot/modules/shodan_dns.py,sha256=ETOyUhCiAETlGUAQhvAP47oEEPYss7fm_F_CAeCQyoI,842
|
|
179
|
+
bbot/modules/shodan_idb.py,sha256=kyPbGI68BrLgCab_T5emKXBoyD2OVn59K0J1V6CNR4s,5213
|
|
180
180
|
bbot/modules/sitedossier.py,sha256=MR9fSkgE_3YGsUe7M-TyJ2GdpBtF3oLKDl9agAwzw5U,2284
|
|
181
181
|
bbot/modules/skymem.py,sha256=ZrxWcePFTCiDkFeAc3YLegFG-Tgw4C9af_JHiVonk84,1930
|
|
182
182
|
bbot/modules/smuggler.py,sha256=v8NCRgzd7wpEFZJUTAArG04bN8nNTGiHxYpGBapzi14,1580
|
|
@@ -234,7 +234,7 @@ bbot/scanner/preset/conditions.py,sha256=hFL9cSIWGEsv2TfM5UGurf0c91cyaM8egb5IngB
|
|
|
234
234
|
bbot/scanner/preset/environ.py,sha256=9KbEOLWkUdoAf5Ez_2A1NNm6QduQElbnNnrPi6VDhZs,4731
|
|
235
235
|
bbot/scanner/preset/path.py,sha256=Q29MO8cOEn690yW6bB08P72kbZ3C-H_TOEoXuwWnFM8,2274
|
|
236
236
|
bbot/scanner/preset/preset.py,sha256=Xmh9mkO4c985sOG8BGRwujBUmO1jCpHRC_Sgq2fD_dY,40805
|
|
237
|
-
bbot/scanner/scanner.py,sha256=
|
|
237
|
+
bbot/scanner/scanner.py,sha256=O9LPaOa33yjdtolri3pcmQOBj4_8fMpMlwoYICZYK0M,54617
|
|
238
238
|
bbot/scanner/stats.py,sha256=re93sArKXZSiD0Owgqk2J3Kdvfm3RL4Y9Qy_VOcaVk8,3623
|
|
239
239
|
bbot/scanner/target.py,sha256=EQwtFZLDeNlqt8JupyBEksqeQ_c_i3NARSWf3mQQC4k,12128
|
|
240
240
|
bbot/scripts/docs.py,sha256=ZLY9-O6OeEElzOUvTglO5EMkRv1s4aEuxJb2CthCVsI,10782
|
|
@@ -305,7 +305,7 @@ bbot/test/test_step_2/module_tests/test_module_chaos.py,sha256=9JRgtDEnnJgmEMCTB
|
|
|
305
305
|
bbot/test/test_step_2/module_tests/test_module_cloudcheck.py,sha256=9KjGREpzOVByDVjIEWoaWbS3RwPlYLN3mw-OnRvD7sg,4083
|
|
306
306
|
bbot/test/test_step_2/module_tests/test_module_code_repository.py,sha256=i02Tgvr_F9_E4d6aEaXrfdk71NkoDvjzP4C98l2rNGg,2414
|
|
307
307
|
bbot/test/test_step_2/module_tests/test_module_credshed.py,sha256=ipkCFL7YmZBLWWoGyGr98saL_yh3E99EnLtagHqdY1g,3360
|
|
308
|
-
bbot/test/test_step_2/module_tests/test_module_crt.py,sha256=
|
|
308
|
+
bbot/test/test_step_2/module_tests/test_module_crt.py,sha256=HOx8z9ZUWAvqhso3_xfgbUElL-KHw3yX_LgHTBGObPI,944
|
|
309
309
|
bbot/test/test_step_2/module_tests/test_module_csv.py,sha256=UJqMqdiPjx-UjJw10OoVMAj378wu5mWIq0v04TCljTM,579
|
|
310
310
|
bbot/test/test_step_2/module_tests/test_module_dastardly.py,sha256=jjpJD9mdCcbaJgnG63xE-J_Qqpjt9hpm_WvfHDLfTsc,2353
|
|
311
311
|
bbot/test/test_step_2/module_tests/test_module_dehashed.py,sha256=BZ0LFO4xBwDsXzsqjZCYRMTbXdwwUEma2OeJh8YQIEs,3625
|
|
@@ -348,7 +348,6 @@ bbot/test/test_step_2/module_tests/test_module_httpx.py,sha256=kUSJd0eu-e7rj1hna
|
|
|
348
348
|
bbot/test/test_step_2/module_tests/test_module_hunt.py,sha256=xSnPevrLgFe-umWjvF-X8hOavZCn1s1sClXKM3WBLpE,744
|
|
349
349
|
bbot/test/test_step_2/module_tests/test_module_hunterio.py,sha256=s0ENxJzLuUu7MD-_-H0ClpLqPuhsQbX-3IgTuiHR5Xs,6982
|
|
350
350
|
bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py,sha256=JJUoLvw4CqP_iBUlkhnsNjn1wVEYKCBgAldOmm9Vv80,2913
|
|
351
|
-
bbot/test/test_step_2/module_tests/test_module_internetdb.py,sha256=3FRiC2ktEC7udvai_WbPOP0jI5j2RBCRQbDz8ccjSqo,2240
|
|
352
351
|
bbot/test/test_step_2/module_tests/test_module_ip2location.py,sha256=VRuXQelBc3hTNXiAJZD0ow5R4t6L8xAi_tS62TFLJKA,1123
|
|
353
352
|
bbot/test/test_step_2/module_tests/test_module_ipneighbor.py,sha256=Bc5xaiIpleC7j5Lz2Y8S9i6PHETOg4KmwiLNJ9HeMx8,608
|
|
354
353
|
bbot/test/test_step_2/module_tests/test_module_ipstack.py,sha256=BgCeE9Bef2RM6akluq0XVzr4G23kpP0Nqfydm_RoTXU,2767
|
|
@@ -380,12 +379,13 @@ bbot/test/test_step_2/module_tests/test_module_robots.py,sha256=8rRw4GpGE6tN_W3o
|
|
|
380
379
|
bbot/test/test_step_2/module_tests/test_module_securitytrails.py,sha256=NB8_PhWN1-2s8wporRjI6rrQeQW4inoz4Z_mBhhycXo,758
|
|
381
380
|
bbot/test/test_step_2/module_tests/test_module_securitytxt.py,sha256=ZGl1iZVVE_JfqC_AAYSLLdXGOu57rCM1rnCYlRNxrM0,2390
|
|
382
381
|
bbot/test/test_step_2/module_tests/test_module_shodan_dns.py,sha256=9DpFizZguP2aFCKI1HgXzxy3sB_afA03pzIx0BDfgqg,1515
|
|
382
|
+
bbot/test/test_step_2/module_tests/test_module_shodan_idb.py,sha256=rfDkPGfFt3EWKZZsKVJL6NTMzEoRGsHDwJpbMAzdCas,2399
|
|
383
383
|
bbot/test/test_step_2/module_tests/test_module_sitedossier.py,sha256=jwAP1RYWYLkEQDYX7YTOuU_rhPoJAriwrj1JYkdt-Vk,6582
|
|
384
384
|
bbot/test/test_step_2/module_tests/test_module_skymem.py,sha256=VaRhEmrZ0auKmxExeuYmzryXpZ0h78AqSVozkqJ5dXo,2321
|
|
385
385
|
bbot/test/test_step_2/module_tests/test_module_slack.py,sha256=oJvUzSowPAhpbMFnzl-iS3XvLQBxCaO_vofhu_bgR4w,317
|
|
386
386
|
bbot/test/test_step_2/module_tests/test_module_smuggler.py,sha256=Kppv1r7ykaHeLDjAAXxiLPYA7Mo9QrQK3bfdYMVlmk4,2293
|
|
387
387
|
bbot/test/test_step_2/module_tests/test_module_social.py,sha256=McjY8g97HbZm5xnarW924pGytwwGGnzA6MfD0HmBPMU,2050
|
|
388
|
-
bbot/test/test_step_2/module_tests/test_module_speculate.py,sha256=
|
|
388
|
+
bbot/test/test_step_2/module_tests/test_module_speculate.py,sha256=BozxKWHwdO5-kXhu7vjWyHL-Y_FjkbCwlkvdS2FeHq8,3059
|
|
389
389
|
bbot/test/test_step_2/module_tests/test_module_splunk.py,sha256=u6cNNWzMSweiqABroFFZ810JvzORf7Sli_K9xWK46Ek,1859
|
|
390
390
|
bbot/test/test_step_2/module_tests/test_module_sqlite.py,sha256=mpplbL84zPuH4WJgbmm698gFTJewi1Qw_e4AG_ZOTfE,829
|
|
391
391
|
bbot/test/test_step_2/module_tests/test_module_sslcert.py,sha256=XeiV9eQZNnA5oALCVnP7bEs3m9kMaVwEtg-hvYfgi3Y,711
|
|
@@ -425,8 +425,8 @@ bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt,sha256=ZSIVebs7ptMvHx
|
|
|
425
425
|
bbot/wordlists/top_open_ports_nmap.txt,sha256=LmdFYkfapSxn1pVuQC2LkOIY2hMLgG-Xts7DVtYzweM,42727
|
|
426
426
|
bbot/wordlists/valid_url_schemes.txt,sha256=0B_VAr9Dv7aYhwi6JSBDU-3M76vNtzN0qEC_RNLo7HE,3310
|
|
427
427
|
bbot/wordlists/wordninja_dns.txt.gz,sha256=DYHvvfW0TvzrVwyprqODAk4tGOxv5ezNmCPSdPuDUnQ,570241
|
|
428
|
-
bbot-2.3.2.
|
|
429
|
-
bbot-2.3.2.
|
|
430
|
-
bbot-2.3.2.
|
|
431
|
-
bbot-2.3.2.
|
|
432
|
-
bbot-2.3.2.
|
|
428
|
+
bbot-2.3.2.5967rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
|
|
429
|
+
bbot-2.3.2.5967rc0.dist-info/METADATA,sha256=PP0aJvmkP5PEo_oGZFS-ehsbHprEoyAV8cHoRi5IFg4,18218
|
|
430
|
+
bbot-2.3.2.5967rc0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
|
431
|
+
bbot-2.3.2.5967rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
|
|
432
|
+
bbot-2.3.2.5967rc0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|