██████╗ ███████╗███╗ ██╗████████╗███████╗███████╗████████╗ ██████╗ ██████╗ ████████╗
██╔══██╗██╔════╝████╗ ██║╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝██╔════╝ ██╔══██╗╚══██╔══╝
██████╔╝█████╗ ██╔██╗ ██║ ██║ █████╗ ███████╗ ██║ ██║ ███╗██████╔╝ ██║
██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ╚════██║ ██║ ██║ ██║██╔═══╝ ██║
██║ ███████╗██║ ╚████║ ██║ ███████╗███████║ ██║ ╚██████╔╝██║ ██║
╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
Desarrollado por Nelson Abner Mendoza Pérez · Adaptado de PentestGPT original
Esta herramienta está diseñada exclusivamente para pentesting autorizado y fines educativos. No la utilices en sistemas sin permiso explícito por escrito. El uso no autorizado es ilegal y contrario a los principios del hacking ético. El autor no se responsabiliza por el uso indebido de esta herramienta.
PentestGPT con Gemini AI es una herramienta de línea de comandos diseñada para asistir a profesionales de seguridad informática y pentesters en su trabajo diario. Integra el modelo gemini-2.0-flash-thinking-exp de Google, capaz de razonamiento profundo, para guiar cada etapa de una evaluación de seguridad: desde el reconocimiento hasta la elaboración del informe final.
Este proyecto es una adaptación del PentestGPT original, reemplazando la API de ChatGPT por la API de Gemini, con mejoras adicionales en formato de salida, soporte de categorías y flexibilidad de configuración.
| Característica | Descripción |
|---|---|
| 🤖 Motor de IA avanzado | Utiliza gemini-2.0-flash-thinking-exp, optimizado para razonamiento técnico complejo |
| 💻 Interfaz de línea de comandos | Modo interactivo y modo de consulta directa por argumentos |
| 🗂️ Categorías especializadas | Soporte para 11 categorías de pentesting con contexto específico |
| 📄 Formatos de salida múltiples | Exporta en texto plano, Markdown, JSON y HTML |
| 💾 Guardado de respuestas | Guarda resultados directamente en archivos con un solo argumento |
| ⚙️ Configuración flexible | Ajusta temperatura, tokens máximos y categoría desde la CLI |
- Python 3.6 o superior
- Conexión a Internet (para acceder a la API de Gemini)
- Clave API de Gemini (incluida por defecto en
.env)
git clone https://github.com/nelsonamp/pentestgpt-gemini.git
cd pentestgpt-geminipip install -r requirements.txtEl proyecto incluye una clave API preconfigurada en el archivo .env. Si deseas usar tu propia clave:
# Edita el archivo .env
nano .env
# Cambia el valor de:
GEMINI_API_KEY=tu_clave_api_aqui💡 Puedes obtener tu clave API gratuita en Google AI Studio
Lanza el asistente en modo conversacional:
python main.pyUna vez dentro, puedes escribir consultas libremente. Escribe exit o quit para salir.
python main.py --query "Explica cómo realizar un escaneo de puertos con nmap"
# o en forma corta:
python main.py -q "Explica cómo realizar un escaneo de puertos con nmap"| Argumento | Abreviado | Tipo | Descripción |
|---|---|---|---|
--query |
-q |
string |
Consulta directa al modelo |
--category |
-c |
string |
Categoría de pentesting (ver lista abajo) |
--temperature |
-t |
float |
Creatividad del modelo: 0.0 (preciso) a 1.0 (creativo) |
--max-tokens |
-m |
int |
Número máximo de tokens en la respuesta |
--output-file |
-o |
string |
Ruta del archivo donde guardar la respuesta |
--output-format |
-f |
string |
Formato de salida: text, markdown, json, html |
# Consulta simple
python main.py -q "¿Cómo puedo realizar un análisis de vulnerabilidades en una red?"
# Consulta en una categoría específica
python main.py -q "Mejores herramientas para recolectar información OSINT" -c reconnaissance
# Guardar respuesta en Markdown
python main.py -q "Técnicas de evasión de IDS/IPS" -f markdown -o informe_evasion.md
# Respuesta en JSON con temperatura baja (más preciso)
python main.py -q "Explica el ataque SQL Injection" -f json -t 0.2 -o sqli.json
# Limitar tokens para respuestas cortas
python main.py -q "¿Qué es un ataque de fuerza bruta?" -m 512
# Flujo completo: categoría + formato + archivo
python main.py -q "Plan de explotación para un servidor Apache desactualizado" \
-c exploitation -f markdown -o reporte_apache.mdCada categoría ajusta el contexto del modelo para obtener respuestas más precisas y relevantes:
| Categoría | Descripción |
|---|---|
reconnaissance |
Recolección de información pasiva y activa, OSINT |
scanning |
Escaneo de puertos, servicios y sistemas operativos |
vulnerability_assessment |
Identificación y evaluación de vulnerabilidades |
exploitation |
Técnicas de explotación de vulnerabilidades |
post_exploitation |
Movimiento lateral, persistencia y escalada de privilegios |
reporting |
Redacción de informes técnicos y ejecutivos |
social_engineering |
Phishing, pretexting y manipulación humana |
web_application |
OWASP Top 10, pruebas en aplicaciones web |
network |
Ataques y análisis de redes |
wireless |
Seguridad en redes Wi-Fi (WPA2, WPS, handshakes) |
mobile |
Pruebas en aplicaciones Android e iOS |
pentestgpt-gemini/
├── main.py # Punto de entrada principal
├── requirements.txt # Dependencias del proyecto
├── .env # Configuración de la clave API
├── README.md # Documentación
└── modules/
├── gemini_client.py # Cliente de la API de Gemini
├── categories.py # Definición de categorías de pentesting
└── output.py # Formateadores de salida
- 🔒 No compartas tu clave API públicamente ni la subas a repositorios sin protección.
- 🧪 Prueba solo en entornos controlados: laboratorios propios, máquinas virtuales (TryHackMe, HackTheBox, VulnHub).
- 📝 Documenta siempre el alcance de tus pruebas con el cliente o propietario del sistema.
- 🚫 Nunca uses esta herramienta en sistemas reales sin autorización escrita.
Las contribuciones son bienvenidas. Si encuentras un bug, tienes una mejora o quieres añadir una nueva categoría:
- Haz un fork del repositorio
- Crea una rama:
git checkout -b feature/mi-mejora - Haz commit de tus cambios:
git commit -m 'feat: descripción de la mejora' - Abre un Pull Request
- Proyecto original: PentestGPT - Cornell / Grupo Oruss
- Adaptación y desarrollo: Nelson Abner Mendoza Pérez
- Propósito: Educativo y de portafolio profesional
Distribuido bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
Hecho con propósito educativo · Úsalo con responsabilidad