
Automatize a execução de exploit/PoC contra resultados de busca do Shodan - despacho concorrente, filtragem, saída estruturada e exportação.
Automatize a execução de exploits e PoCs contra resultados de pesquisa do Shodan. Consulte o Shodan, filtre alvos e execute seus scripts em cada resultado — concorrentemente, com saída estruturada e exportação.
Você tem um script PoC que recebe um IP e uma porta. Quer executá-lo em cada host que corresponde a uma consulta do Shodan. O ShodScript preenche a lacuna: pesquisar, filtrar, despachar, coletar resultados.
pip install git+https://github.com/momenbasel/shodscript.git
Ou clone e instale localmente:
git clone https://github.com/momenbasel/shodscript.git
cd shodscript
pip install -e .
Defina a sua chave de API do Shodan:
export SHODAN_API_KEY="your-api-key-here"
Ou passe-a com --api-key / -k em cada comando.
# Saída em tabela
shodscript search "apache 2.4.49"
# Filtrar por porta e país
shodscript search "nginx" --port 443 --country US --limit 50
# Saída JSON
shodscript search "apache" --json
# Execute check_http.py em cada host que corresponde a "apache 2.4.49"
shodscript run "apache 2.4.49" ./exploit.py
# 20 workers concorrentes, timeout de 60s por alvo
shodscript run "apache 2.4.49" ./exploit.py -w 20 -t 60
# Filtrar pela porta 80 na Alemanha, salvar resultados
shodscript run "apache" ./exploit.py --port 80 --country DE -o results.json
# Exportar para CSV
shodscript run "nginx" ./check.py -o results.csv --format csv
# Mostrar apenas resultados bem-sucedidos
shodscript run "apache" ./exploit.py --quiet
Três modos via --pass-via:
# Passar via variáveis de ambiente
shodscript run "nginx" ./script.py --pass-via env
# Passar via stdin
shodscript run "nginx" ./script.py --pass-via stdin
# Encaminhar argumentos extras para o script
shodscript run "nginx" ./script.py -e "--verbose" -e "--ssl"
# Um IP por linha - encaminhe para outras ferramentas
shodscript ips "apache 2.4.49" | xargs -I{} curl -s http://{}
# Incluir porta
shodscript ips "apache 2.4.49" --with-port
# Encaminhe para 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
O seu script só precisa aceitar um IP e uma porta. Exemplo mínimo:
#!/usr/bin/env python3
import sys
ip = sys.argv[1]
port = int(sys.argv[2])
# Sua lógica de exploit/verificação aqui
print(f"[+] {ip}:{port} - vulnerável")
# Saída 0 = sucesso (marcado verde), diferente de zero = falha (marcado vermelho)
Consulte o diretório examples/ para mais padrões, incluindo scripts baseados em env e de captura de banner.
Os resultados podem ser salvos como JSON, JSONL ou CSV:
shodscript run "query" ./script.py -o results.json # JSON (padrão)
shodscript run "query" ./script.py -o results.jsonl --format jsonl # Um objeto JSON por linha
shodscript run "query" ./script.py -o results.csv --format csv # CSV
Cada registro contém: ip, port, host, org, country, returncode, success, stdout, stderr, elapsed, error.
MIT
Apenas para testes de segurança autorizados e pesquisa.
| Modo | Como o seu script recebe o alvo |
|---|
arg (padrão) | python3 script.py <ip> <port> |
env | Variáveis de ambiente TARGET_IP, TARGET_PORT, TARGET_HOST |
stdin | ip:port\n escrito em stdin |