Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/ghostop14/sparrow-wifi
OSINT (Inteligencia de Fuentes Abiertas)ReconocimientoAuditoría Wi-FiSeguridad BluetoothMapeo de RedesRecopilación de InformaciónSeguridad InalámbricaAnálisis de Registros
GitHubghostop14/sparrow-wifi

sparrow-wifi

Analizador de WiFi y Bluetooth de próxima generación basado en GUI para Linux

Ver Repositorio
1.6k19014hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Sparrow-WiFi

Sparrow-WiFi es una herramienta de conciencia espectral WiFi y Bluetooth (2.4 GHz y 5 GHz) para Linux. Integra en una sola plataforma el escaneo WiFi, la detección de Bluetooth Low Energy y Classic, el análisis espectral mediante radio definida por software (HackRF, Ubertooth), el seguimiento GPS, la detección de drones FAA RemoteID, operaciones remotas con drones/rovers y la indexación ECS 8.17 en Elasticsearch o OpenSearch. Escrito íntegramente en Python 3.

El proyecto incluye cuatro componentes que funcionan de forma independiente o conjunta:

ComponenteInterfazPropósito
Sparrow-WiFiGUI de escritorio PyQt5Escaneo WiFi/BT, análisis espectral, seguimiento de fuentes, wardriving
Sparrow AgentServidor HTTP sin interfaz gráficaEscaneo remoto, despliegues en drones/rovers, integración con terceros
Sparrow DroneIDBasado en web (navegador)Detección de drones FAA RemoteID mediante WiFi y Bluetooth LE
Sparrow Elastic BridgeServicio CLI sin interfaz gráficaIndexación ECS 8.17 de observaciones WiFi/BT en Elasticsearch / OpenSearch

Sparrow Agent y Sparrow DroneID exponen APIs REST JSON que permiten a otras aplicaciones consultar resultados de escaneo, iniciar escaneos, recuperar detecciones de drones e integrar la conciencia inalámbrica/de drones en sus propios flujos de trabajo. Elastic Bridge consume la API REST del agente y envía documentos ECS 8.17 con paneles de Kibana incluidos.


Novedades (abril de 2026)

Esta versión incluye tres mejoras significativas respecto a la anterior:

  • Sparrow Agent: coalescencia de escaneos WiFi de un solo vuelo. Cuando múltiples clientes HTTP (la aplicación DroneID, el puente de Elasticsearch, la GUI) acceden simultáneamente a /wireless/networks/<iface>, el agente anterior lanzaba N llamadas iw scan redundantes que se serializaban en el bloqueo por interfaz, multiplicando la latencia de escaneo por el número de clientes. Ahora la primera solicitud es la "líder" que realmente escanea; las solicitudes concurrentes esperan en un threading.Event y comparten el resultado de la líder. También incluye corrección TOCTOU en la creación de bloqueos y seguridad ante excepciones en los bloqueos por interfaz.
  • Sparrow DroneID — nueva aplicación web para detección de RemoteID FAA mediante WiFi (ASTM F3411 NAN, IEs de proveedor en balizas, protocolo DroneID propietario de DJI) y Bluetooth LE (publicidad Legacy BT4/BT5). Incluye superposiciones de geozonas, alertas multi-estado con integración con Slack, exportación KML, salida Cursor-on-Target, indexación opcional ECS 8.17 a Elasticsearch / OpenSearch (con un espacio de nombres droneid.* personalizado) y una interfaz web responsive multidispositivo. Consulte la sección Sparrow DroneID a continuación.
  • Puente modernizado para Elasticsearch / OpenSearch — el puente sparrow-elastic.py ha sido reescrito para producir documentos ECS 8.17 (antes ECS 1.5), ahora admite tanto Elasticsearch 8.x como OpenSearch 2.x, inicia automáticamente plantillas de índice componibles con políticas de ciclo de vida ILM/ISM y alias de escritura por rotación, realiza enriquecimiento de proveedores OUI y clasificación de dispositivos basada en reglas (con huella digital Fingerbank opcional), y envía cuatro paneles de Kibana incluidos más seis visualizaciones heredadas conservadas. El puente heredado ECS 1.5 se conserva en legacy/sparrow-elastic.py. Consulte .

Sparrow-WiFi (GUI de escritorio)

La aplicación original Sparrow proporciona una GUI integral que sustituye a herramientas como inSSIDer y LinSSID, con capacidades que van mucho más allá del escaneo básico:

  • Escaneo WiFi — descubrimiento de SSID en 2.4 GHz y 5 GHz, intensidad de señal, utilización del canal
  • Seguimiento de fuentes — Modo de caza con altas tasas de muestreo y ventanas de telemetría para localizar fuentes WiFi y Bluetooth
  • Análisis espectral — Superposiciones espectrales en tiempo real en 2.4/5 GHz mediante Ubertooth One o HackRF One
  • Bluetooth — Escaneo de publicidad BLE, detección/publicidad de iBeacon, modo promiscuo de Ubertooth para Classic + LE
  • Agente remoto — Agente sin interfaz gráfica (sparrowwifiagent.py) para escaneo distribuido, operaciones montadas en drones/rovers y despliegues en Raspberry Pi
  • Integración GPS — gpsd, coordenadas estáticas o MAVLink (GPS de dron)
  • Mapas — Visualización de resultados de escaneo con trazas GPS en Google Maps / OpenStreetMap
  • Importar/Exportar — CSV, JSON y salida cruda de iw scan
  • Elasticsearch / OpenSearch — Indexación de datos de escaneo WiFi y Bluetooth conforme a ECS 8.17 con gestión de ciclo de vida ILM/ISM, clasificación de dispositivos, huella digital Fingerbank opcional y paneles de Kibana incluidos
  • Complemento Falcon — Integración con Aircrack-ng para pruebas de penetración (modo monitor, descubrimiento de SSID ocultos, deauth, captura WEP/WPA)

Capturas de pantalla


Sparrow DroneID (Aplicación web)

Un sistema independiente de detección y seguimiento de drones basado en web que decodifica las transmisiones de Identificación Remota (RemoteID) obligatorias por la FAA. Se ejecuta como un servidor HTTP Python con una interfaz de usuario accesible desde cualquier dispositivo de la red.

Capacidades

  • Captura WiFi — Decodifica tramas de acción ASTM F3411 NAN, IEs de proveedor en balizas y DroneID propietario de DJI
  • Captura Bluetooth LE — Decodifica publicidad Legacy ASTM F3411 BT4/BT5 (UUID 0xFFFA)
  • Mapa en tiempo real — Mapa basado en Leaflet con iconos de cuadricópteros, indicadores de rumbo, marcadores de posición del operador y líneas dron-operador
  • Etiquetas de un vistazo — ID del operador y altitud AGL mostrados bajo cada icono de dron en el mapa
  • Ventanas emergentes de detalle — Haga clic en un dron para ver número de serie, ID de registro, ID del operador, tipo, velocidad, rumbo, altitud, rumbo/distancia desde el receptor, estado BVLOS
  • Sistema de alertas — Alertas configurables para nuevos drones, violaciones de altitud, violaciones de velocidad y pérdida de señal con tonos de audio, notificaciones visuales, notificaciones webhook Slack y POSTs JSON opcionales con token portador a una API externa genérica de ingesta de alertas (consulte Alertas basadas en API a continuación)
  • Confirmación de alertas — Flujo de trabajo de tres estados (Activa/Confirmada/Resuelta) con identidad del operador, compartida entre todos los dispositivos conectados
  • Geozonas de aeropuertos — Descarga y visualización automática de aeropuertos cercanos (datos OurAirports) y polígonos de espacio aéreo Prohibido/Restringido de la FAA, almacenados en caché local para funcionamiento sin conexión
  • GPS — Integración con gpsd o coordenadas estáticas configurables
  • Historial y reproducción — Historial de detecciones respaldado por SQLite con reproducción en línea de tiempo y exportación KML
  • Cursor-on-Target (CoT) — Salida CoT multicast para integración con SA
  • Multidispositivo — La interfaz web funciona simultáneamente en escritorio, tablet y teléfono
  • Métrica/Imperial — Soporte completo de preferencias de unidades en toda la interfaz y las alertas

La interfaz web se ejecuta en http://localhost:8097 una vez iniciada. Consulte Instalación a continuación para la configuración, y la referencia de API para acceso programático.

Alertas basadas en API

Además de los webhooks de Slack, Sparrow DroneID puede enviar cada alerta activada a un endpoint genérico externo de ingesta de alertas. El canal está deshabilitado por defecto; configúrelo en Configuración → Alertas → Alertas basadas en API:

  • Habilitar — interruptor de encendido/apagado
  • Raíz del endpoint API — URL raíz completa incluyendo cualquier prefijo de ruta, ej. http://MY_API_HOST:PORT/API_ROOT
  • Dominio — cadena de inquilino opaca que la API receptora utiliza para enrutar alertas
  • Token portador — se envía en el encabezado Authorization: Bearer ...; se oculta en la interfaz una vez almacenado
  • Verificar TLS — desmarque para endpoints con certificados autofirmados o CA privada
  • Probar autenticación — llama al endpoint de verificación del receptor e informa claramente éxito/fracaso
  • Enviar mensaje de prueba — envía una alerta sintética (rule.category: "test", serie TEST-0000) para que el receptor pueda ser probado de extremo a extremo sin esperar un dron real

Contrato del endpoint

Sparrow DroneID realiza dos llamadas contra la URL raíz configurada:

Ambas llamadas envían Authorization: Bearer <token> y Content-Type: application/json.

Forma del payload```json

{ "domain": "", "alert": { "message": "", "observer": { "name": "<operator_name or 'Sparrow DroneID'>", "type": "drone-sensor", "geo": {"location": {"lat": 0.0, "lon": 0.0}} }, "rule": {"name": "", "category": "drone_detection"}, "event": { "severity": 40, "category": "network", "action": "new_drone" }, "labels": { "serial": "", "vendor": "", "ua_type": "", "alert_type": "new_drone | altitude_max | speed_max | signal_lost" }, "source": {"geo": {"location": {"lat": 0.0, "lon": 0.0}}}, "details": { "operator_id": "...", "registration_id": "...", "self_id_text": "...", "mac_address": "...", "protocol": "...", "rssi": -68, "range_m": 1234.5, "bearing_deg": 215.0, "bearing_cardinal": "SW", "speed_mps": 5.2, "direction_deg": 240.0, "altitude_m_agl": 42.0, "detail": "..." } } }

root@kitploit:~
`observer.geo.location` se incluye cuando el receptor tiene una fijación GPS; `source.geo.location` se incluye cuando el dron está transmitiendo una posición. La severidad sigue la convención ECS (menor = más urgente): las advertencias (`new_drone`, `altitude_max`, `speed_max`) son `40`, los eventos informativos (`signal_lost`) son `70`. Los drones marcados como amigos no generan alertas cuando el interruptor "Alertar sobre drones amigos" del lado del operador está desactivado, por lo que tampoco llegan a este endpoint.

Las alertas de prueba sintéticas emitidas por el botón **Enviar mensaje de prueba** usan `rule.category: "test"`, `event.action: "test"`, `event.severity: 70`, y el serial `TEST-0000` para que el receptor pueda reconocerlas y excluirlas de los paneles operativos.

---

## Requisitos del sistema

| Requisito | Sparrow-WiFi (GUI) | Sparrow DroneID (Web) |
|-------------|-------------------|----------------------|
| **SO** | Ubuntu 20.04+, Kali 2020.3+, Debian 11+ | Ubuntu 20.04+, Kali, Debian 11+, Raspberry Pi OS |
| **Python** | 3.8+ | 3.8+ |
| **Root** | Requerido (iw scan) | Requerido (modo monitor, BLE) |
| **Adaptador WiFi** | Cualquiera con soporte `iw` | Capaz de modo monitor (p.ej., rtl8812au, Intel AX200) |
| **Bluetooth** | Opcional (adaptador hci, Ubertooth) | Opcional (cualquier adaptador compatible con BLE para RemoteID) |
| **GPS** | Opcional (gpsd) | Opcional (gpsd o coordenadas estáticas) |
| **Pantalla** | Escritorio X11/Wayland | Funciona sin pantalla (navegador web en cualquier dispositivo) |

---

## Instalación

### Sparrow-WiFi (GUI de escritorio)```bash
git clone https://github.com/ghostop14/sparrow-wifi
cd sparrow-wifi

Paquetes del sistema (Ubuntu 22.04+ / Debian 12+ / Kali rolling):```bash sudo apt install python3-pip python3-pyqt5 python3-pyqt5.qtchart
gpsd gpsd-clients python3-tk python3-setuptools

root@kitploit:~
> **Usuarios de Kali:** PyQt5, PyQtChart y aircrack-ng (para el plugin Falcon) suelen estar preinstalados. Mayormente solo necesitarás `gpsd`, `gpsd-clients` y las dependencias de Python a continuación.

Dependencias de Python &mdash; elige uno de los siguientes enfoques:

**Opción A: Instalación a nivel de sistema con `--break-system-packages`** &mdash; la más simple, se ajusta a cómo se lanzan la GUI/agente (scripts propiedad de root):```bash
# Modern systems (Ubuntu 24.04+, Kali rolling 2023+, Debian 12+) require this
# flag because Python is marked externally-managed (PEP 668). Sparrow runs as
# root anyway, so system-wide install is consistent with how it executes.
sudo pip3 install --break-system-packages -r requirements.txt

Opción B: Entorno virtual — aislado, sin advertencias de pip del sistema, preferido por algunos operadores:```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

Run with sudo using the venv interpreter:

sudo venv/bin/python3 ./sparrow-wifi.py

root@kitploit:~
De cualquier manera, ejecuta:```bash
sudo ./sparrow-wifi.py

Sparrow DroneID (Aplicación Web)```bash

cd sparrow-droneid

System tools — tcpdump for WiFi monitor mode, bluez for BLE RemoteID

sudo apt install tcpdump bluez

Python dependencies — pick one of:

sudo pip3 install --break-system-packages -r sparrow_droneid/requirements.txt

or:

python3 -m venv venv && source venv/bin/activate && pip install -r sparrow_droneid/requirements.txt

Run (either entry point works):

sudo python3 sparrow_droneid/app.py

or: sudo python3 -m sparrow_droneid

root@kitploit:~
Abre `http://localhost:8097` en un navegador. Configura la interfaz de monitorización y el GPS en Ajustes, luego haz clic en Iniciar.

### Elasticsearch / OpenSearch Bridge (opcional)```bash
sudo pip3 install --break-system-packages -r requirements-elastic.txt
# or via venv as above

Ver Integración con Elasticsearch / OpenSearch a continuación.


Notas sobre el adaptador WiFi

La mayoría de los adaptadores WiFi funcionan para escaneo básico. Sparrow-WiFi admite múltiples backends de enumeración de interfaces (iw, iwconfig, nmcli) por lo que funciona en sistemas que pueden no tener iw instalado (por ejemplo, RHEL/Fedora solo con NetworkManager).

Para el modo monitor (requerido por Sparrow DroneID y el plugin Falcon), la compatibilidad de adaptadores y controladores varía:

  • Recomendados: Alfa AWUS036ACH (rtl8812au), Alfa AWUS036AXML (mt7921au)
  • Funcionan bien: Intel AX200/AX210 (iwlwifi) para escaneo; la entrega de tramas en modo monitor varía según la versión del firmware
  • Prueba primero: iw phy <phy> info | grep monitor o iwconfig <iface> para verificar capacidades

Para Sparrow DroneID específicamente, el adaptador debe entregar tramas 802.11 sin procesar en modo monitor. Algunos adaptadores Intel informan que el modo monitor es compatible pero silenciosamente descartan tramas a nivel de firmware. La aplicación detecta esto y te advierte.


Bluetooth

Sparrow-WiFi admite varios modos de escaneo Bluetooth:

Un adaptador Bluetooth estándar integrado o USB es suficiente para el escaneo de anuncios BLE y la detección de drones RemoteID. Prueba tu adaptador con bluetoothctl scan on.

Para el descubrimiento promiscuo completo de dispositivos tanto Classic como BLE, necesitarás un Ubertooth One y Blue Hydra instalados en /opt/bluetooth/blue_hydra. Esto es opcional y no es necesario para el escaneo básico de BLE o RemoteID.


Análisis de espectro

Superposiciones espectrales en tiempo real sobre vistas de canales WiFi:

Ubertooth One

  • Solo 2.4 GHz, resolución de 1 MHz
  • Prueba con: ubertooth-specan-ui

HackRF One

  • 2.4 GHz (resolución de 0.5 MHz) y 5 GHz (resolución de 2 MHz)
  • Una banda a la vez; combínalo con Ubertooth para banda dual simultánea
  • Usa una antena de banda dual adecuada (la antena estándar de HackRF está clasificada solo para 1 GHz)
  • Nota: se necesita adaptador RP-SMA a SMA para la mayoría de antenas WiFi
  • Prueba con: hackrf_sweep


GPS

Ambas aplicaciones usan gpsd para GPS. Configuración rápida:```bash

Install

sudo apt install gpsd gpsd-clients

Test with a USB GPS receiver

sudo gpsd -D 2 -N /dev/ttyUSB0

Verify

xgps # or: cgps -s

root@kitploit:~
Para producción, configure `/etc/default/gpsd` con la ruta de su dispositivo y reinicie el servicio.

Sparrow DroneID también admite coordenadas estáticas (configuradas en Ajustes) para instalaciones en sitios fijos sin receptor GPS.

---

## Agente Remoto e Integración de API

El agente Sparrow (`sparrowwifiagent.py`) es un servidor HTTP sin interfaz gráfica que expone todas las capacidades de escaneo WiFi y Bluetooth de Sparrow como una API REST basada en JSON. Así es como la interfaz gráfica Sparrow-WiFi se comunica con sensores remotos, pero la API está abierta para que cualquier aplicación la use.

**Casos de uso:**
- Desplegar en una Raspberry Pi, dron o rover para escaneo remoto/móvil
- Integrar la conciencia situacional WiFi y Bluetooth en sus propias aplicaciones
- Alimentar datos de escaneo en SIEM, paneles o tuberías de alerta
- Automatizar el escaneo con scripts (activar escaneos, obtener resultados mediante curl/Python/etc.)

Sparrow DroneID también tiene su propia API REST ([referencia de API](https://github.com/ghostop14/sparrow-wifi/blob/master/sparrow-droneid/sparrow_drone_id_api.md)), que brinda acceso programático a detecciones de drones, gestión de alertas, geozonas y configuración del sistema.

### Ejecutando el Agente```bash
sudo ./sparrowwifiagent.py

Escucha en el puerto 8020 por defecto. Opciones principales:

Consulte --help para la lista completa.

Llamadas de ejemplo a la API```bash

List wireless interfaces the agent can scan

curl http://sensor:8020/wireless/interfaces

Trigger a WiFi scan and pull results (multiple concurrent callers

get coalesced into a single iw scan; first caller is the leader)

curl http://sensor:8020/wireless/networks/wlan0

Filter to specific frequencies

curl "http://sensor:8020/wireless/networks/wlan0?frequencies=2412,2437,2462"

Query GPS status

curl http://sensor:8020/gps/status

Start a Bluetooth Low Energy advertisement scan

curl http://sensor:8020/bluetooth/discoverystarta

Pull current BT discovery results

curl http://sensor:8020/bluetooth/discoverystatus

root@kitploit:~
Para Sparrow DroneID, consulte la [referencia de API](https://github.com/ghostop14/sparrow-wifi/blob/master/sparrow-droneid/sparrow_drone_id_api.md) dedicada.

> **Nota de producción:** el agente escucha en todas las interfaces por defecto. Para implementaciones fuera de una red de confianza, use `--allowedips` para restringir los llamantes, ejecute detrás de un proxy inverso con TLS, o vincule solo a una interfaz privada.

---

## Falcon / Aircrack-ng Plugin

Integración avanzada de pruebas de penetración inalámbrica. Proporciona acceso con clic directo a:

- Descubrimiento de SSID ocultos mediante airodump-ng
- Enumeración de estaciones cliente (AP conectado, SSIDs sondeados)
- Desautenticación dirigida y de difusión
- Captura de IV WEP
- Captura de handshake WPA con extracción automática de hash (requiere JTR `wpapcap2john`)

### Requisitos previos```bash
# Kali users: aircrack-ng + JTR are usually pre-installed.
# Ubuntu / Debian / Raspberry Pi OS:
sudo apt install aircrack-ng john

Verifica que airmon-ng, airodump-ng y wpapcap2john estén en tu PATH después de la instalación.

Descargo de responsabilidad

Las pruebas de penetración activas están sujetas a regulaciones legales. Es tu responsabilidad obtener la autorización adecuada antes de utilizar estas herramientas.


Integración con Elasticsearch / OpenSearch

El paquete sparrow_elastic proporciona un puente ECS 8.17 que consulta al agente Sparrow WiFi e indexa masivamente observaciones WiFi y Bluetooth en Elasticsearch 8.x u OpenSearch 2.x. Inicializa automáticamente plantillas de índices componibles, políticas de ciclo de vida ILM/ISM y alias de escritura con rollover; realiza enriquecimiento de proveedores OUI y clasificación de dispositivos basada en reglas (con Fingerbank opcional); e incluye dashboards preconstruidos de Kibana.

Inicio rápido```bash

1. Start the remote agent (it provides scan data via HTTP)

sudo ./sparrowwifiagent.py

2. Install bridge dependencies

sudo pip3 install --break-system-packages -r requirements-elastic.txt

3. Run the bridge

./sparrow-elastic.py --elasticserver http://user:pass@host:9200 --wifiinterface wlan1

4. (Optional) Import the bundled Kibana dashboards

python3 install_dashboards.py --kibana-url http://kibana:5601
--username elastic --password ''

root@kitploit:~
> **Higiene de credenciales:** incrustar `user:pass@` en `--elasticserver` es conveniente, pero la URL se vuelve visible en `ps`, `journalctl` y el historial del shell. Para producción, use los indicadores `--username`/`--password`, variables de entorno (`SPARROW_ES_USERNAME`, `SPARROW_ES_PASSWORD`), o el patrón `EnvironmentFile=` en el ejemplo de unidad systemd incluido.

### Lo que incluye el puente

- **5 paneles de Kibana** &mdash; Conciencia situacional, Patrón de vida, Detección de nuevos dispositivos, Planificación espectral (con mapa de calor de intensidad de señal SSID × Canal) y Conciencia situacional Bluetooth (con panel Vega de dispositivos realmente nuevos y tabla de proximidad de rango estimado)
- **6 visualizaciones preservadas de versiones anteriores** &mdash; clones renombrados de campos de las visualizaciones originales `Sparrow*` para que la memoria muscular anterior siga funcionando
- **Clasificador de dispositivos** &mdash; tabla semilla de 64 reglas que cubre controladores de drones (DJI/Autel/Skydio/Parrot/Yuneec), Clase de dispositivo BT, Apariencia GAP, subtipos de Continuidad de Apple y heurísticas de proveedor OUI
- **Actualización de datos de referencia** &mdash; incluye `manuf` de Wireshark, IDs de empresas BT SIG, UUIDs de servicio, valores de apariencia GAP y tablas de subtipos de Continuidad de Apple, con un hilo en segundo plano de autoactualización cada 30/90 días
- **Verificación de compatibilidad previa al vuelo** &mdash; se niega a escribir en índices heredados ECS 1.5 e imprime pasos claros de remediación en lugar de corromper datos silenciosamente

Para obtener la documentación completa del operador (selección de motor, modos de autenticación, importación de paneles, datos de referencia, referencia completa de la CLI) consulte [sparrow_elastic/README.md](https://github.com/ghostop14/sparrow-wifi/blob/master/sparrow_elastic/README.md).

Los archivos de configuración de muestra están en la raíz del repositorio y en `init.d_scripts/`:

- `sparrow-elastic.conf.example` &mdash; configuración estilo INI con todas las claves admitidas
- `sparrow-elastic.env.example` &mdash; archivo env en formato shell para implementaciones systemd
- `init.d_scripts/sparrow-elastic.service.example` &mdash; plantilla de unidad systemd

### Migración desde el puente heredado ECS 1.5

El puente anterior a 2026 escribía documentos ECS 1.5 en índices nombrados por el operador mediante `--wifiindex` / `--btindex`. El nuevo puente escribe documentos ECS 8.17 en alias de escritura gestionados por rollover (por defecto `sparrow-wifi` / `sparrow-bt`).

**El script heredado se conserva en `legacy/sparrow-elastic.py`** junto con su plantilla `.txt` y archivos de política ILM. Ejecutarlo aún requiere el entorno heredado (configuración manual de plantilla + ILM).

**Cambios de indicadores (con compatibilidad hacia atrás):**

| Indicador heredado   | Nuevo indicador    | Notas                                                  |
|----------------------|--------------------|--------------------------------------------------------|
| `--wifiindex NAME`   | `--wifi-alias NAME`| La ortografía heredada aún se acepta como alias obsoleto. |
| `--btindex NAME`     | `--bt-alias NAME`  | La ortografía heredada aún se acepta como alias obsoleto. |
| `--dont-create-indices` | sin cambios     | Omite bootstrap.                                       |
| `--elasticserver`, `--sparrowagent`, `--sparrowport`, `--wifiinterface`, `--scandelay` | sin cambios | |

Una invocación heredada como:```bash
./sparrow-elastic.py --elasticserver=http://user:pass@host:9200 \
                     --wifiinterface=wlan1 \
                     --wifiindex=sparrowwifi-home \
                     --btindex=sparrowbt-home

todavía analiza y ejecuta — pero el puente ahora se niega a escribir en un índice preexistente cuyo mapeo no lleva el marcador de esquema ECS 8.17, saliendo con tres opciones de remediación (usar un alias diferente, limpiar y reiniciar, o ejecutar el puente heredado). Para una instalación limpia, simplemente omita --wifiindex / --btindex y acepte los nuevos valores predeterminados.


Operaciones con Drones / Rovers

El agente remoto puede desplegarse en una Raspberry Pi montada en un dron o rover para realizar estudios inalámbricos móviles. Probado en un dron Solo 3DR con integración GPS mediante MAVLink.

Grabación Autónoma```bash

On the Pi: auto-start, pull drone GPS, record to local files

sudo python3 ./sparrowwifiagent.py --userpileds --sendannounce --mavlinkgps 3dr --recordinterface wlan0

root@kitploit:~
LED indicators (Raspberry Pi):
1. Ambos apagados &mdash; Inicializando
2. Latido rojo &mdash; GPS presente, no sincronizado
3. Rojo sólido &mdash; GPS sincronizado
4. Verde sólido &mdash; Agente listo, sirviendo solicitudes

Las grabaciones se pueden recuperar a través de la interfaz de gestión de agentes de la GUI de Sparrow-WiFi.

### Notas de configuración de Pi

- Use Raspberry Pi OS (Bookworm o posterior) con Python 3.8+
- Deshabilite el WiFi integrado para habilitar el escaneo de 5 GHz con adaptadores USB: agregue `dtoverlay=disable-wifi` a `/boot/firmware/config.txt` en Bookworm y posteriores, o `/boot/config.txt` en versiones anteriores
- Instale los prerrequisitos: `sudo pip3 install --break-system-packages -r requirements.txt` (o use un venv como en la sección [Instalación](#installation))

---

## Estructura del proyecto```
sparrow-wifi/
  sparrow-wifi.py            # Desktop GUI entry point
  sparrowwifiagent.py        # Headless remote agent
  sparrow-elastic.py         # Elasticsearch / OpenSearch bridge (ECS 8.17)
  install_dashboards.py      # One-shot Kibana dashboard installer
  requirements.txt           # Python dependencies (GUI)
  requirements-elastic.txt   # Python dependencies (Elasticsearch bridge)
  wirelessengine.py          # WiFi scan engine (iw)
  sparrowbluetooth.py        # Bluetooth scan engine
  sparrowhackrf.py           # HackRF spectrum engine
  sparrowmap.py              # Map generation
  plugins/                   # Falcon and other plugins
  sparrow_elastic/           # ES/OS bridge package
    *.py                     # Client abstraction, document builder, classifier...
    templates/               # Composable index templates (ES + OS variants)
    policies/                # ILM (ES) and ISM (OS) lifecycle policy JSON
    dashboards/              # Kibana NDJSON: 5 dashboards + legacy-preserved
    data/                    # Bundled reference data (manuf, BT SIG, classifier rules)
    README.md                # Full bridge operator documentation
  legacy/                    # Pre-2026 ECS 1.5 bridge, frozen for reference
    sparrow-elastic.py       # Legacy bridge (still runnable)
    sparrow_elastic_*.txt    # Legacy index templates and ILM policy
  sparrow-droneid/           # DroneID web application
    sparrow_droneid/
      app.py                 # Entry point (sudo python3 app.py)
      __main__.py            # Allows: sudo python3 -m sparrow_droneid
      requirements.txt       # Python dependencies (DroneID)
      backend/               # API server, capture engine, database
      frontend/              # HTML, JS, CSS (served by backend)
    sparrow_drone_id_api.md  # REST API reference

Licencia

Este proyecto está licenciado bajo los términos incluidos en el repositorio. Consulte el archivo LICENSE para más detalles.

Descargar herramienta
Integración con Elasticsearch / OpenSearch
VerboRutaPropósito
POST{root}/v1/alerts/verifyVerificación de credenciales — cuerpo {"domain": "<configurado>"}. El receptor debe responder 200 {"status":"ok"} en caso de éxito, 401 si el token es incorrecto.
POST{root}/v1/alertsDisparar una alerta — el cuerpo es el JSON a continuación. El receptor debe responder 201 {"alert_id":"..."} en caso de éxito. Las respuestas 503 se reintentan con retroceso exponencial (3 reintentos); 4xx aborta sin reintento. Un 200 {"status":"dropped"} indica que el dominio está deshabilitado en el upstream.
ModoHardwareLo que ves
Escaneo de anuncios BLEAdaptador BT estándarDispositivos LE que están anunciándose activamente
Escaneo promiscuoUbertooth One + Blue HydraTodos los dispositivos BLE y Classic BT en el rango
Anuncios iBeaconAdaptador BT estándarAnuncia tus propios iBeacons
Escaneo RemoteIDAdaptador BT estándarIdentificación de drones conforme a la FAA (solo Sparrow DroneID)
FlagPurpose
--port PORTPuerto de escucha HTTP
--allowedips IP1,IP2Restringir conexiones de cliente
--staticcoord LAT,LON,ALTUsar coordenadas GPS fijas
--mavlinkgps 3drObtener GPS del dron Solo 3DR
--recordinterface IFACEGrabación automática al inicio (sin pantalla)
--userpiledsUsar LEDs de Raspberry Pi para estado
--sendannounceBroadcast UDP para descubrimiento de agente