
Automatiza la ejecución de exploits/PoC contra resultados de búsqueda de Shodan - despacho concurrente, filtrado, salida estructurada y exportación.
Automatiza la ejecución de exploits y PoC contra resultados de búsqueda de Shodan. Consulta Shodan, filtra objetivos y ejecuta tus scripts contra cada coincidencia, de forma concurrente, con salida estructurada y exportación.
Tienes un script PoC que recibe una IP y un puerto. Quieres ejecutarlo contra cada host que coincida con una consulta de Shodan. ShodScript cierra la brecha: buscar, filtrar, despachar, recopilar resultados.
pip install git+https://github.com/momenbasel/shodscript.git
O clona e instala localmente:
git clone https://github.com/momenbasel/shodscript.git
cd shodscript
pip install -e .
Define tu clave de API de Shodan:
export SHODAN_API_KEY="tu-clave-api-aqui"
O pásala con --api-key / -k en cada comando.
# Salida en tabla
shodscript search "apache 2.4.49"
# Filtrar por puerto y país
shodscript search "nginx" --port 443 --country US --limit 50
# Salida JSON
shodscript search "apache" --json
# Ejecuta check_http.py contra cada host que coincida con "apache 2.4.49"
shodscript run "apache 2.4.49" ./exploit.py
# 20 workers concurrentes, timeout de 60s por objetivo
shodscript run "apache 2.4.49" ./exploit.py -w 20 -t 60
# Filtrar por puerto 80 en Alemania, guardar resultados
shodscript run "apache" ./exploit.py --port 80 --country DE -o results.json
# Exportación a CSV
shodscript run "nginx" ./check.py -o results.csv --format csv
# Mostrar solo aciertos exitosos
shodscript run "apache" ./exploit.py --quiet
Tres modos mediante --pass-via:
# Pasar mediante variables de entorno
shodscript run "nginx" ./script.py --pass-via env
# Pasar mediante stdin
shodscript run "nginx" ./script.py --pass-via stdin
# Reenviar argumentos adicionales al script
shodscript run "nginx" ./script.py -e "--verbose" -e "--ssl"
# Una IP por línea - canalizar a otras herramientas
shodscript ips "apache 2.4.49" | xargs -I{} curl -s http://{}
# Incluir puerto
shodscript ips "apache 2.4.49" --with-port
# Canalizar a nuclei, httpx, etc.
shodscript ips "apache 2.4.49" -n 500 | httpx -silent
shodscript host 1.2.3.4
shodscript host 1.2.3.4 --json
shodscript info
Tu script solo necesita aceptar una IP y un puerto. Ejemplo mínimo:
#!/usr/bin/env python3
import sys
ip = sys.argv[1]
port = int(sys.argv[2])
# Tu lógica de exploit/comprobación aquí
print(f"[+] {ip}:{port} - vulnerable")
# Salida 0 = éxito (marcado en verde), distinto de cero = fallo (marcado en rojo)
Consulta el directorio examples/ para más patrones, incluyendo scripts basados en variables de entorno y captura de banners.
Los resultados se pueden guardar como JSON, JSONL o CSV:
shodscript run "query" ./script.py -o results.json # JSON (por defecto)
shodscript run "query" ./script.py -o results.jsonl --format jsonl # Un objeto JSON por línea
shodscript run "query" ./script.py -o results.csv --format csv # CSV
Cada registro contiene: ip, port, host, org, country, returncode, success, stdout, stderr, elapsed, error.
MIT
Solo para pruebas de seguridad autorizadas e investigación.
| Modo | Cómo tu script recibe el objetivo |
|---|
arg (por defecto) | python3 script.py <ip> <port> |
env | Variables de entorno TARGET_IP, TARGET_PORT, TARGET_HOST |
stdin | ip:port\n escrito en stdin |