bbot 2.5.0.6719rc0__py3-none-any.whl → 2.5.0.6730rc0__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 +1 -1
- bbot/core/helpers/misc.py +2 -2
- bbot/core/shared_deps.py +38 -0
- bbot/modules/gowitness.py +44 -16
- bbot/modules/trufflehog.py +1 -1
- {bbot-2.5.0.6719rc0.dist-info → bbot-2.5.0.6730rc0.dist-info}/METADATA +1 -1
- {bbot-2.5.0.6719rc0.dist-info → bbot-2.5.0.6730rc0.dist-info}/RECORD +11 -11
- {bbot-2.5.0.6719rc0.dist-info → bbot-2.5.0.6730rc0.dist-info}/LICENSE +0 -0
- {bbot-2.5.0.6719rc0.dist-info → bbot-2.5.0.6730rc0.dist-info}/WHEEL +0 -0
- {bbot-2.5.0.6719rc0.dist-info → bbot-2.5.0.6730rc0.dist-info}/entry_points.txt +0 -0
bbot/__init__.py
CHANGED
|
@@ -196,7 +196,7 @@ class DepsInstaller:
|
|
|
196
196
|
deps_common = preloaded["deps"]["common"]
|
|
197
197
|
if deps_common:
|
|
198
198
|
for dep_common in deps_common:
|
|
199
|
-
if self.setup_status.get(dep_common, False) is True:
|
|
199
|
+
if self.setup_status.get(dep_common, False) is True and self.deps_behavior != "force_install":
|
|
200
200
|
log.debug(
|
|
201
201
|
f'Skipping installation of dependency "{dep_common}" for module "{module}" since it is already installed'
|
|
202
202
|
)
|
bbot/core/helpers/misc.py
CHANGED
|
@@ -1309,7 +1309,7 @@ def make_netloc(host, port=None):
|
|
|
1309
1309
|
return f"{host}:{port}"
|
|
1310
1310
|
|
|
1311
1311
|
|
|
1312
|
-
def which(*executables):
|
|
1312
|
+
def which(*executables, path=None):
|
|
1313
1313
|
"""Finds the full path of the first available executable from a list of executables.
|
|
1314
1314
|
|
|
1315
1315
|
Args:
|
|
@@ -1325,7 +1325,7 @@ def which(*executables):
|
|
|
1325
1325
|
import shutil
|
|
1326
1326
|
|
|
1327
1327
|
for e in executables:
|
|
1328
|
-
location = shutil.which(e)
|
|
1328
|
+
location = shutil.which(e, path=path)
|
|
1329
1329
|
if location:
|
|
1330
1330
|
return location
|
|
1331
1331
|
|
bbot/core/shared_deps.py
CHANGED
|
@@ -108,6 +108,24 @@ DEP_CHROMIUM = [
|
|
|
108
108
|
"when": "ansible_facts['os_family'] == 'Debian'",
|
|
109
109
|
"ignore_errors": True,
|
|
110
110
|
},
|
|
111
|
+
{
|
|
112
|
+
"name": "Get latest Chromium version (Darwin x86_64)",
|
|
113
|
+
"uri": {
|
|
114
|
+
"url": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac%2FLAST_CHANGE?alt=media",
|
|
115
|
+
"return_content": True,
|
|
116
|
+
},
|
|
117
|
+
"register": "chromium_version_darwin_x86_64",
|
|
118
|
+
"when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'x86_64'",
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": "Get latest Chromium version (Darwin arm64)",
|
|
122
|
+
"uri": {
|
|
123
|
+
"url": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac_Arm%2FLAST_CHANGE?alt=media",
|
|
124
|
+
"return_content": True,
|
|
125
|
+
},
|
|
126
|
+
"register": "chromium_version_darwin_arm64",
|
|
127
|
+
"when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'arm64'",
|
|
128
|
+
},
|
|
111
129
|
{
|
|
112
130
|
"name": "Download Chromium (Debian)",
|
|
113
131
|
"unarchive": {
|
|
@@ -119,6 +137,26 @@ DEP_CHROMIUM = [
|
|
|
119
137
|
"when": "ansible_facts['os_family'] == 'Debian'",
|
|
120
138
|
"ignore_errors": True,
|
|
121
139
|
},
|
|
140
|
+
{
|
|
141
|
+
"name": "Download Chromium (Darwin x86_64)",
|
|
142
|
+
"unarchive": {
|
|
143
|
+
"src": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac%2F{{ chromium_version_darwin_x86_64.content }}%2Fchrome-mac.zip?alt=media",
|
|
144
|
+
"remote_src": True,
|
|
145
|
+
"dest": "#{BBOT_TOOLS}",
|
|
146
|
+
"creates": "#{BBOT_TOOLS}/chrome-mac",
|
|
147
|
+
},
|
|
148
|
+
"when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'x86_64'",
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"name": "Download Chromium (Darwin arm64)",
|
|
152
|
+
"unarchive": {
|
|
153
|
+
"src": "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Mac_Arm%2F{{ chromium_version_darwin_arm64.content }}%2Fchrome-mac.zip?alt=media",
|
|
154
|
+
"remote_src": True,
|
|
155
|
+
"dest": "#{BBOT_TOOLS}",
|
|
156
|
+
"creates": "#{BBOT_TOOLS}/chrome-mac",
|
|
157
|
+
},
|
|
158
|
+
"when": "ansible_facts['os_family'] == 'Darwin' and ansible_facts['architecture'] == 'arm64'",
|
|
159
|
+
},
|
|
122
160
|
# Because Ubuntu is a special snowflake, we have to bend over backwards to fix the chrome sandbox
|
|
123
161
|
# see https://chromium.googlesource.com/chromium/src/+/main/docs/security/apparmor-userns-restrictions.md
|
|
124
162
|
{
|
bbot/modules/gowitness.py
CHANGED
|
@@ -2,6 +2,7 @@ import os
|
|
|
2
2
|
import asyncio
|
|
3
3
|
import aiosqlite
|
|
4
4
|
import multiprocessing
|
|
5
|
+
import platform
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from contextlib import suppress
|
|
7
8
|
from shutil import copyfile, copymode
|
|
@@ -23,6 +24,7 @@ class gowitness(BaseModule):
|
|
|
23
24
|
"output_path": "",
|
|
24
25
|
"social": False,
|
|
25
26
|
"idle_timeout": 1800,
|
|
27
|
+
"chrome_path": "",
|
|
26
28
|
}
|
|
27
29
|
options_desc = {
|
|
28
30
|
"version": "Gowitness version",
|
|
@@ -33,6 +35,7 @@ class gowitness(BaseModule):
|
|
|
33
35
|
"output_path": "Where to save screenshots",
|
|
34
36
|
"social": "Whether to screenshot social media webpages",
|
|
35
37
|
"idle_timeout": "Skip the current gowitness batch if it stalls for longer than this many seconds",
|
|
38
|
+
"chrome_path": "Path to chrome executable",
|
|
36
39
|
}
|
|
37
40
|
deps_common = ["chromium"]
|
|
38
41
|
deps_pip = ["aiosqlite"]
|
|
@@ -67,29 +70,54 @@ class gowitness(BaseModule):
|
|
|
67
70
|
self.base_path = Path(output_path) / "gowitness"
|
|
68
71
|
else:
|
|
69
72
|
self.base_path = self.scan.home / "gowitness"
|
|
73
|
+
|
|
70
74
|
self.chrome_path = None
|
|
71
|
-
|
|
72
|
-
if
|
|
73
|
-
|
|
75
|
+
config_chrome_path = self.config.get("chrome_path")
|
|
76
|
+
if config_chrome_path:
|
|
77
|
+
config_chrome_path = Path(config_chrome_path)
|
|
78
|
+
if not config_chrome_path.is_file():
|
|
79
|
+
return False, f"Could not find custom Chrome path at {config_chrome_path}"
|
|
80
|
+
self.chrome_path = config_chrome_path
|
|
81
|
+
else:
|
|
82
|
+
if platform.system() == "Darwin":
|
|
83
|
+
bbot_chrome_path = (
|
|
84
|
+
self.helpers.tools_dir / "chrome-mac" / "Chromium.app" / "Contents" / "MacOS" / "Chromium"
|
|
85
|
+
)
|
|
86
|
+
else:
|
|
87
|
+
bbot_chrome_path = self.helpers.tools_dir / "chrome-linux" / "chrome"
|
|
88
|
+
if bbot_chrome_path.is_file():
|
|
89
|
+
self.chrome_path = bbot_chrome_path
|
|
90
|
+
|
|
91
|
+
# make sure our chrome path works
|
|
92
|
+
chrome_test_pass = False
|
|
93
|
+
if self.chrome_path and self.chrome_path.is_file():
|
|
94
|
+
chrome_test_proc = await self.run_process([str(self.chrome_path), "--version"])
|
|
95
|
+
if getattr(chrome_test_proc, "returncode", 1) == 0:
|
|
96
|
+
self.verbose(f"Found chrome executable at {self.chrome_path}")
|
|
97
|
+
chrome_test_pass = True
|
|
98
|
+
|
|
99
|
+
if not chrome_test_pass:
|
|
100
|
+
# last resort - try to find a working chrome install
|
|
101
|
+
for binary in ("Google Chrome", "chrome", "chromium", "chromium-browser"):
|
|
102
|
+
binary_path = self.helpers.which(binary)
|
|
103
|
+
if binary_path and Path(binary_path).is_file():
|
|
104
|
+
chrome_test_proc = await self.run_process([str(binary_path), "--version"])
|
|
105
|
+
if getattr(chrome_test_proc, "returncode", 1) == 0:
|
|
106
|
+
self.verbose(f"Found chrome executable at {binary_path}")
|
|
107
|
+
chrome_test_pass = True
|
|
108
|
+
break
|
|
109
|
+
|
|
110
|
+
if not chrome_test_pass:
|
|
111
|
+
return (
|
|
112
|
+
False,
|
|
113
|
+
"Failed to set up Google chrome. Please install manually and set `chrome_path`, or try again with --force-deps.",
|
|
114
|
+
)
|
|
74
115
|
|
|
75
116
|
# fix ubuntu-specific sandbox bug
|
|
76
117
|
chrome_devel_sandbox = self.helpers.tools_dir / "chrome-linux" / "chrome_sandbox"
|
|
77
118
|
if chrome_devel_sandbox.is_file():
|
|
78
119
|
os.environ["CHROME_DEVEL_SANDBOX"] = str(chrome_devel_sandbox)
|
|
79
120
|
|
|
80
|
-
# make sure we have a working chrome install
|
|
81
|
-
chrome_test_pass = False
|
|
82
|
-
for binary in ("chrome", "chromium", "chromium-browser", custom_chrome_path):
|
|
83
|
-
binary_path = self.helpers.which(binary)
|
|
84
|
-
if binary_path and Path(binary_path).is_file():
|
|
85
|
-
chrome_test_proc = await self.run_process([binary_path, "--version"])
|
|
86
|
-
if getattr(chrome_test_proc, "returncode", 1) == 0:
|
|
87
|
-
self.verbose(f"Found chrome executable at {binary_path}")
|
|
88
|
-
chrome_test_pass = True
|
|
89
|
-
break
|
|
90
|
-
if not chrome_test_pass:
|
|
91
|
-
return False, "Failed to set up Google chrome. Please install manually or try again with --force-deps."
|
|
92
|
-
|
|
93
121
|
self.db_path = self.base_path / "gowitness.sqlite3"
|
|
94
122
|
self.screenshot_path = self.base_path / "screenshots"
|
|
95
123
|
self.command = self.construct_command()
|
bbot/modules/trufflehog.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: bbot
|
|
3
|
-
Version: 2.5.0.
|
|
3
|
+
Version: 2.5.0.6730rc0
|
|
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=WqBatiW2cL1ucLF3Om8PN3W_CWUYJOzUTd07U4kF1_M,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=UBJa2RInEJtGjZ5e24PUQxPu1aTCIFkcCrrB0ERLdGI,12810
|
|
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=i5FPcASDV4OPTUAT_txnbj2mmLr4z7-sigDPNiMUjWo,19816
|
|
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
|
|
@@ -29,7 +29,7 @@ bbot/core/helpers/files.py,sha256=9tVr3973QvX8l6o3TweD5_MCZiQpuJVffbzW0U7Z30U,57
|
|
|
29
29
|
bbot/core/helpers/helper.py,sha256=u-q_Ka9pY1atvC-FChxYpURM7b3_0gaCNIHSG__Wi74,8538
|
|
30
30
|
bbot/core/helpers/interactsh.py,sha256=VBYYH6-rWBofRsgemndK6iZNmyifOps8vgQOw2mac4k,12624
|
|
31
31
|
bbot/core/helpers/libmagic.py,sha256=QMHyxjgDLb2jyjBvK1MQ-xt6WkGXhKcHu9ZP1li-sik,3460
|
|
32
|
-
bbot/core/helpers/misc.py,sha256=
|
|
32
|
+
bbot/core/helpers/misc.py,sha256=hi5iyzpLc6oFk5XrWQN7leuRDyuZtdWuKVBxTUpQ_RY,88757
|
|
33
33
|
bbot/core/helpers/names_generator.py,sha256=N74pgt1vEJ8deBzV6eL5HiOEOG_6M7r0_MjbyxnPxfM,10516
|
|
34
34
|
bbot/core/helpers/ntlm.py,sha256=P2Xj4-GPos2iAzw4dfk0FJp6oGyycGhu2x6sLDVjYjs,2573
|
|
35
35
|
bbot/core/helpers/process.py,sha256=00uRpLMFi3Pt3uT8qXwAIhsXdoa7h-ifoXh0sGYgwqs,1702
|
|
@@ -48,7 +48,7 @@ bbot/core/helpers/wordcloud.py,sha256=QM8Z1N01_hXrRFKQjvRL-IzOOC7ZMKjuSBID3u77Sx
|
|
|
48
48
|
bbot/core/helpers/yara_helper.py,sha256=ypwC_H_ovJp9BpOwqgPkIdZEwqWfvqrRdKlwzBLfm8Q,1592
|
|
49
49
|
bbot/core/modules.py,sha256=G4rRVF1bQzp62kwpgxwMa_FTV4-huWwtcd6HpW9jQf0,31970
|
|
50
50
|
bbot/core/multiprocess.py,sha256=ocQHanskJ09gHwe7RZmwNdZyCOQyeyUoIHCtLbtvXUk,1771
|
|
51
|
-
bbot/core/shared_deps.py,sha256=
|
|
51
|
+
bbot/core/shared_deps.py,sha256=NeJmyakKxQQjN-H3rYGwGuHeVxDiVM_KnDfeVEeIbf4,9498
|
|
52
52
|
bbot/db/sql/models.py,sha256=SrUdDOBCICzXJBY29p0VvILhMQ1JCuh725bqvIYogX0,4884
|
|
53
53
|
bbot/defaults.yml,sha256=TTxtlnyE9vPihXjkGMDbBpNRlGa48GhRXS23iFsKUAg,7830
|
|
54
54
|
bbot/errors.py,sha256=xwQcD26nU9oc7-o0kv5jmEDTInmi8_W8eKAgQZZxdVM,953
|
|
@@ -112,7 +112,7 @@ bbot/modules/github_usersearch.py,sha256=G8knkQBJsn7EKcMhcEaFPiB_Y5S96e2VaseBubs
|
|
|
112
112
|
bbot/modules/github_workflows.py,sha256=xKntAFDeGuE4MqbEmhJyYXKbzoSh9tWYlHNlnF37PYA,10040
|
|
113
113
|
bbot/modules/gitlab.py,sha256=9oWWpBijeHCjuFBfWW4HvNqt7bvJvrBgBjaaz_UPPnE,5964
|
|
114
114
|
bbot/modules/google_playstore.py,sha256=N4QjzQag_bgDXfX17rytBiiWA-SQtYI2N0J_ZNEOdv0,3701
|
|
115
|
-
bbot/modules/gowitness.py,sha256=
|
|
115
|
+
bbot/modules/gowitness.py,sha256=o4nIBbHVX9tYVW9CpwTsaftWDZu41nhxS0KEp4FoiBs,13003
|
|
116
116
|
bbot/modules/hackertarget.py,sha256=IsKs9PtxUHdLJKZydlRdW_loBE2KphQYi3lKDAd4odc,1029
|
|
117
117
|
bbot/modules/host_header.py,sha256=uDjwidMdeNPMRfzQ2YW4REEGsZqnGOZHbOS6GgdNd9s,7686
|
|
118
118
|
bbot/modules/httpx.py,sha256=z0sgnfLqIXyiadM0rKQK2p86lka7rC4pGCfTVUqU5Lk,8118
|
|
@@ -206,7 +206,7 @@ bbot/modules/templates/sql.py,sha256=o-CdyyoJvHJdJBKkj3CIGXYxUta4w2AB_2Vr-k7cDDU
|
|
|
206
206
|
bbot/modules/templates/subdomain_enum.py,sha256=epyKSly08jqaINV_AMMWbNafIeQjJqvd3aj63KD0Mck,8402
|
|
207
207
|
bbot/modules/templates/webhook.py,sha256=uGFmcJ81GzGN1UI2k2O7nQF_fyh4ehLDEg2NSXaPnhk,3373
|
|
208
208
|
bbot/modules/trickest.py,sha256=MRgLW0YiDWzlWdAjyqfPPLFb-a51r-Ffn_dphiJI_gA,1550
|
|
209
|
-
bbot/modules/trufflehog.py,sha256=
|
|
209
|
+
bbot/modules/trufflehog.py,sha256=63gfyljjo5iymhr0BbKo-35Pj00h_T5wLg8Eon6SPlM,8702
|
|
210
210
|
bbot/modules/url_manipulation.py,sha256=4J3oFkqTSJPPmbKEKAHJg2Q2w4QNKtQhiN03ZJq5VtI,4326
|
|
211
211
|
bbot/modules/urlscan.py,sha256=-w_3Bm6smyG2GLQyIbnMUkKmeQVauo-V6F4_kJDYG7s,3740
|
|
212
212
|
bbot/modules/vhost.py,sha256=cirOe0HR4M0TEBN8JdXo2l0s2flc8ZSdxggGm79blT8,5459
|
|
@@ -449,8 +449,8 @@ bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt,sha256=ZSIVebs7ptMvHx
|
|
|
449
449
|
bbot/wordlists/top_open_ports_nmap.txt,sha256=LmdFYkfapSxn1pVuQC2LkOIY2hMLgG-Xts7DVtYzweM,42727
|
|
450
450
|
bbot/wordlists/valid_url_schemes.txt,sha256=0B_VAr9Dv7aYhwi6JSBDU-3M76vNtzN0qEC_RNLo7HE,3310
|
|
451
451
|
bbot/wordlists/wordninja_dns.txt.gz,sha256=DYHvvfW0TvzrVwyprqODAk4tGOxv5ezNmCPSdPuDUnQ,570241
|
|
452
|
-
bbot-2.5.0.
|
|
453
|
-
bbot-2.5.0.
|
|
454
|
-
bbot-2.5.0.
|
|
455
|
-
bbot-2.5.0.
|
|
456
|
-
bbot-2.5.0.
|
|
452
|
+
bbot-2.5.0.6730rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
|
|
453
|
+
bbot-2.5.0.6730rc0.dist-info/METADATA,sha256=EiOc-7dymmDaTYCIFEe0xNDokNbPgrWLetRAq8ORtDo,18308
|
|
454
|
+
bbot-2.5.0.6730rc0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
455
|
+
bbot-2.5.0.6730rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
|
|
456
|
+
bbot-2.5.0.6730rc0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|