Skip to content

bpsarthur/subips

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Subdomain IP Enumerator (subips.py)

Um script Python para enumerar endereços IP de uma lista de subdomínios com opções totalmente configuráveis via linha de comando.

Funcionalidades

  • ✅ Resolução de IPs para múltiplos subdomínios simultaneamente
  • ✅ Suporte a IPv4 e IPv6
  • ✅ Entrada via arquivo, argumento de linha de comando ou stdin
  • ✅ Saídas em formato texto, JSON ou CSV
  • ✅ Processamento concorrente com threads configuráveis
  • ✅ Tratamento de erros e timeouts personalizáveis
  • ✅ Relatório de progresso e estatísticas

Instalação

Pré-requisitos

  • Python 3.6 ou superior
  • Nenhuma dependência externa (usa apenas bibliotecas padrão)

Instalação

  1. Clone ou baixe o repositório
  2. Torne o script executável:
    chmod +x subips.py

Uso

Sintaxe Básica

python3 subips.py [opções]

Métodos de Entrada

1. Via arquivo de texto

python3 subips.py --input-file subdominios.txt

2. Via argumento de linha de comando (subdomínios separados por nova linha)

python3 subips.py --subdomains "subdominio1.com.br
subdominio2.com.br
subdominio3.com.br"

3. Via entrada padrão (stdin)

cat subdominios.txt | python3 subips.py
# ou
echo -e "sub1.com\nsub2.com" | python3 subips.py

Opções de Linha de Comando

Opção Descrição Padrão
-f, --input-file ARQUIVO Arquivo contendo subdomínios (um por linha) -
-s, --subdomains TEXTO Lista de subdomínios separados por nova linha -
-o, --output-file ARQUIVO Arquivo de saída (padrão: stdout) stdout
-F, --output-format {text,json,csv} Formato de saída text
-t, --timeout SEGUNDOS Timeout para resolução DNS (segundos) 5
-T, --threads NÚMERO Número de threads concorrentes 10
-6, --ipv6 Incluir endereços IPv6 false
-v, --verbose Mostrar progresso e erros false
-h, --help Mostrar ajuda -

Exemplos

Exemplo Básico

python3 subips.py --subdomains "google.com
github.com
example.com" --verbose

Saída:

Processing 3 subdomains...
[github.com] Resolved 1 IPs
[google.com] Resolved 1 IPs
[example.com] Resolved 6 IPs
example.com: 23.215.0.138, 23.220.75.232, 23.220.75.245, 23.192.228.80, 23.192.228.84, 23.215.0.136
github.com: 4.228.31.150
google.com: 172.217.172.174
Elapsed time: 5.04s
Successful resolutions: 3, Errors: 0

Saída em JSON

python3 subips.py --subdomains "google.com
github.com" --output-format json

Saída:

{
  "github.com": {
    "ips": [
      "4.228.31.150"
    ]
  },
  "google.com": {
    "ips": [
      "172.217.172.174"
    ]
  }
}

Saída em CSV

python3 subips.py --subdomains "google.com
github.com" --output-format csv

Saída:

domain,ips,error
github.com,"4.228.31.150",
google.com,"172.217.172.174",

Com IPv6

python3 subips.py --subdomains "google.com" --ipv6 --verbose

Processamento em Lote com Arquivo

# Criar arquivo de subdomínios
echo -e "sub1.exemplo.com\nsub2.exemplo.com\nsub3.exemplo.com" > subdominios.txt

# Processar com configurações otimizadas
python3 subips.py --input-file subdominios.txt --output-file resultados.json --output-format json --threads 20 --timeout 10 --verbose

Uso em Scripts

#!/bin/bash
# Exemplo de uso em script shell

SUBDOMINIOS="api.exemplo.com
www.exemplo.com
dev.exemplo.com"

python3 subips.py --subdomains "$SUBDOMINIOS" --output-format json --output-file ips.json

echo "IPs resolvidos salvos em ips.json"

Formatos de Saída

Texto (Padrão)

dominio.com: 192.168.1.1, 192.168.1.2
outro.com: 10.0.0.1
erro.com: ERROR - DNS resolution failed: [Errno 11001] getaddrinfo failed

JSON

{
  "dominio.com": {
    "ips": ["192.168.1.1", "192.168.1.2"]
  },
  "erro.com": {
    "error": "DNS resolution failed: [Errno 11001] getaddrinfo failed"
  }
}

CSV

domain,ips,error
dominio.com,"192.168.1.1;192.168.1.2",
erro.com,,"DNS resolution failed: [Errno 11001] getaddrinfo failed"

Tratamento de Erros

O script trata diversos tipos de erro:

  • Domínios inexistentes: Mostra mensagem de erro DNS
  • Timeouts: Usa timeout configurável para evitar travamentos
  • Conexões lentas: Processamento concorrente evita bloqueios
  • Arquivos inválidos: Validação de entrada e mensagens claras

Performance

  • Processamento Concorrente: Usa threads para resolver múltiplos domínios simultaneamente
  • Configuração de Threads: Ajuste o número de threads com --threads
  • Timeout Otimizado: Evita esperas desnecessárias em domínios problemáticos
  • Ordenação de Resultados: Saída ordenada alfabeticamente por domínio

Casos de Uso

  • Reconhecimento de Segurança: Enumerar IPs de subdomínios descobertos
  • Monitoramento de Infraestrutura: Verificar IPs de múltiplos serviços
  • Análise de DNS: Identificar mudanças de IP ao longo do tempo
  • Automação: Integração em pipelines de CI/CD ou scripts de monitoramento

Licença

Este projeto é distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Contribuição

Contribuições são bem-vindas! Para contribuir:

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -am 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

Suporte

Para dúvidas ou problemas:

  1. Verifique se está usando Python 3.6+
  2. Teste com domínios conhecidos primeiro
  3. Use a opção --verbose para mais detalhes
  4. Abra uma issue no repositório

Changelog

v1.0.0

  • Lançamento inicial
  • Suporte básico a resolução de IPs
  • Múltiplos formatos de entrada e saída
  • Processamento concorrente
  • Tratamento completo de erros

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages