eva-exploit 3.4.3__tar.gz → 3.4.5__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.
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/PKG-INFO +5 -2
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/README.md +4 -1
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/config.py +1 -1
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/eva.py +3 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/eva_exploit.egg-info/PKG-INFO +5 -2
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/eva_exploit.egg-info/SOURCES.txt +1 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/exploit_search.py +3 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/llm.py +3 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/pyproject.toml +1 -1
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/sessions/eva_session.py +3 -0
- eva_exploit-3.4.5/utils/config_loader.py +132 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/utils/system.py +3 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/eva_exploit.egg-info/dependency_links.txt +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/eva_exploit.egg-info/entry_points.txt +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/eva_exploit.egg-info/requires.txt +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/eva_exploit.egg-info/top_level.txt +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/__init__.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/attack_map.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/prompt_builder.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/reporting.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/tooling.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/vuln_intel.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/modules/workflow.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/sessions/__init__.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/setup.cfg +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/utils/__init__.py +0 -0
- {eva_exploit-3.4.3 → eva_exploit-3.4.5}/utils/ui.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eva-exploit
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.5
|
|
4
4
|
Summary: Exploit Vector Agent
|
|
5
5
|
Author: ARCANGEL0
|
|
6
6
|
License: MIT
|
|
@@ -249,6 +249,9 @@ eva --config
|
|
|
249
249
|
# deletes all sessions and files
|
|
250
250
|
eva --delete
|
|
251
251
|
|
|
252
|
+
# configure custom api and payload handler
|
|
253
|
+
eva --custom-api
|
|
254
|
+
|
|
252
255
|
# vulnerability / exploit intel search
|
|
253
256
|
eva --search i have a wingftp server running on version 4.7.3, find me exploits for it
|
|
254
257
|
|
|
@@ -342,7 +345,7 @@ Let me start with basic system reconnaissance to understand the target better...
|
|
|
342
345
|
- ❌ Might be unstable or down sometimes, low stability.
|
|
343
346
|
|
|
344
347
|
### ⟅ Custom API
|
|
345
|
-
- **Endpoint**: Configurable
|
|
348
|
+
- **Endpoint**: Configurable API to use your own as you wish. Please run `eva --custom-api` to set API handler and payload
|
|
346
349
|
- **About**:
|
|
347
350
|
- ✅ Custom model integration
|
|
348
351
|
- ✅ Modifiable as you wish
|
|
@@ -237,6 +237,9 @@ eva --config
|
|
|
237
237
|
# deletes all sessions and files
|
|
238
238
|
eva --delete
|
|
239
239
|
|
|
240
|
+
# configure custom api and payload handler
|
|
241
|
+
eva --custom-api
|
|
242
|
+
|
|
240
243
|
# vulnerability / exploit intel search
|
|
241
244
|
eva --search i have a wingftp server running on version 4.7.3, find me exploits for it
|
|
242
245
|
|
|
@@ -330,7 +333,7 @@ Let me start with basic system reconnaissance to understand the target better...
|
|
|
330
333
|
- ❌ Might be unstable or down sometimes, low stability.
|
|
331
334
|
|
|
332
335
|
### ⟅ Custom API
|
|
333
|
-
- **Endpoint**: Configurable
|
|
336
|
+
- **Endpoint**: Configurable API to use your own as you wish. Please run `eva --custom-api` to set API handler and payload
|
|
334
337
|
- **About**:
|
|
335
338
|
- ✅ Custom model integration
|
|
336
339
|
- ✅ Modifiable as you wish
|
|
@@ -11,6 +11,9 @@ import subprocess
|
|
|
11
11
|
import sys
|
|
12
12
|
import time
|
|
13
13
|
import shutil
|
|
14
|
+
from utils.config_loader import ensure_config_module
|
|
15
|
+
|
|
16
|
+
ensure_config_module()
|
|
14
17
|
import config as config_module
|
|
15
18
|
# ============ Check modules, and autoinstall if not present ============
|
|
16
19
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eva-exploit
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.5
|
|
4
4
|
Summary: Exploit Vector Agent
|
|
5
5
|
Author: ARCANGEL0
|
|
6
6
|
License: MIT
|
|
@@ -249,6 +249,9 @@ eva --config
|
|
|
249
249
|
# deletes all sessions and files
|
|
250
250
|
eva --delete
|
|
251
251
|
|
|
252
|
+
# configure custom api and payload handler
|
|
253
|
+
eva --custom-api
|
|
254
|
+
|
|
252
255
|
# vulnerability / exploit intel search
|
|
253
256
|
eva --search i have a wingftp server running on version 4.7.3, find me exploits for it
|
|
254
257
|
|
|
@@ -342,7 +345,7 @@ Let me start with basic system reconnaissance to understand the target better...
|
|
|
342
345
|
- ❌ Might be unstable or down sometimes, low stability.
|
|
343
346
|
|
|
344
347
|
### ⟅ Custom API
|
|
345
|
-
- **Endpoint**: Configurable
|
|
348
|
+
- **Endpoint**: Configurable API to use your own as you wish. Please run `eva --custom-api` to set API handler and payload
|
|
346
349
|
- **About**:
|
|
347
350
|
- ✅ Custom model integration
|
|
348
351
|
- ✅ Modifiable as you wish
|
|
@@ -17,6 +17,9 @@ from datetime import datetime, timezone
|
|
|
17
17
|
|
|
18
18
|
from colorama import Fore,Back,Style
|
|
19
19
|
|
|
20
|
+
from utils.config_loader import ensure_config_module
|
|
21
|
+
|
|
22
|
+
ensure_config_module()
|
|
20
23
|
from config import API_ENDPOINT, MAPS_DIR, REPORTS_DIR, SESSIONS_DIR, username
|
|
21
24
|
from modules.attack_map import generate_attack_map_files, open_attack_map
|
|
22
25
|
from modules.exploit_search import run_exploit_search
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
import importlib
|
|
4
|
+
import importlib.util
|
|
5
|
+
import sys
|
|
6
|
+
from importlib import metadata
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _resolve_app_version():
|
|
11
|
+
try:
|
|
12
|
+
return metadata.version("eva-exploit")
|
|
13
|
+
except metadata.PackageNotFoundError:
|
|
14
|
+
return "3.4.3"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _default_config_source():
|
|
18
|
+
app_version = _resolve_app_version()
|
|
19
|
+
return f"""#!/usr/bin/env python3
|
|
20
|
+
import getpass
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
|
|
23
|
+
APP_NAME = "EVA"
|
|
24
|
+
APP_VERSION = "{app_version}"
|
|
25
|
+
GITHUB_REPO = "arcangel0/EVA"
|
|
26
|
+
PYPI_PACKAGE = "eva-exploit"
|
|
27
|
+
API_ENDPOINT = "NOT_SET"
|
|
28
|
+
CUSTOM_API_HANDLER = "custom.py"
|
|
29
|
+
G4F_MODEL = "gpt-oss-120b"
|
|
30
|
+
G4F_URL = "https://api.gpt4free.workers.dev/api/novaai/chat/completions"
|
|
31
|
+
OLLAMA_MODEL = "ALIENTELLIGENCE/whiterabbitv2"
|
|
32
|
+
SEARCHVULN_MODEL = "gpt-oss:120b-cloud"
|
|
33
|
+
SEARCVULN_URL = "https://ollama.com/api/chat"
|
|
34
|
+
OLLAMA_API_KEY = "NOT_SET"
|
|
35
|
+
OPENAI_API_KEY = "NOT_SET"
|
|
36
|
+
ANTHROPIC_API_KEY = "NOT_SET"
|
|
37
|
+
GEMINI_API_KEY = "NOT_SET"
|
|
38
|
+
ANTHROPIC_MODEL = "claude-3-5-sonnet-latest"
|
|
39
|
+
GEMINI_MODEL = "gemini-2.0-flash"
|
|
40
|
+
OLLAMA_CLOUD_TIMEOUT = 45
|
|
41
|
+
CONFIG_DIR = Path.home() / "EVA_data"
|
|
42
|
+
SESSIONS_DIR = CONFIG_DIR / "sessions"
|
|
43
|
+
REPORTS_DIR = CONFIG_DIR / "reports"
|
|
44
|
+
MAPS_DIR = CONFIG_DIR / "attack_maps"
|
|
45
|
+
TERMS_ACCEPTEDTHING = CONFIG_DIR / ".confirm"
|
|
46
|
+
try:
|
|
47
|
+
CONFIG_DIR.mkdir(parents=True, exist_ok=True)
|
|
48
|
+
SESSIONS_DIR.mkdir(parents=True, exist_ok=True)
|
|
49
|
+
REPORTS_DIR.mkdir(parents=True, exist_ok=True)
|
|
50
|
+
MAPS_DIR.mkdir(parents=True, exist_ok=True)
|
|
51
|
+
except OSError:
|
|
52
|
+
CONFIG_DIR = Path("/tmp") / "EVA_data"
|
|
53
|
+
SESSIONS_DIR = CONFIG_DIR / "sessions"
|
|
54
|
+
REPORTS_DIR = CONFIG_DIR / "reports"
|
|
55
|
+
MAPS_DIR = CONFIG_DIR / "attack_maps"
|
|
56
|
+
TERMS_ACCEPTEDTHING = CONFIG_DIR / ".confirm"
|
|
57
|
+
try:
|
|
58
|
+
CONFIG_DIR.mkdir(parents=True, exist_ok=True)
|
|
59
|
+
SESSIONS_DIR.mkdir(parents=True, exist_ok=True)
|
|
60
|
+
REPORTS_DIR.mkdir(parents=True, exist_ok=True)
|
|
61
|
+
MAPS_DIR.mkdir(parents=True, exist_ok=True)
|
|
62
|
+
except OSError:
|
|
63
|
+
pass
|
|
64
|
+
username = getpass.getuser()
|
|
65
|
+
MAX_RETRIES = 10
|
|
66
|
+
RETRY_DELAY = 10
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _load_module_from_path(path):
|
|
71
|
+
spec = importlib.util.spec_from_file_location("config", str(path))
|
|
72
|
+
if not spec or not spec.loader:
|
|
73
|
+
return None
|
|
74
|
+
module = importlib.util.module_from_spec(spec)
|
|
75
|
+
spec.loader.exec_module(module)
|
|
76
|
+
sys.modules["config"] = module
|
|
77
|
+
return module
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _load_module_from_source(source, source_name="<eva-generated-config>"):
|
|
81
|
+
spec = importlib.util.spec_from_loader("config", loader=None, origin=source_name)
|
|
82
|
+
module = importlib.util.module_from_spec(spec)
|
|
83
|
+
module.__file__ = source_name
|
|
84
|
+
exec(compile(source, source_name, "exec"), module.__dict__)
|
|
85
|
+
sys.modules["config"] = module
|
|
86
|
+
return module
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def _candidate_fallback_paths():
|
|
90
|
+
return [
|
|
91
|
+
Path.home() / "EVA_data" / "config.py",
|
|
92
|
+
Path("/tmp") / "eva_config.py",
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def _load_or_create_fallback(path, source):
|
|
97
|
+
if path.exists():
|
|
98
|
+
return _load_module_from_path(path)
|
|
99
|
+
try:
|
|
100
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
101
|
+
path.write_text(source, encoding="utf-8")
|
|
102
|
+
except OSError:
|
|
103
|
+
return None
|
|
104
|
+
return _load_module_from_path(path)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def ensure_config_module():
|
|
108
|
+
existing = sys.modules.get("config")
|
|
109
|
+
if existing is not None:
|
|
110
|
+
return existing
|
|
111
|
+
|
|
112
|
+
try:
|
|
113
|
+
return importlib.import_module("config")
|
|
114
|
+
except ModuleNotFoundError:
|
|
115
|
+
pass
|
|
116
|
+
|
|
117
|
+
repo_config = Path(__file__).resolve().parents[1] / "config.py"
|
|
118
|
+
if repo_config.exists():
|
|
119
|
+
loaded = _load_module_from_path(repo_config)
|
|
120
|
+
if loaded is not None:
|
|
121
|
+
return loaded
|
|
122
|
+
|
|
123
|
+
source = _default_config_source()
|
|
124
|
+
for path in _candidate_fallback_paths():
|
|
125
|
+
loaded = _load_or_create_fallback(path, source)
|
|
126
|
+
if loaded is not None:
|
|
127
|
+
return loaded
|
|
128
|
+
|
|
129
|
+
return _load_module_from_source(source)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
config_module = ensure_config_module()
|
|
@@ -18,6 +18,9 @@ from importlib import metadata
|
|
|
18
18
|
from pathlib import Path
|
|
19
19
|
from urllib import error, request
|
|
20
20
|
import tomllib
|
|
21
|
+
from utils.config_loader import ensure_config_module
|
|
22
|
+
|
|
23
|
+
ensure_config_module()
|
|
21
24
|
import config as config_module
|
|
22
25
|
|
|
23
26
|
from colorama import Fore, Style
|
|
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
|