davestinhast/rust-port-scanner
GitHub: davestinhast/rust-port-scanner
Stars: 0 | Forks: 0
# rust-port-scanner
Escáner de puertos concurrente escrito en Rust. Usa Tokio para manejar cientos de conexiones al mismo tiempo sin bloquear el programa, así que es rápido. También puede intentar leer el banner del servicio que está corriendo en cada puerto abierto.
## ¿Cómo funciona?
En lugar de revisar un puerto y esperar la respuesta antes de revisar el siguiente (lento), abre todas las conexiones al mismo tiempo con un límite configurable de concurrencia.
┌─ Puerto 22 → ABIERTO (SSH-2.0-OpenSSH)
├─ Puerto 80 → ABIERTO (HTTP/1.1 200 OK)
Host objetivo ──────┼─ Puerto 443 → ABIERTO
├─ Puerto 81 → cerrado (timeout)
└─ Puerto 82 → cerrado (timeout)
El semáforo interno controla cuántas conexiones van abiertas al mismo tiempo para no saturar la red ni el sistema.
## Instalación
Necesitas tener [Rust instalado](https://rustup.rs/).
git clone https://github.com/davestinhast/rust-port-scanner.git
cd rust-port-scanner
cargo build --release
El binario queda en `target/release/scanner`.
## Uso
# Escanear puertos del 1 al 1024 en un host
./scanner --host 192.168.1.1
# Rango personalizado con timeout más corto
./scanner --host ejemplo.com --start 1 --end 65535 --timeout-ms 300
# Con detección de banners
./scanner --host 192.168.1.1 --banner
# Más concurrencia (más rápido, más agresivo)
./scanner --host 192.168.1.1 --concurrency 500
# Ver todas las opciones
./scanner --help
**Salida de ejemplo:**
Escaneando 192.168.1.1 (puertos 1-1024)...
PUERTO BANNER
--------------------------------------------------
22 SSH-2.0-OpenSSH_8.9p1
80 HTTP/1.1 200 OK
443 abierto
Total: 3 puertos abiertos.
## Opciones
| Flag | Descripción | Valor por defecto |
|------|-------------|-------------------|
| `--host` | IP o hostname objetivo | requerido |
| `--start` | Puerto inicial | 1 |
| `--end` | Puerto final | 1024 |
| `--timeout-ms` | Timeout por puerto (ms) | 500 |
| `--banner` | Intentar leer banner | desactivado |
| `--concurrency` | Conexiones simultáneas | 200 |
## Requisitos
- Rust 1.70 o superior
- Conexión de red al objetivo
- Permiso para escanear el objetivo (no escanees lo que no es tuyo)
## Licencia
MIT.
标签:通知系统