bbot 2.3.0.5504rc0__py3-none-any.whl → 2.3.0.5518rc0__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.5504rc"
2
+ __version__ = "v2.3.0.5518rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
bbot/core/event/base.py CHANGED
@@ -590,7 +590,7 @@ class BaseEvent:
590
590
  if t in ("spider-danger", "spider-max"):
591
591
  self.add_tag(t)
592
592
  elif not self._dummy:
593
- log.warning(f"Tried to set invalid parent on {self}: (got: {parent})")
593
+ log.warning(f"Tried to set invalid parent on {self}: (got: {repr(parent)} ({type(parent)}))")
594
594
 
595
595
  @property
596
596
  def parent_id(self):
@@ -1045,6 +1045,9 @@ class DictPathEvent(DictEvent):
1045
1045
  blob = None
1046
1046
  try:
1047
1047
  self._data_path = Path(data["path"])
1048
+ # prepend the scan's home dir if the path is relative
1049
+ if not self._data_path.is_absolute():
1050
+ self._data_path = self.scan.home / self._data_path
1048
1051
  if self._data_path.is_file():
1049
1052
  self.add_tag("file")
1050
1053
  if file_blobs:
@@ -1680,6 +1683,8 @@ def make_event(
1680
1683
  When working within a module's `handle_event()`, use the instance method
1681
1684
  `self.make_event()` instead of calling this function directly.
1682
1685
  """
1686
+ if not data:
1687
+ raise ValidationError("No data provided")
1683
1688
 
1684
1689
  # allow tags to be either a string or an array
1685
1690
  if not tags:
@@ -20,11 +20,43 @@ log = logging.getLogger("bbot.core.helpers.depsinstaller")
20
20
 
21
21
 
22
22
  class DepsInstaller:
23
+ CORE_DEPS = {
24
+ # core BBOT dependencies in the format of binary: package_name
25
+ # each one will only be installed if the binary is not found
26
+ "unzip": "unzip",
27
+ "zipinfo": "unzip",
28
+ "curl": "curl",
29
+ "git": "git",
30
+ "make": "make",
31
+ "gcc": "gcc",
32
+ "bash": "bash",
33
+ "which": "which",
34
+ "unrar": "unrar-free",
35
+ "tar": "tar",
36
+ # debian why are you like this
37
+ "7z": [
38
+ {
39
+ "name": "Install 7zip (Debian)",
40
+ "package": {"name": ["p7zip-full"], "state": "present"},
41
+ "become": True,
42
+ "when": "ansible_facts['os_family'] == 'Debian'",
43
+ },
44
+ {
45
+ "name": "Install 7zip (Non-Debian)",
46
+ "package": {"name": ["p7zip"], "state": "present"},
47
+ "become": True,
48
+ "when": "ansible_facts['os_family'] != 'Debian'",
49
+ },
50
+ ],
51
+ }
52
+
23
53
  def __init__(self, parent_helper):
24
54
  self.parent_helper = parent_helper
25
55
  self.preset = self.parent_helper.preset
26
56
  self.core = self.preset.core
27
57
 
58
+ self.os_platform = os_platform()
59
+
28
60
  # respect BBOT's http timeout
29
61
  self.web_config = self.parent_helper.config.get("web", {})
30
62
  http_timeout = self.web_config.get("http_timeout", 30)
@@ -202,28 +234,32 @@ class DepsInstaller:
202
234
  """
203
235
  Install packages with the OS's default package manager (apt, pacman, dnf, etc.)
204
236
  """
205
- packages_str = ",".join(packages)
237
+ args, kwargs = self._make_apt_ansible_args(packages)
238
+ success, err = self.ansible_run(module="package", args=args, **kwargs)
239
+ if success:
240
+ log.info(f'Successfully installed OS packages "{",".join(sorted(packages))}"')
241
+ else:
242
+ log.warning(
243
+ f"Failed to install OS packages ({err}). Recommend installing the following packages manually:"
244
+ )
245
+ for p in packages:
246
+ log.warning(f" - {p}")
247
+ return success
248
+
249
+ def _make_apt_ansible_args(self, packages):
250
+ packages_str = ",".join(sorted(packages))
206
251
  log.info(f"Installing the following OS packages: {packages_str}")
207
252
  args = {"name": packages_str, "state": "present"} # , "update_cache": True, "cache_valid_time": 86400}
208
253
  kwargs = {}
209
254
  # don't sudo brew
210
- if os_platform() != "darwin":
255
+ if self.os_platform != "darwin":
211
256
  kwargs = {
212
257
  "ansible_args": {
213
258
  "ansible_become": True,
214
259
  "ansible_become_method": "sudo",
215
260
  }
216
261
  }
217
- success, err = self.ansible_run(module="package", args=args, **kwargs)
218
- if success:
219
- log.info(f'Successfully installed OS packages "{packages_str}"')
220
- else:
221
- log.warning(
222
- f"Failed to install OS packages ({err}). Recommend installing the following packages manually:"
223
- )
224
- for p in packages:
225
- log.warning(f" - {p}")
226
- return success
262
+ return args, kwargs
227
263
 
228
264
  def shell(self, module, commands):
229
265
  tasks = []
@@ -269,7 +305,7 @@ class DepsInstaller:
269
305
  for task in tasks:
270
306
  if "package" in task:
271
307
  # special case for macos
272
- if os_platform() == "darwin":
308
+ if self.os_platform == "darwin":
273
309
  # don't sudo brew
274
310
  task["become"] = False
275
311
  # brew doesn't support update_cache
@@ -292,8 +328,8 @@ class DepsInstaller:
292
328
  },
293
329
  module=module,
294
330
  module_args=module_args,
295
- quiet=not self.ansible_debug,
296
- verbosity=(3 if self.ansible_debug else 0),
331
+ quiet=True,
332
+ verbosity=0,
297
333
  cancel_callback=lambda: None,
298
334
  )
299
335
 
@@ -303,7 +339,7 @@ class DepsInstaller:
303
339
  err = ""
304
340
  for e in res.events:
305
341
  if self.ansible_debug and not success:
306
- log.debug(json.dumps(e, indent=4))
342
+ log.debug(json.dumps(e, indent=2))
307
343
  if e["event"] == "runner_on_failed":
308
344
  err = e["event_data"]["res"]["msg"]
309
345
  break
@@ -347,26 +383,30 @@ class DepsInstaller:
347
383
 
348
384
  def install_core_deps(self):
349
385
  to_install = set()
386
+ to_install_friendly = set()
387
+ playbook = []
350
388
  self._install_sudo_askpass()
351
389
  # ensure tldextract data is cached
352
390
  self.parent_helper.tldextract("evilcorp.co.uk")
353
- # command: package_name
354
- core_deps = {
355
- "unzip": "unzip",
356
- "zipinfo": "unzip",
357
- "curl": "curl",
358
- "git": "git",
359
- "make": "make",
360
- "gcc": "gcc",
361
- "bash": "bash",
362
- "which": "which",
363
- }
364
- for command, package_name in core_deps.items():
391
+ for command, package_name_or_playbook in self.CORE_DEPS.items():
365
392
  if not self.parent_helper.which(command):
366
- to_install.add(package_name)
393
+ to_install_friendly.add(command)
394
+ if isinstance(package_name_or_playbook, str):
395
+ to_install.add(package_name_or_playbook)
396
+ else:
397
+ playbook.extend(package_name_or_playbook)
367
398
  if to_install:
399
+ playbook.append(
400
+ {
401
+ "name": "Install Core BBOT Dependencies",
402
+ "package": {"name": list(to_install), "state": "present"},
403
+ "become": True,
404
+ }
405
+ )
406
+ if playbook:
407
+ log.info(f"Installing core BBOT dependencies: {','.join(sorted(to_install_friendly))}")
368
408
  self.ensure_root()
369
- self.apt_install(list(to_install))
409
+ self.ansible_run(tasks=playbook)
370
410
 
371
411
  def _setup_sudo_cache(self):
372
412
  if not self._sudo_cache_setup:
@@ -148,7 +148,8 @@ class filedownload(BaseModule):
148
148
  file_event = self.make_event(
149
149
  {"path": str(file_destination)}, "FILESYSTEM", tags=["filedownload", "file"], parent=source_event
150
150
  )
151
- await self.emit_event(file_event)
151
+ if file_event is not None:
152
+ await self.emit_event(file_event)
152
153
  self.urls_downloaded.add(hash(url))
153
154
 
154
155
  def make_filename(self, url, content_type=None):
@@ -179,7 +180,9 @@ class filedownload(BaseModule):
179
180
  if extension:
180
181
  filename = f"{filename}.{extension}"
181
182
  orig_filename = f"{orig_filename}.{extension}"
182
- return orig_filename, self.download_dir / filename, base_url
183
+ file_destination = self.download_dir / filename
184
+ file_destination = self.helpers.truncate_filename(file_destination)
185
+ return orig_filename, file_destination, base_url
183
186
 
184
187
  async def report(self):
185
188
  if self.files_downloaded > 0:
bbot/modules/gowitness.py CHANGED
@@ -142,6 +142,9 @@ class gowitness(BaseModule):
142
142
  url = screenshot["url"]
143
143
  final_url = screenshot["final_url"]
144
144
  filename = self.screenshot_path / screenshot["filename"]
145
+ filename = filename.relative_to(self.scan.home)
146
+ # NOTE: this prevents long filenames from causing problems in BBOT, but gowitness will still fail to save it.
147
+ filename = self.helpers.truncate_filename(filename)
145
148
  webscreenshot_data = {"path": str(filename), "url": final_url}
146
149
  parent_event = event_dict[url]
147
150
  await self.emit_event(
@@ -622,6 +622,10 @@ async def test_events(events, helpers):
622
622
  assert str(parent_event_3.module) == "mymodule"
623
623
  assert str(parent_event_3.module_sequence) == "mymodule->mymodule->mymodule"
624
624
 
625
+ # event with no data
626
+ with pytest.raises(ValidationError):
627
+ event = scan.make_event(None, "DNS_NAME", parent=scan.root_event)
628
+
625
629
  await scan._cleanup()
626
630
 
627
631
 
@@ -60,3 +60,28 @@ trailer <</Root 1 0 R>>"""
60
60
  # we don't want html files
61
61
  html_files = list(download_dir.glob("*.html"))
62
62
  assert len(html_files) == 0, "HTML files were erroneously downloaded"
63
+
64
+
65
+ class TestFileDownloadLongFilename(TestFileDownload):
66
+ async def setup_after_prep(self, module_test):
67
+ module_test.set_expect_requests(
68
+ {"uri": "/"},
69
+ {
70
+ "response_data": '<a href="/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity.txt"/>'
71
+ },
72
+ )
73
+ module_test.set_expect_requests(
74
+ {
75
+ "uri": "/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity.txt"
76
+ },
77
+ {
78
+ "response_data": "juicy stuff",
79
+ },
80
+ )
81
+
82
+ def check(self, module_test, events):
83
+ filesystem_events = [e for e in events if e.type == "FILESYSTEM"]
84
+ assert len(filesystem_events) == 1
85
+ file_path = Path(filesystem_events[0].data["path"])
86
+ assert file_path.is_file(), f"File not found at {file_path}"
87
+ assert file_path.read_text() == "juicy stuff", f"File at {file_path} does not contain the correct content"
@@ -1,3 +1,5 @@
1
+ from pathlib import Path
2
+
1
3
  from .base import ModuleTestBase
2
4
 
3
5
 
@@ -102,3 +104,33 @@ class TestGoWitnessWithBlob(TestGowitness):
102
104
  webscreenshots = [e for e in events if e.type == "WEBSCREENSHOT"]
103
105
  assert webscreenshots, "failed to raise WEBSCREENSHOT events"
104
106
  assert all("blob" in e.data and e.data["blob"] for e in webscreenshots), "blob not found in WEBSCREENSHOT data"
107
+
108
+
109
+ class TestGoWitnessLongFilename(TestGowitness):
110
+ """
111
+ Make sure long filenames are truncated properly
112
+ """
113
+
114
+ targets = [
115
+ "http://127.0.0.1:8888/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity"
116
+ ]
117
+ config_overrides = {"file_blobs": True}
118
+
119
+ async def setup_after_prep(self, module_test):
120
+ request_args = {
121
+ "uri": "/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity/blacklanternsecurity"
122
+ }
123
+ respond_args = {
124
+ "response_data": "<html><head><title>BBOT is life</title></head><body>BBOT is life</body></html>",
125
+ "headers": {"Server": "Apache/2.4.41 (Ubuntu)"},
126
+ }
127
+ module_test.set_expect_requests(request_args, respond_args)
128
+
129
+ def check(self, module_test, events):
130
+ webscreenshots = [e for e in events if e.type == "WEBSCREENSHOT"]
131
+ assert webscreenshots, "failed to raise WEBSCREENSHOT events"
132
+ assert len(webscreenshots) == 1
133
+ webscreenshot = webscreenshots[0]
134
+ filename = Path(webscreenshot.data["path"])
135
+ # sadly this file doesn't exist because gowitness doesn't truncate properly
136
+ assert not filename.exists()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bbot
3
- Version: 2.3.0.5504rc0
3
+ Version: 2.3.0.5518rc0
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=GL__SZeN3u2sl0zznhow8MaFrcggtRyBSyT9lOjgRt8,130
1
+ bbot/__init__.py,sha256=m-XxtuhxgQRCiS6YjUWccHZf0IOS8ssFOU1O4nkOuvc,130
2
2
  bbot/cli.py,sha256=SUEd4CcI-9QzFnqXpezza1sq_TNPcfDtJaSwL4MAl9g,10717
3
3
  bbot/core/__init__.py,sha256=l255GJE_DvUnWvrRb0J5lG-iMztJ8zVvoweDOfegGtI,46
4
4
  bbot/core/config/__init__.py,sha256=zYNw2Me6tsEr8hOOkLb4BQ97GB7Kis2k--G81S8vofU,342
@@ -7,7 +7,7 @@ bbot/core/config/logger.py,sha256=FzQ7Myl0MVqBi7gpn9LOnbuL-UTXxSKpl11xuEGxS5I,10
7
7
  bbot/core/core.py,sha256=V0G3dKPN5xCbXOoFeBRkh-BZb6A3kSNA060De01LiTU,7065
8
8
  bbot/core/engine.py,sha256=uauGZgd7zAnJwNmVVPDicwHbUVCa8pV_pif49lgYeWk,29364
9
9
  bbot/core/event/__init__.py,sha256=8ut88ZUg0kbtWkOx2j3XzNr_3kTfgoM-3UdiWHFA_ag,56
10
- bbot/core/event/base.py,sha256=IoU4nYZRP0VgqT7B4rlAVGS4khuXm7iihr_qd_RzjTE,62671
10
+ bbot/core/event/base.py,sha256=QN-WCSMyugfrwz1mRqWccQhZhZNfQvFhlMaVN1WSRCs,62944
11
11
  bbot/core/event/helpers.py,sha256=PUN4Trq5_wpKVuhmwUQWAr40apgMXhJ9Gz-VfZ0j3lA,1554
12
12
  bbot/core/flags.py,sha256=Ltvm8Bc4D65I55HuU5bzyjO1R3yMDNpVmreGU83ZBXE,1266
13
13
  bbot/core/helpers/__init__.py,sha256=0UNwcZjNsX41hbHdo3yZPuARkYWch-okI68DScexve4,86
@@ -16,7 +16,7 @@ bbot/core/helpers/bloom.py,sha256=gk02rO6x3F5MICa7ZUDsinRudwoGAifsbiyiMCwd0Gs,27
16
16
  bbot/core/helpers/cache.py,sha256=1aMr3HVD45cDtHEG5xlznDUCywRgO9oRFidscrs_5sA,1537
17
17
  bbot/core/helpers/command.py,sha256=UBJa2RInEJtGjZ5e24PUQxPu1aTCIFkcCrrB0ERLdGI,12810
18
18
  bbot/core/helpers/depsinstaller/__init__.py,sha256=2mx1nYylSyvwl0GCM9YDHqrFEt2_5dSWAjP1RmhmbQg,37
19
- bbot/core/helpers/depsinstaller/installer.py,sha256=yGrkB-BuVHrUktE-hJ6YroiUaQFPdI5F91YbKPRozOs,17174
19
+ bbot/core/helpers/depsinstaller/installer.py,sha256=WH8KGvyRt1VXEvLdzWL4aoTvwqaiQ1H4_jDhatkd7I8,18679
20
20
  bbot/core/helpers/depsinstaller/sudo_askpass.py,sha256=yGa2OQv30RO75QkMuG1iruKqb7amQxRVRRcHmvIeGhk,1276
21
21
  bbot/core/helpers/diff.py,sha256=Xeb1857-njrc8sLr1DX6rr3FHlXLS4pi0Nm8NCwI__s,10592
22
22
  bbot/core/helpers/dns/__init__.py,sha256=2JK8P0BUfPlh4CTuuOWQCOacwL7NEtGFYPJsxbA0Zwo,27
@@ -100,7 +100,7 @@ bbot/modules/dotnetnuke.py,sha256=rw_EchDg49VyQj5JiUh0AqUqtsuqLrhc-nwrybdzhZ8,10
100
100
  bbot/modules/emailformat.py,sha256=RLPJW-xitYB-VT4Lp08qVzFkXx_kMyV_035JT_Yf4fM,1082
101
101
  bbot/modules/extractous.py,sha256=LbqfCoMXGyP19dxw0CIcbEPnyX7_eRWvuhHGHQ4wDXw,4641
102
102
  bbot/modules/ffuf_shortnames.py,sha256=9Kh0kJsw7XXpXmCkiB5eAhG4h9rSo8Y-mB3p0EDa_l0,12624
103
- bbot/modules/filedownload.py,sha256=Kq3oUejZcQozc6mgXNRKG7_wlRaGBsDobQ-zgQ0yo1g,8258
103
+ bbot/modules/filedownload.py,sha256=zJpsLKwrWWOtRfbw6wRgxtRIa0_CLxp2MPYDXBoNl4w,8425
104
104
  bbot/modules/fingerprintx.py,sha256=rdlR9d64AntAhbS_eJzh8bZCeLPTJPSKdkdKdhH_qAo,3269
105
105
  bbot/modules/fullhunt.py,sha256=zeehQb9akBSbHW9dF4icH8Vfd8LqoTrpIvnQEEMWes8,1311
106
106
  bbot/modules/generic_ssrf.py,sha256=4JzlOXd7MMwDZEhEEXpLdkMUe8y3Qqql7ggb3eZeN54,7946
@@ -111,7 +111,7 @@ bbot/modules/github_org.py,sha256=u_skzY7rjhM3B8OvZV6YETOdIQtUtMwsVwhNcquM148,90
111
111
  bbot/modules/github_workflows.py,sha256=vt4PbYGj2R6pi35AvyCsZar3wFYRJYGotZalDVSADus,9555
112
112
  bbot/modules/gitlab.py,sha256=9oWWpBijeHCjuFBfWW4HvNqt7bvJvrBgBjaaz_UPPnE,5964
113
113
  bbot/modules/google_playstore.py,sha256=N4QjzQag_bgDXfX17rytBiiWA-SQtYI2N0J_ZNEOdv0,3701
114
- bbot/modules/gowitness.py,sha256=nLV2AFFK6hiQrQSoYlqY1Eo2BE3rAjYiiOKCtqAoRDc,11277
114
+ bbot/modules/gowitness.py,sha256=Id4zBwoC-_6PnFZSD7m-T5Chj9lBlJAqA5E66-OPFjs,11523
115
115
  bbot/modules/hackertarget.py,sha256=IsKs9PtxUHdLJKZydlRdW_loBE2KphQYi3lKDAd4odc,1029
116
116
  bbot/modules/host_header.py,sha256=uDjwidMdeNPMRfzQ2YW4REEGsZqnGOZHbOS6GgdNd9s,7686
117
117
  bbot/modules/httpx.py,sha256=sNvtjIek2Io9BTle3MQUOj-0QYZvbsKL4et1Xd9vY1I,7642
@@ -249,7 +249,7 @@ bbot/test/test_step_1/test_depsinstaller.py,sha256=zr9f-wJDotD1ZvKXGEuDRWzFYMAYB
249
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
251
  bbot/test/test_step_1/test_engine.py,sha256=3HkCPtYhUxiZzfA-BRHpLsyaRj9wIXKbb49BCk9dILM,4267
252
- bbot/test/test_step_1/test_events.py,sha256=E09r2gpXnlG580wrPPPXRa3aCT6cJprTGD1_D0AiM-E,52717
252
+ bbot/test/test_step_1/test_events.py,sha256=fFlppfiCesP1DX1tgG0U8NlOpTQe0hWeaE43A_MNXyo,52858
253
253
  bbot/test/test_step_1/test_files.py,sha256=5Q_3jPpMXULxDHsanSDUaj8zF8bXzKdiJZHOmoYpLhQ,699
254
254
  bbot/test/test_step_1/test_helpers.py,sha256=hZfnzjtegezYOqTuo5uAaXGI2GGsfuHhglbfaPPYV-U,39482
255
255
  bbot/test/test_step_1/test_manager_deduplication.py,sha256=hZQpDXzg6zvzxFolVOcJuY-ME8NXjZUsqS70BRNXp8A,15594
@@ -320,7 +320,7 @@ bbot/test/test_step_2/module_tests/test_module_excavate.py,sha256=IPV3C2G7J5cR15
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
323
- bbot/test/test_step_2/module_tests/test_module_filedownload.py,sha256=Hu9GzhItmcjv6uc3o9aV1mXstRLR2yoWsiVKNIKGPjw,2608
323
+ bbot/test/test_step_2/module_tests/test_module_filedownload.py,sha256=ZLPlBVs8CMWofLZAl63zdYMryVdYXykoaxE4jBGED8I,4304
324
324
  bbot/test/test_step_2/module_tests/test_module_fingerprintx.py,sha256=nU3jxbkGcmPYiSzc6thJhNvjAFb4qVxcR7rkOAvjB18,445
325
325
  bbot/test/test_step_2/module_tests/test_module_fullhunt.py,sha256=NblfNHQrE82j-cESvm66hpN-ooKZwR1kEwJDTk_BXac,1946
326
326
  bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py,sha256=w8FHR88mRIIr0-H_tK3ymmpJwymOb_kj2B4tcFi5kic,2155
@@ -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=613zO2rKMVUBeUhAmGb7-FestLoTYqSYcva-4RAanog,4800
334
+ bbot/test/test_step_2/module_tests/test_module_gowitness.py,sha256=2Hw88GRn94j-5YhJQ5lkDgPkOqJjLnJl5MVB__l5CAE,6499
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
@@ -414,8 +414,8 @@ bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt,sha256=ZSIVebs7ptMvHx
414
414
  bbot/wordlists/top_open_ports_nmap.txt,sha256=LmdFYkfapSxn1pVuQC2LkOIY2hMLgG-Xts7DVtYzweM,42727
415
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.5504rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
418
- bbot-2.3.0.5504rc0.dist-info/METADATA,sha256=TzSBs17LvHzt6Q5iNlPUUDkNKb6OHhKZmOFltx3s3-w,18213
419
- bbot-2.3.0.5504rc0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
420
- bbot-2.3.0.5504rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
421
- bbot-2.3.0.5504rc0.dist-info/RECORD,,
417
+ bbot-2.3.0.5518rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
418
+ bbot-2.3.0.5518rc0.dist-info/METADATA,sha256=1ECavOBQDVgXAyOK0Qsl8RrQdvtzxvlW20YW4-_XyGk,18213
419
+ bbot-2.3.0.5518rc0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
420
+ bbot-2.3.0.5518rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
421
+ bbot-2.3.0.5518rc0.dist-info/RECORD,,