bbot 2.5.0.6803rc0__py3-none-any.whl → 2.5.0.6807rc0__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,5 +1,5 @@
1
1
  # version placeholder (replaced by poetry-dynamic-versioning)
2
- __version__ = "v2.5.0.6803rc"
2
+ __version__ = "v2.5.0.6807rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
5
5
 
@@ -223,11 +223,6 @@ class DepsInstaller:
223
223
  success = True
224
224
  preloaded = self.all_modules_preloaded[module]
225
225
 
226
- # ansible tasks
227
- ansible_tasks = preloaded["deps"]["ansible"]
228
- if ansible_tasks:
229
- success &= self.tasks(module, ansible_tasks)
230
-
231
226
  # apt
232
227
  deps_apt = preloaded["deps"]["apt"]
233
228
  if deps_apt:
@@ -258,6 +253,11 @@ class DepsInstaller:
258
253
  self.setup_status[dep_common] = result
259
254
  success &= result
260
255
 
256
+ # ansible tasks
257
+ ansible_tasks = preloaded["deps"]["ansible"]
258
+ if ansible_tasks:
259
+ success &= self.tasks(module, ansible_tasks)
260
+
261
261
  return success
262
262
 
263
263
  async def pip_install(self, packages, constraints=None):
bbot/modules/gowitness.py CHANGED
@@ -16,7 +16,7 @@ class gowitness(BaseModule):
16
16
  flags = ["active", "safe", "web-screenshots"]
17
17
  meta = {"description": "Take screenshots of webpages", "created_date": "2022-07-08", "author": "@TheTechromancer"}
18
18
  options = {
19
- "version": "2.4.2",
19
+ "version": "3.0.5",
20
20
  "threads": 0,
21
21
  "timeout": 10,
22
22
  "resolution_x": 1440,
@@ -161,6 +161,7 @@ class gowitness(BaseModule):
161
161
  key = e.data["url"]
162
162
  event_dict[key] = e
163
163
  stdin = "\n".join(list(event_dict))
164
+ self.hugeinfo(f"Gowitness input: {stdin}")
164
165
 
165
166
  try:
166
167
  async for line in self.run_process_live(self.command, input=stdin, idle_timeout=self.idle_timeout):
@@ -174,12 +175,14 @@ class gowitness(BaseModule):
174
175
  new_screenshots = await self.get_new_screenshots()
175
176
  for filename, screenshot in new_screenshots.items():
176
177
  url = screenshot["url"]
178
+ url = self.helpers.clean_url(url).geturl()
177
179
  final_url = screenshot["final_url"]
178
180
  filename = self.screenshot_path / screenshot["filename"]
179
181
  filename = filename.relative_to(self.scan.home)
180
182
  # NOTE: this prevents long filenames from causing problems in BBOT, but gowitness will still fail to save it.
181
183
  filename = self.helpers.truncate_filename(filename)
182
184
  webscreenshot_data = {"path": str(filename), "url": final_url}
185
+ self.hugewarning(event_dict)
183
186
  parent_event = event_dict[url]
184
187
  await self.emit_event(
185
188
  webscreenshot_data,
@@ -191,11 +194,11 @@ class gowitness(BaseModule):
191
194
  # emit URLs
192
195
  new_network_logs = await self.get_new_network_logs()
193
196
  for url, row in new_network_logs.items():
194
- ip = row["ip"]
197
+ ip = row["remote_ip"]
195
198
  status_code = row["status_code"]
196
199
  tags = [f"status-{status_code}", f"ip-{ip}", "spider-danger"]
197
200
 
198
- _id = row["url_id"]
201
+ _id = row["result_id"]
199
202
  parent_url = self.screenshots_taken[_id]
200
203
  parent_event = event_dict[parent_url]
201
204
  if url and url.startswith("http"):
@@ -210,7 +213,7 @@ class gowitness(BaseModule):
210
213
  # emit technologies
211
214
  new_technologies = await self.get_new_technologies()
212
215
  for row in new_technologies.values():
213
- parent_id = row["url_id"]
216
+ parent_id = row["result_id"]
214
217
  parent_url = self.screenshots_taken[parent_id]
215
218
  parent_event = event_dict[parent_url]
216
219
  technology = row["value"]
@@ -224,28 +227,29 @@ class gowitness(BaseModule):
224
227
 
225
228
  def construct_command(self):
226
229
  # base executable
227
- command = ["gowitness"]
230
+ command = ["gowitness", "scan"]
228
231
  # chrome path
229
232
  if self.chrome_path is not None:
230
233
  command += ["--chrome-path", str(self.chrome_path)]
231
234
  # db path
232
- command += ["--db-path", str(self.db_path)]
235
+ command += ["--write-db"]
236
+ command += ["--write-db-uri", f"sqlite://{self.db_path}"]
233
237
  # screenshot path
234
238
  command += ["--screenshot-path", str(self.screenshot_path)]
235
239
  # user agent
236
- command += ["--user-agent", f"{self.scan.useragent}"]
240
+ command += ["--chrome-user-agent", f"{self.scan.useragent}"]
237
241
  # proxy
238
242
  if self.proxy:
239
- command += ["--proxy", str(self.proxy)]
243
+ command += ["--chrome-proxy", str(self.proxy)]
240
244
  # resolution
241
- command += ["--resolution-x", str(self.resolution_x)]
242
- command += ["--resolution-y", str(self.resolution_y)]
243
- # input
244
- command += ["file", "-f", "-"]
245
+ command += ["--chrome-window-x", str(self.resolution_x)]
246
+ command += ["--chrome-window-y", str(self.resolution_y)]
245
247
  # threads
246
248
  command += ["--threads", str(self.threads)]
247
249
  # timeout
248
250
  command += ["--timeout", str(self.timeout)]
251
+ # input
252
+ command += ["file", "-f", "-"]
249
253
  return command
250
254
 
251
255
  async def get_new_screenshots(self):
@@ -254,8 +258,10 @@ class gowitness(BaseModule):
254
258
  async with aiosqlite.connect(str(self.db_path)) as con:
255
259
  con.row_factory = aiosqlite.Row
256
260
  con.text_factory = self.helpers.smart_decode
257
- async with con.execute("SELECT * FROM urls") as cur:
261
+ async with con.execute("SELECT * FROM results") as cur:
262
+ self.critical(f"CUR: {cur}")
258
263
  async for row in cur:
264
+ self.critical(f"SCREENSHOT: {row}")
259
265
  row = dict(row)
260
266
  _id = row["id"]
261
267
  if _id not in self.screenshots_taken:
@@ -270,8 +276,9 @@ class gowitness(BaseModule):
270
276
  con.row_factory = aiosqlite.Row
271
277
  async with con.execute("SELECT * FROM network_logs") as cur:
272
278
  async for row in cur:
279
+ self.critical(f"NETWORK LOG: {row}")
273
280
  row = dict(row)
274
- url = row["final_url"]
281
+ url = row["url"]
275
282
  if url not in self.connections_logged:
276
283
  self.connections_logged.add(url)
277
284
  network_logs[url] = row
@@ -284,6 +291,7 @@ class gowitness(BaseModule):
284
291
  con.row_factory = aiosqlite.Row
285
292
  async with con.execute("SELECT * FROM technologies") as cur:
286
293
  async for row in cur:
294
+ self.critical(f"TECHNOLOGY: {row}")
287
295
  _id = row["id"]
288
296
  if _id not in self.technologies_found:
289
297
  self.technologies_found.add(_id)
bbot/test/conftest.py CHANGED
@@ -1,8 +1,8 @@
1
1
  import os
2
2
  import ssl
3
3
  import time
4
- import shutil
5
4
  import pytest
5
+ import shutil
6
6
  import asyncio
7
7
  import logging
8
8
  from pathlib import Path
@@ -51,9 +51,9 @@ class TestGowitness(ModuleTestBase):
51
51
  )
52
52
 
53
53
  screenshots_path = self.home_dir / "scans" / module_test.scan.name / "gowitness" / "screenshots"
54
- screenshots = list(screenshots_path.glob("*.png"))
54
+ screenshots = list(screenshots_path.glob("*.jpeg"))
55
55
  assert len(screenshots) == 1, (
56
- f"{len(screenshots):,} .png files found at {screenshots_path}, should have been 1"
56
+ f"{len(screenshots):,} .jpeg files found at {screenshots_path}, should have been 1"
57
57
  )
58
58
  assert 1 == len([e for e in events if e.type == "URL" and e.data == "http://127.0.0.1:8888/"])
59
59
  assert 1 == len(
@@ -74,9 +74,9 @@ class TestGowitness_Social(TestGowitness):
74
74
 
75
75
  def check(self, module_test, events):
76
76
  screenshots_path = self.home_dir / "scans" / module_test.scan.name / "gowitness" / "screenshots"
77
- screenshots = list(screenshots_path.glob("*.png"))
77
+ screenshots = list(screenshots_path.glob("*.jpeg"))
78
78
  assert len(screenshots) == 2, (
79
- f"{len(screenshots):,} .png files found at {screenshots_path}, should have been 2"
79
+ f"{len(screenshots):,} .jpeg files found at {screenshots_path}, should have been 2"
80
80
  )
81
81
  assert 2 == len([e for e in events if e.type == "WEBSCREENSHOT"])
82
82
  assert 1 == len(
@@ -86,7 +86,7 @@ class TestGowitness_Social(TestGowitness):
86
86
  if e.type == "WEBSCREENSHOT" and e.data["url"] == "http://127.0.0.1:8888/blacklanternsecurity"
87
87
  ]
88
88
  )
89
- assert 1 == len(
89
+ assert len(
90
90
  [
91
91
  e
92
92
  for e in events
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bbot
3
- Version: 2.5.0.6803rc0
3
+ Version: 2.5.0.6807rc0
4
4
  Summary: OSINT automation for hackers.
5
5
  License: GPL-3.0
6
6
  Keywords: python,cli,automation,osint,threat-intel,intelligence,neo4j,scanner,python-library,hacking,recursion,pentesting,recon,command-line-tool,bugbounty,subdomains,security-tools,subdomain-scanner,osint-framework,attack-surface,subdomain-enumeration,osint-tool
@@ -1,4 +1,4 @@
1
- bbot/__init__.py,sha256=psvZSLfHy5t3AIe_f5WcJGV67hsBRzebgolsC2TQ89Y,163
1
+ bbot/__init__.py,sha256=mXR46kJz4_7NK7UMuE16LjE9yGcgU-aGNljCPSHMGLA,163
2
2
  bbot/cli.py,sha256=1QJbANVw9Q3GFM92H2QRV2ds5756ulm08CDZwzwPpeI,11888
3
3
  bbot/core/__init__.py,sha256=l255GJE_DvUnWvrRb0J5lG-iMztJ8zVvoweDOfegGtI,46
4
4
  bbot/core/config/__init__.py,sha256=zYNw2Me6tsEr8hOOkLb4BQ97GB7Kis2k--G81S8vofU,342
@@ -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=ZiLp71iEEcnnHLkvyD_TVeBKl9Uz9PGpTcpl9EHLCgQ,12938
18
18
  bbot/core/helpers/depsinstaller/__init__.py,sha256=C2jF_ymSPIO68F649csYQql37ppPfUjFc8eq8LhgDkQ,66
19
- bbot/core/helpers/depsinstaller/installer.py,sha256=eos-Q9KUPHQRUU8iRiT5pVJccuHaLouMxxFvjPgR_1s,22154
19
+ bbot/core/helpers/depsinstaller/installer.py,sha256=6_7SehcsYRVoU9gYzve85Y5PIzJQUBCgf8THCsqjaAM,22154
20
20
  bbot/core/helpers/depsinstaller/sudo_askpass.py,sha256=yGa2OQv30RO75QkMuG1iruKqb7amQxRVRRcHmvIeGhk,1276
21
21
  bbot/core/helpers/diff.py,sha256=X9MnHfz3IjWhD2grYTHzVPYoiWI9ZqjJul2Bp_BRGcE,10841
22
22
  bbot/core/helpers/dns/__init__.py,sha256=SboBeh4o81Xd4mAKhV10QzoRPDH4g28xC5PZVqVmJ28,35
@@ -113,7 +113,7 @@ bbot/modules/github_usersearch.py,sha256=G8knkQBJsn7EKcMhcEaFPiB_Y5S96e2VaseBubs
113
113
  bbot/modules/github_workflows.py,sha256=xKntAFDeGuE4MqbEmhJyYXKbzoSh9tWYlHNlnF37PYA,10040
114
114
  bbot/modules/gitlab.py,sha256=9oWWpBijeHCjuFBfWW4HvNqt7bvJvrBgBjaaz_UPPnE,5964
115
115
  bbot/modules/google_playstore.py,sha256=N4QjzQag_bgDXfX17rytBiiWA-SQtYI2N0J_ZNEOdv0,3701
116
- bbot/modules/gowitness.py,sha256=o4nIBbHVX9tYVW9CpwTsaftWDZu41nhxS0KEp4FoiBs,13003
116
+ bbot/modules/gowitness.py,sha256=ioh66xQEQ3dz7FfZzR5dPNFdELhJrwiOIm3nGvYl8n8,13466
117
117
  bbot/modules/graphql_introspection.py,sha256=-BAzNhBegup2sIYQdJ0jcafZFTGTZl3WoMygilyvfVA,4144
118
118
  bbot/modules/hackertarget.py,sha256=IsKs9PtxUHdLJKZydlRdW_loBE2KphQYi3lKDAd4odc,1029
119
119
  bbot/modules/host_header.py,sha256=uDjwidMdeNPMRfzQ2YW4REEGsZqnGOZHbOS6GgdNd9s,7686
@@ -261,7 +261,7 @@ bbot/scanner/target.py,sha256=lI0Tn5prQiPiJE3WW-ZLx_l6EFqzAVabtyL-nfXJ8cE,10636
261
261
  bbot/scripts/docs.py,sha256=aYAHlcHtMAhM-XGTDiSpzccnX1dh0Xi_WxmC2bgylQ4,11373
262
262
  bbot/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
263
  bbot/test/bbot_fixtures.py,sha256=XrCQDLVe80BG3QTUDnXb0y-cWnBpJJoRh2Z3J3xJn_w,9961
264
- bbot/test/conftest.py,sha256=OacpJ98g00HqCoHpEnuzzMK47LkbZdJWr25Pm0SbTM0,11783
264
+ bbot/test/conftest.py,sha256=194ckIxGs5EUp2wa1VOIFwClavFSlIPOKU5tKjAaN4k,11783
265
265
  bbot/test/coverage.cfg,sha256=ko9RacAYsJxWJCL8aEuNtkAOtP9lexYiDbeFWe8Tp8Y,31
266
266
  bbot/test/fastapi_test.py,sha256=9OhOFRyagXTshMsnuzuKIcR4uzS6VW65m7h9KgB4jSA,381
267
267
  bbot/test/owasp_mastg.apk,sha256=Hai_V9JmEJ-aB8Ab9xEaGXXOAfGQudkUvNOuPb75byE,66651
@@ -364,7 +364,7 @@ bbot/test/test_step_2/module_tests/test_module_github_usersearch.py,sha256=IIQ0t
364
364
  bbot/test/test_step_2/module_tests/test_module_github_workflows.py,sha256=o_teEaskm3H22QEKod5KJayFvvcgOQoG4eItGWv8C8E,38006
365
365
  bbot/test/test_step_2/module_tests/test_module_gitlab.py,sha256=fnwE7BWTU6EQquKdGLCiaX_LwVwvzOLev3Y9GheTLSY,11859
366
366
  bbot/test/test_step_2/module_tests/test_module_google_playstore.py,sha256=uTRqpAGI9HI-rOk_6jdV44OoSqi0QQQ3aTVzvuV0dtc,3034
367
- bbot/test/test_step_2/module_tests/test_module_gowitness.py,sha256=EH3NIMDA3XgZz1yffu-PnRCrlZJODakGPfzgnU7Ls_s,6501
367
+ bbot/test/test_step_2/module_tests/test_module_gowitness.py,sha256=8kSeBowX4eejMW791mIaFqP9SDn1l2EDRJatvmZVWug,6500
368
368
  bbot/test/test_step_2/module_tests/test_module_graphql_introspection.py,sha256=qac8DJ_exe6Ra4UgRvVMSdgBhLIZP9lmXyKhi9RPOK8,1241
369
369
  bbot/test/test_step_2/module_tests/test_module_hackertarget.py,sha256=ldhNKxGk5fwq87zVptQDyfQ-cn3FzbWvpadKEO3h4ic,609
370
370
  bbot/test/test_step_2/module_tests/test_module_host_header.py,sha256=w1x0MyKNiUol4hlw7CijhMwEMEL5aBddbZZjOcEgv_k,2672
@@ -453,8 +453,8 @@ bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt,sha256=ZSIVebs7ptMvHx
453
453
  bbot/wordlists/top_open_ports_nmap.txt,sha256=LmdFYkfapSxn1pVuQC2LkOIY2hMLgG-Xts7DVtYzweM,42727
454
454
  bbot/wordlists/valid_url_schemes.txt,sha256=0B_VAr9Dv7aYhwi6JSBDU-3M76vNtzN0qEC_RNLo7HE,3310
455
455
  bbot/wordlists/wordninja_dns.txt.gz,sha256=DYHvvfW0TvzrVwyprqODAk4tGOxv5ezNmCPSdPuDUnQ,570241
456
- bbot-2.5.0.6803rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
457
- bbot-2.5.0.6803rc0.dist-info/METADATA,sha256=RafoLsvxll-6fDNfVENz3dKWCZBy4nwrtx3qVZfkjw0,18308
458
- bbot-2.5.0.6803rc0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
459
- bbot-2.5.0.6803rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
460
- bbot-2.5.0.6803rc0.dist-info/RECORD,,
456
+ bbot-2.5.0.6807rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
457
+ bbot-2.5.0.6807rc0.dist-info/METADATA,sha256=ZU7RYR_FtYAUEZ3P_OtV8slLhE7G-LXXGHV_7OrKYbo,18308
458
+ bbot-2.5.0.6807rc0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
459
+ bbot-2.5.0.6807rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
460
+ bbot-2.5.0.6807rc0.dist-info/RECORD,,