eva-exploit 2.5__py3-none-any.whl
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.
- config.py +29 -0
- eva.py +166 -0
- eva_exploit-2.5.dist-info/METADATA +410 -0
- eva_exploit-2.5.dist-info/RECORD +17 -0
- eva_exploit-2.5.dist-info/WHEEL +5 -0
- eva_exploit-2.5.dist-info/entry_points.txt +2 -0
- eva_exploit-2.5.dist-info/top_level.txt +5 -0
- modules/__init__.py +0 -0
- modules/attack_map.py +467 -0
- modules/llm.py +599 -0
- modules/prompt_builder.py +56 -0
- modules/reporting.py +254 -0
- sessions/__init__.py +0 -0
- sessions/eva_session.py +457 -0
- utils/__init__.py +0 -0
- utils/system.py +264 -0
- utils/ui.py +191 -0
config.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
# ================= CONFIG =================
|
|
5
|
+
APP_NAME = "EVA"
|
|
6
|
+
APP_VERSION = "2.5"
|
|
7
|
+
GITHUB_REPO = "arcangel0/EVA"
|
|
8
|
+
PYPI_PACKAGE = "eva-exploit"
|
|
9
|
+
API_ENDPOINT = "NOT_SET" # <--- change to your desired endpoint if needed
|
|
10
|
+
G4F_MODEL="gpt-oss-120b"
|
|
11
|
+
G4F_URL="https://api.gpt4free.workers.dev/api/novaai/chat/completions"
|
|
12
|
+
OLLAMA_MODEL = "ALIENTELLIGENCE/whiterabbitv2" # recommended ollama model
|
|
13
|
+
ANTHROPIC_MODEL = "claude-3-5-sonnet-latest"
|
|
14
|
+
GEMINI_MODEL = "gemini-2.0-flash"
|
|
15
|
+
CONFIG_DIR = Path.home() / "EVA_files" # Path to save EVA files
|
|
16
|
+
SESSIONS_DIR = CONFIG_DIR / "sessions"
|
|
17
|
+
REPORTS_DIR = CONFIG_DIR / "reports"
|
|
18
|
+
MAPS_DIR = CONFIG_DIR / "attack_maps"
|
|
19
|
+
AUTH_ACK_PATH = CONFIG_DIR / ".authorization_ack"
|
|
20
|
+
CONFIG_DIR.mkdir(parents=True, exist_ok=True)
|
|
21
|
+
SESSIONS_DIR.mkdir(parents=True, exist_ok=True)
|
|
22
|
+
REPORTS_DIR.mkdir(parents=True, exist_ok=True)
|
|
23
|
+
MAPS_DIR.mkdir(parents=True, exist_ok=True)
|
|
24
|
+
username = os.getlogin()
|
|
25
|
+
ENV_PATH = Path(".env")
|
|
26
|
+
MAX_RETRIES = 10 ### maximum retries for fetching requests
|
|
27
|
+
RETRY_DELAY = 10 ### delay between requests to avoid rate limit error
|
|
28
|
+
|
|
29
|
+
# All sessions will be stored on $HOME/.config/eva/sessions/*.json
|
eva.py
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# made by: _ ____ ____ _ _ _ ____ _____ _ ___
|
|
3
|
+
#▄████▄ █████▄ ▄█████ ▄████▄ ███ ██ ▄████ ██████ ██ ▄████▄
|
|
4
|
+
#██▄▄██ ██▄▄██▄ ██ ██▄▄██ ██ ▀▄██ ██ ▄▄▄ ██▄▄ ██ ██ ██
|
|
5
|
+
#██ ██ ██ ██ ▀█████ ██ ██ ██ ██ ▀███▀ ██▄▄▄▄ ██████ ▀████▀
|
|
6
|
+
# ---------------------------------------------------------------------
|
|
7
|
+
import json
|
|
8
|
+
import argparse
|
|
9
|
+
import subprocess
|
|
10
|
+
import sys
|
|
11
|
+
import time
|
|
12
|
+
import shutil
|
|
13
|
+
# ============ Check modules, and autoinstall if not present ============
|
|
14
|
+
try:
|
|
15
|
+
from colorama import Fore, Style
|
|
16
|
+
import openai
|
|
17
|
+
except ImportError:
|
|
18
|
+
subprocess.run([sys.executable, "-m", "pip", "install", "colorama", "--break-system-packages"])
|
|
19
|
+
subprocess.run([sys.executable, "-m", "pip", "install", "openai", "--break-system-packages"])
|
|
20
|
+
from colorama import Fore
|
|
21
|
+
import openai
|
|
22
|
+
|
|
23
|
+
from config import AUTH_ACK_PATH, OLLAMA_MODEL, SESSIONS_DIR, CONFIG_DIR
|
|
24
|
+
from sessions.eva_session import Eva
|
|
25
|
+
from utils.system import (
|
|
26
|
+
checkAnthropicKey,
|
|
27
|
+
checkAPI,
|
|
28
|
+
checkGeminiKey,
|
|
29
|
+
checkOpenAIKey,
|
|
30
|
+
checkupdts,
|
|
31
|
+
command_exists,
|
|
32
|
+
get_current_version,
|
|
33
|
+
model_exists,
|
|
34
|
+
ollama_running,
|
|
35
|
+
register_signal_handler,
|
|
36
|
+
run_self_update,
|
|
37
|
+
start_ollama,
|
|
38
|
+
)
|
|
39
|
+
from utils.ui import banner, clear, cyber, menu, get_sessions
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def main():
|
|
43
|
+
banner(get_current_version())
|
|
44
|
+
if not AUTH_ACK_PATH.exists():
|
|
45
|
+
print(Fore.RED + """
|
|
46
|
+
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
|
|
47
|
+
➤ THIS TOOL IS FOR:
|
|
48
|
+
- CTFs
|
|
49
|
+
- LABS
|
|
50
|
+
- SYSTEMS YOU OWN
|
|
51
|
+
🜂 UNAUTHORIZED USE IS ILLEGAL
|
|
52
|
+
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
|
|
53
|
+
""")
|
|
54
|
+
|
|
55
|
+
if input("Do you have authorization to proceed with this tool? (yes/no): ").strip().lower() != "yes":
|
|
56
|
+
sys.exit()
|
|
57
|
+
AUTH_ACK_PATH.write_text("acknowledged\n", encoding="utf-8")
|
|
58
|
+
|
|
59
|
+
sessions = list(SESSIONS_DIR.glob("*.json"))
|
|
60
|
+
opts = [f"[{i+1}] {s.stem}" for i, s in enumerate(sessions)]
|
|
61
|
+
opts.append("[+] NEW SESSION")
|
|
62
|
+
opts.append("[!] EXIT EVA")
|
|
63
|
+
|
|
64
|
+
sel = get_sessions("EVA SESSIONS", opts,get_current_version())
|
|
65
|
+
|
|
66
|
+
# =========================
|
|
67
|
+
# GETS EXISTING SESSION
|
|
68
|
+
# =========================
|
|
69
|
+
if sel < len(sessions):
|
|
70
|
+
session = sessions[sel]
|
|
71
|
+
data = json.loads(session.read_text())
|
|
72
|
+
backend = data.get("backend", "ollama")
|
|
73
|
+
|
|
74
|
+
Eva(session, backend, main).chat()
|
|
75
|
+
return
|
|
76
|
+
|
|
77
|
+
if sel == len(sessions) + 1:
|
|
78
|
+
cyber("[+] Leaving EVA", color=Fore.RED)
|
|
79
|
+
time.sleep(1.2)
|
|
80
|
+
raise SystemExit(0)
|
|
81
|
+
|
|
82
|
+
# =========================
|
|
83
|
+
# NEW SESSION
|
|
84
|
+
# =========================
|
|
85
|
+
model = menu(
|
|
86
|
+
"SELECT BACKEND",
|
|
87
|
+
[
|
|
88
|
+
"< GO BACK",
|
|
89
|
+
"Use WhiteRabbit-Neo LLM locally (recommended)",
|
|
90
|
+
"GPT-5 (Needs OpenAI ApiKey)",
|
|
91
|
+
"G4F.dev (Free API endpoint with gpt-5.1)",
|
|
92
|
+
"Anthropic Claude (Needs Anthropic API key)",
|
|
93
|
+
"Google Gemini (Needs Gemini API key)",
|
|
94
|
+
"Use Custom API endpoint (Please check configs to set your own endpoint)"
|
|
95
|
+
]
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
if model == 0:
|
|
99
|
+
return main()
|
|
100
|
+
|
|
101
|
+
if model == 1:
|
|
102
|
+
backend = "ollama"
|
|
103
|
+
|
|
104
|
+
if not command_exists("ollama"):
|
|
105
|
+
clear()
|
|
106
|
+
cyber("// Ollama is not installed. Install it first.", color=Fore.RED)
|
|
107
|
+
time.sleep(3)
|
|
108
|
+
return main()
|
|
109
|
+
if not ollama_running():
|
|
110
|
+
start_ollama()
|
|
111
|
+
|
|
112
|
+
if not model_exists():
|
|
113
|
+
clear()
|
|
114
|
+
pull = menu(f"Model {OLLAMA_MODEL} not found. Pull it?", ["Yes", "No"])
|
|
115
|
+
if pull == 0:
|
|
116
|
+
subprocess.run(["ollama", "pull", OLLAMA_MODEL])
|
|
117
|
+
else:
|
|
118
|
+
return main()
|
|
119
|
+
|
|
120
|
+
elif model == 2:
|
|
121
|
+
backend = "gpt"
|
|
122
|
+
checkOpenAIKey()
|
|
123
|
+
elif model == 3:
|
|
124
|
+
backend = "g4f"
|
|
125
|
+
elif model == 4:
|
|
126
|
+
backend = "anthropic"
|
|
127
|
+
checkAnthropicKey()
|
|
128
|
+
elif model == 5:
|
|
129
|
+
backend = "gemini"
|
|
130
|
+
checkGeminiKey()
|
|
131
|
+
elif model == 6:
|
|
132
|
+
backend = "api"
|
|
133
|
+
checkAPI()
|
|
134
|
+
else:
|
|
135
|
+
return main()
|
|
136
|
+
|
|
137
|
+
session = SESSIONS_DIR / f"session{len(sessions) + 1}.json"
|
|
138
|
+
Eva(session, backend, main).chat()
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def cli():
|
|
142
|
+
parser = argparse.ArgumentParser(add_help=True)
|
|
143
|
+
parser.add_argument("-u", "--update", action="store_true", help="Update EVA")
|
|
144
|
+
parser.add_argument("-d", "--delete", action="store_true", help="Delete stored sessions & files")
|
|
145
|
+
args = parser.parse_args()
|
|
146
|
+
|
|
147
|
+
register_signal_handler()
|
|
148
|
+
|
|
149
|
+
if args.update:
|
|
150
|
+
raise SystemExit(run_self_update())
|
|
151
|
+
if args.delete:
|
|
152
|
+
if CONFIG_DIR.exists() and CONFIG_DIR.is_dir():
|
|
153
|
+
shutil.rmtree(CONFIG_DIR)
|
|
154
|
+
CONFIG_DIR.mkdir(parents=True, exist_ok=True)
|
|
155
|
+
print(f"\n{Style.BRIGHT + Fore.GREEN}[+] All EVA data deleted from {CONFIG_DIR}")
|
|
156
|
+
sys.exit(0)
|
|
157
|
+
else:
|
|
158
|
+
print(f"\n{Style.BRIGHT + Fore.YELLOW}[!] EVA_files directory does not exist")
|
|
159
|
+
sys.exit(0)
|
|
160
|
+
|
|
161
|
+
checkupdts()
|
|
162
|
+
main()
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
if __name__ == "__main__":
|
|
166
|
+
cli()
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: eva-exploit
|
|
3
|
+
Version: 2.5
|
|
4
|
+
Summary: Exploit Vector Agent
|
|
5
|
+
Author: ARCANGEL0
|
|
6
|
+
License: MIT
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: colorama>=0.4.6
|
|
10
|
+
Requires-Dist: openai>=1.0.0
|
|
11
|
+
Requires-Dist: requests>=2.31.0
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
<div align="center">
|
|
16
|
+
|
|
17
|
+
# ⫻ 𝝣.𝗩.𝝠
|
|
18
|
+
## ⮡ Exploit Vector Agent
|
|
19
|
+
<br>
|
|
20
|
+
|
|
21
|
+
**Autonomous offensive security AI for guiding pentest processes**
|
|
22
|
+
|
|
23
|
+
[](https://github.com/ARCANGEL0/EVA)
|
|
24
|
+
[](https://github.com/ARCANGEL0/EVA)
|
|
25
|
+
[](https://github.com/ARCANGEL0/EVA/fork)
|
|
26
|
+
[](https://github.com/ARCANGEL0/EVA)
|
|
27
|
+
|
|
28
|
+
[](LICENSE)
|
|
29
|
+
[](#)
|
|
30
|
+
[](#)
|
|
31
|
+
|
|
32
|
+

|
|
33
|
+

|
|
34
|
+

|
|
35
|
+

|
|
36
|
+
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 𝝺 Overview
|
|
42
|
+
|
|
43
|
+
**EVA** is an AI penetration testing agent that guides users through complete pentest engagements with AI-powered attack strategy, autonomous command generation, and real-time vulnerability analysis based on outputs. The goal is not to replace the pentest professional but to guide and assist and provide faster results.
|
|
44
|
+
|
|
45
|
+
### Main funcionalities
|
|
46
|
+
|
|
47
|
+
- **🜂 Intelligent Reasoning**: Advanced AI-driven analysis and attack path identification depending on query.
|
|
48
|
+
- **ⵢ Automated Enumeration**: Systematic target reconnaissance and information gathering based on provided target.
|
|
49
|
+
- **ꎈ Vulnerability Assessment**: AI-powered vulnerability identification and exploitation strategies, suggesting next steps for vulnerability or OSINT.
|
|
50
|
+
- **⑇ Multiple AI Backends**: Support for Ollama, OpenAI GPT, Anthropic, Gemini, G4F.dev and custom API endpoints
|
|
51
|
+
- **ㄖ Session Management**: Persistent sessions and chats
|
|
52
|
+
- **⑅ Interactive Interface**: Real-time command execution and analysis of output in multi-stage.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## ⵢ EVA Logic & Pentest Process Flow
|
|
58
|
+
|
|
59
|
+
```mermaid
|
|
60
|
+
graph TD
|
|
61
|
+
|
|
62
|
+
A[🜂 EVA Launch] --> B{🢧 Session Selection}
|
|
63
|
+
B -->|Existing Session| C[🢧 Load Session Data]
|
|
64
|
+
B -->|New Session| D[߭ Initialize Session]
|
|
65
|
+
C --> E[ㄖ Select AI Backend]
|
|
66
|
+
D --> E
|
|
67
|
+
|
|
68
|
+
E --> F[🦙 Ollama Local]
|
|
69
|
+
E --> G[⬡ OpenAI GPT]
|
|
70
|
+
E --> J1[✶ Anthropic Claude]
|
|
71
|
+
E --> J2[✦ Google Gemini]
|
|
72
|
+
E --> H[⟅ Custom API]
|
|
73
|
+
E --> I[🜅 G4F.dev Provider]
|
|
74
|
+
|
|
75
|
+
F --> J[Pentest Shell]
|
|
76
|
+
G --> J
|
|
77
|
+
J1 --> J
|
|
78
|
+
J2 --> J
|
|
79
|
+
H --> J
|
|
80
|
+
I --> J
|
|
81
|
+
|
|
82
|
+
J --> K[⌖ Target Definition]
|
|
83
|
+
K --> L[🧠 AI Pentest Strategy]
|
|
84
|
+
|
|
85
|
+
L --> M[🝯 Reconnaissance Phase]
|
|
86
|
+
M --> N[➤_ Execute Commands]
|
|
87
|
+
N --> O[ꎐ Analyze Results]
|
|
88
|
+
O --> P{ᐈ Vulnerabilities Found?}
|
|
89
|
+
|
|
90
|
+
P -->|Yes| Q[🖧 Exploitation Planning]
|
|
91
|
+
P -->|No| R[⭯ More Enumeration]
|
|
92
|
+
R --> L
|
|
93
|
+
|
|
94
|
+
Q --> S[⚡ Exploitation Phase]
|
|
95
|
+
Q --> T[Export graphs and mapped networks
|
|
96
|
+
- IN DEVELOPMENT -]
|
|
97
|
+
|
|
98
|
+
S --> U[➤_ Execute Exploit]
|
|
99
|
+
U --> V{🞜 Access Gained?}
|
|
100
|
+
|
|
101
|
+
V -->|Yes| W[𐱃 Privilege Escalation]
|
|
102
|
+
V -->|Failed| X[⭯ Alternative Methods]
|
|
103
|
+
X --> Q
|
|
104
|
+
|
|
105
|
+
W --> Y[𐦝 Post-Exploitation]
|
|
106
|
+
Y --> Z{🞜 Objectives Met?}
|
|
107
|
+
|
|
108
|
+
Z -->|Generate Report| AA[📋 Generate Report
|
|
109
|
+
- IN DEVELOPMENT -]
|
|
110
|
+
Z -->|Exit and Save| AB[💾 Save & Exit]
|
|
111
|
+
Z -->|No| AC[🔍 Continue Pentest]
|
|
112
|
+
AC --> L
|
|
113
|
+
|
|
114
|
+
AA --> AB
|
|
115
|
+
|
|
116
|
+
subgraph "🍎 EVA "
|
|
117
|
+
AD[⯐ Attack Strategy AI]
|
|
118
|
+
AE[𝚵 Session Memory]
|
|
119
|
+
AF[ᐮ Vulnerability Analysis]
|
|
120
|
+
AG[CVE DATABASE SEARCH
|
|
121
|
+
- IN DEVELOPMENT -]
|
|
122
|
+
AH[𐰬 Output Processing]
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
L --> AD
|
|
126
|
+
AD --> AE
|
|
127
|
+
O --> AF
|
|
128
|
+
AF --> AG
|
|
129
|
+
AG --> AH
|
|
130
|
+
AH --> L
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
<details>
|
|
136
|
+
<summary><h2>➤ Quick Start</h2></summary>
|
|
137
|
+
|
|
138
|
+
### 🍎 Installation
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Ollama for local endpoint (optional)
|
|
142
|
+
curl -fsSL https://ollama.ai/install.sh | shr
|
|
143
|
+
|
|
144
|
+
# pip installation
|
|
145
|
+
pip install eva-exploit
|
|
146
|
+
eva
|
|
147
|
+
|
|
148
|
+
# EVA installation
|
|
149
|
+
git clone https://github.com/ARCANGEL0/EVA.git
|
|
150
|
+
cd EVA
|
|
151
|
+
chmod +x eva.py
|
|
152
|
+
./eva.py
|
|
153
|
+
|
|
154
|
+
# Adding it to PATH to be acessible anywhere
|
|
155
|
+
sudo mv eva.py /usr/local/bin/eva
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### ⬢ Configuring EVA.
|
|
159
|
+
|
|
160
|
+
When starting EVA, it will automatically handle:
|
|
161
|
+
- ✅ OpenAI API key setup (if using GPT backend)
|
|
162
|
+
- ✅ Ollama model download (WhiteRabbit-Neo, feel free to change to any other desired model)
|
|
163
|
+
- ✅ Session directory creation
|
|
164
|
+
- ✅ Dependencies installation
|
|
165
|
+
|
|
166
|
+
<strong> If you wish to modify endpoints, ollama models or other: you can find these options in `config.py` </strong>
|
|
167
|
+
|
|
168
|
+
> EVA is now modular, with a root launcher and separate folders for logic/components.
|
|
169
|
+
|
|
170
|
+
### 📁 Directory Structure of EVA
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
~/.config/eva/
|
|
174
|
+
├── sessions/ # Session storage
|
|
175
|
+
│ ├── session1.json
|
|
176
|
+
│ ├── session2.json
|
|
177
|
+
│ └── ...
|
|
178
|
+
└── .env # API keys (auto-generated)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### ꀬ Where to change EVA options
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
# Key Configuration Options
|
|
185
|
+
API_ENDPOINT = "" # This is the custom API URL.
|
|
186
|
+
G4F_MODEL = "gpt-5-1-instant"
|
|
187
|
+
OLLAMA_MODEL = "jimscard/whiterabbit-neo:latest" # change ollama model as you wish, most recommended one is whiterabbit
|
|
188
|
+
ANTHROPIC_MODEL = "claude-3-5-sonnet-latest"
|
|
189
|
+
GEMINI_MODEL = "gemini-2.0-flash"
|
|
190
|
+
CONFIG_DIR = Path.home() / ".config" / "eva" # config folder for EVA
|
|
191
|
+
SESSIONS_DIR = CONFIG_DIR / "sessions" # where to store EVA sessions
|
|
192
|
+
REPORTS_DIR = CONFIG_DIR / "reports" # generated reports
|
|
193
|
+
MAPS_DIR = CONFIG_DIR / "attack_maps" # generated visual attack maps
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
</details>
|
|
197
|
+
|
|
198
|
+
<details>
|
|
199
|
+
<summary><h2>🖴 Usage Guide</h2></summary>
|
|
200
|
+
|
|
201
|
+
### Initialization
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
python3 eva.py
|
|
205
|
+
# or if installed via pip:
|
|
206
|
+
eva
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
1. **Select Session**: Choose existing session or create new one
|
|
210
|
+
2. **Choose AI Backend**:
|
|
211
|
+
- **Ollama** (Recommended): Local AI with WhiteRabbit-Neo model
|
|
212
|
+
- **GPT-5**: OpenAI's latest model (requires API key)
|
|
213
|
+
- **G4F**: Uses g4f.dev endpoints with model GPT 5-1, feel free to change model used.
|
|
214
|
+
- **Anthropic**: Claude API backend (requires API key)
|
|
215
|
+
- **Gemini**: Google Gemini API backend (requires API key)
|
|
216
|
+
- **Custom API**: Your own API endpoint if desired
|
|
217
|
+
3. In the input field of chat, type in your request or what you need assistance with for EVA to help you!
|
|
218
|
+
|
|
219
|
+
> USER > i need help with a CTF machine, ip is 10.10.16.81
|
|
220
|
+
|
|
221
|
+
### After making a request, commands will be provided and the pentest workflow will start, use commands below as reference.
|
|
222
|
+
|
|
223
|
+
| Command | Description |
|
|
224
|
+
|---------|-------------|
|
|
225
|
+
| `/exit` / `/quit` | Exit EVA and save session |
|
|
226
|
+
| `/model` | Change AI backend |
|
|
227
|
+
| `/rename` | Rename the current session |
|
|
228
|
+
| `/menu` | Return to session menu |
|
|
229
|
+
| `R` | Run suggested command |
|
|
230
|
+
| `S` | Skip command |
|
|
231
|
+
| `A` | Ask for next step |
|
|
232
|
+
| `Q` | Quit session |
|
|
233
|
+
|
|
234
|
+
### ㄖ Example of chat session
|
|
235
|
+
|
|
236
|
+
> demonstration video.
|
|
237
|
+
|
|
238
|
+

|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
USER > I'm on a Windows target at IP 10.10.11.95, what should I enumerate first?
|
|
243
|
+
|
|
244
|
+
[ANALYSIS]
|
|
245
|
+
Based on the Windows environment, I need to perform comprehensive
|
|
246
|
+
enumeration focusing on:
|
|
247
|
+
|
|
248
|
+
1. System Information (OS version, patches, architecture)
|
|
249
|
+
2. Network Services (ports, services, listening processes)
|
|
250
|
+
3. User Context (current user, groups, privileges)
|
|
251
|
+
4. Security Controls (AV, firewall, UAC settings)
|
|
252
|
+
5. Potential Attack Vectors (SMB, RDP, IIS, etc.)
|
|
253
|
+
|
|
254
|
+
Let me start with basic system reconnaissance to understand the target better...
|
|
255
|
+
|
|
256
|
+
> execute: nmap -sC -sV -O 10.10.10.10
|
|
257
|
+
| [R]un | [S]kip | [A]sk | [G]enerate HTML Report | [V]iew attack map | [Q]uit |
|
|
258
|
+
|
|
259
|
+
> R
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
</details>
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
<details>
|
|
266
|
+
<summary><h2>Ξ AI Backends</h2></summary>
|
|
267
|
+
|
|
268
|
+
### 🦙 Ollama (Recommended)
|
|
269
|
+
- **Model**: `jimscard/whiterabbit-neo:latest` (best one for OffSec)
|
|
270
|
+
- ✅ Complete offline operation
|
|
271
|
+
- ✅ No API costs
|
|
272
|
+
- ✅ Privacy-focused
|
|
273
|
+
- ❌ Higher CPU/GPU usage, recommended for machines above 16GB VRAM/RAM
|
|
274
|
+
- ❌ Heavier model, ~9.8gb model
|
|
275
|
+
|
|
276
|
+
### ⬡ OpenAI GPT
|
|
277
|
+
- **Models**: GPT-5, GPT-4.1 (fallback)
|
|
278
|
+
- **About**:
|
|
279
|
+
- ✅ Faster reasoning
|
|
280
|
+
- ✅ Extensive knowledge base
|
|
281
|
+
- ✅ Continuous updates
|
|
282
|
+
- ❌ Paid, requires apikey
|
|
283
|
+
|
|
284
|
+
### ᛃ G4F.dev
|
|
285
|
+
- **Models**: GPT-5-1
|
|
286
|
+
- **About**:
|
|
287
|
+
- ✅ Updated information in real-time (usually)
|
|
288
|
+
- ✅ Quick responses
|
|
289
|
+
- ❌ Might be unstable or down sometimes, low stability.
|
|
290
|
+
|
|
291
|
+
### ⟅ Custom API
|
|
292
|
+
- **Endpoint**: Configurable in `API_ENDPOINT` to use your own as you wish.
|
|
293
|
+
- **About**:
|
|
294
|
+
- ✅ Custom model integration
|
|
295
|
+
- ✅ Modifiable as you wish
|
|
296
|
+
|
|
297
|
+
#### More backends compability will be provided soon!
|
|
298
|
+
|
|
299
|
+
### ✶ Anthropic
|
|
300
|
+
- **Model**: Configurable via `ANTHROPIC_MODEL`
|
|
301
|
+
- **About**:
|
|
302
|
+
- ✅ Strong reasoning quality
|
|
303
|
+
- ✅ Stable commercial API
|
|
304
|
+
- ❌ Requires `ANTHROPIC_API_KEY`
|
|
305
|
+
|
|
306
|
+
### ✦ Gemini
|
|
307
|
+
- **Model**: Configurable via `GEMINI_MODEL`
|
|
308
|
+
- **About**:
|
|
309
|
+
- ✅ Fast response latency
|
|
310
|
+
- ✅ Native JSON output mode
|
|
311
|
+
- ❌ Requires `GEMINI_API_KEY`
|
|
312
|
+
|
|
313
|
+
</details>
|
|
314
|
+
|
|
315
|
+
<details>
|
|
316
|
+
<summary><h2>⑇ Roadmap</h2></summary>
|
|
317
|
+
|
|
318
|
+
- [x] **⬢ OpenAI integration**: Integrated OpenAI into EVA
|
|
319
|
+
- [x] **⬢ G4F.DEV**: Added G4F endpoints to free GPT5 usage.
|
|
320
|
+
- [x] **⬢ Custom API**: Add custom endpoint besides ollama and OpenAI
|
|
321
|
+
- [x] **⬡ Automated Reporting**: Concise HTML report generation (+ optional PDF via wkhtmltopdf)
|
|
322
|
+
- [ ] **⬡ Cloud Integration**: AWS/GCP deployment ready
|
|
323
|
+
- [ ] **⬡ CVE Database Integration**: Real-time vulnerability data
|
|
324
|
+
- [ ] **⬡ Web Interface**: Browser-based EVA dashboard
|
|
325
|
+
- [ ] **⬡ Visual Attack Maps**: Interactive network diagrams such as connections or such, like Kerberos domains and AD devices.
|
|
326
|
+
|
|
327
|
+
</details>
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
<details>
|
|
331
|
+
<summary><h2>⨹ Legal Notice</h2></summary>
|
|
332
|
+
|
|
333
|
+
### 🚨 IMPORTANT
|
|
334
|
+
|
|
335
|
+
### This tool is for allowed environment only!
|
|
336
|
+
|
|
337
|
+
#### ✅ APPROVED USE CASES
|
|
338
|
+
> CTF (Capture The Flag) competitions <br>
|
|
339
|
+
> Authorized penetration testing <br>
|
|
340
|
+
> Security research and laboratory environments <br>
|
|
341
|
+
> Systems you own or have explicit permission to test <br>
|
|
342
|
+
|
|
343
|
+
#### 🚫 PROHIBITED USE
|
|
344
|
+
> Unauthorized access to any system <br>
|
|
345
|
+
> Illegal or malicious activities <br>
|
|
346
|
+
> Production systems without explicit authorization <br>
|
|
347
|
+
> Networks you do not own or control
|
|
348
|
+
|
|
349
|
+
### ⚠️ DISCLAIMER
|
|
350
|
+
```
|
|
351
|
+
I take no responsibility for misuse, illegal activity, or unauthorized use.
|
|
352
|
+
Any and all consequences are the sole responsibility of the user.
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
</details>
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
<details>
|
|
359
|
+
<summary><h2>⫻ License</h2></summary>
|
|
360
|
+
|
|
361
|
+
### MIT License
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
MIT License
|
|
365
|
+
|
|
366
|
+
Copyright (c) 2025 EVA - Exploit Vector Agent
|
|
367
|
+
|
|
368
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
369
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
370
|
+
in the Software without restriction, including without limitation the rights
|
|
371
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
372
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
373
|
+
furnished to do so, subject to the following conditions:
|
|
374
|
+
|
|
375
|
+
The above copyright notice and this permission notice shall be included in all
|
|
376
|
+
copies or substantial portions of the Software.
|
|
377
|
+
|
|
378
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
379
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
380
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
381
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
382
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
383
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
384
|
+
SOFTWARE.
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
</details>
|
|
388
|
+
|
|
389
|
+
<div align="center">
|
|
390
|
+
|
|
391
|
+
## ❤️ Support
|
|
392
|
+
|
|
393
|
+
### if you enjoy the project and want to support future development:
|
|
394
|
+
|
|
395
|
+
[](https://github.com/ARCANGEL0/EVA)
|
|
396
|
+
[](https://github.com/ARCANGEL0)
|
|
397
|
+
<br>
|
|
398
|
+
|
|
399
|
+
<a href='https://ko-fi.com/J3J7WTYV7' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi3.png?v=6' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
|
|
400
|
+
<br>
|
|
401
|
+
<strong>Hack the world. Byte by Byte.</strong> ⛛ <br>
|
|
402
|
+
𝝺𝗿𝗰𝗮𝗻𝗴𝗲𝗹𝗼 @ 2025
|
|
403
|
+
|
|
404
|
+
**[[ꋧ]](#-𝝣𝗩𝝠)**
|
|
405
|
+
|
|
406
|
+
</div>
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
*⚠️ Remember: With great power comes great responsibility. Use this tool ethically and legally.*
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
config.py,sha256=Bpfwaz2irKt3tdT8xaIW3-g88JTHe-Xm5zdDOyJU9HM,1159
|
|
2
|
+
eva.py,sha256=eXDlCopfF1CSqrVCAfkuicAY0AniIr51UzD2l3iG1Qg,5239
|
|
3
|
+
modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
modules/attack_map.py,sha256=TSD6o-93v-o544Zkpz3sS9tsyfzmcJprsZms71_YH18,18171
|
|
5
|
+
modules/llm.py,sha256=n3atwf_dHL_GW4duY0nsSCm99X1dfwS3_-IytKTDlFw,18481
|
|
6
|
+
modules/prompt_builder.py,sha256=HJhTiMsFSb9e0OoeCZLw7d6YVaXWQsW3PkDHxS3JS8g,2723
|
|
7
|
+
modules/reporting.py,sha256=um0TtbqP4ti7bSoBFkc3-1kePr2QZikYsoxVr1W4tkM,10111
|
|
8
|
+
sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
sessions/eva_session.py,sha256=-NFm9rPDwvbmmiXfRDoPKDohXyAeUTHav1iokr7O6LA,18380
|
|
10
|
+
utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
utils/system.py,sha256=J2TK90ghOPr3eOr07NM0uLg9z5Uj8qTTrCKufAjA_Lg,8346
|
|
12
|
+
utils/ui.py,sha256=GIq-7vyU4lpBDXP7sjcb5GWVbXurz9T6583u_RaUuVc,6604
|
|
13
|
+
eva_exploit-2.5.dist-info/METADATA,sha256=JxwtmNQkFDqFW8mkkF2lHnd6JnYEeIthqOxjrgemn9I,13082
|
|
14
|
+
eva_exploit-2.5.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
|
|
15
|
+
eva_exploit-2.5.dist-info/entry_points.txt,sha256=KbG3EuPivqt3C-ZmKutwk9UFrxq1oikVbx1BfKUoYLI,32
|
|
16
|
+
eva_exploit-2.5.dist-info/top_level.txt,sha256=w9aA661mKVq4Y_2T-qylLcYXlVMuYlmCLQMtFvqZzLw,34
|
|
17
|
+
eva_exploit-2.5.dist-info/RECORD,,
|
modules/__init__.py
ADDED
|
File without changes
|