
Usa la API de ChatGPT, la API de Bard y Llama2, Python-Nmap, DNS Recon, módulos de reconocimiento de PCAP y JWT, y utiliza el modelo GPT3 para crear informes de vulnerabilidades basados en datos de escaneo de Nmap e información de escaneo de DNS. También puede realizar enumeración de subdominios en gran medida.
GVA es un conjunto de herramientas de reconocimiento y análisis de vulnerabilidades asistido por IA. Ejecuta el escaneo (nmap, DNS, subdominios, JWT, PCAP, GeoIP) y luego entrega la salida sin procesar a un modelo de lenguaje grande que devuelve un análisis estructurado orientado a pentesters. Se distribuye con una interfaz de línea de comandos y una GUI de escritorio.
La capa de IA es agnóstica al proveedor: OpenAI, Anthropic Claude, Google Gemini y modelos locales de Ollama son compatibles. Elige uno, o ejecuta varios a la vez y deja que un agente de deliberación reconcilie sus análisis en un único informe.
pyproject.toml (gestionadas con uv) o requirements.txtnmap en el PATH para el ataque nmaptshark en el PATH para el ataque pcapEl ataque nmap invoca el binario nmap del sistema a través de python-nmap, por lo que nmap
debe estar instalado y ser ejecutable.
sudo, o puedes pasar --sudo. Los perfiles 1–5 se ejecutan sin privilegios; el perfil 1
es el predeterminado y funciona sin root.libssh2.so.1: cannot open shared object file:
al nmap del sistema le falta una biblioteca compartida. Si usas conda,
conda install -c conda-forge nmap es autocontenido y tiene precedencia en el PATH.
De lo contrario, instálalo con rpm-ostree install libssh2 (luego reinicia), o usa
brew install nmap o un contenedor distrobox.Si nmap falta o está roto, el ataque informa un error limpio en lugar de fallar.
El script de instalación configura los paquetes del sistema, uv y las dependencias de Python. Ejecútalo como tu usuario normal; solo eleva el paso de paquetes del sistema con sudo.
./install.sh # full install
./install.sh --no-system # skip system packages (uv + Python deps only)
Detecta automáticamente tu gestor de paquetes (apt, dnf, pacman, zypper, apk, brew o
rpm-ostree), instala uv a nivel de usuario, ejecuta uv sync y crea .env. No hagas
sudo su primero: si el proyecto está en un montaje solo para usuario (por ejemplo /run/host o
/media), root no puede leerlo, así que la invocación como usuario normal es la ruta fiable.
Para instalar manualmente con uv:
uv sync
pip install -r requirements.txt también funciona como alternativa.
Copia el archivo de entorno de ejemplo y completa las claves de los proveedores que quieras. Cualquier proveedor sin clave se omite automáticamente.
cp .env.example .env
GEOIP_API_KEY=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GEMINI_API_KEY=
Cada proveedor es un agente de Pydantic AI que devuelve un resultado validado y estructurado. Selecciona más de uno y cada modelo analiza el escaneo de forma independiente y concurrente; un agente de deliberación (uno de los modelos seleccionados) los reconcilia después en un único informe consolidado. Un panel de progreso en vivo muestra el estado de cada modelo, los tiempos y el paso de deliberación mientras se ejecuta.
| Proveedor | Clave | Modelo predeterminado | Precio aprox. / 1M tokens |
|---|---|---|---|
| OpenAI | openai | gpt-5.6-luna | $0.20 in / $1.20 out |
| Anthropic | claude | claude-haiku-4-5 | $1.00 in / $5.00 out |
gemini | gemini-3.6-flash | $0.75 in / $3.75 out | |
| Ollama | ollama | llama3 | local / gratis |
Sobrescribe cualquier modelo con la variable *_MODEL correspondiente en .env. Consulta .env.example
para ver alternativas. Ollama usa una imagen Docker local y se inicia automáticamente cuando
se selecciona.
Ejecuta con uv run gpt_vuln.py ..., o python gpt_vuln.py ... dentro de un venv activado.
# Help
uv run gpt_vuln.py --help
uv run gpt_vuln.py --rich_menu help
# Nmap scan (default profile 1), analysed by OpenAI
python gpt_vuln.py --target scanme.nmap.org --attack nmap --ai openai
# Choose a scan profile (see the profile table below, or --list_profiles)
python gpt_vuln.py --target scanme.nmap.org --attack nmap --profile 2
python gpt_vuln.py --list_profiles
# DNS recon (no profile needed)
python gpt_vuln.py --target example.com --attack dns
# Subdomain enumeration (default or custom wordlist)
python gpt_vuln.py --target example.com --attack sub
python gpt_vuln.py --target example.com --attack sub --sub_list path/to/list.txt
# GeoIP lookup
python gpt_vuln.py --target 8.8.8.8 --attack geo
# JWT analysis
python gpt_vuln.py --target <token> --attack jwt
# PCAP analysis
python gpt_vuln.py --target capture.pcap --attack pcap --output outputs/output.json
# Several providers: each analyses independently, then one consolidated report
python gpt_vuln.py --target example.com --attack dns --ai openai,claude,gemini
# Choose which model deliberates, and also show each model's own analysis
python gpt_vuln.py --target example.com --attack dns --ai all --summarizer claude --show_individual
# Password cracking
python gpt_vuln.py --password_hash <hash> --wordlist_file words.txt --algorithm md5 --parallel
# Interactive step-by-step menu
python gpt_vuln.py --menu
--menu lanza una interfaz guiada que solicita el objetivo, las opciones y los proveedores
de IA para cada ataque.
┏━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Option ┃ Action ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ 1 │ Nmap scan │
│ 2 │ DNS recon │
│ 3 │ Subdomain enum │
│ 4 │ GeoIP lookup │
│ 5 │ JWT analysis │
│ 6 │ PCAP analysis │
│ 7 │ Hash cracker │
│ q │ Quit │
└─────────┴────────────────┘
Los perfiles 1–5 se ejecutan sin privilegios (escaneos TCP connect, sin root). El perfil 1 es el predeterminado.
Los perfiles 6–10 usan flags SYN/UDP/detección de SO que necesitan root; GVA escala solo el
paso de nmap con sudo cuando eliges uno. Ejecuta python gpt_vuln.py --list_profiles para
ver esta tabla en tu terminal.
| # | Nombre | Root | Qué hace | Comando Nmap |
|---|---|---|---|---|
| 1 | Quick | no | Top 100 puertos TCP con versiones de servicio (triaje rápido). | -Pn -sT -sV -T4 --top-ports 100 |
| 2 | Standard | no | Top 1000 puertos con versiones y scripts NSE predeterminados. | -Pn -sT -sV -sC -T4 --top-ports 1000 |
| 3 | Full TCP | no | Todos los puertos TCP (1–65535) con versiones. | -Pn -sT -sV -p- -T4 |
| 4 | Web services | no | Escaneo centrado en HTTP/S de puertos web comunes. | -Pn -sT -sV -T4 -p 80,443,8080,8443,8000,8888,3000,5000 --script=http-title,http-headers,... |
| 5 | Vulnerability | no | Scripts NSE de vulnerabilidades sobre servicios versionados. | -Pn -sT -sV -T4 --script=vuln |
| 6 | Stealth SYN | yes | Escaneo SYN half-open de los top 1000 puertos. | -Pn -sS -sV -T4 --top-ports 1000 |
| 7 | OS & service | yes | Escaneo SYN con fingerprinting de SO y detección de servicios. | -Pn -sS -sV -O -T4 |
| 8 | Aggressive | yes | SO, versiones, scripts predeterminados y traceroute. | -Pn -A -T4 |
| 9 | UDP top | yes | Top 50 servicios UDP (DNS, SNMP, NTP, etc.). | -Pn -sU -sV -T4 --top-ports 50 |
| 10 | Deep audit | yes | Escaneo SYN de puertos completos con detección de SO y scripts de vuln. | -Pn -sS -sV -O -p- -T4 --script=default,vuln |
El perfil selecciona los argumentos de nmap. nmap se ejecuta, los datos de puertos abiertos se extraen del resultado del escaneo y esos datos se entregan al motor de IA para su análisis. Si un escaneo finaliza pero no encuentra puertos abiertos, GVA lo indica claramente en lugar de devolver un análisis vacío, de modo que un resultado vacío nunca parezca un fallo silencioso.
La GUI de escritorio está construida con customtkinter.
uv run python GVA_gui.py
Elige un escaneo en la barra lateral izquierda, completa el objetivo y ejecuta. Cada escaneo muestra solo los campos que necesita:
all).La barra lateral también lista los proveedores de IA con un punto de estado, para que puedas ver de un vistazo qué claves están configuradas. Los escaneos se ejecutan en un hilo en segundo plano, por lo que la ventana permanece responsiva, y los resultados se muestran en un panel estilo consola con botones Copy y Clear. Una barra de estado informa el progreso y cualquier error.
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Elements ┃ Results ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ critical score │ High │
│ os information │ Microsoft Windows 11 21H2 │
│ open ports │ 80, 22, 445, 902, 912 │
│ open services │ http, ssh, microsoft-ds, vmware-auth │
│ vulnerable service │ OpenSSH │
│ found cve │ CVE-2023-28531 │
└────────────────────┴─────────────────────────────────────────────────────┘
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Elements ┃ Results ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ A │ 172.67.147.95, 104.21.41.132 │
│ NS │ mia.ns.cloudflare.com, paul.ns.cloudflare.com │
│ MX │ 10 aspmx.l.google.com, 20 alt1.aspmx.l.google.com │
│ SOA │ mia.ns.cloudflare.com dns.cloudflare.com │
│ TXT │ include:_spf.atlassian.net │
└──────────┴─────────────────────────────────────────────────────────────────┘
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Variables ┃ Results ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Algorithm Used │ HS256 │
│ PossibleAttacks │ alg:none downgrade, weak HMAC secret brute force │
│ VulnerableEndpoints │ any endpoint trusting the token signature │
└─────────────────────┴──────────────────────────────────────────────────────┘
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Identifiers ┃ Data ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ ip │ 8.8.8.8 │
│ continent_name │ North America │
│ country_name │ United States │
│ state_prov │ California │
│ city │ Mountain View │
│ zipcode │ 94043 │
│ latitude │ 37.42240 │
│ longitude │ -122.08421 │
│ isp │ Google LLC │
│ organization │ Google LLC │
│ time_zone.name │ America/Los_Angeles │
│ currency.code │ USD │
└──────────────────┴─────────────────────────────────┘
El directorio package/ publica el conjunto de herramientas como el paquete importable GVA.
cd package && pip install .
from GVA.ai_providers import AIEngine, config_from_keys
from GVA.port_scanner import NetworkScanner
from GVA.dns_recon import DNSRecon
from GVA.jwt import JWTAnalyzer
from GVA.subdomain import SubEnum
from GVA import gui
# Build the AI engine from whichever provider keys you have.
engine = AIEngine(config_from_keys(
openai_key="...",
anthropic_key="...",
gemini_key="...",
))
# Run a scan and read the consolidated report.
scanner = NetworkScanner()
report = scanner.scanner("scanme.nmap.org", profile=1, engine=engine, providers=["openai"])
print(report.primary)
# DNS and JWT follow the same pattern.
dns = DNSRecon().dns_resolver("example.com", engine, ["openai"])
subs = SubEnum().sub_enumerator("example.com", "lists/default.txt")
# Or launch the GUI.
gui.launch()
Instalar el paquete también proporciona el comando de consola gva, equivalente a ejecutar
gpt_vuln.py.
Las issues y pull requests son bienvenidas. Consulta CONTRIBUTING.md y CODE_OF_CONDUCT.md.
Para informes de seguridad, consulta SECURITY.md.
GVA es solo para pruebas de seguridad autorizadas y educación. Escanea y analiza sistemas que poseas o para los que tengas permiso explícito de probar.
MIT. Consulta LICENSE.