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 CHANGED
@@ -1,4 +1,4 @@
1
1
  # version placeholder (replaced by poetry-dynamic-versioning)
2
- __version__ = "v2.3.0.5328rc"
2
+ __version__ = "v2.3.0.5354rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
@@ -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/x-lrzip": "lrzip", # Long Range ZIP
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/java-archive": "zip", # Java Archive (JAR)
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-archive": "ar", # Unix archive
58
- "application/x-qpress": "qpress", # Qpress archive
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-ace": "ace", # ACE archive
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/x-lz4-compressed-tar": "lz4", # LZ4 compressed Tar archive
65
- "application/vnd.comicbook-rar": "rar", # Comic book archive (RAR)
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(str(s) for s in event.resolved_hosts)
32
- # we use the original host, since storage buckets hostnames might be collapsed to _wildcard
33
- hosts_to_check.add(str(event.host_original))
34
- for host in hosts_to_check:
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 hosts_to_check:
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
- await self.emit_event(event)
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
@@ -126,7 +126,7 @@ class Scanner:
126
126
  self._success = False
127
127
 
128
128
  if scan_id is not None:
129
- self.id = str(id)
129
+ self.id = str(scan_id)
130
130
  else:
131
131
  self.id = f"SCAN:{sha1(rand_string(20)).hexdigest()}"
132
132
 
@@ -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
- assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.8.8"]) <= 3
113
- assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.4.4"]) <= 3
114
- assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.4.5"]) <= 3
115
- assert 2 <= len([e for e in events if e.type == "IP_ADDRESS" and e.data == "8.8.4.6"]) <= 3
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.5328rc0
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=GDihSpoT6sfov7X7BYdZNyoAeAxwMwKp-duhI6FKb-U,130
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=a9tmL558cM5lzN69YahBc7JNHmPnBJgu9Wa8Q5bH1S0,3631
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=kkD5DC5Y7EPCiVTdEspZktkflArU3unx--9ciBikxHo,4099
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=eb1sNb8ffe5gcjOsOOvX48oNtecJ1Tqq6exoz_G_jZ4,13327
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=h2YhIWoMLUXV7EBIidiQezuwXf35T8tXmOO9Vg__sIY,8393
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=NSfGND2OL2ufrSmkJX7Qgob4zQBRxD3zynFdTiMmySk,53879
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=sRWgotul2I4qY5SjNBDuo2iOceHs-3x0cqJ-K29GitY,3927
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=StCm93P4q3o-NhPtUDOA6g_LTH2cwzEw0l2V5ZN5eeI,7306
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.5328rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
414
- bbot-2.3.0.5328rc0.dist-info/METADATA,sha256=S7uoBFDF5xFlg_4ro-2m7Wpe4aF6zpDKY4PPD3dkhk4,17239
415
- bbot-2.3.0.5328rc0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
416
- bbot-2.3.0.5328rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
417
- bbot-2.3.0.5328rc0.dist-info/RECORD,,
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,,