exploitfarm 2.2.5__tar.gz → 2.2.6__tar.gz
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.
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/PKG-INFO +4 -14
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/__init__.py +1 -1
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/local_executor.py +1 -1
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/xfarm.py +16 -7
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/PKG-INFO +4 -14
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/SOURCES.txt +2 -4
- exploitfarm-2.2.6/exploitfarm.egg-info/entry_points.txt +2 -0
- exploitfarm-2.2.6/pyproject.toml +43 -0
- exploitfarm-2.2.5/MANIFEST.in +0 -1
- exploitfarm-2.2.5/requirements.txt +0 -16
- exploitfarm-2.2.5/setup.py +0 -37
- exploitfarm-2.2.5/xfarm +0 -6
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/README.md +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/__main__.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/_init_exposed.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/attack_storage.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/autotune.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/connection.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/core_orchestration.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/__init__.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/client.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/dbtypes.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/enums.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/exploit.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/exploit_template.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/flags.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/groups.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/response.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/service.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/submitter.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/teams.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/team_provider.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/__init__.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/config.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/exploitdownload.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/exploitinit.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/group_prejoin.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/group_select.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/login.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/shared_attack_group.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/startxploit.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/template.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/__init__.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/cmd.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/config.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/exploit.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/paths.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/reqs.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/templates.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/threadpool.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/windows_close_fix.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/xploit.py +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/dependency_links.txt +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/requires.txt +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/top_level.txt +0 -0
- {exploitfarm-2.2.5 → exploitfarm-2.2.6}/setup.cfg +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: exploitfarm
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.6
|
|
4
4
|
Summary: Exploit Farm client
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Author-email: Pwnzer0tt1 <pwnzer0tt1@poliba.it>
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/pwnzer0tt1/exploitfarm
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
10
9
|
Classifier: Operating System :: OS Independent
|
|
11
10
|
Requires-Python: >=3.10
|
|
12
11
|
Description-Content-Type: text/markdown
|
|
@@ -25,15 +24,6 @@ Requires-Dist: aiohttp>=3.14.3
|
|
|
25
24
|
Requires-Dist: textual>=8.2.8
|
|
26
25
|
Requires-Dist: typer>=0.27.2
|
|
27
26
|
Requires-Dist: platformdirs>=4.11.7
|
|
28
|
-
Dynamic: author
|
|
29
|
-
Dynamic: author-email
|
|
30
|
-
Dynamic: classifier
|
|
31
|
-
Dynamic: description
|
|
32
|
-
Dynamic: description-content-type
|
|
33
|
-
Dynamic: home-page
|
|
34
|
-
Dynamic: requires-dist
|
|
35
|
-
Dynamic: requires-python
|
|
36
|
-
Dynamic: summary
|
|
37
27
|
|
|
38
28
|
# ExploitFarm Python Library and CLI
|
|
39
29
|
|
|
@@ -538,7 +538,7 @@ class LocalExecutor(BaseExecutor):
|
|
|
538
538
|
|
|
539
539
|
try:
|
|
540
540
|
handle = msvcrt.get_osfhandle(proc.stdout.fileno())
|
|
541
|
-
avail = wintypes.DWORD()
|
|
541
|
+
avail = wintypes.DWORD() # pylint: disable=no-value-for-parameter # stub omits the default
|
|
542
542
|
res = ctypes.windll.kernel32.PeekNamedPipe(handle, None, 0, None, ctypes.byref(avail), None)
|
|
543
543
|
if res and avail.value > 0:
|
|
544
544
|
chunk = os.read(proc.stdout.fileno(), min(avail.value, 4096))
|
|
@@ -118,13 +118,13 @@ def handle_service_not_found(exploit_config: ExploitConfig):
|
|
|
118
118
|
close_cli()
|
|
119
119
|
print(
|
|
120
120
|
f"[bold red]Service {escape(str(exploit_config.service))} not found "
|
|
121
|
-
"use 'xfarm
|
|
121
|
+
"use 'xfarm edit'[/]"
|
|
122
122
|
)
|
|
123
123
|
decision = typer.confirm(
|
|
124
|
-
"Do you want to
|
|
124
|
+
"Do you want to run 'xfarm edit' now?", default=True
|
|
125
125
|
)
|
|
126
126
|
if decision:
|
|
127
|
-
|
|
127
|
+
_exploit_setup(True)
|
|
128
128
|
restart_program()
|
|
129
129
|
|
|
130
130
|
|
|
@@ -230,8 +230,8 @@ def initial_setup(login=True, require_running=False):
|
|
|
230
230
|
return connection
|
|
231
231
|
|
|
232
232
|
|
|
233
|
-
@config.command(help="Edit the client settings")
|
|
234
|
-
def
|
|
233
|
+
@config.command(name="edit", help="Edit the client settings")
|
|
234
|
+
def config_edit(
|
|
235
235
|
address: str = typer.Option(None, help="The address of the server"),
|
|
236
236
|
port: int = typer.Option(None, help="The port of the server"),
|
|
237
237
|
nickname: str = typer.Option(None, help="The nickname of this client"),
|
|
@@ -967,14 +967,14 @@ def template_edit(
|
|
|
967
967
|
|
|
968
968
|
|
|
969
969
|
@app.command(help="Edit the exploit config")
|
|
970
|
-
def edit(
|
|
970
|
+
def edit(
|
|
971
971
|
name: Optional[str] = typer.Option(None, help="The name of the exploit"),
|
|
972
972
|
service: Optional[UUID] = typer.Option(None, help="The service of the exploit"),
|
|
973
973
|
language: Optional[Language] = typer.Option(
|
|
974
974
|
None, help="The language of the exploit"
|
|
975
975
|
),
|
|
976
976
|
):
|
|
977
|
-
|
|
977
|
+
_exploit_setup(True, name, service, language)
|
|
978
978
|
|
|
979
979
|
|
|
980
980
|
@app.command(help="Commit and push the current version of the exploit to the server")
|
|
@@ -1313,6 +1313,15 @@ def init(
|
|
|
1313
1313
|
language: Optional[Language] = typer.Option(
|
|
1314
1314
|
None, help="The language of the exploit"
|
|
1315
1315
|
),
|
|
1316
|
+
):
|
|
1317
|
+
_exploit_setup(False, name, service, language)
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
def _exploit_setup(
|
|
1321
|
+
edit: bool,
|
|
1322
|
+
name: Optional[str] = None,
|
|
1323
|
+
service: Optional[UUID] = None,
|
|
1324
|
+
language: Optional[Language] = None,
|
|
1316
1325
|
):
|
|
1317
1326
|
connection = initial_setup(login=False)
|
|
1318
1327
|
templates = []
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: exploitfarm
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.6
|
|
4
4
|
Summary: Exploit Farm client
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Author-email: Pwnzer0tt1 <pwnzer0tt1@poliba.it>
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/pwnzer0tt1/exploitfarm
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
10
9
|
Classifier: Operating System :: OS Independent
|
|
11
10
|
Requires-Python: >=3.10
|
|
12
11
|
Description-Content-Type: text/markdown
|
|
@@ -25,15 +24,6 @@ Requires-Dist: aiohttp>=3.14.3
|
|
|
25
24
|
Requires-Dist: textual>=8.2.8
|
|
26
25
|
Requires-Dist: typer>=0.27.2
|
|
27
26
|
Requires-Dist: platformdirs>=4.11.7
|
|
28
|
-
Dynamic: author
|
|
29
|
-
Dynamic: author-email
|
|
30
|
-
Dynamic: classifier
|
|
31
|
-
Dynamic: description
|
|
32
|
-
Dynamic: description-content-type
|
|
33
|
-
Dynamic: home-page
|
|
34
|
-
Dynamic: requires-dist
|
|
35
|
-
Dynamic: requires-python
|
|
36
|
-
Dynamic: summary
|
|
37
27
|
|
|
38
28
|
# ExploitFarm Python Library and CLI
|
|
39
29
|
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
MANIFEST.in
|
|
2
1
|
README.md
|
|
3
|
-
|
|
4
|
-
setup.py
|
|
5
|
-
xfarm
|
|
2
|
+
pyproject.toml
|
|
6
3
|
exploitfarm/__init__.py
|
|
7
4
|
exploitfarm/__main__.py
|
|
8
5
|
exploitfarm/_init_exposed.py
|
|
@@ -17,6 +14,7 @@ exploitfarm/xploit.py
|
|
|
17
14
|
exploitfarm.egg-info/PKG-INFO
|
|
18
15
|
exploitfarm.egg-info/SOURCES.txt
|
|
19
16
|
exploitfarm.egg-info/dependency_links.txt
|
|
17
|
+
exploitfarm.egg-info/entry_points.txt
|
|
20
18
|
exploitfarm.egg-info/requires.txt
|
|
21
19
|
exploitfarm.egg-info/top_level.txt
|
|
22
20
|
exploitfarm/models/__init__.py
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "exploitfarm"
|
|
7
|
+
# Replaced with the release tag by CI (.github/workflows/release.yml)
|
|
8
|
+
version = "2.2.6"
|
|
9
|
+
description = "Exploit Farm client"
|
|
10
|
+
readme = "README.md"
|
|
11
|
+
authors = [{ name = "Pwnzer0tt1", email = "pwnzer0tt1@poliba.it" }]
|
|
12
|
+
license = "GPL-3.0-or-later"
|
|
13
|
+
requires-python = ">=3.10"
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Operating System :: OS Independent",
|
|
17
|
+
]
|
|
18
|
+
dependencies = [
|
|
19
|
+
"requests>=2.34.2",
|
|
20
|
+
"urllib3>=2.7.0",
|
|
21
|
+
"python-dateutil>=2.9.0.post0",
|
|
22
|
+
"pydantic>=2",
|
|
23
|
+
"typing-extensions>=4.16.0",
|
|
24
|
+
"fasteners>=0.20",
|
|
25
|
+
"toml>=0.10.2",
|
|
26
|
+
"psutil>=7.2.2",
|
|
27
|
+
"dirhash>=0.5.0",
|
|
28
|
+
"requests-toolbelt>=1.0.0",
|
|
29
|
+
"python-socketio[asyncio_client]>=5.16.4",
|
|
30
|
+
"aiohttp>=3.14.3",
|
|
31
|
+
"textual>=8.2.8",
|
|
32
|
+
"typer>=0.27.2",
|
|
33
|
+
"platformdirs>=4.11.7",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
[project.urls]
|
|
37
|
+
Homepage = "https://github.com/pwnzer0tt1/exploitfarm"
|
|
38
|
+
|
|
39
|
+
[project.scripts]
|
|
40
|
+
xfarm = "exploitfarm.xfarm:run"
|
|
41
|
+
|
|
42
|
+
[tool.setuptools.packages.find]
|
|
43
|
+
include = ["exploitfarm*"]
|
exploitfarm-2.2.5/MANIFEST.in
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
include requirements.txt
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
requests>=2.34.2
|
|
2
|
-
urllib3>=2.7.0
|
|
3
|
-
python-dateutil>=2.9.0.post0
|
|
4
|
-
pydantic>=2
|
|
5
|
-
typing-extensions>=4.16.0
|
|
6
|
-
fasteners>=0.20
|
|
7
|
-
toml>=0.10.2
|
|
8
|
-
psutil>=7.2.2
|
|
9
|
-
dirhash>=0.5.0
|
|
10
|
-
requests-toolbelt>=1.0.0
|
|
11
|
-
python-socketio[asyncio_client]>=5.16.4
|
|
12
|
-
aiohttp>=3.14.3
|
|
13
|
-
textual>=8.2.8
|
|
14
|
-
typer>=0.27.2
|
|
15
|
-
platformdirs>=4.11.7
|
|
16
|
-
|
exploitfarm-2.2.5/setup.py
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import setuptools
|
|
2
|
-
|
|
3
|
-
with open("README.md", "r", encoding="utf-8") as fh:
|
|
4
|
-
long_description = fh.read()
|
|
5
|
-
|
|
6
|
-
with open("requirements.txt", "r", encoding="utf-8") as f:
|
|
7
|
-
required = [
|
|
8
|
-
ele.strip()
|
|
9
|
-
for ele in f.read().splitlines()
|
|
10
|
-
if not ele.strip().startswith("#") and ele.strip() != ""
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
VERSION = "2.2.5"
|
|
14
|
-
|
|
15
|
-
setuptools.setup(
|
|
16
|
-
name="exploitfarm",
|
|
17
|
-
version=VERSION
|
|
18
|
-
if "{" not in VERSION
|
|
19
|
-
else "0.0.0", # uv pip install -U . --no-cache-dir for testing
|
|
20
|
-
author="Pwnzer0tt1",
|
|
21
|
-
author_email="pwnzer0tt1@poliba.it",
|
|
22
|
-
scripts=["xfarm"],
|
|
23
|
-
py_modules=["exploitfarm"],
|
|
24
|
-
install_requires=required,
|
|
25
|
-
include_package_data=True,
|
|
26
|
-
description="Exploit Farm client",
|
|
27
|
-
long_description=long_description,
|
|
28
|
-
long_description_content_type="text/markdown",
|
|
29
|
-
url="https://github.com/pwnzer0tt1/exploitfarm",
|
|
30
|
-
packages=setuptools.find_packages(),
|
|
31
|
-
classifiers=[
|
|
32
|
-
"Programming Language :: Python :: 3",
|
|
33
|
-
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
|
|
34
|
-
"Operating System :: OS Independent",
|
|
35
|
-
],
|
|
36
|
-
python_requires=">=3.10",
|
|
37
|
-
)
|
exploitfarm-2.2.5/xfarm
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|