CTFR-Reloaded
Herramienta de enumeracion de subdominios 100% gratuita — sin API keys, sin registro, sin costo.
Desarrollado por MrGuillote.
| CLI + TUI | Dashboard web | Consola en vivo |
|---|---|---|
| 8 fuentes CT gratuitas | Stats, scores y export | Logs SSE durante el scan |
| DNS, HTTP, takeover, TLS, CDN | Tabla filtrable y ordenable | Mismo motor que la terminal |
Demo
Capturas reales con osint.com.ar: todas las fuentes, resolucion DNS, comprobacion HTTP, takeover, TLS, CDN y scoring.
Terminal
CLI con colores, logs por fuente y barras de progreso
python ctfr.py -d ejemplo.com --source all --resolve --alive --takeover --tls --cdn --tqdm -v
Salida completa de ejemplo: docs/demo-terminal.txt.
Dashboard web
Tarjetas de resumen, distribucion de scores, keywords y tabla interactiva
Levantar el dashboard:
pip install "ctfr-reloaded[api]"
python -m ctfr_reloaded serve
# → http://127.0.0.1:9473/
Consola de actividad
Panel lateral LOG con streaming en tiempo real (fuentes, DNS, HTTP, scoring…)
Instalacion
pip (PyPI)
pip install ctfr-reloaded
# Con extras
pip install "ctfr-reloaded[api,pdf]"
Desde GitHub
git clone https://github.com/MrGuillote/ctfr-reloaded.git
cd ctfr-reloaded
pip install -e ".[dev,api]"
# Scan full de ejemplo
python ctfr.py -d ejemplo.com --source all --resolve --alive --takeover --tls --cdn --tqdm -v -o reporte.html --format html
Docker (GHCR)
docker pull ghcr.io/mrguillote/ctfr-reloaded:latest
docker run --rm ghcr.io/mrguillote/ctfr-reloaded:latest -d ejemplo.com
Fuentes gratuitas (8)
| Fuente | Flag | Notas |
|---|---|---|
| crt.sh | crtsh |
Lento, a veces 404/timeout |
| crt.name | crtname |
Rapido, recomendado |
| Certspotter | certspotter |
|
| HackerTarget | hackertarget |
|
| Wayback Machine | wayback |
|
| Anubis | anubis |
|
| Bufferover | bufferover |
|
| RapidDNS | rapiddns |
|
| Todas | all (default) |
Uso rapido
# Scan basico (todas las fuentes por defecto)
python ctfr.py -d ejemplo.com
Scan FULL (traer todo)
Todas las fuentes + DNS + HTTP + takeover + TLS + CDN + score + reporte HTML:
python ctfr.py -d ejemplo.com \
--source all \
--resolve --alive --takeover --tls --cdn \
--tqdm -v \
--history \
-o reporte.html --format html
Equivalente en una linea:
python ctfr.py -d ejemplo.com --source all --resolve --alive --takeover --tls --cdn --tqdm -v --history -o reporte.html --format html
Salida JSON en lugar de HTML:
python ctfr.py -d ejemplo.com --source all --resolve --alive --takeover --tls --cdn --tqdm -j -o resultados.json
Docker (mismo scan full):
docker run --rm ghcr.io/mrguillote/ctfr-reloaded:latest \
-d ejemplo.com --source all --resolve --alive --takeover --tls --cdn --tqdm -v -j
Mas ejemplos
# Recon pro con barra de progreso
python ctfr.py -d ejemplo.com --resolve --alive --takeover --tls --cdn --tqdm
# Reporte PDF
python ctfr.py -d ejemplo.com -o reporte.pdf --format pdf
# TUI interactivo
python ctfr.py -d ejemplo.com --tui
# Watch con alertas Discord
python ctfr.py -d ejemplo.com --watch --interval 1800 \
--discord-webhook "https://discord.com/api/webhooks/..."
# Pipeline
python ctfr.py -d ejemplo.com --pipe | httpx -silent
Features
| Feature | Flag |
|---|---|
| Barra tqdm | --tqdm |
| TUI interactivo | --tui |
| Export PDF | -o reporte.pdf |
| Webhook Discord | --discord-webhook URL |
| Webhook Telegram | --telegram-token + --telegram-chat-id |
| Takeover detection | --takeover |
| Historial SQLite | --history |
| Monitoreo | --watch --interval SEC |
| Desactivar score | --no-score |
Score (priorizacion)
Cada subdominio recibe un score de 0 a 100 para ordenar resultados: arriba van los que conviene revisar primero en un pentest u OSINT.
No es un nivel de riesgo real ni confirma vulnerabilidades; es una heuristica de prioridad.
| Factor | Puntos |
|---|---|
| Base | +10 |
Palabra clave interesante en el nombre (api, dev, mail, admin, test, git, etc.) |
+15 por match |
Resuelve DNS (--resolve) |
+10 |
Responde HTTP (--alive) |
+20 |
Posible subdomain takeover (--takeover) |
+50 |
Deteccion CDN (--cdn) |
+5 |
Info TLS (--tls) |
+5 |
Nombre corto (apex o pocas partes, ej. ejemplo.com) |
+5 |
Ejemplo sin flags extra:
api.ejemplo.com → 25 (10 + keyword "api")
dev.ejemplo.com → 25 (10 + keyword "dev")
ejemplo.com → 15 (10 + nombre corto)
www.ejemplo.com → 10 (solo base)
Con --resolve --alive --takeover los scores suben segun lo que se detecte en cada host. Para desactivar el calculo: --no-score.
API local y dashboard web
pip install "ctfr-reloaded[api]"
python -m ctfr_reloaded serve
| URL | Descripcion |
|---|---|
| http://127.0.0.1:9473/ | Dashboard web — formulario, estadisticas, tabla interactiva |
| http://127.0.0.1:9473/docs | Documentacion API (Swagger) |
| http://127.0.0.1:9473/scan?domain=ejemplo.com | Scan JSON basico |
| http://127.0.0.1:9473/scan?domain=ejemplo.com&source=all&resolve=true&alive=true&takeover=true&tls=true&cdn=true&score=true | Scan FULL (API) |
| http://127.0.0.1:9473/health | Estado del servidor |
Puerto por defecto: 9473 (configurable con --port).
El dashboard incluye tarjetas de estadisticas, distribucion de scores, keywords detectadas, filtro y orden por columnas, export a JSON/HTML, y una consola lateral en vivo durante el scan. Ver capturas en la seccion Demo. El reporte -o reporte.html usa el mismo diseno.
Publicar en PyPI (mantenedores)
- Crear tag
vX.Y.Zy pushearlo a GitHub - Configurar secret
PYPI_API_TOKENen el repo - Ejecutar workflow
publish-pypi.yml(manual o tras release publicado)
Desarrollo
pip install -e ".[dev]"
pytest
Reportar bugs
Usa los issue templates del repo.
Licencia
GPL v3 — LICENSE
Metadata
Release files for ctfr-reloaded 4.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ctfr_reloaded-4.2.1.tar.gz | 55.7 kB | Without provenance | Details for ctfr_reloaded-4.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ctfr_reloaded-4.2.1-py3-none-any.whl | Python 3 | none | any | Details for ctfr_reloaded-4.2.1-py3-none-any.whl |
Total release size: 113.1 kB
Release files / ctfr_reloaded-4.2.1.tar.gz
| Download URL | ctfr_reloaded-4.2.1.tar.gz |
|---|---|
| Size | 55.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cbe553f10eb393c601aece209b5be91e57ae29139ef5b60420cdcd8aa71abbcd
|
|
BLAKE2b-256 checksum How to use checksums |
2cb1574c0800e93f788d977eacb75c3011cdc863b27d1b9c064de4cabf2d5a4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / ctfr_reloaded-4.2.1-py3-none-any.whl
| Download URL | ctfr_reloaded-4.2.1-py3-none-any.whl |
|---|---|
| Size | 57.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
baf9ec89f473a8139783914fc40b10a7f11439d9b0ada7d800e6f419056d880b
|
|
BLAKE2b-256 checksum How to use checksums |
ff5c7d612c215bf190441f460e93edbe6ebeaaf59ba1253efa92ee299ac41e20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Security for ctfr-reloaded 4.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.