bbot 2.3.0.5397rc0__py3-none-any.whl → 2.3.0.5401rc0__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.

Files changed (44) hide show
  1. bbot/__init__.py +1 -1
  2. bbot/defaults.yml +1 -1
  3. bbot/modules/dnstlsrpt.py +1 -1
  4. bbot/modules/dotnetnuke.py +2 -2
  5. bbot/modules/internal/cloudcheck.py +3 -1
  6. bbot/modules/internal/dnsresolve.py +1 -3
  7. bbot/modules/internal/excavate.py +15 -14
  8. bbot/modules/paramminer_headers.py +4 -4
  9. bbot/modules/report/asn.py +8 -1
  10. bbot/presets/kitchen-sink.yml +0 -2
  11. bbot/presets/web/dotnet-audit.yml +0 -1
  12. bbot/scanner/preset/args.py +3 -1
  13. bbot/scanner/preset/preset.py +1 -1
  14. bbot/test/test_step_1/test__module__tests.py +0 -1
  15. bbot/test/test_step_1/test_bbot_fastapi.py +0 -3
  16. bbot/test/test_step_1/test_bloom_filter.py +0 -1
  17. bbot/test/test_step_1/test_dns.py +0 -3
  18. bbot/test/test_step_1/test_engine.py +0 -2
  19. bbot/test/test_step_1/test_events.py +0 -2
  20. bbot/test/test_step_1/test_helpers.py +0 -1
  21. bbot/test/test_step_1/test_presets.py +1 -6
  22. bbot/test/test_step_1/test_target.py +0 -1
  23. bbot/test/test_step_1/test_web.py +0 -2
  24. bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +3 -3
  25. bbot/test/test_step_2/module_tests/test_module_excavate.py +11 -11
  26. bbot/test/test_step_2/module_tests/test_module_gowitness.py +1 -3
  27. bbot/test/test_step_2/module_tests/test_module_newsletters.py +10 -10
  28. bbot/test/test_step_2/module_tests/test_module_ntlm.py +2 -1
  29. bbot/test/test_step_2/module_tests/test_module_pgp.py +2 -2
  30. bbot/test/test_step_2/module_tests/test_module_smuggler.py +13 -13
  31. bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -2
  32. bbot/test/test_step_2/module_tests/test_module_viewdns.py +1 -1
  33. bbot/wordlists/devops_mutations.txt +1 -1
  34. bbot/wordlists/ffuf_shortname_candidates.txt +1 -1
  35. bbot/wordlists/nameservers.txt +1 -1
  36. bbot/wordlists/paramminer_headers.txt +1 -1
  37. bbot/wordlists/paramminer_parameters.txt +1 -1
  38. bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +1 -1
  39. bbot/wordlists/valid_url_schemes.txt +1 -1
  40. {bbot-2.3.0.5397rc0.dist-info → bbot-2.3.0.5401rc0.dist-info}/METADATA +1 -1
  41. {bbot-2.3.0.5397rc0.dist-info → bbot-2.3.0.5401rc0.dist-info}/RECORD +44 -44
  42. {bbot-2.3.0.5397rc0.dist-info → bbot-2.3.0.5401rc0.dist-info}/LICENSE +0 -0
  43. {bbot-2.3.0.5397rc0.dist-info → bbot-2.3.0.5401rc0.dist-info}/WHEEL +0 -0
  44. {bbot-2.3.0.5397rc0.dist-info → bbot-2.3.0.5401rc0.dist-info}/entry_points.txt +0 -0
bbot/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # version placeholder (replaced by poetry-dynamic-versioning)
2
- __version__ = "v2.3.0.5397rc"
2
+ __version__ = "v2.3.0.5401rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
bbot/defaults.yml CHANGED
@@ -74,7 +74,7 @@ dns:
74
74
 
75
75
  web:
76
76
  # HTTP proxy
77
- http_proxy:
77
+ http_proxy:
78
78
  # Web user-agent
79
79
  user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.97
80
80
  # Set the maximum number of HTTP links that can be followed in a row (0 == no spidering allowed)
bbot/modules/dnstlsrpt.py CHANGED
@@ -70,7 +70,7 @@ class dnstlsrpt(BaseModule):
70
70
  return False, "event is wildcard"
71
71
 
72
72
  # there's no value in inspecting service records
73
- if service_record(event.host) == True:
73
+ if service_record(event.host) is True:
74
74
  return False, "service record detected"
75
75
 
76
76
  return True
@@ -31,7 +31,7 @@ class dotnetnuke(BaseModule):
31
31
  self.interactsh_subdomain_tags = {}
32
32
  self.interactsh_instance = None
33
33
 
34
- if self.scan.config.get("interactsh_disable", False) == False:
34
+ if self.scan.config.get("interactsh_disable", False) is False:
35
35
  try:
36
36
  self.interactsh_instance = self.helpers.interactsh()
37
37
  self.interactsh_domain = await self.interactsh_instance.register(callback=self.interactsh_callback)
@@ -93,7 +93,7 @@ class dotnetnuke(BaseModule):
93
93
  detected = True
94
94
  break
95
95
 
96
- if detected == True:
96
+ if detected is True:
97
97
  # DNNPersonalization Deserialization Detection
98
98
  for probe_url in [f'{event.data["url"]}/__', f'{event.data["url"]}/', f'{event.data["url"]}']:
99
99
  result = await self.helpers.request(probe_url, cookies=self.exploit_probe)
@@ -57,7 +57,9 @@ class CloudCheck(BaseInterceptModule):
57
57
  for provider in self.helpers.cloud.providers.values():
58
58
  provider_name = provider.name.lower()
59
59
  base_kwargs = {
60
- "parent": event, "tags": [f"{provider.provider_type}-{provider_name}"], "_provider": provider_name
60
+ "parent": event,
61
+ "tags": [f"{provider.provider_type}-{provider_name}"],
62
+ "_provider": provider_name,
61
63
  }
62
64
  # loop through the provider's regex signatures, if any
63
65
  for event_type, sigs in provider.signatures.items():
@@ -306,9 +306,7 @@ class DNSResolve(BaseInterceptModule):
306
306
  @property
307
307
  def emit_raw_records(self):
308
308
  if self._emit_raw_records is None:
309
- watching_raw_records = any(
310
- "RAW_DNS_RECORD" in m.get_watched_events() for m in self.scan.modules.values()
311
- )
309
+ watching_raw_records = any("RAW_DNS_RECORD" in m.get_watched_events() for m in self.scan.modules.values())
312
310
  omitted_event_types = self.scan.config.get("omit_event_types", [])
313
311
  omit_raw_records = "RAW_DNS_RECORD" in omitted_event_types
314
312
  self._emit_raw_records = watching_raw_records or not omit_raw_records
@@ -471,7 +471,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
471
471
  self.parameterExtractorCallbackDict[r.__name__] = r
472
472
  regexes_component_list.append(f"${r.__name__} = {r.discovery_regex}")
473
473
  regexes_component = " ".join(regexes_component_list)
474
- self.yara_rules[f"parameter_extraction"] = (
474
+ self.yara_rules["parameter_extraction"] = (
475
475
  rf'rule parameter_extraction {{meta: description = "contains POST form" strings: {regexes_component} condition: any of them}}'
476
476
  )
477
477
 
@@ -503,7 +503,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
503
503
  )
504
504
 
505
505
  if self.excavate.helpers.validate_parameter(parameter_name, parameter_type):
506
- if self.excavate.in_bl(parameter_name) == False:
506
+ if self.excavate.in_bl(parameter_name) is False:
507
507
  parsed_url = urlparse(url)
508
508
  description = f"HTTP Extracted Parameter [{parameter_name}] ({parameterExtractorSubModule.name} Submodule)"
509
509
  data = {
@@ -579,7 +579,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
579
579
  for signature_name, signature in self.signatures.items():
580
580
  signature_component_list.append(rf"${signature_name} = {signature}")
581
581
  signature_component = " ".join(signature_component_list)
582
- self.yara_rules[f"error_detection"] = (
582
+ self.yara_rules["error_detection"] = (
583
583
  f'rule error_detection {{meta: description = "contains a verbose error message" strings: {signature_component} condition: any of them}}'
584
584
  )
585
585
 
@@ -608,7 +608,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
608
608
  for regex_name, regex in self.regexes.items():
609
609
  regexes_component_list.append(rf"${regex_name} = /\b{regex.pattern}/ nocase")
610
610
  regexes_component = " ".join(regexes_component_list)
611
- self.yara_rules[f"serialization_detection"] = (
611
+ self.yara_rules["serialization_detection"] = (
612
612
  f'rule serialization_detection {{meta: description = "contains a possible serialized object" strings: {regexes_component} condition: any of them}}'
613
613
  )
614
614
 
@@ -656,7 +656,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
656
656
  continue
657
657
  if parsed_url.scheme in ["http", "https"]:
658
658
  continue
659
- abort_if = lambda e: e.scope_distance > 0
659
+ def abort_if(e):
660
+ return e.scope_distance > 0
660
661
  finding_data = {"host": str(host), "description": f"Non-HTTP URI: {parsed_url.geturl()}"}
661
662
  await self.report(finding_data, event, yara_rule_settings, discovery_context, abort_if=abort_if)
662
663
  protocol_data = {"protocol": parsed_url.scheme, "host": str(host)}
@@ -769,7 +770,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
769
770
  def __init__(self, excavate):
770
771
  super().__init__(excavate)
771
772
  if excavate.scan.dns_yara_rules_uncompiled:
772
- self.yara_rules[f"hostname_extraction"] = excavate.scan.dns_yara_rules_uncompiled
773
+ self.yara_rules["hostname_extraction"] = excavate.scan.dns_yara_rules_uncompiled
773
774
 
774
775
  async def process(self, yara_results, event, yara_rule_settings, discovery_context):
775
776
  for identifier in yara_results.keys():
@@ -817,7 +818,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
817
818
  self.parameter_extraction = bool(modules_WEB_PARAMETER)
818
819
 
819
820
  self.retain_querystring = False
820
- if self.config.get("retain_querystring", False) == True:
821
+ if self.config.get("retain_querystring", False) is True:
821
822
  self.retain_querystring = True
822
823
 
823
824
  for module in self.scan.modules.values():
@@ -847,7 +848,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
847
848
  rules_content = f.read()
848
849
  self.debug(f"Successfully loaded custom yara rules file [{self.custom_yara_rules}]")
849
850
  else:
850
- self.debug(f"Custom yara rules file is NOT a file. Will attempt to treat it as rule content")
851
+ self.debug("Custom yara rules file is NOT a file. Will attempt to treat it as rule content")
851
852
  rules_content = self.custom_yara_rules
852
853
 
853
854
  self.debug(f"Final combined yara rule contents: {rules_content}")
@@ -860,7 +861,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
860
861
 
861
862
  rule_match = await self.helpers.re.search(self.yara_rule_name_regex, rule_content)
862
863
  if not rule_match:
863
- return False, f"Custom Yara formatted incorrectly: could not find rule name"
864
+ return False, "Custom Yara formatted incorrectly: could not find rule name"
864
865
 
865
866
  rule_name = rule_match.groups(1)[0]
866
867
  c = CustomExtractor(self)
@@ -936,8 +937,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
936
937
  if event.type == "HTTP_RESPONSE":
937
938
  # Harvest GET parameters from URL, if it came directly from the target, and parameter extraction is enabled
938
939
  if (
939
- self.parameter_extraction == True
940
- and self.url_querystring_remove == False
940
+ self.parameter_extraction is True
941
+ and self.url_querystring_remove is False
941
942
  and str(event.parent.parent.module) == "TARGET"
942
943
  ):
943
944
  self.debug(f"Processing target URL [{urlunparse(event.parsed_url)}] for GET parameters")
@@ -949,7 +950,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
949
950
  regex_name,
950
951
  additional_params,
951
952
  ) in extract_params_url(event.parsed_url):
952
- if self.in_bl(parameter_name) == False:
953
+ if self.in_bl(parameter_name) is False:
953
954
  description = f"HTTP Extracted Parameter [{parameter_name}] (Target URL)"
954
955
  data = {
955
956
  "host": parsed_url.hostname,
@@ -985,7 +986,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
985
986
  cookie_name = header_value.split("=")[0]
986
987
  cookie_value = header_value.split("=")[1].split(";")[0]
987
988
 
988
- if self.in_bl(cookie_value) == False:
989
+ if self.in_bl(cookie_value) is False:
989
990
  self.assigned_cookies[cookie_name] = cookie_value
990
991
  description = f"Set-Cookie Assigned Cookie [{cookie_name}]"
991
992
  data = {
@@ -1029,7 +1030,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
1029
1030
  regex_name,
1030
1031
  additional_params,
1031
1032
  ) in extract_params_location(header_value, event.parsed_url):
1032
- if self.in_bl(parameter_name) == False:
1033
+ if self.in_bl(parameter_name) is False:
1033
1034
  description = f"HTTP Extracted Parameter [{parameter_name}] (Location Header)"
1034
1035
  data = {
1035
1036
  "host": parsed_url.hostname,
@@ -172,7 +172,7 @@ class paramminer_headers(BaseModule):
172
172
  self.debug(f"Error initializing compare helper: {e}")
173
173
  return
174
174
  batch_size = await self.count_test(url)
175
- if batch_size == None or batch_size <= 0:
175
+ if batch_size is None or batch_size <= 0:
176
176
  self.debug(f"Failed to get baseline max {self.compare_mode} count, aborting")
177
177
  return
178
178
  self.debug(f"Resolved batch_size at {str(batch_size)}")
@@ -195,11 +195,11 @@ class paramminer_headers(BaseModule):
195
195
  baseline = await self.helpers.request(url)
196
196
  if baseline is None:
197
197
  return
198
- if str(baseline.status_code)[0] in ("4", "5"):
198
+ if str(baseline.status_code)[0] in {"4", "5"}:
199
199
  return
200
200
  for count, args, kwargs in self.gen_count_args(url):
201
201
  r = await self.helpers.request(*args, **kwargs)
202
- if r is not None and not (str(r.status_code)[0] in ("4", "5")):
202
+ if r is not None and str(r.status_code)[0] not in {"4", "5"}:
203
203
  return count
204
204
 
205
205
  def gen_count_args(self, url):
@@ -222,7 +222,7 @@ class paramminer_headers(BaseModule):
222
222
  elif len(group) > 1 or (len(group) == 1 and len(reasons) == 0):
223
223
  for group_slice in self.helpers.split_list(group):
224
224
  match, reasons, reflection, subject_response = await self.check_batch(compare_helper, url, group_slice)
225
- if match == False:
225
+ if match is False:
226
226
  async for r in self.binary_search(compare_helper, url, group_slice, reasons, reflection):
227
227
  yield r
228
228
  else:
@@ -207,7 +207,14 @@ class asn(BaseReportModule):
207
207
  return False
208
208
  asns_tried.add(asn)
209
209
  asns.append(
210
- {"asn": asn, "subnet": subnet, "name": name, "description": description, "country": country, "emails": emails}
210
+ {
211
+ "asn": asn,
212
+ "subnet": subnet,
213
+ "name": name,
214
+ "description": description,
215
+ "country": country,
216
+ "emails": emails,
217
+ }
211
218
  )
212
219
  if not asns:
213
220
  self.debug(f'No results for "{ip}"')
@@ -16,5 +16,3 @@ config:
16
16
  modules:
17
17
  baddns:
18
18
  enable_references: True
19
-
20
-
@@ -19,4 +19,3 @@ config:
19
19
  extensions: asp,aspx,ashx,asmx,ascx
20
20
  telerik:
21
21
  exploit_RAU_crypto: True
22
-
@@ -175,7 +175,9 @@ class BBOTArgs:
175
175
  def create_parser(self, *args, **kwargs):
176
176
  kwargs.update(
177
177
  {
178
- "description": "Bighuge BLS OSINT Tool", "formatter_class": argparse.RawTextHelpFormatter, "epilog": self.epilog
178
+ "description": "Bighuge BLS OSINT Tool",
179
+ "formatter_class": argparse.RawTextHelpFormatter,
180
+ "epilog": self.epilog,
179
181
  }
180
182
  )
181
183
  p = argparse.ArgumentParser(*args, **kwargs)
@@ -967,7 +967,7 @@ class Preset:
967
967
  header = ["Preset", "Category", "Description", "# Modules"]
968
968
  if include_modules:
969
969
  header.append("Modules")
970
- for (loaded_preset, category, preset_path, original_file) in self.all_presets.values():
970
+ for loaded_preset, category, preset_path, original_file in self.all_presets.values():
971
971
  loaded_preset = loaded_preset.bake()
972
972
  num_modules = f"{len(loaded_preset.scan_modules):,}"
973
973
  row = [loaded_preset.name, category, loaded_preset.description, num_modules]
@@ -15,7 +15,6 @@ module_test_files = [m.name.split("test_module_")[-1].split(".")[0] for m in _mo
15
15
 
16
16
 
17
17
  def test__module__tests():
18
-
19
18
  preset = Preset()
20
19
 
21
20
  # make sure each module has a .py file
@@ -17,7 +17,6 @@ def run_bbot_multiprocess(queue):
17
17
 
18
18
 
19
19
  def test_bbot_multiprocess(bbot_httpserver):
20
-
21
20
  bbot_httpserver.expect_request("/").respond_with_data("test@blacklanternsecurity.com")
22
21
 
23
22
  queue = multiprocessing.Queue()
@@ -32,12 +31,10 @@ def test_bbot_multiprocess(bbot_httpserver):
32
31
 
33
32
 
34
33
  def test_bbot_fastapi(bbot_httpserver):
35
-
36
34
  bbot_httpserver.expect_request("/").respond_with_data("test@blacklanternsecurity.com")
37
35
  fastapi_process = start_fastapi_server()
38
36
 
39
37
  try:
40
-
41
38
  # wait for the server to start with a timeout of 60 seconds
42
39
  start_time = time.time()
43
40
  while True:
@@ -6,7 +6,6 @@ import random
6
6
 
7
7
  @pytest.mark.asyncio
8
8
  async def test_bloom_filter():
9
-
10
9
  def generate_random_strings(n, length=10):
11
10
  """Generate a list of n random strings."""
12
11
  return ["".join(random.choices(string.ascii_letters + string.digits, k=length)) for _ in range(n)]
@@ -185,7 +185,6 @@ async def test_dns_resolution(bbot_scanner):
185
185
 
186
186
  @pytest.mark.asyncio
187
187
  async def test_wildcards(bbot_scanner):
188
-
189
188
  scan = bbot_scanner("1.1.1.1")
190
189
  helpers = scan.helpers
191
190
 
@@ -634,7 +633,6 @@ def custom_lookup(query, rdtype):
634
633
 
635
634
  @pytest.mark.asyncio
636
635
  async def test_wildcard_deduplication(bbot_scanner):
637
-
638
636
  custom_lookup = """
639
637
  def custom_lookup(query, rdtype):
640
638
  if rdtype == "TXT" and query.strip(".").endswith("evilcorp.com"):
@@ -670,7 +668,6 @@ def custom_lookup(query, rdtype):
670
668
 
671
669
  @pytest.mark.asyncio
672
670
  async def test_dns_raw_records(bbot_scanner):
673
-
674
671
  from bbot.modules.base import BaseModule
675
672
 
676
673
  class DummyModule(BaseModule):
@@ -14,7 +14,6 @@ async def test_engine():
14
14
  return_errored = False
15
15
 
16
16
  class TestEngineServer(EngineServer):
17
-
18
17
  CMDS = {
19
18
  0: "return_thing",
20
19
  1: "yield_stuff",
@@ -54,7 +53,6 @@ async def test_engine():
54
53
  raise
55
54
 
56
55
  class TestEngineClient(EngineClient):
57
-
58
56
  SERVER_CLASS = TestEngineServer
59
57
 
60
58
  async def return_thing(self, n):
@@ -9,7 +9,6 @@ from bbot.core.helpers.regexes import event_uuid_regex
9
9
 
10
10
  @pytest.mark.asyncio
11
11
  async def test_events(events, helpers):
12
-
13
12
  scan = Scanner()
14
13
  await scan._prep()
15
14
 
@@ -617,7 +616,6 @@ async def test_events(events, helpers):
617
616
 
618
617
  @pytest.mark.asyncio
619
618
  async def test_event_discovery_context():
620
-
621
619
  from bbot.modules.base import BaseModule
622
620
 
623
621
  scan = Scanner("evilcorp.com")
@@ -857,7 +857,6 @@ def test_liststring_invalidfnchars(helpers):
857
857
  # test parameter validation
858
858
  @pytest.mark.asyncio
859
859
  async def test_parameter_validation(helpers):
860
-
861
860
  getparam_valid_params = {
862
861
  "name",
863
862
  "age",
@@ -16,7 +16,7 @@ from bbot.scanner import Scanner, Preset
16
16
  def test_preset_descriptions():
17
17
  # ensure very preset has a description
18
18
  preset = Preset()
19
- for (loaded_preset, category, preset_path, original_filename) in preset.all_presets.values():
19
+ for loaded_preset, category, preset_path, original_filename in preset.all_presets.values():
20
20
  assert (
21
21
  loaded_preset.description
22
22
  ), f'Preset "{loaded_preset.name}" at {original_filename} does not have a description.'
@@ -68,7 +68,6 @@ def test_core():
68
68
 
69
69
 
70
70
  def test_preset_yaml(clean_default_config):
71
-
72
71
  import yaml
73
72
 
74
73
  preset1 = Preset(
@@ -171,7 +170,6 @@ exclude_flags:
171
170
 
172
171
 
173
172
  def test_preset_scope():
174
-
175
173
  # test target merging
176
174
  scan = Scanner("1.2.3.4", preset=Preset.from_dict({"target": ["evilcorp.com"]}))
177
175
  assert {str(h) for h in scan.preset.target.seeds.hosts} == {"1.2.3.4/32", "evilcorp.com"}
@@ -378,7 +376,6 @@ def test_preset_scope():
378
376
 
379
377
  @pytest.mark.asyncio
380
378
  async def test_preset_logging():
381
-
382
379
  scan = Scanner()
383
380
 
384
381
  # test individual verbosity levels
@@ -711,7 +708,6 @@ modules:
711
708
 
712
709
 
713
710
  def test_preset_include():
714
-
715
711
  # test recursive preset inclusion
716
712
 
717
713
  custom_preset_dir_1 = bbot_test_dir / "custom_preset_dir"
@@ -883,7 +879,6 @@ def test_preset_module_disablement(clean_default_config):
883
879
 
884
880
 
885
881
  def test_preset_require_exclude():
886
-
887
882
  def get_module_flags(p):
888
883
  for m in p.scan_modules:
889
884
  preloaded = p.preloaded_module(m)
@@ -337,7 +337,6 @@ async def test_target(bbot_scanner):
337
337
 
338
338
  @pytest.mark.asyncio
339
339
  async def test_blacklist_regex(bbot_scanner, bbot_httpserver):
340
-
341
340
  from bbot.scanner.target import ScanBlacklist
342
341
 
343
342
  blacklist = ScanBlacklist("evilcorp.com")
@@ -6,7 +6,6 @@ from ..bbot_fixtures import *
6
6
 
7
7
  @pytest.mark.asyncio
8
8
  async def test_web_engine(bbot_scanner, bbot_httpserver, httpx_mock):
9
-
10
9
  from werkzeug.wrappers import Response
11
10
 
12
11
  def server_handler(request):
@@ -134,7 +133,6 @@ async def test_request_batch_cancellation(bbot_scanner, bbot_httpserver, httpx_m
134
133
 
135
134
  @pytest.mark.asyncio
136
135
  async def test_web_helpers(bbot_scanner, bbot_httpserver, httpx_mock):
137
-
138
136
  # json conversion
139
137
  scan = bbot_scanner("evilcorp.com")
140
138
  url = "http://www.evilcorp.com/json_test?a=b"
@@ -55,8 +55,8 @@ class TestBaddns_direct_cloudflare(BaseTestBaddns):
55
55
  def check(self, module_test, events):
56
56
  assert any(
57
57
  e.type == "FINDING"
58
- and "Possible [AWS Bucket Takeover Detection] via direct BadDNS analysis. Indicator: [[Words: The specified bucket does not exist | Condition: and | Part: body] Matchers-Condition: and] Trigger: [self] baddns Module: [CNAME]"
59
- in e.data["description"]
60
- for e in events
58
+ and "Possible [AWS Bucket Takeover Detection] via direct BadDNS analysis. Indicator: [[Words: The specified bucket does not exist | Condition: and | Part: body] Matchers-Condition: and] Trigger: [self] baddns Module: [CNAME]"
59
+ in e.data["description"]
60
+ for e in events
61
61
  ), "Failed to emit FINDING"
62
62
  assert any("baddns-cname" in e.tags for e in events), "Failed to add baddns tag"
@@ -895,7 +895,7 @@ endobj
895
895
  /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
896
896
  >> /Rotate 0 /Trans <<
897
897
 
898
- >>
898
+ >>
899
899
  /Type /Page
900
900
  >>
901
901
  endobj
@@ -906,7 +906,7 @@ endobj
906
906
  endobj
907
907
  5 0 obj
908
908
  <<
909
- /Author (anonymous) /CreationDate (D:20240807182842+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240807182842+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)
909
+ /Author (anonymous) /CreationDate (D:20240807182842+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240807182842+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)
910
910
  /Subject (unspecified) /Title (untitled) /Trapped /False
911
911
  >>
912
912
  endobj
@@ -924,17 +924,17 @@ Gas2F;0/Hc'SYHA/+V9II1V!>b>-epMEjN4$Udfu3WXha!?H`crq_UNGP5IS$'WT'SF]Hm/eEhd_JY>@
924
924
  endobj
925
925
  xref
926
926
  0 8
927
- 0000000000 65535 f
928
- 0000000073 00000 n
929
- 0000000104 00000 n
930
- 0000000211 00000 n
931
- 0000000414 00000 n
932
- 0000000482 00000 n
933
- 0000000778 00000 n
934
- 0000000837 00000 n
927
+ 0000000000 65535 f
928
+ 0000000073 00000 n
929
+ 0000000104 00000 n
930
+ 0000000211 00000 n
931
+ 0000000414 00000 n
932
+ 0000000482 00000 n
933
+ 0000000778 00000 n
934
+ 0000000837 00000 n
935
935
  trailer
936
936
  <<
937
- /ID
937
+ /ID
938
938
  [<3c7340500fa2fe72523c5e6f07511599><3c7340500fa2fe72523c5e6f07511599>]
939
939
  % ReportLab generated PDF document -- digest (http://www.reportlab.com)
940
940
 
@@ -101,6 +101,4 @@ class TestGoWitnessWithBlob(TestGowitness):
101
101
  def check(self, module_test, events):
102
102
  webscreenshots = [e for e in events if e.type == "WEBSCREENSHOT"]
103
103
  assert webscreenshots, "failed to raise WEBSCREENSHOT events"
104
- assert all(
105
- "blob" in e.data and e.data["blob"] for e in webscreenshots
106
- ), "blob not found in WEBSCREENSHOT data"
104
+ assert all("blob" in e.data and e.data["blob"] for e in webscreenshots), "blob not found in WEBSCREENSHOT data"
@@ -10,16 +10,16 @@ class TestNewsletters(ModuleTestBase):
10
10
  modules_overrides = ["speculate", "httpx", "newsletters"]
11
11
 
12
12
  html_with_newsletter = """
13
- <input aria-required="true"
14
- class="form-input form-input-text required"
15
- data-at="form-email"
16
- data-describedby="form-validation-error-box-element-5"
17
- data-label-inside="Enter your email"
18
- id="field-5f329905b4bfe1027b44513f94b50363-0"
19
- name="Enter your email"
20
- placeholder="Enter your email"
21
- required=""
22
- title="Enter your email"
13
+ <input aria-required="true"
14
+ class="form-input form-input-text required"
15
+ data-at="form-email"
16
+ data-describedby="form-validation-error-box-element-5"
17
+ data-label-inside="Enter your email"
18
+ id="field-5f329905b4bfe1027b44513f94b50363-0"
19
+ name="Enter your email"
20
+ placeholder="Enter your email"
21
+ required=""
22
+ title="Enter your email"
23
23
  type="email" value=""/>
24
24
  """
25
25
 
@@ -10,7 +10,8 @@ class TestNTLM(ModuleTestBase):
10
10
  request_args = {"uri": "/", "headers": {"test": "header"}}
11
11
  module_test.set_expect_requests(request_args, {})
12
12
  request_args = {
13
- "uri": "/oab/", "headers": {"Authorization": "NTLM TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="}
13
+ "uri": "/oab/",
14
+ "headers": {"Authorization": "NTLM TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="},
14
15
  }
15
16
  respond_args = {
16
17
  "headers": {
@@ -9,10 +9,10 @@ class TestPGP(ModuleTestBase):
9
9
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
10
10
  <link href='/assets/css/pks.min.css' rel='stylesheet' type='text/css'>
11
11
  <style type="text/css">
12
-
12
+
13
13
  .uid { color: green; text-decoration: underline; }
14
14
  .warn { color: red; font-weight: bold; }
15
-
15
+
16
16
  </style></head><body><h1>Search results for 'blacklanternsecurity.com'</h1><pre>Type bits/keyID cr. time exp time key expir
17
17
  </pre>
18
18
 
@@ -1,13 +1,13 @@
1
1
  from .base import ModuleTestBase
2
2
 
3
3
  smuggler_text = r"""
4
- ______ _
5
- / _____) | |
6
- ( (____ ____ _ _ ____ ____| | _____ ____
4
+ ______ _
5
+ / _____) | |
6
+ ( (____ ____ _ _ ____ ____| | _____ ____
7
7
  \____ \| \| | | |/ _ |/ _ | || ___ |/ ___)
8
- _____) ) | | | |_| ( (_| ( (_| | || ____| |
9
- (______/|_|_|_|____/ \___ |\___ |\_)_____)_|
10
- (_____(_____|
8
+ _____) ) | | | |_| ( (_| ( (_| | || ____| |
9
+ (______/|_|_|_|____/ \___ |\___ |\_)_____)_|
10
+ (_____(_____|
11
11
 
12
12
  @defparam v1.1
13
13
 
@@ -16,13 +16,13 @@ smuggler_text = r"""
16
16
  [+] Endpoint : /
17
17
  [+] Configfile : default.py
18
18
  [+] Timeout : 5.0 seconds
19
- [+] Cookies : 1 (Appending to the attack)
20
- [nameprefix1] : Checking TECL...
21
- [nameprefix1] : Checking CLTE...
22
- [nameprefix1] : OK (TECL: 0.61 - 405) (CLTE: 0.62 - 405)
23
- [tabprefix1] : Checking TECL...git
24
- [tabprefix1] : Checking CLTE...
25
- [tabprefix1] : Checking TECL...
19
+ [+] Cookies : 1 (Appending to the attack)
20
+ [nameprefix1] : Checking TECL...
21
+ [nameprefix1] : Checking CLTE...
22
+ [nameprefix1] : OK (TECL: 0.61 - 405) (CLTE: 0.62 - 405)
23
+ [tabprefix1] : Checking TECL...git
24
+ [tabprefix1] : Checking CLTE...
25
+ [tabprefix1] : Checking TECL...
26
26
  [tabprefix1] : Checking CLTE...
27
27
  [tabprefix1] : Checking TECL...
28
28
  [tabprefix1] : Checking CLTE...
@@ -63,7 +63,7 @@ class TestSpeculate_OpenPorts(ModuleTestBase):
63
63
  events_data.add(e.data)
64
64
  assert all(
65
65
  x in events_data
66
- for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
66
+ for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
67
67
  )
68
68
 
69
69
 
@@ -78,5 +78,5 @@ class TestSpeculate_OpenPorts_Portscanner(TestSpeculate_OpenPorts):
78
78
  events_data.add(e.data)
79
79
  assert not any(
80
80
  x in events_data
81
- for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
81
+ for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
82
82
  )
@@ -66,7 +66,7 @@ web_body = """<html>
66
66
  <tr>
67
67
  <td>
68
68
  <font size="2">
69
- <a href="/" style="color: #00721e;">ViewDNS.info</a> > <a href="/" style="color: #00721e;">Tools</a> >
69
+ <a href="/" style="color: #00721e;">ViewDNS.info</a> > <a href="/" style="color: #00721e;">Tools</a> >
70
70
  <H1 style="font-size: 16; display: inline;">Reverse Whois Lookup</H1>
71
71
  <br><br>This free tool will allow you to find domain names owned by an individual person or company. Simply enter the email address or name of the person or company to find other domains registered using those same details. <a href="#" onclick="javascript:document.getElementById('faq').style.visibility = 'visible'; document.getElementById('faq').style.display = 'block';" style="color: #00721e;">FAQ</a>.<br><br>
72
72
  <div id="faq" style="visibility: hidden; display: none;"><u><b>Frequently Asked Questions</b></u><br>Q. Will this tool return results for all domains including ccTLD's?<br>A. Unfortunately no. Whilst we do our best to ensure our data is as complete as possible, we are not able to return results for all ccTLD's. Due to a number of technical limitations with whois data, the results from any Reverse Whois tool should not be considered as exhaustive.<br><br>Q. Is your data live?<br>A. Our data is not live. We do our best to update the data as often as possible with daily updates for selected TLD's and quarterly updates for others.<br><br>Q. How do I see all records for a specific person/company rather than the limited number you show on your site?<br>A. Please <a href="mailto:feedback@viewdns.info?subject=Reverse Whois" style="color: #00721e;">email us</a> with your request and we'll see what we can do for you.<br><br></div>
@@ -105,4 +105,4 @@ store
105
105
  home
106
106
  production
107
107
  auto
108
- cn
108
+ cn
@@ -107979,4 +107979,4 @@ zzz
107979
107979
  zzzindex
107980
107980
  zzztest
107981
107981
  zzzz
107982
- zzzzz
107982
+ zzzzz
@@ -2370,4 +2370,4 @@
2370
2370
  8.25.185.131
2371
2371
  203.39.3.133
2372
2372
  118.69.187.252
2373
- 108.56.80.135
2373
+ 108.56.80.135
@@ -1147,4 +1147,4 @@ http_sm_userdn
1147
1147
  http_sm_usermsg
1148
1148
  x-remote-ip
1149
1149
  traceparent
1150
- tracestate
1150
+ tracestate
@@ -6520,4 +6520,4 @@ shell_path
6520
6520
  user_token
6521
6521
  adminCookie
6522
6522
  fullapp
6523
- LandingUrl
6523
+ LandingUrl
@@ -830,4 +830,4 @@
830
830
  .z
831
831
  .zdat
832
832
  .zif
833
- .zip
833
+ .zip
@@ -379,4 +379,4 @@ xri
379
379
  ymsgr
380
380
  z39.50
381
381
  z39.50r
382
- z39.50s
382
+ z39.50s
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bbot
3
- Version: 2.3.0.5397rc0
3
+ Version: 2.3.0.5401rc0
4
4
  Summary: OSINT automation for hackers.
5
5
  Home-page: https://github.com/blacklanternsecurity/bbot
6
6
  License: GPL-3.0
@@ -1,4 +1,4 @@
1
- bbot/__init__.py,sha256=MoHZVmXOoz-x3r6sk-rP-iRoiiJKU9wLsG6gmx0oNBk,130
1
+ bbot/__init__.py,sha256=TROxeibhKpm03QcygA_8McoE6ZzlkeXlbspdy0AXtqM,130
2
2
  bbot/cli.py,sha256=xPTXsZr8FGmI3N6e3gjo9i9E2u-Ih2Sr4MQU6RTxnj8,10434
3
3
  bbot/core/__init__.py,sha256=l255GJE_DvUnWvrRb0J5lG-iMztJ8zVvoweDOfegGtI,46
4
4
  bbot/core/config/__init__.py,sha256=zYNw2Me6tsEr8hOOkLb4BQ97GB7Kis2k--G81S8vofU,342
@@ -48,7 +48,7 @@ bbot/core/modules.py,sha256=U0Z2UoZAOPG9lLvR9Juc3UwdWCc_xbktF4t_NoiKPrY,31385
48
48
  bbot/core/multiprocess.py,sha256=ocQHanskJ09gHwe7RZmwNdZyCOQyeyUoIHCtLbtvXUk,1771
49
49
  bbot/core/shared_deps.py,sha256=A3vrI62uPTTayNIHhWAj6xz43cj--oXWC4prmDlgJnw,6958
50
50
  bbot/db/sql/models.py,sha256=SrUdDOBCICzXJBY29p0VvILhMQ1JCuh725bqvIYogX0,4884
51
- bbot/defaults.yml,sha256=d1uVZOWzaJ7IM5YF-Zpambb8Gdbas-aCInqoWElxsEw,6221
51
+ bbot/defaults.yml,sha256=YFs1kTokbLXMKocRHC0CuF6jDZalzF504HVw3OZSfrs,6220
52
52
  bbot/errors.py,sha256=xwQcD26nU9oc7-o0kv5jmEDTInmi8_W8eKAgQZZxdVM,953
53
53
  bbot/logger.py,sha256=rLcLzNDvfR8rFj7_tZ-f5QB3Z8T0RVroact3W0ogjpA,1408
54
54
  bbot/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -93,10 +93,10 @@ bbot/modules/dnsbrute_mutations.py,sha256=bOJidK_oKZe87u8e9t0mEFnyuBi93UiNsQvpZY
93
93
  bbot/modules/dnscaa.py,sha256=pyaLqHrdsVhqtd1JBZVjKKcuYT_ywUbFYkrnfXcGD5s,5014
94
94
  bbot/modules/dnscommonsrv.py,sha256=gEErfSur7Odkaif4CbXYx3OZ3FQrQESyiMGPbcDKSIg,1538
95
95
  bbot/modules/dnsdumpster.py,sha256=bqUqyvRJVtoTXbDxTZ-kgPNq4dCE9xv_msBIn_Nj5IM,3251
96
- bbot/modules/dnstlsrpt.py,sha256=LW-8NTfUlYAlSlDrDBcELTe4LTrAI412J03xQfAL93Y,6427
96
+ bbot/modules/dnstlsrpt.py,sha256=ntNKVDXDgDVWr1A20ShNT5HFBhXsVEM5aUIEU_0c9HU,6427
97
97
  bbot/modules/docker_pull.py,sha256=T_xObzExDTZF-_HfgZSfrU199QgCME3rYmkVs1HigXQ,9070
98
98
  bbot/modules/dockerhub.py,sha256=yHKxV-uVubAUvYrIXizSZoLUiPKArTH2mCh5FjY4sas,3486
99
- bbot/modules/dotnetnuke.py,sha256=qS1lzAmvWlDYrm1ODufIBvIS20oTr7m7m3xU-a5PGUA,10537
99
+ bbot/modules/dotnetnuke.py,sha256=rw_EchDg49VyQj5JiUh0AqUqtsuqLrhc-nwrybdzhZ8,10537
100
100
  bbot/modules/emailformat.py,sha256=RLPJW-xitYB-VT4Lp08qVzFkXx_kMyV_035JT_Yf4fM,1082
101
101
  bbot/modules/extractous.py,sha256=_9tJsQRqhYIaPFmMByc2NiyvPhcPgs-KGQ8-XhtkSyc,4546
102
102
  bbot/modules/ffuf_shortnames.py,sha256=9Kh0kJsw7XXpXmCkiB5eAhG4h9rSo8Y-mB3p0EDa_l0,12624
@@ -121,9 +121,9 @@ bbot/modules/iis_shortnames.py,sha256=bIlmC21a0eK_cjMu1UQkDl9EfpfCN1SAggDqJL8LJf
121
121
  bbot/modules/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
122
  bbot/modules/internal/aggregate.py,sha256=csWYIt2fUp9K_CRxP3bndUMIjpNIh8rmBubp5Fr1-nc,395
123
123
  bbot/modules/internal/base.py,sha256=BXO4Hc7XKaAOaLzolF3krJX1KibPxtek2GTQUgnCHk0,387
124
- bbot/modules/internal/cloudcheck.py,sha256=8nr5R2TwRMhaMhKn4AOeN0mT0dluNLn2KjeHTKHSEng,4721
125
- bbot/modules/internal/dnsresolve.py,sha256=SbgYRbMlH-VUuiYvkpgNl44gnGf2UtnZYZMIvo2cj4I,15249
126
- bbot/modules/internal/excavate.py,sha256=2O09KYw2IIz9NQN6iN_2SXm8Iq6v_pEK0twcsE9FL38,51506
124
+ bbot/modules/internal/cloudcheck.py,sha256=WVW5gQQhnJmTb1_wl4MjM_HUNQIKS8kIQFNKdaAGJiY,4754
125
+ bbot/modules/internal/dnsresolve.py,sha256=BJFuKFO8JykvKaXq2x9dbIUCbME4SFJPyhiZhnrFiKQ,15219
126
+ bbot/modules/internal/excavate.py,sha256=18173N5g9xUZKwAPrvR6Y9Vm3WK_174s9YYBvSnqeZo,51527
127
127
  bbot/modules/internal/speculate.py,sha256=1UX5YKCfUnJ4EV8suHSAdq1Y2decEjIV88LQ8-VQcRQ,9260
128
128
  bbot/modules/internetdb.py,sha256=Edg0Z84dH8dPTZMd7RlzvYBYNq8JHs_ns_ldnFxwRKo,5415
129
129
  bbot/modules/ip2location.py,sha256=yGivX9fzvwvLpnqmYCP2a8SPjTarzrZxfRluog-nkME,2628
@@ -159,7 +159,7 @@ bbot/modules/output/web_report.py,sha256=lZ0FqRZ7Jz1lljI9JMhH9gjtWLaTCSpSnAKQGAc
159
159
  bbot/modules/output/websocket.py,sha256=sDTtHU-Ey_tvS0gMi6PVPV9L4qAmGyWeccxAKfEWCac,2278
160
160
  bbot/modules/paramminer_cookies.py,sha256=q1PzftHQpCHLz81_VgLZsO6moia7ZtnU32igfcySi2w,1816
161
161
  bbot/modules/paramminer_getparams.py,sha256=_j6rgaqV5wGJoa8p5-KKbe2YsVGUtmWIanCVtFiF97Y,1893
162
- bbot/modules/paramminer_headers.py,sha256=sTHqyfCU46BFOIaArzabiNnegoeQDkaVe42MjyNdEDM,10291
162
+ bbot/modules/paramminer_headers.py,sha256=v5H_feo1FwdEUHzVN72HvSftbf931CH1WInJzi5m3LY,10289
163
163
  bbot/modules/passivetotal.py,sha256=uGT6c_CUxBNInmClsTg8afIYA2ZykKYYCgjkyzujfHg,1653
164
164
  bbot/modules/pgp.py,sha256=Xu2M9WEIlwTm5-Lv29g7BblI05tD9Dl0XsYSeY6UURs,2065
165
165
  bbot/modules/portscan.py,sha256=YdUMPurlDuXFfeS56z2Ab12U3NXBMH71isW86jgeKW0,14650
@@ -167,7 +167,7 @@ bbot/modules/postman.py,sha256=tbLrxi5pOycLABvphORxyK9duTSBXZLgpf1vAZvOIa0,3512
167
167
  bbot/modules/postman_download.py,sha256=dYKwZjM1Z8JTy8oKWha1WHZTetxVIYRM09-vsHBNNUI,9071
168
168
  bbot/modules/rapiddns.py,sha256=uONESr0B5pv9cSAr7lF4WWV31APUhXyHexvI04rUcyk,787
169
169
  bbot/modules/report/affiliates.py,sha256=vvus8LylqOfP-lfGid0z4FS6MwOpNuRTcSJ9aSnybp4,1713
170
- bbot/modules/report/asn.py,sha256=WlHWtBDFLbOEox0eGxqmezxFZWhtQo9XelY-X1Cm7F4,9548
170
+ bbot/modules/report/asn.py,sha256=D0jQkcZe_gEbmSokgSisYw6QolVJI9l71ksSMlOVTfo,9687
171
171
  bbot/modules/report/base.py,sha256=hOtZF41snTSlHZmzZndmOjfmtdKPy2-tfFBAxxbHcao,105
172
172
  bbot/modules/robots.py,sha256=LGG6ixsxrlaCk-mi4Lp6kB2RB1v-25NhTAQxdQEtH8s,2172
173
173
  bbot/modules/secretsdb.py,sha256=MA6IKo5rOvC0Dzt-F4QVrSwLkcPRwWLd9FpzqYkc8u8,3082
@@ -205,12 +205,12 @@ bbot/presets/cloud-enum.yml,sha256=U1IuN_Vx4zFSvobQenXwSeEqFxRX28beS1Aek3hNUBg,1
205
205
  bbot/presets/code-enum.yml,sha256=fRThe5_vY8IqO5nZBC0y3JZwA6ynx81bBcIHBB6o9IU,83
206
206
  bbot/presets/email-enum.yml,sha256=SBPDp2s6z0kx-dpjObCjqCV09P7OrhAUob_JJ1XVrT8,120
207
207
  bbot/presets/fast.yml,sha256=Sb_yKy0skkGSHsTr-97hwajUFu8IETHdZPu7BfYQqEU,371
208
- bbot/presets/kitchen-sink.yml,sha256=I0rxhbPJAp8f0TzR2_nkeu_Ycw_HAoipbJhmf7LSNG8,282
208
+ bbot/presets/kitchen-sink.yml,sha256=bezH_6kl7T3kP5yvFkXcQ-L_rf0pLRfuR0PwgkSnBro,280
209
209
  bbot/presets/spider.yml,sha256=-7HkEEZS_fFESPVzGi91eNf2ZwfAv1lU9oyFp0dhuZA,400
210
210
  bbot/presets/subdomain-enum.yml,sha256=tn9h8TlVB_uS3nKZFUP72HzceoRONSef66mGLWzxj9w,414
211
211
  bbot/presets/web/dirbust-heavy.yml,sha256=NDqu7p0Hx1RsZCVnaEWRgI_iL9O0io-tvWerxJf36SM,653
212
212
  bbot/presets/web/dirbust-light.yml,sha256=5zSANdjKfYh49kFlsElYY2G6acVrZFzDCEkyqwU6oOQ,203
213
- bbot/presets/web/dotnet-audit.yml,sha256=IT_39CsvPOfj-kljMgk8WlEq4Zi4ufuwYXFTsPsTPjU,336
213
+ bbot/presets/web/dotnet-audit.yml,sha256=7ZlE7Q3F1p5g6AO33-m1lPzPW12_tRKEDXy4eaLXlCk,335
214
214
  bbot/presets/web/iis-shortnames.yml,sha256=EcYKMpl-cI8Xb79_u4wQS42yFXxDpLH9OqINcFUXoTE,176
215
215
  bbot/presets/web/paramminer.yml,sha256=VuiXkxrOAeqXlk9Gmuo938_REvbbTH6-lxTrlyWAvZ4,163
216
216
  bbot/presets/web-basic.yml,sha256=6YWSYclbuf9yr8-gILDpLvOUj5QjP4rlarm5_d5iBFw,79
@@ -220,11 +220,11 @@ bbot/scanner/__init__.py,sha256=gCyAAbkNm8_KozNpDENCKqO3E3ZCgseplnz40AtiJ1U,56
220
220
  bbot/scanner/dispatcher.py,sha256=_hsIegfUDrt8CUdXqgRvp1J0UwwzqVSDxjQmiviO41c,793
221
221
  bbot/scanner/manager.py,sha256=_5FBfxOmSMUeGp_-ryyGGl0pxb_eu-NSWft-lH1Pyog,10466
222
222
  bbot/scanner/preset/__init__.py,sha256=Jf2hWsHlTFtWNXL6gXD8_ZbKPFUM564ppdSxHFYnIJU,27
223
- bbot/scanner/preset/args.py,sha256=7Pwpsx_Vv-dLKyPfl8F1LVtbypqpNjxeuUoYiY3EmRU,16021
223
+ bbot/scanner/preset/args.py,sha256=KnFoQveKiSbNOSWr5dpa9lS3vP3Jnhk1FiyBLeaqFpI,16054
224
224
  bbot/scanner/preset/conditions.py,sha256=hFL9cSIWGEsv2TfM5UGurf0c91cyaM8egb5IngBmIjA,1569
225
225
  bbot/scanner/preset/environ.py,sha256=9KbEOLWkUdoAf5Ez_2A1NNm6QduQElbnNnrPi6VDhZs,4731
226
226
  bbot/scanner/preset/path.py,sha256=Q29MO8cOEn690yW6bB08P72kbZ3C-H_TOEoXuwWnFM8,2274
227
- bbot/scanner/preset/preset.py,sha256=FIvcJfJs0p_h-B3HIxGG3ufAWHOgAslDSnqFBbq9zlQ,40040
227
+ bbot/scanner/preset/preset.py,sha256=R8-RNEstx4kLMZcfz878qzmTpEH45kgg3itRK-FWw5I,40038
228
228
  bbot/scanner/scanner.py,sha256=GTTimZPPjX7vFIAgmMpPcxnn4ZijHE3yjMEfTORKy88,53853
229
229
  bbot/scanner/stats.py,sha256=re93sArKXZSiD0Owgqk2J3Kdvfm3RL4Y9Qy_VOcaVk8,3623
230
230
  bbot/scanner/target.py,sha256=pxdICjl7Nl2aksTeFGtDilpW7EhLCIQtZJ7pertsPz4,11469
@@ -239,29 +239,29 @@ bbot/test/run_tests.sh,sha256=xv0STraS9t0wVVU8bDDCJH28fmx4w7vpaj0WEWNp3xY,944
239
239
  bbot/test/test.conf,sha256=JX0-Wl7N7VN6x_hhkFL-RF4TDAHgL9OfNNdujfD7tHo,994
240
240
  bbot/test/test_output.ndjson,sha256=Jfor8nUJ3QTEwXxD6UULrFXM4zhP5wflWo_UNekM3V8,323
241
241
  bbot/test/test_step_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
242
- bbot/test/test_step_1/test__module__tests.py,sha256=RpD4yuVuQRgbbUkfuasxUlyoVxhTm6TeDyi87y_AaK0,1461
243
- bbot/test/test_step_1/test_bbot_fastapi.py,sha256=yO7DrweNqd686294cy9eAztwv9nWdmLrP8xNfJpo090,2534
244
- bbot/test/test_step_1/test_bloom_filter.py,sha256=aNvndPFQN93NyfCDnLHp1hvAccI26nya0OvryjlYt9s,2140
242
+ bbot/test/test_step_1/test__module__tests.py,sha256=uwuROxdXI52D-V9z3Q9VNslvBfaduj6MQS5tQ_UOqXA,1460
243
+ bbot/test/test_step_1/test_bbot_fastapi.py,sha256=FNGvlax4lFZVd0T3HvV9SJh1lsngOX58GrUnJVzoy20,2531
244
+ bbot/test/test_step_1/test_bloom_filter.py,sha256=GodseGF98sarWXZ5C3JCVWblnycS4BA75HEAzhx4xXg,2139
245
245
  bbot/test/test_step_1/test_cli.py,sha256=JIBpAMpr2Zmg_cM0AOoyWLbwtF6JVhgp83Mxc1ZgPUs,25935
246
246
  bbot/test/test_step_1/test_command.py,sha256=5IeGV6TKB0xtFEsfsU_0mNrOmEdIQiQ3FHkUmsBNoOI,6485
247
247
  bbot/test/test_step_1/test_config.py,sha256=Q38hygpke2GDcv8OguVZuiSOnfDJxEMrRy20dN5Qsn0,887
248
248
  bbot/test/test_step_1/test_depsinstaller.py,sha256=zr9f-wJDotD1ZvKXGEuDRWzFYMAYBI6209mI_PWPtTQ,703
249
- bbot/test/test_step_1/test_dns.py,sha256=mpZ3KsE-hSnV_bslDdJMb_rIVh_iKy0vpZo7prMgEDA,32156
249
+ bbot/test/test_step_1/test_dns.py,sha256=SjefP-8GGyx9q-PWotCWu4esF0dRhWJRrS-J5MGNi6w,32153
250
250
  bbot/test/test_step_1/test_docs.py,sha256=YWVGNRfzcrvDmFekX0Cq9gutQplsqvhKTpZ0XK4tWvo,82
251
- bbot/test/test_step_1/test_engine.py,sha256=eCDf89Um0GoOef_miXiL3YwW8z5trs37JVqvGLK5YHM,4269
252
- bbot/test/test_step_1/test_events.py,sha256=AFmKro9lYd3AwEO9PE6pRVjuDXVI_LUppmsj1Gx_WGQ,48865
251
+ bbot/test/test_step_1/test_engine.py,sha256=3HkCPtYhUxiZzfA-BRHpLsyaRj9wIXKbb49BCk9dILM,4267
252
+ bbot/test/test_step_1/test_events.py,sha256=JCr9PPrJDrbH0fgQhWTps1l_4xi-LyFcFYC18-ojmWk,48863
253
253
  bbot/test/test_step_1/test_files.py,sha256=5Q_3jPpMXULxDHsanSDUaj8zF8bXzKdiJZHOmoYpLhQ,699
254
- bbot/test/test_step_1/test_helpers.py,sha256=Iano6PM7zwVWgdjr4cidgmj2r5DYxMf8CrFI0dmv0S0,39507
254
+ bbot/test/test_step_1/test_helpers.py,sha256=6WG2rqnI7Jt0Z7Dc5AyqTDcL16QM0_WJ3CXE1M-xSMc,39506
255
255
  bbot/test/test_step_1/test_manager_deduplication.py,sha256=hZQpDXzg6zvzxFolVOcJuY-ME8NXjZUsqS70BRNXp8A,15594
256
256
  bbot/test/test_step_1/test_manager_scope_accuracy.py,sha256=JV1bQHt9EIM0GmGS4T4Brz_L2lfcwTxtNC06cfv7r64,79763
257
257
  bbot/test/test_step_1/test_modules_basic.py,sha256=PtY8plupy-eOAr3YHWAZtgKqNRZt2eYtJljY8Zf3Cuo,20055
258
- bbot/test/test_step_1/test_presets.py,sha256=ZED--wvOleMej3segchL-0dkLJmEVkgFGlgAQAu-iv4,38218
258
+ bbot/test/test_step_1/test_presets.py,sha256=CCwXb0gxTd8lSYtp0a_2PkfrwfdD5f9VngetbCLecL0,38211
259
259
  bbot/test/test_step_1/test_python_api.py,sha256=GM5Kp2AAFl92ozo1kL6axsM87F8Gdq2_mWQvRnbXW_0,5503
260
260
  bbot/test/test_step_1/test_regexes.py,sha256=34-BHzDE5qdltE-sQIzkrTmJTL49QUYoTn2uT1DZLwI,14356
261
261
  bbot/test/test_step_1/test_scan.py,sha256=h3JP5RXnOUH8dqqq2Q_7yLpx1LCAEvqfE1bpHL7bDS0,5756
262
262
  bbot/test/test_step_1/test_scope.py,sha256=S2nssENKJKCvgXUMyU8MFQmXHeUIz0C_sbWGkdYti2A,3063
263
- bbot/test/test_step_1/test_target.py,sha256=h__gOzgwdGjNhnF5jwPXAsM4SfB8q-ESU7Uzpd75qyo,19085
264
- bbot/test/test_step_1/test_web.py,sha256=s9zu414MtFmh5SuYLgr28Io6RwDY89Q70vcSR7e9vdg,18806
263
+ bbot/test/test_step_1/test_target.py,sha256=Kd-tk9033GIQR9mlJ2a5y-4_YtC9XCOmjx6dcgu78qs,19084
264
+ bbot/test/test_step_1/test_web.py,sha256=n9p9WhsEyN5I7S8RUUOEzF8v1CyeJjkmk4l6hnpOblY,18804
265
265
  bbot/test/test_step_2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
266
  bbot/test/test_step_2/module_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
267
267
  bbot/test/test_step_2/module_tests/base.py,sha256=ZlmcRyiui3FrNIlErxDL6LjR1xg2pomyMVzmbROenq0,6017
@@ -275,7 +275,7 @@ bbot/test/test_step_2/module_tests/test_module_asset_inventory.py,sha256=NEMSPBl
275
275
  bbot/test/test_step_2/module_tests/test_module_azure_realm.py,sha256=KnXla-xTbM6loVU2bQY6DROEyMQfPk_xDYkL5Z4xLG4,1286
276
276
  bbot/test/test_step_2/module_tests/test_module_azure_tenant.py,sha256=Aaid6Ftb_qBOmjcUDauXeI6WZcBz49Wli5Yk8FWrZVc,4805
277
277
  bbot/test/test_step_2/module_tests/test_module_baddns.py,sha256=BHHwk4kOafbb_ykJDBVMP1QenXrqKAcJ0jQMJUdeYCI,2810
278
- bbot/test/test_step_2/module_tests/test_module_baddns_direct.py,sha256=knezmRG337_sjF2ItqnbvT2QyTZOjYp28JGooUUpanM,2487
278
+ bbot/test/test_step_2/module_tests/test_module_baddns_direct.py,sha256=Tb5vxEk1gG1IHGDj3cotbrbVbAxaFPBnDXLBJKFiOmk,2475
279
279
  bbot/test/test_step_2/module_tests/test_module_baddns_zone.py,sha256=Fgugx3-v4JH1jiGM2qIWcjaaZmGFp-UbRaWkqAj6LFI,2432
280
280
  bbot/test/test_step_2/module_tests/test_module_badsecrets.py,sha256=VpKjwcSwKX3Mh68jKUL3TUp7Iy3jGsEBy6iN_95AwlQ,6966
281
281
  bbot/test/test_step_2/module_tests/test_module_bevigil.py,sha256=MmgFrCX9KVmzlFZpUu1pbu4Ef7yYEauiBObwsr4Z85Q,2080
@@ -316,7 +316,7 @@ bbot/test/test_step_2/module_tests/test_module_dockerhub.py,sha256=9T8CFcFP32MOp
316
316
  bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py,sha256=voi1C_v7VeaRe_-yzCybO9FUxnFf9qzWkoUY66KYiGI,8114
317
317
  bbot/test/test_step_2/module_tests/test_module_emailformat.py,sha256=cKxBPnEQ4AiRKV_-hSYEE6756ypst3hi6MN0L5RTukY,461
318
318
  bbot/test/test_step_2/module_tests/test_module_emails.py,sha256=bZjtO8N3GG2_g6SUEYprAFLcsi7SlwNPJJ0nODfrWYU,944
319
- bbot/test/test_step_2/module_tests/test_module_excavate.py,sha256=JI1NKp5mrYpv-loYdGK_TXN1dFhqNLV6YP9Eo5ZlYYI,42158
319
+ bbot/test/test_step_2/module_tests/test_module_excavate.py,sha256=HexVwLYEAfJn5aMrbALktoA-uv1kkAHnZ05y6DiJv6U,42147
320
320
  bbot/test/test_step_2/module_tests/test_module_extractous.py,sha256=m2zlG26NGtT-dfvn0DbAKV_aeInTHGQWhCemD7ddI3g,17973
321
321
  bbot/test/test_step_2/module_tests/test_module_ffuf.py,sha256=aSB49aN77sw-2LNTDHckiEEaHAn_85xCJno1shdOwus,2964
322
322
  bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py,sha256=s8E7M9d1fhm__krM4lmteyTtSsYpVL4hn1z8ub7RVss,7608
@@ -331,7 +331,7 @@ bbot/test/test_step_2/module_tests/test_module_github_org.py,sha256=5tKO6NH4TPBe
331
331
  bbot/test/test_step_2/module_tests/test_module_github_workflows.py,sha256=o_teEaskm3H22QEKod5KJayFvvcgOQoG4eItGWv8C8E,38006
332
332
  bbot/test/test_step_2/module_tests/test_module_gitlab.py,sha256=fnwE7BWTU6EQquKdGLCiaX_LwVwvzOLev3Y9GheTLSY,11859
333
333
  bbot/test/test_step_2/module_tests/test_module_google_playstore.py,sha256=uTRqpAGI9HI-rOk_6jdV44OoSqi0QQQ3aTVzvuV0dtc,3034
334
- bbot/test/test_step_2/module_tests/test_module_gowitness.py,sha256=Q-nQPjuGaQDDLVPtA6r_QbtuAHGdwIcaGNn6ZXssNtg,4822
334
+ bbot/test/test_step_2/module_tests/test_module_gowitness.py,sha256=613zO2rKMVUBeUhAmGb7-FestLoTYqSYcva-4RAanog,4800
335
335
  bbot/test/test_step_2/module_tests/test_module_hackertarget.py,sha256=ldhNKxGk5fwq87zVptQDyfQ-cn3FzbWvpadKEO3h4ic,609
336
336
  bbot/test/test_step_2/module_tests/test_module_host_header.py,sha256=w1x0MyKNiUol4hlw7CijhMwEMEL5aBddbZZjOcEgv_k,2672
337
337
  bbot/test/test_step_2/module_tests/test_module_http.py,sha256=KhsQvqpVa6zmMa79jV4liv_NAv25wrSaO6h_x0AA12c,2127
@@ -349,8 +349,8 @@ bbot/test/test_step_2/module_tests/test_module_leakix.py,sha256=DQaQsL4ewpuYeygp
349
349
  bbot/test/test_step_2/module_tests/test_module_mysql.py,sha256=4wAPjbjhlxmOkEhQnIQIBC2BLEaE57TX6lChGZ3zLsU,2630
350
350
  bbot/test/test_step_2/module_tests/test_module_myssl.py,sha256=zRJ1sOEespWtBx2jA07bW5sHD1XQ9pV0PtHtGogo7Gs,1531
351
351
  bbot/test/test_step_2/module_tests/test_module_neo4j.py,sha256=pUUaqxBsF6s11dEDhrETpvlR2pqiUcc0uvH8Z5GvVUQ,1332
352
- bbot/test/test_step_2/module_tests/test_module_newsletters.py,sha256=hvM6VSIp4DZV8En5TEetAZJbPFcNr_Rn0kmCgdyCB74,2305
353
- bbot/test/test_step_2/module_tests/test_module_ntlm.py,sha256=6-x1Str7Pl_SZQFwryPSn4FVtP8uJM_s2phbTzxfwrw,1119
352
+ bbot/test/test_step_2/module_tests/test_module_newsletters.py,sha256=uf5t2oRqxhNToPjEfkY9vMdOUzrSocvx8w5itS6HUaM,2295
353
+ bbot/test/test_step_2/module_tests/test_module_ntlm.py,sha256=tPUrsOnq8iV0l_qiD_4xkqp0-o_T2uI1e-yH22oNveA,1132
354
354
  bbot/test/test_step_2/module_tests/test_module_nuclei.py,sha256=rLCTuKWnGWiGDcVnMjk4D7x6RGftEj3D4Woqpam-cgQ,7050
355
355
  bbot/test/test_step_2/module_tests/test_module_oauth.py,sha256=pN1o0DmcwGCa985FrIhUuX1jIGriDjaxMzWozuv8pR0,9481
356
356
  bbot/test/test_step_2/module_tests/test_module_otx.py,sha256=-fHX5zNnke21lOQUnTfAj1KIoQXuLLYO_QunDRGkj8o,1159
@@ -358,7 +358,7 @@ bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py,sha256=wFGJ
358
358
  bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py,sha256=-nQjicpNlwsXWi-SSz8IRUMKnjHpjXtSv3aSwTWbCvM,10077
359
359
  bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py,sha256=L0kwL89I02k07j2uektST6m0RUCl55OSk6kKU1ztl9A,5536
360
360
  bbot/test/test_step_2/module_tests/test_module_passivetotal.py,sha256=fTGQECQ0OzcwiH64-0igFRKO-rs3kXScivZord_oWWU,1120
361
- bbot/test/test_step_2/module_tests/test_module_pgp.py,sha256=-m-nPq6WR5UzPDuxeZbuzBQfFi1QfrZQ8RZH4g11ocE,1609
361
+ bbot/test/test_step_2/module_tests/test_module_pgp.py,sha256=_T-kmpr5F0cJHl4_mpfhxK3aj0hH3UxDLeV1iByanJk,1607
362
362
  bbot/test/test_step_2/module_tests/test_module_portscan.py,sha256=TJtutIORCNu-3Wm1zCqtzPVC0OXUICnY4YL1toJ57yk,7539
363
363
  bbot/test/test_step_2/module_tests/test_module_postgres.py,sha256=bNHzDvPs5AkoA_ho7s50bFaF5qzV7KL3DplhOA1ZYa4,2688
364
364
  bbot/test/test_step_2/module_tests/test_module_postman.py,sha256=XvgfMgUhJuVgGkgT-JzxJyevNSVv7YvX1yLKJHmD3dw,5026
@@ -373,9 +373,9 @@ bbot/test/test_step_2/module_tests/test_module_shodan_dns.py,sha256=9DpFizZguP2a
373
373
  bbot/test/test_step_2/module_tests/test_module_sitedossier.py,sha256=jwAP1RYWYLkEQDYX7YTOuU_rhPoJAriwrj1JYkdt-Vk,6582
374
374
  bbot/test/test_step_2/module_tests/test_module_skymem.py,sha256=VaRhEmrZ0auKmxExeuYmzryXpZ0h78AqSVozkqJ5dXo,2321
375
375
  bbot/test/test_step_2/module_tests/test_module_slack.py,sha256=oJvUzSowPAhpbMFnzl-iS3XvLQBxCaO_vofhu_bgR4w,317
376
- bbot/test/test_step_2/module_tests/test_module_smuggler.py,sha256=m9Jr-ogePCD4SvSavYIs7KetnEuxmaT6ZdgWvSWC2eE,2427
376
+ bbot/test/test_step_2/module_tests/test_module_smuggler.py,sha256=Kppv1r7ykaHeLDjAAXxiLPYA7Mo9QrQK3bfdYMVlmk4,2293
377
377
  bbot/test/test_step_2/module_tests/test_module_social.py,sha256=McjY8g97HbZm5xnarW924pGytwwGGnzA6MfD0HmBPMU,2050
378
- bbot/test/test_step_2/module_tests/test_module_speculate.py,sha256=UOspDmnnZbJv6Sq4HeFqX6b_fIlmZJDTyMqbWH22BVs,3067
378
+ bbot/test/test_step_2/module_tests/test_module_speculate.py,sha256=7EKoSu5bvOhFi5CbM1cdcNUpeh_KOrARrFd0twg6k3s,3059
379
379
  bbot/test/test_step_2/module_tests/test_module_splunk.py,sha256=u6cNNWzMSweiqABroFFZ810JvzORf7Sli_K9xWK46Ek,1859
380
380
  bbot/test/test_step_2/module_tests/test_module_sqlite.py,sha256=mpplbL84zPuH4WJgbmm698gFTJewi1Qw_e4AG_ZOTfE,829
381
381
  bbot/test/test_step_2/module_tests/test_module_sslcert.py,sha256=XeiV9eQZNnA5oALCVnP7bEs3m9kMaVwEtg-hvYfgi3Y,711
@@ -391,7 +391,7 @@ bbot/test/test_step_2/module_tests/test_module_txt.py,sha256=R-EBfEZM0jwY2yuVyfY
391
391
  bbot/test/test_step_2/module_tests/test_module_url_manipulation.py,sha256=aP3nK2TQQOjk0ZeuHhHYfZm_e37qrrXbnufd7m-QeJU,1144
392
392
  bbot/test/test_step_2/module_tests/test_module_urlscan.py,sha256=H_og5fOQMLpDbEGOhcVcZcDXvodT6nfgCE6Rk8LTkas,2902
393
393
  bbot/test/test_step_2/module_tests/test_module_vhost.py,sha256=W-88CA-aVVZ0il0Mzji_3kFU4lhPF-_gPBdUaoJEc1A,2874
394
- bbot/test/test_step_2/module_tests/test_module_viewdns.py,sha256=0m1dm3oBGrclXN_1UPfbSb48d4SfQNcVQ0uNbnLc5wo,8726
394
+ bbot/test/test_step_2/module_tests/test_module_viewdns.py,sha256=8NxBo1AbBVyI5jCAcG-BW380GlffGMx9sQOjQNyHb34,8725
395
395
  bbot/test/test_step_2/module_tests/test_module_virustotal.py,sha256=MixCr5T4-pQfZiKlXZ80rdDnJAAOMKv2VxOm0nP-Pok,3401
396
396
  bbot/test/test_step_2/module_tests/test_module_wafw00f.py,sha256=3a0bsM5VyIDmSS5Addfmq0HM5ztQIlPm85tnoqlw9r4,1976
397
397
  bbot/test/test_step_2/module_tests/test_module_wappalyzer.py,sha256=viPAWXrnQT2J2jYX6LNU3IEqwhJYfXiRceoLVkkLF58,936
@@ -404,18 +404,18 @@ bbot/test/test_step_2/template_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
404
404
  bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py,sha256=DrLd0m88Iy3JBs29CiDFguRntCUeKyQX09pYN5oabf8,8618
405
405
  bbot/test/testsslcert.pem,sha256=ymc1o3bnm1WOUFLcOrw7TegnaOwN0TnUpScl7WXmicE,1103
406
406
  bbot/test/testsslkey.pem,sha256=Fg8hTYkYwlOVu-WPO32TQg_5mABBO8-Pyz7Vbk0ueY4,1704
407
- bbot/wordlists/devops_mutations.txt,sha256=IUfejwiaSbRI_0XeZusrAUdOLhPcMHwId7hjoOd9YNI,476
408
- bbot/wordlists/ffuf_shortname_candidates.txt,sha256=lRxpBXehLsDSsMmzFXe9Uvr0wSkNMjbX2Qyz9AkBnlo,959424
407
+ bbot/wordlists/devops_mutations.txt,sha256=58aWTManp9rV8P4WYXH3eNgV5tVv1PHzLdUzTqjuQ-A,477
408
+ bbot/wordlists/ffuf_shortname_candidates.txt,sha256=VJGcCqZ46R7WeoPzBF6E-RJgNDK0wbAlesclVWqQZeM,959425
409
409
  bbot/wordlists/ms_on_prem_subdomains.txt,sha256=VJBAmhZ7txL2Zmw9WQ8yyHG_G5WJJOpVd6Kv_t1CTrE,764
410
- bbot/wordlists/nameservers.txt,sha256=M_OE9vhnXU--45YGDB_pE-cLO6OfAxMDcm9XrU_zwsQ,32226
411
- bbot/wordlists/paramminer_headers.txt,sha256=AC-rET8-Y5h4GK2gFSF47kYBTe_QBbU7e_yBMtgTqi0,17458
412
- bbot/wordlists/paramminer_parameters.txt,sha256=Gyn_4FEy5LvXrQYgR_BkGNv-nr3XzmVAySNUD0iKXM0,54887
413
- bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt,sha256=ruUQwVfia1_m2u4t_-AQ3XO9TuTfhHik4KCL6Owj5S4,6068
410
+ bbot/wordlists/nameservers.txt,sha256=cikISXPButJbgbpGzM5_JFUkP9CNAZSv_95NceLuWdw,32227
411
+ bbot/wordlists/paramminer_headers.txt,sha256=wRoJ_Hzp79jVStyMf9nFkLls6grLMxdgWce_Wpmlhrw,17459
412
+ bbot/wordlists/paramminer_parameters.txt,sha256=E5jn-4Y8b7XYKv-BPBOEbCNReT-3rLu3hHVkOcP04HU,54888
413
+ bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt,sha256=ZSIVebs7ptMvHxpVc0M5UN741c8PiH_DjV-Tllp4OCc,6069
414
414
  bbot/wordlists/top_open_ports_nmap.txt,sha256=LmdFYkfapSxn1pVuQC2LkOIY2hMLgG-Xts7DVtYzweM,42727
415
- bbot/wordlists/valid_url_schemes.txt,sha256=VciB-ww0y-O8Ii1wpTR6rJzGDiC2r-dhVsIJApS1ZYU,3309
415
+ bbot/wordlists/valid_url_schemes.txt,sha256=0B_VAr9Dv7aYhwi6JSBDU-3M76vNtzN0qEC_RNLo7HE,3310
416
416
  bbot/wordlists/wordninja_dns.txt.gz,sha256=DYHvvfW0TvzrVwyprqODAk4tGOxv5ezNmCPSdPuDUnQ,570241
417
- bbot-2.3.0.5397rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
418
- bbot-2.3.0.5397rc0.dist-info/METADATA,sha256=IeizuggEqq_9F_LBXEQJKvHJcIkzCh5rIjTKW9XwVFg,17949
419
- bbot-2.3.0.5397rc0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
420
- bbot-2.3.0.5397rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
421
- bbot-2.3.0.5397rc0.dist-info/RECORD,,
417
+ bbot-2.3.0.5401rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
418
+ bbot-2.3.0.5401rc0.dist-info/METADATA,sha256=AAe90wxjF1jfpB25a7yDBkUMa1lwWp7BEtrhux7SaaY,17949
419
+ bbot-2.3.0.5401rc0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
420
+ bbot-2.3.0.5401rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
421
+ bbot-2.3.0.5401rc0.dist-info/RECORD,,