exploitfarm 2.2.5__tar.gz → 2.2.7__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.
Files changed (56) hide show
  1. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/PKG-INFO +4 -14
  2. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/__init__.py +1 -1
  3. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/local_executor.py +1 -1
  4. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/config.py +1 -1
  5. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/xfarm.py +19 -10
  6. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm.egg-info/PKG-INFO +4 -14
  7. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm.egg-info/SOURCES.txt +2 -4
  8. exploitfarm-2.2.7/exploitfarm.egg-info/entry_points.txt +2 -0
  9. exploitfarm-2.2.7/pyproject.toml +43 -0
  10. exploitfarm-2.2.5/MANIFEST.in +0 -1
  11. exploitfarm-2.2.5/requirements.txt +0 -16
  12. exploitfarm-2.2.5/setup.py +0 -37
  13. exploitfarm-2.2.5/xfarm +0 -6
  14. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/README.md +0 -0
  15. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/__main__.py +0 -0
  16. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/_init_exposed.py +0 -0
  17. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/attack_storage.py +0 -0
  18. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/autotune.py +0 -0
  19. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/connection.py +0 -0
  20. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/core_orchestration.py +0 -0
  21. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/__init__.py +0 -0
  22. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/client.py +0 -0
  23. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/dbtypes.py +0 -0
  24. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/enums.py +0 -0
  25. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/exploit.py +0 -0
  26. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/exploit_template.py +0 -0
  27. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/flags.py +0 -0
  28. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/groups.py +0 -0
  29. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/response.py +0 -0
  30. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/service.py +0 -0
  31. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/submitter.py +0 -0
  32. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/models/teams.py +0 -0
  33. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/team_provider.py +0 -0
  34. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/__init__.py +0 -0
  35. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/exploitdownload.py +0 -0
  36. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/exploitinit.py +0 -0
  37. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/group_prejoin.py +0 -0
  38. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/group_select.py +0 -0
  39. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/login.py +0 -0
  40. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/shared_attack_group.py +0 -0
  41. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/startxploit.py +0 -0
  42. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/tui/template.py +0 -0
  43. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/__init__.py +0 -0
  44. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/cmd.py +0 -0
  45. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/config.py +0 -0
  46. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/exploit.py +0 -0
  47. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/paths.py +0 -0
  48. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/reqs.py +0 -0
  49. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/templates.py +0 -0
  50. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/threadpool.py +0 -0
  51. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/utils/windows_close_fix.py +0 -0
  52. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm/xploit.py +0 -0
  53. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm.egg-info/dependency_links.txt +0 -0
  54. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm.egg-info/requires.txt +0 -0
  55. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/exploitfarm.egg-info/top_level.txt +0 -0
  56. {exploitfarm-2.2.5 → exploitfarm-2.2.7}/setup.cfg +0 -0
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exploitfarm
3
- Version: 2.2.5
3
+ Version: 2.2.7
4
4
  Summary: Exploit Farm client
5
- Home-page: https://github.com/pwnzer0tt1/exploitfarm
6
- Author: Pwnzer0tt1
7
- Author-email: pwnzer0tt1@poliba.it
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,5 +1,5 @@
1
1
  def _get_version():
2
- v = "2.2.5" if "{" not in "2.2.5" else "0.0.0"
2
+ v = "2.2.7" if "{" not in "2.2.7" else "0.0.0"
3
3
  if v == "0.0.0":
4
4
  import os
5
5
  env_v = os.getenv("EXPLOITFARM_VERSION")
@@ -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))
@@ -268,7 +268,7 @@ def inital_config_setup(config: ClientConfig, interactive: bool = True) -> bool:
268
268
  ):
269
269
  if not interactive:
270
270
  print(
271
- "[bold red]Missing configuration, set it with 'xfarm config' command[/]"
271
+ "[bold red]Missing configuration, set it with 'xfarm config edit'[/]"
272
272
  )
273
273
  exit(1)
274
274
  if not _run_setup_config(config):
@@ -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 init --edit'[/]"
121
+ "use 'xfarm edit'[/]"
122
122
  )
123
123
  decision = typer.confirm(
124
- "Do you want to continue run 'xfarm init --edit' ?", default=True
124
+ "Do you want to run 'xfarm edit' now?", default=True
125
125
  )
126
126
  if decision:
127
- init(edit=True)
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 edit(
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"),
@@ -347,7 +347,7 @@ def start(
347
347
  if not initial_setup(require_running=True):
348
348
  print(
349
349
  "[bold red]Can't connect to the server! "
350
- "The server is needed to start the exploit! Configure with 'xfarm config'[/]"
350
+ "The server is needed to start the exploit! Configure with 'xfarm config edit'[/]"
351
351
  )
352
352
  close_cli()
353
353
 
@@ -967,14 +967,14 @@ def template_edit(
967
967
 
968
968
 
969
969
  @app.command(help="Edit the exploit config")
970
- def edit( # noqa: F811
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
- init(edit=True, name=name, service=service, language=language)
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 = []
@@ -1352,7 +1361,7 @@ def init(
1352
1361
  if final_status == 0:
1353
1362
  print(
1354
1363
  f"[bold green]Exploit configuration {'created' if not edit else 'edited'} locally![/]\n"
1355
- "[bold yellow]Use 'xfarm exploit push' or 'start' to upload it to the backend.[/]"
1364
+ "[bold yellow]Use 'xfarm push' or 'xfarm start' to upload it to the backend.[/]"
1356
1365
  )
1357
1366
  elif final_status == 99:
1358
1367
  print(
@@ -1401,7 +1410,7 @@ def init(
1401
1410
  expl_conf.write()
1402
1411
  print(
1403
1412
  f"[bold green]Exploit configuration {'created' if not edit else 'edited'} locally![/]\n"
1404
- "[bold yellow]Use 'xfarm exploit push' or 'start' to upload it to the backend.[/]"
1413
+ "[bold yellow]Use 'xfarm push' or 'xfarm start' to upload it to the backend.[/]"
1405
1414
  )
1406
1415
 
1407
1416
 
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exploitfarm
3
- Version: 2.2.5
3
+ Version: 2.2.7
4
4
  Summary: Exploit Farm client
5
- Home-page: https://github.com/pwnzer0tt1/exploitfarm
6
- Author: Pwnzer0tt1
7
- Author-email: pwnzer0tt1@poliba.it
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
- requirements.txt
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,2 @@
1
+ [console_scripts]
2
+ xfarm = exploitfarm.xfarm:run
@@ -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.7"
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*"]
@@ -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
-
@@ -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
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- from exploitfarm.xfarm import run
4
-
5
- if __name__ == "__main__":
6
- run()
File without changes
File without changes