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 +1 -1
- bbot/core/helpers/depsinstaller/installer.py +5 -5
- bbot/modules/gowitness.py +22 -14
- bbot/test/conftest.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_gowitness.py +5 -5
- {bbot-2.5.0.6803rc0.dist-info → bbot-2.5.0.6807rc0.dist-info}/METADATA +1 -1
- {bbot-2.5.0.6803rc0.dist-info → bbot-2.5.0.6807rc0.dist-info}/RECORD +10 -10
- {bbot-2.5.0.6803rc0.dist-info → bbot-2.5.0.6807rc0.dist-info}/LICENSE +0 -0
- {bbot-2.5.0.6803rc0.dist-info → bbot-2.5.0.6807rc0.dist-info}/WHEEL +0 -0
- {bbot-2.5.0.6803rc0.dist-info → bbot-2.5.0.6807rc0.dist-info}/entry_points.txt +0 -0
bbot/__init__.py
CHANGED
|
@@ -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": "
|
|
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["
|
|
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["
|
|
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["
|
|
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
|
|
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 += ["--
|
|
242
|
-
command += ["--
|
|
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
|
|
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["
|
|
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
|
@@ -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("*.
|
|
54
|
+
screenshots = list(screenshots_path.glob("*.jpeg"))
|
|
55
55
|
assert len(screenshots) == 1, (
|
|
56
|
-
f"{len(screenshots):,} .
|
|
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("*.
|
|
77
|
+
screenshots = list(screenshots_path.glob("*.jpeg"))
|
|
78
78
|
assert len(screenshots) == 2, (
|
|
79
|
-
f"{len(screenshots):,} .
|
|
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
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
457
|
-
bbot-2.5.0.
|
|
458
|
-
bbot-2.5.0.
|
|
459
|
-
bbot-2.5.0.
|
|
460
|
-
bbot-2.5.0.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|