bbot 2.3.0.5328rc0__py3-none-any.whl → 2.3.0.5354rc0__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/libmagic.py +34 -36
- bbot/modules/internal/cloudcheck.py +20 -5
- bbot/modules/portscan.py +28 -2
- bbot/modules/templates/subdomain_enum.py +1 -1
- bbot/scanner/scanner.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +4 -0
- bbot/test/test_step_2/module_tests/test_module_portscan.py +6 -4
- {bbot-2.3.0.5328rc0.dist-info → bbot-2.3.0.5354rc0.dist-info}/METADATA +3 -3
- {bbot-2.3.0.5328rc0.dist-info → bbot-2.3.0.5354rc0.dist-info}/RECORD +13 -13
- {bbot-2.3.0.5328rc0.dist-info → bbot-2.3.0.5354rc0.dist-info}/LICENSE +0 -0
- {bbot-2.3.0.5328rc0.dist-info → bbot-2.3.0.5354rc0.dist-info}/WHEEL +0 -0
- {bbot-2.3.0.5328rc0.dist-info → bbot-2.3.0.5354rc0.dist-info}/entry_points.txt +0 -0
bbot/__init__.py
CHANGED
bbot/core/helpers/libmagic.py
CHANGED
|
@@ -15,54 +15,52 @@ def get_compression(mime_type):
|
|
|
15
15
|
mime_type = mime_type.lower()
|
|
16
16
|
# from https://github.com/cdgriffith/puremagic/blob/master/puremagic/magic_data.json
|
|
17
17
|
compression_map = {
|
|
18
|
-
"application/gzip": "gzip", # Gzip compressed file
|
|
19
|
-
"application/zip": "zip", # Zip archive
|
|
20
|
-
"application/x-bzip2": "bzip2", # Bzip2 compressed file
|
|
21
|
-
"application/x-xz": "xz", # XZ compressed file
|
|
22
|
-
"application/x-7z-compressed": "7z", # 7-Zip archive
|
|
23
|
-
"application/vnd.rar": "rar", # RAR archive
|
|
24
|
-
"application/x-lzma": "lzma", # LZMA compressed file
|
|
25
|
-
"application/x-compress": "compress", # Unix compress file
|
|
26
|
-
"application/zstd": "zstd", # Zstandard compressed file
|
|
27
|
-
"application/x-lz4": "lz4", # LZ4 compressed file
|
|
28
|
-
"application/x-tar": "tar", # Tar archive
|
|
29
|
-
"application/x-zip-compressed-fb2": "zip", # Zip archive (FB2)
|
|
30
|
-
"application/epub+zip": "zip", # EPUB book (Zip archive)
|
|
31
|
-
"application/pak": "pak", # PAK archive
|
|
32
|
-
"application/x-lha": "lha", # LHA archive
|
|
33
18
|
"application/arj": "arj", # ARJ archive
|
|
34
|
-
"application/vnd.ms-cab-compressed": "cab", # Microsoft Cabinet archive
|
|
35
|
-
"application/x-sit": "sit", # StuffIt archive
|
|
36
19
|
"application/binhex": "binhex", # BinHex encoded file
|
|
37
|
-
"application/
|
|
38
|
-
"application/x-alz": "alz", # ALZip archive
|
|
39
|
-
"application/x-tgz": "tgz", # Gzip compressed Tar archive
|
|
40
|
-
"application/x-gzip": "gzip", # Gzip compressed file
|
|
41
|
-
"application/x-lzip": "lzip", # Lzip compressed file
|
|
42
|
-
"application/x-zstd-compressed-tar": "zstd", # Zstandard compressed Tar archive
|
|
43
|
-
"application/x-lz4-compressed-tar": "lz4", # LZ4 compressed Tar archive
|
|
44
|
-
"application/vnd.comicbook+zip": "zip", # Comic book archive (Zip)
|
|
45
|
-
"application/vnd.palm": "palm", # Palm OS data
|
|
20
|
+
"application/epub+zip": "zip", # EPUB book (Zip archive)
|
|
46
21
|
"application/fictionbook2+zip": "zip", # FictionBook 2.0 (Zip)
|
|
47
22
|
"application/fictionbook3+zip": "zip", # FictionBook 3.0 (Zip)
|
|
23
|
+
"application/gzip": "gzip", # Gzip compressed file
|
|
24
|
+
"application/java-archive": "zip", # Java Archive (JAR)
|
|
25
|
+
"application/pak": "pak", # PAK archive
|
|
26
|
+
"application/vnd.android.package-archive": "zip", # Android package (APK)
|
|
27
|
+
"application/vnd.comicbook-rar": "rar", # Comic book archive (RAR)
|
|
28
|
+
"application/vnd.comicbook+zip": "zip", # Comic book archive (Zip)
|
|
29
|
+
"application/vnd.ms-cab-compressed": "cab", # Microsoft Cabinet archive
|
|
30
|
+
"application/vnd.palm": "palm", # Palm OS data
|
|
31
|
+
"application/vnd.rar": "rar", # RAR archive
|
|
32
|
+
"application/x-7z-compressed": "7z", # 7-Zip archive
|
|
33
|
+
"application/x-ace": "ace", # ACE archive
|
|
34
|
+
"application/x-alz": "alz", # ALZip archive
|
|
35
|
+
"application/x-arc": "arc", # ARC archive
|
|
36
|
+
"application/x-archive": "ar", # Unix archive
|
|
37
|
+
"application/x-bzip2": "bzip2", # Bzip2 compressed file
|
|
38
|
+
"application/x-compress": "compress", # Unix compress file
|
|
48
39
|
"application/x-cpio": "cpio", # CPIO archive
|
|
40
|
+
"application/x-gzip": "gzip", # Gzip compressed file
|
|
41
|
+
"application/x-itunes-ipa": "zip", # iOS application archive (IPA)
|
|
49
42
|
"application/x-java-pack200": "pack200", # Java Pack200 archive
|
|
43
|
+
"application/x-lha": "lha", # LHA archive
|
|
44
|
+
"application/x-lrzip": "lrzip", # Long Range ZIP
|
|
45
|
+
"application/x-lz4-compressed-tar": "lz4", # LZ4 compressed Tar archive
|
|
46
|
+
"application/x-lz4": "lz4", # LZ4 compressed file
|
|
47
|
+
"application/x-lzip": "lzip", # Lzip compressed file
|
|
48
|
+
"application/x-lzma": "lzma", # LZMA compressed file
|
|
50
49
|
"application/x-par2": "par2", # PAR2 recovery file
|
|
50
|
+
"application/x-qpress": "qpress", # Qpress archive
|
|
51
51
|
"application/x-rar-compressed": "rar", # RAR archive
|
|
52
|
-
"application/
|
|
53
|
-
"application/x-webarchive": "zip", # Web archive (Zip)
|
|
54
|
-
"application/vnd.android.package-archive": "zip", # Android package (APK)
|
|
55
|
-
"application/x-itunes-ipa": "zip", # iOS application archive (IPA)
|
|
52
|
+
"application/x-sit": "sit", # StuffIt archive
|
|
56
53
|
"application/x-stuffit": "sit", # StuffIt archive
|
|
57
|
-
"application/x-
|
|
58
|
-
"application/x-
|
|
54
|
+
"application/x-tar": "tar", # Tar archive
|
|
55
|
+
"application/x-tgz": "tgz", # Gzip compressed Tar archive
|
|
56
|
+
"application/x-webarchive": "zip", # Web archive (Zip)
|
|
59
57
|
"application/x-xar": "xar", # XAR archive
|
|
60
|
-
"application/x-
|
|
58
|
+
"application/x-xz": "xz", # XZ compressed file
|
|
59
|
+
"application/x-zip-compressed-fb2": "zip", # Zip archive (FB2)
|
|
61
60
|
"application/x-zoo": "zoo", # Zoo archive
|
|
62
|
-
"application/x-arc": "arc", # ARC archive
|
|
63
61
|
"application/x-zstd-compressed-tar": "zstd", # Zstandard compressed Tar archive
|
|
64
|
-
"application/
|
|
65
|
-
"application/
|
|
62
|
+
"application/zip": "zip", # Zip archive
|
|
63
|
+
"application/zstd": "zstd", # Zstandard compressed file
|
|
66
64
|
}
|
|
67
65
|
|
|
68
66
|
return compression_map.get(mime_type, "")
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from contextlib import suppress
|
|
2
|
+
|
|
1
3
|
from bbot.modules.base import BaseInterceptModule
|
|
2
4
|
|
|
3
5
|
|
|
@@ -28,15 +30,28 @@ class CloudCheck(BaseInterceptModule):
|
|
|
28
30
|
if self.dummy_modules is None:
|
|
29
31
|
self.make_dummy_modules()
|
|
30
32
|
# cloud tagging by hosts
|
|
31
|
-
hosts_to_check = set(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
hosts_to_check = set(event.resolved_hosts)
|
|
34
|
+
with suppress(KeyError):
|
|
35
|
+
hosts_to_check.remove(event.host_original)
|
|
36
|
+
hosts_to_check = [event.host_original] + list(hosts_to_check)
|
|
37
|
+
|
|
38
|
+
for i, host in enumerate(hosts_to_check):
|
|
39
|
+
host_is_ip = self.helpers.is_ip(host)
|
|
35
40
|
for provider, provider_type, subnet in self.helpers.cloudcheck(host):
|
|
36
41
|
if provider:
|
|
37
42
|
event.add_tag(f"{provider_type}-{provider}")
|
|
43
|
+
if host_is_ip:
|
|
44
|
+
event.add_tag(f"{provider_type}-ip")
|
|
45
|
+
else:
|
|
46
|
+
# if the original hostname is a cloud domain, tag it as such
|
|
47
|
+
if i == 0:
|
|
48
|
+
event.add_tag(f"{provider_type}-domain")
|
|
49
|
+
# any children are tagged as CNAMEs
|
|
50
|
+
else:
|
|
51
|
+
event.add_tag(f"{provider_type}-cname")
|
|
38
52
|
|
|
39
53
|
found = set()
|
|
54
|
+
str_hosts_to_check = [str(host) for host in hosts_to_check]
|
|
40
55
|
# look for cloud assets in hosts, http responses
|
|
41
56
|
# loop through each provider
|
|
42
57
|
for provider in self.helpers.cloud.providers.values():
|
|
@@ -54,7 +69,7 @@ class CloudCheck(BaseInterceptModule):
|
|
|
54
69
|
if event.type == "HTTP_RESPONSE":
|
|
55
70
|
matches = await self.helpers.re.findall(sig, event.data.get("body", ""))
|
|
56
71
|
elif event.type.startswith("DNS_NAME"):
|
|
57
|
-
for host in
|
|
72
|
+
for host in str_hosts_to_check:
|
|
58
73
|
match = sig.match(host)
|
|
59
74
|
if match:
|
|
60
75
|
matches.append(match.groups())
|
bbot/modules/portscan.py
CHANGED
|
@@ -6,6 +6,9 @@ from radixtarget import RadixTarget
|
|
|
6
6
|
from bbot.modules.base import BaseModule
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
# TODO: this module is getting big. It should probably be two modules: one for ping and one for SYN.
|
|
10
|
+
|
|
11
|
+
|
|
9
12
|
class portscan(BaseModule):
|
|
10
13
|
flags = ["active", "portscan", "safe"]
|
|
11
14
|
watched_events = ["IP_ADDRESS", "IP_RANGE", "DNS_NAME"]
|
|
@@ -27,6 +30,8 @@ class portscan(BaseModule):
|
|
|
27
30
|
"adapter_ip": "",
|
|
28
31
|
"adapter_mac": "",
|
|
29
32
|
"router_mac": "",
|
|
33
|
+
"cdn_tags": "cdn-",
|
|
34
|
+
"allowed_cdn_ports": None,
|
|
30
35
|
}
|
|
31
36
|
options_desc = {
|
|
32
37
|
"top_ports": "Top ports to scan (default 100) (to override, specify 'ports')",
|
|
@@ -39,6 +44,8 @@ class portscan(BaseModule):
|
|
|
39
44
|
"adapter_ip": "Send packets using this IP address. Not needed unless masscan's autodetection fails",
|
|
40
45
|
"adapter_mac": "Send packets using this as the source MAC address. Not needed unless masscan's autodetection fails",
|
|
41
46
|
"router_mac": "Send packets to this MAC address as the destination. Not needed unless masscan's autodetection fails",
|
|
47
|
+
"cdn_tags": "Comma-separated list of tags to skip, e.g. 'cdn,cloud'",
|
|
48
|
+
"allowed_cdn_ports": "Comma-separated list of ports that are allowed to be scanned for CDNs",
|
|
42
49
|
}
|
|
43
50
|
deps_common = ["masscan"]
|
|
44
51
|
batch_size = 1000000
|
|
@@ -60,7 +67,15 @@ class portscan(BaseModule):
|
|
|
60
67
|
try:
|
|
61
68
|
self.helpers.parse_port_string(self.ports)
|
|
62
69
|
except ValueError as e:
|
|
63
|
-
return False, f"Error parsing ports: {e}"
|
|
70
|
+
return False, f"Error parsing ports '{self.ports}': {e}"
|
|
71
|
+
self.cdn_tags = [t.strip() for t in self.config.get("cdn_tags", "").split(",")]
|
|
72
|
+
self.allowed_cdn_ports = self.config.get("allowed_cdn_ports", None)
|
|
73
|
+
if self.allowed_cdn_ports is not None:
|
|
74
|
+
try:
|
|
75
|
+
self.allowed_cdn_ports = [int(p.strip()) for p in self.allowed_cdn_ports.split(",")]
|
|
76
|
+
except Exception as e:
|
|
77
|
+
return False, f"Error parsing allowed CDN ports '{self.allowed_cdn_ports}': {e}"
|
|
78
|
+
|
|
64
79
|
# whether we've finished scanning our original scan targets
|
|
65
80
|
self.scanned_initial_targets = False
|
|
66
81
|
# keeps track of individual scanned IPs and their open ports
|
|
@@ -227,9 +242,20 @@ class portscan(BaseModule):
|
|
|
227
242
|
parent=parent_event,
|
|
228
243
|
context=f"{{module}} executed a {scan_type} scan against {parent_event.data} and found: {{event.type}}: {{event.data}}",
|
|
229
244
|
)
|
|
230
|
-
|
|
245
|
+
|
|
246
|
+
await self.emit_event(event, abort_if=self.abort_if)
|
|
231
247
|
return event
|
|
232
248
|
|
|
249
|
+
def abort_if(self, event):
|
|
250
|
+
if self.allowed_cdn_ports is not None:
|
|
251
|
+
# if the host is a CDN
|
|
252
|
+
for cdn_tag in self.cdn_tags:
|
|
253
|
+
if any(t.startswith(str(cdn_tag)) for t in event.tags):
|
|
254
|
+
# and if its port isn't in the list of allowed CDN ports
|
|
255
|
+
if event.port not in self.allowed_cdn_ports:
|
|
256
|
+
return True, "event is a CDN and port is not in the allowed list"
|
|
257
|
+
return False
|
|
258
|
+
|
|
233
259
|
def parse_json_line(self, line):
|
|
234
260
|
try:
|
|
235
261
|
j = json.loads(line)
|
|
@@ -169,7 +169,7 @@ class subdomain_enum(BaseModule):
|
|
|
169
169
|
if any(t.startswith("cloud-") for t in event.tags):
|
|
170
170
|
is_cloud = True
|
|
171
171
|
# reject if it's a cloud resource and not in our target
|
|
172
|
-
if is_cloud and event not in self.scan.target:
|
|
172
|
+
if is_cloud and event not in self.scan.target.whitelist:
|
|
173
173
|
return False, "Event is a cloud resource and not a direct target"
|
|
174
174
|
# optionally reject events with wildcards / errors
|
|
175
175
|
if self.reject_wildcards:
|
bbot/scanner/scanner.py
CHANGED
|
@@ -51,6 +51,10 @@ class TestCloudCheck(ModuleTestBase):
|
|
|
51
51
|
await module.handle_event(event)
|
|
52
52
|
assert "cloud-amazon" in event.tags, f"{event} was not properly cloud-tagged"
|
|
53
53
|
|
|
54
|
+
assert "cloud-domain" in aws_event1.tags
|
|
55
|
+
assert "cloud-ip" in other_event2.tags
|
|
56
|
+
assert "cloud-cname" in other_event3.tags
|
|
57
|
+
|
|
54
58
|
for event in (aws_event3, other_event1):
|
|
55
59
|
await module.handle_event(event)
|
|
56
60
|
assert "cloud-amazon" not in event.tags, f"{event} was improperly cloud-tagged"
|
|
@@ -109,10 +109,12 @@ class TestPortscan(ModuleTestBase):
|
|
|
109
109
|
if e.type == "DNS_NAME" and e.data == "dummy.asdf.evilcorp.net" and str(e.module) == "dummy_module"
|
|
110
110
|
]
|
|
111
111
|
)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.
|
|
115
|
-
assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.4.
|
|
112
|
+
# the reason these numbers aren't exactly predictable is because we can't predict which one arrives first
|
|
113
|
+
# to the portscan module. Sometimes, one that would normally be deduped is force-emitted because it led to a new open port.
|
|
114
|
+
assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.8.8"]) <= 4
|
|
115
|
+
assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.4.4"]) <= 4
|
|
116
|
+
assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.4.5"]) <= 4
|
|
117
|
+
assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.4.6"]) <= 4
|
|
116
118
|
assert 1 == len([e for e in events if e.type == "OPEN_TCP_PORT" and e.data == "8.8.8.8:443"])
|
|
117
119
|
assert 1 == len([e for e in events if e.type == "OPEN_TCP_PORT" and e.data == "8.8.4.5:80"])
|
|
118
120
|
assert 1 == len([e for e in events if e.type == "OPEN_TCP_PORT" and e.data == "8.8.4.6:631"])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: bbot
|
|
3
|
-
Version: 2.3.0.
|
|
3
|
+
Version: 2.3.0.5354rc0
|
|
4
4
|
Summary: OSINT automation for hackers.
|
|
5
5
|
Home-page: https://github.com/blacklanternsecurity/bbot
|
|
6
6
|
License: GPL-3.0
|
|
@@ -249,10 +249,10 @@ flags:
|
|
|
249
249
|
|
|
250
250
|
```bash
|
|
251
251
|
# everything everywhere all at once
|
|
252
|
-
bbot -t evilcorp.com -p kitchen-sink
|
|
252
|
+
bbot -t evilcorp.com -p kitchen-sink --allow-deadly
|
|
253
253
|
|
|
254
254
|
# roughly equivalent to:
|
|
255
|
-
bbot -t evilcorp.com -p subdomain-enum cloud-enum code-enum email-enum spider web-basic paramminer dirbust-light web-screenshots
|
|
255
|
+
bbot -t evilcorp.com -p subdomain-enum cloud-enum code-enum email-enum spider web-basic paramminer dirbust-light web-screenshots --allow-deadly
|
|
256
256
|
```
|
|
257
257
|
|
|
258
258
|
<!-- BBOT KITCHEN-SINK PRESET EXPANDABLE -->
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
bbot/__init__.py,sha256
|
|
1
|
+
bbot/__init__.py,sha256=-FTJivANQg1DxYPRW-_-j0E66PFIwvSBnASvwTEpp_g,130
|
|
2
2
|
bbot/cli.py,sha256=-9d6yCAYZaP0lIOCja-fSk3MiNclc-kbEgos10jYNUQ,10440
|
|
3
3
|
bbot/core/__init__.py,sha256=l255GJE_DvUnWvrRb0J5lG-iMztJ8zVvoweDOfegGtI,46
|
|
4
4
|
bbot/core/config/__init__.py,sha256=zYNw2Me6tsEr8hOOkLb4BQ97GB7Kis2k--G81S8vofU,342
|
|
@@ -28,7 +28,7 @@ bbot/core/helpers/dns/mock.py,sha256=Ztkp2aOuwDJ0NTQSlAk2H0s3Stx9wIM22Qm3VtqWMKM
|
|
|
28
28
|
bbot/core/helpers/files.py,sha256=GqrwNGJljUvGSzaOW5-Y357hkt7j88dOYbzQxJGsdTc,5787
|
|
29
29
|
bbot/core/helpers/helper.py,sha256=t6bv_wwI_MYlVpBAh9_c318rRSKGmoejx6qO9JOldbI,8423
|
|
30
30
|
bbot/core/helpers/interactsh.py,sha256=Q9IHUzH-T7e1s4YTHevHe-VJj1Mokv0EHY16UZJdl8M,12627
|
|
31
|
-
bbot/core/helpers/libmagic.py,sha256=
|
|
31
|
+
bbot/core/helpers/libmagic.py,sha256=RHx1WZ4KJlfSLSeb6NYW_Rel7WmuZUl5ebofASrc0HY,3461
|
|
32
32
|
bbot/core/helpers/misc.py,sha256=fphXVSGtW70m2xdUCPDdISLtLwIG1v_cL6RxgNGmJNk,87757
|
|
33
33
|
bbot/core/helpers/names_generator.py,sha256=Sj_Q-7KQyElEpalzlUadSwaniESqrIVVEle9ycPIiho,10322
|
|
34
34
|
bbot/core/helpers/ntlm.py,sha256=P2Xj4-GPos2iAzw4dfk0FJp6oGyycGhu2x6sLDVjYjs,2573
|
|
@@ -120,7 +120,7 @@ bbot/modules/iis_shortnames.py,sha256=NI0lAcTzUTJCkw9uJZJB6_OsOQ7J6bSGtZw_nAWHvo
|
|
|
120
120
|
bbot/modules/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
121
|
bbot/modules/internal/aggregate.py,sha256=csWYIt2fUp9K_CRxP3bndUMIjpNIh8rmBubp5Fr1-nc,395
|
|
122
122
|
bbot/modules/internal/base.py,sha256=BXO4Hc7XKaAOaLzolF3krJX1KibPxtek2GTQUgnCHk0,387
|
|
123
|
-
bbot/modules/internal/cloudcheck.py,sha256=
|
|
123
|
+
bbot/modules/internal/cloudcheck.py,sha256=86wYVzoY8OeorpqQFger9UrdNdu2vTkd8XmC9xtplUc,4727
|
|
124
124
|
bbot/modules/internal/dnsresolve.py,sha256=UW88BlpJ7gOjPARrjVgtwpDIDPNQZRpuIRpL2yVP6T4,15251
|
|
125
125
|
bbot/modules/internal/excavate.py,sha256=XCwEreroQIRPBnKBNo1epLHcbycCZGYTuW73Zi8qZLU,51174
|
|
126
126
|
bbot/modules/internal/speculate.py,sha256=hOJPrmJP8-APqSEbmYsbKrvovLIGIz4dJUoZyusq0w0,9270
|
|
@@ -160,7 +160,7 @@ bbot/modules/paramminer_getparams.py,sha256=_j6rgaqV5wGJoa8p5-KKbe2YsVGUtmWIanCV
|
|
|
160
160
|
bbot/modules/paramminer_headers.py,sha256=QEnWxveQVuS91MEYKYtfquqdNzimN7sQHuxpcqiTHpo,10305
|
|
161
161
|
bbot/modules/passivetotal.py,sha256=uGT6c_CUxBNInmClsTg8afIYA2ZykKYYCgjkyzujfHg,1653
|
|
162
162
|
bbot/modules/pgp.py,sha256=Xu2M9WEIlwTm5-Lv29g7BblI05tD9Dl0XsYSeY6UURs,2065
|
|
163
|
-
bbot/modules/portscan.py,sha256=
|
|
163
|
+
bbot/modules/portscan.py,sha256=2VSoxoh0AypE8DoGKHqE-a57G4Z91XEo3kquQ5OpM3Y,14656
|
|
164
164
|
bbot/modules/postman.py,sha256=tbLrxi5pOycLABvphORxyK9duTSBXZLgpf1vAZvOIa0,3512
|
|
165
165
|
bbot/modules/postman_download.py,sha256=dYKwZjM1Z8JTy8oKWha1WHZTetxVIYRM09-vsHBNNUI,9071
|
|
166
166
|
bbot/modules/rapiddns.py,sha256=uONESr0B5pv9cSAr7lF4WWV31APUhXyHexvI04rUcyk,787
|
|
@@ -185,7 +185,7 @@ bbot/modules/templates/github.py,sha256=ENnDWpzzmZBsTisDx6Cg9V_NwJKyVyPIOpGAPkti
|
|
|
185
185
|
bbot/modules/templates/postman.py,sha256=oxwVusW2EdNotVX7xnnxCTnWtj3xNPbfs8aff9s4phs,614
|
|
186
186
|
bbot/modules/templates/shodan.py,sha256=BfI0mNPbqkykGmjMtARhmCGKmk1uq7yTlZoPgzzJ040,1175
|
|
187
187
|
bbot/modules/templates/sql.py,sha256=bn8ZbTC0RkrA5wYOQ7RtSHfIywBm03L3mY344xH1Ue4,3417
|
|
188
|
-
bbot/modules/templates/subdomain_enum.py,sha256=
|
|
188
|
+
bbot/modules/templates/subdomain_enum.py,sha256=54prHdg_wgTBHIJLPLbDWBqq2x978NDfDOGG7R5A6fQ,8403
|
|
189
189
|
bbot/modules/templates/webhook.py,sha256=MYhKWrNYrsfM0a4PR6yVotudLyyCwgmy2eI-l9LvpBs,3706
|
|
190
190
|
bbot/modules/trickest.py,sha256=MRgLW0YiDWzlWdAjyqfPPLFb-a51r-Ffn_dphiJI_gA,1550
|
|
191
191
|
bbot/modules/trufflehog.py,sha256=yOoCszQe6ZoJGBUHfFp-lj5JH-Izp9R-CltsmZnI3Fw,8554
|
|
@@ -223,7 +223,7 @@ bbot/scanner/preset/conditions.py,sha256=hFL9cSIWGEsv2TfM5UGurf0c91cyaM8egb5IngB
|
|
|
223
223
|
bbot/scanner/preset/environ.py,sha256=-wbFk1YHpU8IJLKVw23Q3btQTICeX0iulURo7D673L0,4732
|
|
224
224
|
bbot/scanner/preset/path.py,sha256=Q29MO8cOEn690yW6bB08P72kbZ3C-H_TOEoXuwWnFM8,2274
|
|
225
225
|
bbot/scanner/preset/preset.py,sha256=QHUKc2raBArcdzn3op7BhLJHJpb5yjDsQumOvvOw85E,40058
|
|
226
|
-
bbot/scanner/scanner.py,sha256=
|
|
226
|
+
bbot/scanner/scanner.py,sha256=YPvu4KMKLAM_P-kzww5JdvX6JMVHC0gq6P0kUOt1_X8,53884
|
|
227
227
|
bbot/scanner/stats.py,sha256=re93sArKXZSiD0Owgqk2J3Kdvfm3RL4Y9Qy_VOcaVk8,3623
|
|
228
228
|
bbot/scanner/target.py,sha256=UORJIdyUeBKUmL2U-2kF9YBhR6v-17V_SCjv_AuIJgU,11469
|
|
229
229
|
bbot/scripts/docs.py,sha256=kg2CzovmUVGJx9hBZjAjUdE1hXeIwC7Ry3CyrnE8GL8,10782
|
|
@@ -291,7 +291,7 @@ bbot/test/test_step_2/module_tests/test_module_c99.py,sha256=-xyL1y3eX_rGuBR-U0N
|
|
|
291
291
|
bbot/test/test_step_2/module_tests/test_module_censys.py,sha256=RoFfLS0hgASdSoctJEzaKrHVqqRkuPRKPTYVCX2rZLo,4177
|
|
292
292
|
bbot/test/test_step_2/module_tests/test_module_certspotter.py,sha256=60jCOeK1yaUEgtTxYW-T47kZgKt9XxP2qBH9w-0MDBk,636
|
|
293
293
|
bbot/test/test_step_2/module_tests/test_module_chaos.py,sha256=9JRgtDEnnJgmEMCTB2bqRJRkBavLys-6ypHPxrM_hXk,956
|
|
294
|
-
bbot/test/test_step_2/module_tests/test_module_cloudcheck.py,sha256=
|
|
294
|
+
bbot/test/test_step_2/module_tests/test_module_cloudcheck.py,sha256=XWAkCpq0PMEGXksnK4tNR1IyPkjRd_anhCoT5tWmLU4,4074
|
|
295
295
|
bbot/test/test_step_2/module_tests/test_module_code_repository.py,sha256=i02Tgvr_F9_E4d6aEaXrfdk71NkoDvjzP4C98l2rNGg,2414
|
|
296
296
|
bbot/test/test_step_2/module_tests/test_module_columbus.py,sha256=JZG_EvDQoKGNcBhYOGaNr_FGU2s1BCzG6ePz4yfZcUg,564
|
|
297
297
|
bbot/test/test_step_2/module_tests/test_module_credshed.py,sha256=rlvKZERFoAS-gg7sdgk6Pa2JbySmHDPee3zKUYATWlw,3362
|
|
@@ -355,7 +355,7 @@ bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py,sha256=mW
|
|
|
355
355
|
bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py,sha256=qTT-5fyqw69LaZBxak3FvPfH7lh9W0KVBtJgslD-3eQ,5545
|
|
356
356
|
bbot/test/test_step_2/module_tests/test_module_passivetotal.py,sha256=fTGQECQ0OzcwiH64-0igFRKO-rs3kXScivZord_oWWU,1120
|
|
357
357
|
bbot/test/test_step_2/module_tests/test_module_pgp.py,sha256=-m-nPq6WR5UzPDuxeZbuzBQfFi1QfrZQ8RZH4g11ocE,1609
|
|
358
|
-
bbot/test/test_step_2/module_tests/test_module_portscan.py,sha256=
|
|
358
|
+
bbot/test/test_step_2/module_tests/test_module_portscan.py,sha256=MsemMkkKVCJBd3HuyP5FOasfDGCj-JK7bpiPjBpmTjk,7552
|
|
359
359
|
bbot/test/test_step_2/module_tests/test_module_postgres.py,sha256=6Seqq1Bq2FEXbJnTi_BYv8ZZPWdy-SfnY8UJN24Op0Q,2689
|
|
360
360
|
bbot/test/test_step_2/module_tests/test_module_postman.py,sha256=XvgfMgUhJuVgGkgT-JzxJyevNSVv7YvX1yLKJHmD3dw,5026
|
|
361
361
|
bbot/test/test_step_2/module_tests/test_module_postman_download.py,sha256=B_NajQaGQjwMSmcBCr37_7cvcnw4Zmh8k_hVoWL7bVI,21623
|
|
@@ -410,8 +410,8 @@ bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt,sha256=ruUQwVfia1_m2u
|
|
|
410
410
|
bbot/wordlists/top_open_ports_nmap.txt,sha256=LmdFYkfapSxn1pVuQC2LkOIY2hMLgG-Xts7DVtYzweM,42727
|
|
411
411
|
bbot/wordlists/valid_url_schemes.txt,sha256=VciB-ww0y-O8Ii1wpTR6rJzGDiC2r-dhVsIJApS1ZYU,3309
|
|
412
412
|
bbot/wordlists/wordninja_dns.txt.gz,sha256=DYHvvfW0TvzrVwyprqODAk4tGOxv5ezNmCPSdPuDUnQ,570241
|
|
413
|
-
bbot-2.3.0.
|
|
414
|
-
bbot-2.3.0.
|
|
415
|
-
bbot-2.3.0.
|
|
416
|
-
bbot-2.3.0.
|
|
417
|
-
bbot-2.3.0.
|
|
413
|
+
bbot-2.3.0.5354rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
|
|
414
|
+
bbot-2.3.0.5354rc0.dist-info/METADATA,sha256=1KTziVaVMXu5AycEu82eUZLY-mIQcs_0pqrsDJpcchA,17269
|
|
415
|
+
bbot-2.3.0.5354rc0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
416
|
+
bbot-2.3.0.5354rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
|
|
417
|
+
bbot-2.3.0.5354rc0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|