exploitfarm 2.1.0__tar.gz → 2.2.0__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.1.0 → exploitfarm-2.2.0}/PKG-INFO +9 -9
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/__init__.py +1 -1
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/enums.py +10 -0
- exploitfarm-2.2.0/exploitfarm/models/submitter.py +66 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm.egg-info/PKG-INFO +9 -9
- exploitfarm-2.2.0/exploitfarm.egg-info/requires.txt +15 -0
- exploitfarm-2.2.0/requirements.txt +16 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/setup.py +1 -1
- exploitfarm-2.1.0/exploitfarm/models/submitter.py +0 -27
- exploitfarm-2.1.0/exploitfarm.egg-info/requires.txt +0 -15
- exploitfarm-2.1.0/requirements.txt +0 -16
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/MANIFEST.in +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/README.md +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/__main__.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/_init_exposed.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/attack_storage.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/autotune.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/connection.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/core_orchestration.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/local_executor.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/__init__.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/client.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/dbtypes.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/exploit.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/exploit_template.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/flags.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/groups.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/response.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/service.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/models/teams.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/team_provider.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/__init__.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/config.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/exploitdownload.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/exploitinit.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/group_prejoin.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/group_select.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/login.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/shared_attack_group.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/startxploit.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/tui/template.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/__init__.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/cmd.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/config.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/exploit.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/paths.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/reqs.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/templates.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/threadpool.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/utils/windows_close_fix.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/xfarm.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm/xploit.py +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm.egg-info/SOURCES.txt +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm.egg-info/dependency_links.txt +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/exploitfarm.egg-info/top_level.txt +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/setup.cfg +0 -0
- {exploitfarm-2.1.0 → exploitfarm-2.2.0}/xfarm +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: exploitfarm
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Exploit Farm client
|
|
5
5
|
Home-page: https://github.com/pwnzer0tt1/exploitfarm
|
|
6
6
|
Author: Pwnzer0tt1
|
|
@@ -10,21 +10,21 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (G
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Requires-Python: >=3.10
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
|
-
Requires-Dist: requests>=2.
|
|
14
|
-
Requires-Dist: urllib3>=2.
|
|
13
|
+
Requires-Dist: requests>=2.34.2
|
|
14
|
+
Requires-Dist: urllib3>=2.7.0
|
|
15
15
|
Requires-Dist: python-dateutil>=2.9.0.post0
|
|
16
16
|
Requires-Dist: pydantic>=2
|
|
17
|
-
Requires-Dist: typing-extensions>=4.
|
|
17
|
+
Requires-Dist: typing-extensions>=4.16.0
|
|
18
18
|
Requires-Dist: fasteners>=0.20
|
|
19
19
|
Requires-Dist: toml>=0.10.2
|
|
20
20
|
Requires-Dist: psutil>=7.2.2
|
|
21
21
|
Requires-Dist: dirhash>=0.5.0
|
|
22
22
|
Requires-Dist: requests-toolbelt>=1.0.0
|
|
23
|
-
Requires-Dist: python-socketio[asyncio_client]>=5.
|
|
24
|
-
Requires-Dist: aiohttp>=3.
|
|
25
|
-
Requires-Dist: textual>=
|
|
26
|
-
Requires-Dist: typer>=0.
|
|
27
|
-
Requires-Dist: platformdirs>=4.
|
|
23
|
+
Requires-Dist: python-socketio[asyncio_client]>=5.16.4
|
|
24
|
+
Requires-Dist: aiohttp>=3.14.3
|
|
25
|
+
Requires-Dist: textual>=8.2.8
|
|
26
|
+
Requires-Dist: typer>=0.27.2
|
|
27
|
+
Requires-Dist: platformdirs>=4.11.7
|
|
28
28
|
Dynamic: author
|
|
29
29
|
Dynamic: author-email
|
|
30
30
|
Dynamic: classifier
|
|
@@ -60,6 +60,16 @@ class AttackMode(Enum):
|
|
|
60
60
|
LOOP_DELAY = "loop-delay"
|
|
61
61
|
RND_TICK = "rnd-tick"
|
|
62
62
|
|
|
63
|
+
class SubmitterEnvStatus(Enum):
|
|
64
|
+
"""State of a submitter's isolated dependency environment (see backend/utils/submitter_env.py)."""
|
|
65
|
+
not_required = "not-required" # the submitter declares no requirements
|
|
66
|
+
absent = "absent" # requirements are declared but nothing was installed yet
|
|
67
|
+
installing = "installing" # an installation is currently running
|
|
68
|
+
stale = "stale" # installed, but the requirements changed since
|
|
69
|
+
ready = "ready" # installed and matching the declared requirements
|
|
70
|
+
failed = "failed" # the last installation attempt failed
|
|
71
|
+
cancelled = "cancelled" # the last installation was stopped by the user
|
|
72
|
+
|
|
63
73
|
class SetupStatus(Enum):
|
|
64
74
|
SETUP = "setup"
|
|
65
75
|
RUNNING = "running"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
from typing import Any, Dict, List
|
|
2
|
+
from pydantic import BaseModel, Field, AwareDatetime
|
|
3
|
+
from exploitfarm.models.dbtypes import SubmitterID
|
|
4
|
+
from exploitfarm.models.enums import SubmitterEnvStatus
|
|
5
|
+
|
|
6
|
+
###-- Submitter Models --###
|
|
7
|
+
|
|
8
|
+
SubmitterKargs = Dict[str, Dict[str, Any]]
|
|
9
|
+
|
|
10
|
+
class SubmitterDTO(BaseModel):
|
|
11
|
+
id: SubmitterID
|
|
12
|
+
name: str
|
|
13
|
+
code: str
|
|
14
|
+
kargs: SubmitterKargs = {}
|
|
15
|
+
# requirements.txt-style block installed in the submitter's isolated environment
|
|
16
|
+
requirements: str = ""
|
|
17
|
+
created_at: AwareDatetime
|
|
18
|
+
|
|
19
|
+
class SubmitterAddForm(BaseModel):
|
|
20
|
+
name: str = Field("", min_length=1)
|
|
21
|
+
code: str
|
|
22
|
+
kargs: Dict[str, Any]|None = None
|
|
23
|
+
requirements: str|None = None
|
|
24
|
+
|
|
25
|
+
class SubmitterInfoForm(BaseModel):
|
|
26
|
+
code: str
|
|
27
|
+
|
|
28
|
+
class SubmitterEditForm(BaseModel):
|
|
29
|
+
code: str|None = None
|
|
30
|
+
name: str|None = Field(None, min_length=1)
|
|
31
|
+
kargs: Dict[str, Any]|None = None
|
|
32
|
+
requirements: str|None = None
|
|
33
|
+
|
|
34
|
+
class SubmitterCodeInfo(BaseModel):
|
|
35
|
+
"""Result of the static analysis of a submitter's code (see POST /submitters/check)."""
|
|
36
|
+
kargs: SubmitterKargs = {}
|
|
37
|
+
# Requirements declared inside the code itself (PEP 723 block or __requirements__)
|
|
38
|
+
inline_requirements: List[str] = []
|
|
39
|
+
|
|
40
|
+
###-- Submitter Environment Models --###
|
|
41
|
+
|
|
42
|
+
class SubmitterEnvPackage(BaseModel):
|
|
43
|
+
name: str
|
|
44
|
+
version: str
|
|
45
|
+
|
|
46
|
+
class SubmitterEnvDTO(BaseModel):
|
|
47
|
+
"""State of the isolated dependency environment of a submitter."""
|
|
48
|
+
submitter_id: SubmitterID
|
|
49
|
+
status: SubmitterEnvStatus
|
|
50
|
+
# Requirements the environment *should* contain (explicit + inline, merged)
|
|
51
|
+
requirements: List[str] = []
|
|
52
|
+
# Requirements the last installation actually ran with
|
|
53
|
+
installed_requirements: List[str] = []
|
|
54
|
+
hash: str
|
|
55
|
+
installed_hash: str|None = None
|
|
56
|
+
installed_at: str|None = None
|
|
57
|
+
started_at: str|None = None
|
|
58
|
+
duration: float|None = None
|
|
59
|
+
error: str|None = None
|
|
60
|
+
packages: List[SubmitterEnvPackage] = []
|
|
61
|
+
path: str
|
|
62
|
+
log: str = ""
|
|
63
|
+
|
|
64
|
+
class SubmitterEnvInstallForm(BaseModel):
|
|
65
|
+
# Rebuild the environment even if it already matches the declared requirements
|
|
66
|
+
force: bool = False
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: exploitfarm
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Exploit Farm client
|
|
5
5
|
Home-page: https://github.com/pwnzer0tt1/exploitfarm
|
|
6
6
|
Author: Pwnzer0tt1
|
|
@@ -10,21 +10,21 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (G
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Requires-Python: >=3.10
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
|
-
Requires-Dist: requests>=2.
|
|
14
|
-
Requires-Dist: urllib3>=2.
|
|
13
|
+
Requires-Dist: requests>=2.34.2
|
|
14
|
+
Requires-Dist: urllib3>=2.7.0
|
|
15
15
|
Requires-Dist: python-dateutil>=2.9.0.post0
|
|
16
16
|
Requires-Dist: pydantic>=2
|
|
17
|
-
Requires-Dist: typing-extensions>=4.
|
|
17
|
+
Requires-Dist: typing-extensions>=4.16.0
|
|
18
18
|
Requires-Dist: fasteners>=0.20
|
|
19
19
|
Requires-Dist: toml>=0.10.2
|
|
20
20
|
Requires-Dist: psutil>=7.2.2
|
|
21
21
|
Requires-Dist: dirhash>=0.5.0
|
|
22
22
|
Requires-Dist: requests-toolbelt>=1.0.0
|
|
23
|
-
Requires-Dist: python-socketio[asyncio_client]>=5.
|
|
24
|
-
Requires-Dist: aiohttp>=3.
|
|
25
|
-
Requires-Dist: textual>=
|
|
26
|
-
Requires-Dist: typer>=0.
|
|
27
|
-
Requires-Dist: platformdirs>=4.
|
|
23
|
+
Requires-Dist: python-socketio[asyncio_client]>=5.16.4
|
|
24
|
+
Requires-Dist: aiohttp>=3.14.3
|
|
25
|
+
Requires-Dist: textual>=8.2.8
|
|
26
|
+
Requires-Dist: typer>=0.27.2
|
|
27
|
+
Requires-Dist: platformdirs>=4.11.7
|
|
28
28
|
Dynamic: author
|
|
29
29
|
Dynamic: author-email
|
|
30
30
|
Dynamic: classifier
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
|
@@ -0,0 +1,16 @@
|
|
|
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,27 +0,0 @@
|
|
|
1
|
-
from typing import Any, Dict
|
|
2
|
-
from pydantic import BaseModel, Field, AwareDatetime
|
|
3
|
-
from exploitfarm.models.dbtypes import SubmitterID
|
|
4
|
-
|
|
5
|
-
###-- Submitter Models --###
|
|
6
|
-
|
|
7
|
-
SubmitterKargs = Dict[str, Dict[str, Any]]
|
|
8
|
-
|
|
9
|
-
class SubmitterDTO(BaseModel):
|
|
10
|
-
id: SubmitterID
|
|
11
|
-
name: str
|
|
12
|
-
code: str
|
|
13
|
-
kargs: SubmitterKargs = {}
|
|
14
|
-
created_at: AwareDatetime
|
|
15
|
-
|
|
16
|
-
class SubmitterAddForm(BaseModel):
|
|
17
|
-
name: str = Field("", min_length=1)
|
|
18
|
-
code: str
|
|
19
|
-
kargs: Dict[str, Any]|None = None
|
|
20
|
-
|
|
21
|
-
class SubmitterInfoForm(BaseModel):
|
|
22
|
-
code: str
|
|
23
|
-
|
|
24
|
-
class SubmitterEditForm(BaseModel):
|
|
25
|
-
code: str|None = None
|
|
26
|
-
name: str|None = Field(None, min_length=1)
|
|
27
|
-
kargs: Dict[str, Any]|None = None
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
requests>=2.32.5
|
|
2
|
-
urllib3>=2.5.0
|
|
3
|
-
python-dateutil>=2.9.0.post0
|
|
4
|
-
pydantic>=2
|
|
5
|
-
typing-extensions>=4.7.1
|
|
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.14.1
|
|
12
|
-
aiohttp>=3.9.0
|
|
13
|
-
textual>=3.0.0
|
|
14
|
-
typer>=0.16
|
|
15
|
-
platformdirs>=4.0
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
requests>=2.32.5
|
|
2
|
-
urllib3>=2.5.0
|
|
3
|
-
python-dateutil>=2.9.0.post0
|
|
4
|
-
pydantic>=2
|
|
5
|
-
typing-extensions>=4.7.1
|
|
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.14.1
|
|
12
|
-
aiohttp>=3.9.0
|
|
13
|
-
textual>=3.0.0
|
|
14
|
-
typer>=0.16
|
|
15
|
-
platformdirs>=4.0
|
|
16
|
-
|
|
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
|
|
File without changes
|
|
File without changes
|