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.
Files changed (56) hide show
  1. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/PKG-INFO +4 -14
  2. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/__init__.py +1 -1
  3. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/local_executor.py +1 -1
  4. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/xfarm.py +16 -7
  5. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/PKG-INFO +4 -14
  6. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/SOURCES.txt +2 -4
  7. exploitfarm-2.2.6/exploitfarm.egg-info/entry_points.txt +2 -0
  8. exploitfarm-2.2.6/pyproject.toml +43 -0
  9. exploitfarm-2.2.5/MANIFEST.in +0 -1
  10. exploitfarm-2.2.5/requirements.txt +0 -16
  11. exploitfarm-2.2.5/setup.py +0 -37
  12. exploitfarm-2.2.5/xfarm +0 -6
  13. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/README.md +0 -0
  14. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/__main__.py +0 -0
  15. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/_init_exposed.py +0 -0
  16. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/attack_storage.py +0 -0
  17. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/autotune.py +0 -0
  18. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/connection.py +0 -0
  19. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/core_orchestration.py +0 -0
  20. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/__init__.py +0 -0
  21. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/client.py +0 -0
  22. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/dbtypes.py +0 -0
  23. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/enums.py +0 -0
  24. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/exploit.py +0 -0
  25. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/exploit_template.py +0 -0
  26. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/flags.py +0 -0
  27. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/groups.py +0 -0
  28. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/response.py +0 -0
  29. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/service.py +0 -0
  30. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/submitter.py +0 -0
  31. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/models/teams.py +0 -0
  32. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/team_provider.py +0 -0
  33. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/__init__.py +0 -0
  34. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/config.py +0 -0
  35. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/exploitdownload.py +0 -0
  36. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/exploitinit.py +0 -0
  37. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/group_prejoin.py +0 -0
  38. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/group_select.py +0 -0
  39. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/login.py +0 -0
  40. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/shared_attack_group.py +0 -0
  41. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/startxploit.py +0 -0
  42. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/tui/template.py +0 -0
  43. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/__init__.py +0 -0
  44. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/cmd.py +0 -0
  45. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/config.py +0 -0
  46. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/exploit.py +0 -0
  47. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/paths.py +0 -0
  48. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/reqs.py +0 -0
  49. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/templates.py +0 -0
  50. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/threadpool.py +0 -0
  51. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/utils/windows_close_fix.py +0 -0
  52. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm/xploit.py +0 -0
  53. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/dependency_links.txt +0 -0
  54. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/requires.txt +0 -0
  55. {exploitfarm-2.2.5 → exploitfarm-2.2.6}/exploitfarm.egg-info/top_level.txt +0 -0
  56. {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.5
3
+ Version: 2.2.6
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.6" if "{" not in "2.2.6" 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))
@@ -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"),
@@ -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 = []
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exploitfarm
3
- Version: 2.2.5
3
+ Version: 2.2.6
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.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*"]
@@ -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