Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
sparrow-wifi — Analyseur WiFi et Bluetooth basé sur une interface graphique de nouvelle génération pour Linux | Kitploit
Outils/GitHubGitHub/ghostop14/sparrow-wifi
OSINT (Renseignement de Sources Ouvertes)ReconnaissanceAudit Wi-FiSécurité BluetoothCartographie RéseauCollecte d'InformationsSécurité Sans FilAnalyse de Journaux
GitHubghostop14/sparrow-wifi

sparrow-wifi

Analyseur WiFi et Bluetooth basé sur une interface graphique de nouvelle génération pour Linux

Voir le dépôt
1.6k19016il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Sparrow-WiFi

Sparrow-WiFi est un outil de conscience spectrale WiFi et Bluetooth en 2,4 GHz et 5 GHz pour Linux. Il intègre le scan WiFi, la découverte Bluetooth Low Energy et Classic, l'analyse spectrale par radio logicielle (HackRF, Ubertooth), le suivi GPS, la détection de drones FAA RemoteID, les opérations à distance montées sur drone/rover, et l'indexation ECS 8.17 dans Elasticsearch ou OpenSearch en une seule plateforme. Écrit entièrement en Python 3.

Le projet comprend quatre composants qui fonctionnent seuls ou ensemble :

ComposantInterfaceObjectif
Sparrow-WiFiInterface graphique PyQt5Scan WiFi/BT, analyse spectrale, suivi de source, wardriving
Sparrow AgentServeur HTTP sans têteScan à distance, déploiements drone/rover, intégration tierce
Sparrow DroneIDBasé sur navigateurDétection de drones FAA RemoteID via WiFi et Bluetooth LE
Sparrow Elastic BridgeService CLI sans têteIndexation ECS 8.17 des observations WiFi/BT dans Elasticsearch / OpenSearch

Le Sparrow Agent et Sparrow DroneID exposent des API REST JSON qui permettent à d'autres applications d'interroger les résultats de scan, de déclencher des scans, de récupérer les détections de drones, et d'intégrer la conscience sans fil/drone dans leurs propres flux de travail. Le Elastic Bridge consomme l'API REST de l'agent et expédie des documents ECS 8.17 avec des tableaux de bord Kibana inclus.


Nouveautés (Avril 2026)

Cette version couvre trois améliorations significatives par rapport à la version précédente :

  • Sparrow Agent : coalescence de scans WiFi en un seul vol. Lorsque plusieurs clients HTTP (l'application DroneID, le pont Elasticsearch, l'interface graphique) accèdent simultanément à /wireless/networks/<iface>, l'agent lançait auparavant N appels iw scan redondants qui se sérialisaient sur le verrou par interface, multipliant la latence du scan par le nombre de clients. La première requête devient désormais « leader » qui effectue réellement le scan ; les requêtes concurrentes attendent sur un threading.Event et partagent le résultat du leader. Inclut également une correction TOCTOU lors de la création de verrous et une sécurité contre les exceptions sur les verrous par interface.
  • Sparrow DroneID — nouvelle application web pour la détection FAA RemoteID via WiFi (ASTM F3411 NAN, IE de fournisseur de balise, protocole propriétaire DroneID de DJI) et Bluetooth LE (publicité BT4/BT5 Legacy). Inclut les superpositions de géozones, les alertes multi-états avec intégration Slack, l'export KML, la sortie Cursor-on-Target, l'indexation optionnelle ECS 8.17 vers Elasticsearch / OpenSearch (avec un espace de noms personnalisé droneid.*), et une interface web responsive multi-appareils. Voir la section Sparrow DroneID ci-dessous.
  • Pont Elasticsearch / OpenSearch modernisé — le pont sparrow-elastic.py a été réécrit pour produire des documents ECS 8.17 (était ECS 1.5), prend désormais en charge à la fois Elasticsearch 8.x et OpenSearch 2.x, initialise automatiquement les modèles d'index composables avec des politiques de cycle de vie ILM/ISM et des alias d'écriture rollover, effectue un enrichissement des fournisseurs OUI et une classification d'appareils basée sur des règles (avec empreinte digitale optionnelle via Fingerbank), et livre quatre tableaux de bord Kibana inclus plus six visualisations héritées préservées. Le pont ECS 1.5 hérité est conservé dans legacy/sparrow-elastic.py. Voir .

Sparrow-WiFi (Interface graphique de bureau)

L'application originale Sparrow fournit un remplacement complet basé sur une interface graphique pour des outils comme inSSIDer et LinSSID, avec des capacités bien au-delà du scan de base :

  • Scan WiFi — Découverte des SSID en 2,4 GHz et 5 GHz, intensité du signal, utilisation des canaux
  • Suivi de source — Mode de chasse avec des taux d'échantillonnage élevés et des fenêtres de télémétrie pour localiser les sources WiFi et Bluetooth
  • Analyse spectrale — Superpositions spectrales en temps réel en 2,4/5 GHz via Ubertooth One ou HackRF One
  • Bluetooth — Scan des publicités BLE, détection/publicité iBeacon, mode promiscuité Ubertooth pour Classic + LE
  • Agent à distance — Agent sans tête (sparrowwifiagent.py) pour le scan distribué, les opérations montées sur drone/rover, et les déploiements sur Raspberry Pi
  • Intégration GPS — gpsd, coordonnées statiques, ou MAVLink (GPS drone)
  • Cartographie — Visualisation des résultats de scan sur Google Maps / OpenStreetMap avec traces GPS
  • Import/Export — CSV, JSON, et sortie brute de iw scan
  • Elasticsearch / OpenSearch — Indexation conforme ECS 8.17 des données de scan WiFi et Bluetooth avec gestion du cycle de vie ILM/ISM, classification des appareils, empreinte digitale optionnelle Fingerbank, et tableaux de bord Kibana inclus
  • Plugin Falcon — Intégration Aircrack-ng pour les tests de pénétration (mode moniteur, découverte de SSID cachés, déauthentification, capture WEP/WPA)

Captures d'écran


Sparrow DroneID (Application Web)

Un système autonome de détection et de suivi de drones basé sur le web qui décode les diffusions d'identification à distance (RemoteID) mandatées par la FAA. Fonctionne comme un serveur HTTP Python avec une interface utilisateur accessible depuis n'importe quel appareil sur le réseau.

Capacités

  • Capture WiFi — Décode les trames d'action ASTM F3411 NAN, les IE de fournisseur de balise, et le DroneID propriétaire DJI
  • Capture Bluetooth LE — Décode la publicité BT4/BT5 Legacy ASTM F3411 (UUID 0xFFFA)
  • Carte en temps réel — Carte basée sur Leaflet avec icônes de quadcoptère, indicateurs de cap, marqueurs de position de l'opérateur, et lignes drone-opérateur
  • Étiquettes en un coup d'œil — ID opérateur et altitude AGL affichés sous chaque icône de drone sur la carte
  • Fenêtres contextuelles de détail — Cliquez sur un drone pour voir le numéro de série, l'ID d'enregistrement, l'ID opérateur, le type, la vitesse, le cap, l'altitude, le relèvement/distance par rapport au récepteur, le statut BVLOS
  • Système d'alerte — Alertes configurables pour nouveaux drones, violations d'altitude, violations de vitesse, et perte de signal avec tonalités audio, notifications visuelles, notifications webhook Slack, et POST JSON optionnels avec jeton porteur vers une API générique d'ingestion d'alertes externe (voir Alertes basées sur API ci-dessous)
  • Accusé de réception d'alerte — Workflow à trois états (Actif/Accusé/Résolu) avec identité de l'opérateur, partagé sur tous les appareils connectés
  • Géozones d'aéroport — Téléchargement et affichage automatiques des aéroports à proximité (données OurAirports) et des polygones d'espace aérien interdit/restreint FAA, mis en cache localement pour fonctionnement hors ligne
  • GPS — Intégration gpsd ou coordonnées statiques configurables
  • Historique et relecture — Historique des détections avec base SQLite, relecture chronologique et export KML
  • Cursor-on-Target (CoT) — Sortie CoT multicast pour intégration SA
  • Multi-appareils — L'interface web fonctionne simultanément sur ordinateur de bureau, tablette et téléphone
  • Métrique / Impérial — Support complet des préférences d'unité dans toute l'interface et les alertes

L'interface web est accessible à l'adresse http://localhost:8097 une fois démarrée. Voir Installation ci-dessous pour la configuration, et la référence API pour un accès programmatique.

Alertes basées sur API

En plus des webhooks Slack, Sparrow DroneID peut POSTer chaque alerte déclenchée vers un point de terminaison générique d'ingestion d'alertes externe. Le canal est désactivé par défaut ; configurez-le dans Paramètres → Alertes → Alertes basées sur API :

  • Activer — bouton marche/arrêt
  • Racine du point de terminaison API — URL racine complète incluant tout préfixe de chemin, p. ex. http://MY_API_HOST:PORT/API_ROOT
  • Domaine — chaîne de locataire opaque que l'API réceptrice utilise pour router les alertes
  • Jeton porteur — envoyé dans l'en-tête Authorization: Bearer ... ; masqué dans l'interface une fois stocké
  • Vérifier TLS — décochez pour les points de terminaison auto-signés ou à autorité de certification privée
  • Tester l'authentification — appelle le point de terminaison de vérification du récepteur et indique clairement succès/échec
  • Envoyer un message de test — POSTe une alerte synthétique (rule.category: "test", série TEST-0000) pour que le récepteur puisse être testé de bout en bout sans attendre un vrai drone

Contrat du point de terminaison

Sparrow DroneID effectue deux appels vers l'URL racine configurée :

Les deux appels envoient Authorization: Bearer <token> et Content-Type: application/json.

Format de la charge utile```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` est inclus lorsque le récepteur a une fixation GPS ; `source.geo.location` est inclus lorsque le drone diffuse une position. La sévérité suit la convention ECS (plus bas = plus urgent) : les avertissements (`new_drone`, `altitude_max`, `speed_max`) sont `40`, les événements informatifs (`signal_lost`) sont `70`. Les drones marqués comme amis ne déclenchent pas d'alertes lorsque le bouton « Alerter sur les drones amis » côté opérateur est désactivé, ils n'atteignent donc pas non plus ce point de terminaison.

Les alertes de test synthétiques émises par le bouton **Envoyer un message de test** utilisent `rule.category: "test"`, `event.action: "test"`, `event.severity: 70`, et le numéro de série `TEST-0000` afin que le récepteur puisse les reconnaître et les exclure des tableaux de bord opérationnels.

---

## Configuration requise

| Exigence | Sparrow-WiFi (GUI) | Sparrow DroneID (Web) |
|-------------|-------------------|----------------------|
| **Système d’exploitation** | Ubuntu 20.04+, Kali 2020.3+, Debian 11+ | Ubuntu 20.04+, Kali, Debian 11+, Raspberry Pi OS |
| **Python** | 3.8+ | 3.8+ |
| **Root** | Required (iw scan) | Required (monitor mode, BLE) |
| **Adaptateur WiFi** | Any with `iw` support | Monitor-mode capable (e.g., rtl8812au, Intel AX200) |
| **Bluetooth** | Optional (hci adapter, Ubertooth) | Optional (any BLE-capable adapter for RemoteID) |
| **GPS** | Optional (gpsd) | Optional (gpsd or static coordinates) |
| **Affichage** | X11/Wayland desktop | Headless OK (web browser on any device) |

---

## Installation

### Sparrow-WiFi (Interface graphique bureau)```bash
git clone https://github.com/ghostop14/sparrow-wifi
cd sparrow-wifi

Paquets système (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:~
> **Utilisateurs de Kali:** PyQt5, PyQtChart et aircrack-ng (pour le plugin Falcon) sont généralement préinstallés. Vous aurez surtout besoin de `gpsd`, `gpsd-clients` et des dépendances Python ci-dessous.

Dépendances Python &mdash; choisissez l'une des approches suivantes:

**Option A: Installation système avec `--break-system-packages`** &mdash; la plus simple, correspond à la manière dont l'interface graphique/l'agent sont lancés (scripts appartenant à 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

Option B : Environnement virtuel — isolé, aucun avertissement pip système, préféré par certains opérateurs :```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:~
Dans les deux cas, exécutez :```bash
sudo ./sparrow-wifi.py

Sparrow DroneID (Application 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:~
Ouvrez `http://localhost:8097` dans un navigateur. Configurez l'interface de surveillance et le GPS dans Paramètres, puis cliquez sur Démarrer.

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

Voir Intégration Elasticsearch / OpenSearch ci-dessous.


Notes sur les adaptateurs WiFi

La plupart des adaptateurs WiFi fonctionnent pour les scans de base. Sparrow-WiFi prend en charge plusieurs backends d'énumération d'interfaces (iw, iwconfig, nmcli) afin de fonctionner sur des systèmes qui n'ont pas iw installé (par exemple, RHEL/Fedora avec NetworkManager uniquement).

Pour le mode moniteur (requis par Sparrow DroneID et le plugin Falcon), la prise en charge de l'adaptateur et du pilote varie :

  • Recommandé : Alfa AWUS036ACH (rtl8812au), Alfa AWUS036AXML (mt7921au)
  • Fonctionne bien : Intel AX200/AX210 (iwlwifi) pour le scan ; la livraison des trames en mode moniteur varie selon la version du firmware
  • Testez d'abord : iw phy <phy> info | grep monitor ou iwconfig <iface> pour vérifier les capacités

Pour Sparrow DroneID en particulier, l'adaptateur doit délivrer des trames 802.11 brutes en mode moniteur. Certains adaptateurs Intel signalent le mode moniteur comme pris en charge mais suppriment silencieusement les trames au niveau du firmware. L'application le détecte et vous en avertit.


Bluetooth

Sparrow-WiFi prend en charge plusieurs modes de scan Bluetooth :

Un adaptateur Bluetooth standard intégré ou USB suffit pour le scan des annonces BLE et la détection des drones RemoteID. Testez votre adaptateur avec bluetoothctl scan on.

Pour la découverte promiscuité complète des appareils Classic et BLE, vous aurez besoin d'un Ubertooth One et de Blue Hydra installés dans /opt/bluetooth/blue_hydra. Ceci est optionnel et n'est pas requis pour les scans BLE ou RemoteID de base.


Analyse spectrale

Superpositions spectrales en temps réel sur les vues des canaux WiFi :

Ubertooth One

  • 2,4 GHz uniquement, résolution 1 MHz
  • Test avec : ubertooth-specan-ui

HackRF One

  • 2,4 GHz (résolution 0,5 MHz) et 5 GHz (résolution 2 MHz)
  • Une bande à la fois ; combinez avec Ubertooth pour une double bande simultanée
  • Utilisez une antenne double bande appropriée (l'antenne standard HackRF est évaluée jusqu'à 1 GHz uniquement)
  • Remarque : un adaptateur RP-SMA vers SMA est nécessaire pour la plupart des antennes WiFi
  • Test avec : hackrf_sweep


GPS

Les deux applications utilisent gpsd pour le GPS. Configuration rapide :```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:~
Pour la production, configurez `/etc/default/gpsd` avec le chemin de votre périphérique et redémarrez le service.

Sparrow DroneID prend également en charge les coordonnées statiques (configurées dans les Paramètres) pour les installations en site fixe sans récepteur GPS.

---

## Agent distant et intégration API

L'agent Sparrow (`sparrowwifiagent.py`) est un serveur HTTP sans interface qui expose toutes les capacités de balayage WiFi et Bluetooth de Sparrow sous forme d'une API REST basée sur JSON. C'est ainsi que l'interface graphique Sparrow-WiFi communique avec les capteurs distants, mais l'API est ouverte à toute application.

**Cas d'utilisation :**
- Déployer sur un Raspberry Pi, un drone ou un rover pour un balayage distant/mobile
- Intégrer la connaissance situationnelle WiFi et Bluetooth dans vos propres applications
- Alimenter les données de balayage dans un SIEM, des tableaux de bord ou des pipelines d'alerte
- Automatiser le balayage avec des scripts (déclencher des balayages, récupérer les résultats via curl/Python/etc.)

Sparrow DroneID possède également sa propre API REST ([référence API](https://github.com/ghostop14/sparrow-wifi/blob/master/sparrow-droneid/sparrow_drone_id_api.md)), offrant un accès programmatique aux détections de drones, à la gestion des alertes, aux géozones et à la configuration du système.

### Exécution de l'agent```bash
sudo ./sparrowwifiagent.py

Écoute sur le port 8020 par défaut. Options clés :

Voir --help pour la liste complète.

Exemples d'appels 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:~
Pour Sparrow DroneID, consultez la [référence API](https://github.com/ghostop14/sparrow-wifi/blob/master/sparrow-droneid/sparrow_drone_id_api.md) dédiée.

> **Remarque pour la production :** l'agent écoute par défaut sur toutes les interfaces. Pour les déploiements en dehors d'un réseau de confiance, utilisez `--allowedips` pour restreindre les appelants, exécutez derrière un proxy inverse avec TLS, ou liez-vous à une interface privée uniquement.

---

## Plugin Falcon / Aircrack-ng

Intégration avancée de tests de pénétration sans fil. Offre un accès point-and-click à :

- Découverte de SSID caché via airodump-ng
- Énumération des stations clientes (AP connecté, SSID sondés)
- Désauthentification ciblée et broadcast
- Capture d'IV WEP
- Capture de handshake WPA avec extraction automatique de hash (nécessite JTR `wpapcap2john`)

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

Verify airmon-ng, airodump-ng, and wpapcap2john are on your PATH after install.

Avertissement

Les tests de pénétration actifs sont soumis à des réglementations légales. Il est de votre responsabilité d'obtenir une autorisation appropriée avant d'utiliser ces outils.


Intégration Elasticsearch / OpenSearch

Le package sparrow_elastic fournit un pont ECS 8.17 qui interroge l'agent Sparrow WiFi et indexe en masse les observations WiFi et Bluetooth dans Elasticsearch 8.x ou OpenSearch 2.x. Il amorce automatiquement des modèles d'index composables, des politiques de cycle de vie ILM/ISM et des alias d'écriture de rollover ; effectue un enrichissement des fournisseurs OUI et une classification des appareils basée sur des règles (avec empreinte digitale Fingerbank en option) ; et fournit des tableaux de bord Kibana préconstruits.

Démarrage rapide```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:~
> **Hygiène des identifiants :** intégrer `user:pass@` dans `--elasticserver` est pratique mais l'URL devient visible dans `ps`, `journalctl` et l'historique du shell. Pour la production, utilisez les options `--username`/`--password`, les variables d'environnement (`SPARROW_ES_USERNAME`, `SPARROW_ES_PASSWORD`) ou le modèle `EnvironmentFile=` dans l'exemple d'unité systemd fourni.

### Ce que le pont intègre

- **5 tableaux de bord Kibana** &mdash; Sensibilisation situationnelle, Schéma de vie, Détection de nouveaux appareils, Planification spectrale (avec carte de champs d'intensité SSID × canal) et Sensibilisation situationnelle Bluetooth (avec panneau Vega pour nouveaux appareils et table de proximité par distance estimée)
- **6 visualisations conservées de l'ancienne version** &mdash; clones renommés des visualisations originales `Sparrow*` pour que les anciens réflexes continuent de fonctionner
- **Classifieur d'appareils** &mdash; table de base de 64 règles couvrant les contrôleurs de drones (DJI/Autel/Skydio/Parrot/Yuneec), la classe d'appareil BT, l'apparence GAP, les sous-types Apple Continuity et les heuristiques de fournisseur OUI
- **Actualisation des données de référence** &mdash; `manuf` de Wireshark, identifiants de société BT SIG, UUIDs de service, valeurs d'apparence GAP et tables de sous-types Apple Continuity, avec un thread d'auto‑actualisation en arrière‑plan de 30/90 jours
- **Vérification de compatibilité pré‑vol** &mdash; refuse d'écrire dans des index ECS 1.5 hérités et affiche des étapes de correction claires au lieu de corrompre silencieusement les données

Pour la documentation complète de l'opérateur (sélection du moteur, modes d'authentification, importation des tableaux de bord, données de référence, référence complète de l'interface en ligne de commande), consultez [sparrow_elastic/README.md](https://github.com/ghostop14/sparrow-wifi/blob/master/sparrow_elastic/README.md).

Les fichiers de configuration d'exemple se trouvent à la racine du dépôt et dans `init.d_scripts/` :

- `sparrow-elastic.conf.example` &mdash; Configuration au format INI avec toutes les clés prises en charge
- `sparrow-elastic.env.example` &mdash; Fichier d'environnement au format shell pour les déploiements systemd
- `init.d_scripts/sparrow-elastic.service.example` &mdash; Modèle d'unité systemd

### Migration depuis le pont ECS 1.5 hérité

Le pont antérieur à 2026 écrivait des documents ECS 1.5 dans des index nommés par l'opérateur via `--wifiindex` / `--btindex`. Le nouveau pont écrit des documents ECS 8.17 dans des alias d'écriture gérés par rotation (par défaut `sparrow-wifi` / `sparrow-bt`).

**Le script hérité est conservé dans `legacy/sparrow-elastic.py`** accompagné de son modèle `.txt` et des fichiers de politique ILM. Son exécution nécessite toujours l'environnement hérité (modèle manuel + configuration ILM).

**Modifications des options (avec rétrocompatibilité) :**

| Option héritée         | Nouvelle option       | Notes                                               |
|-----------------------|-----------------------|-----------------------------------------------------|
| `--wifiindex NAME`    | `--wifi-alias NAME`   | L'orthographe héritée est toujours acceptée comme alias déprécié. |
| `--btindex NAME`      | `--bt-alias NAME`     | L'orthographe héritée est toujours acceptée comme alias déprécié. |
| `--dont-create-indices` | inchangé            | Ignore le bootstrap.                                |
| `--elasticserver`, `--sparrowagent`, `--sparrowport`, `--wifiinterface`, `--scandelay` | inchangé | |

Une invocation héritée comme :```bash
./sparrow-elastic.py --elasticserver=http://user:pass@host:9200 \
                     --wifiinterface=wlan1 \
                     --wifiindex=sparrowwifi-home \
                     --btindex=sparrowbt-home

analyse et s'exécute toujours — mais le pont refuse désormais d'écrire dans un index préexistant dont le mapping ne porte pas le marqueur de schéma ECS 8.17, se terminant avec trois options de remédiation (utiliser un alias différent, effacer et re-bootstrap, ou exécuter le pont hérité). Pour une installation propre, il suffit d'omettre --wifiindex / --btindex et d'accepter les nouveaux paramètres par défaut.


Opérations Drone / Rover

L'agent distant peut être déployé sur un Raspberry Pi monté sur un drone ou un rover pour des relevés sans fil mobiles. Testé sur un drone Solo 3DR avec intégration GPS via MAVLink.

Enregistrement Autonome```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:~
Indicateurs LED (Raspberry Pi) :
1. Les deux éteints &mdash; Initialisation
2. Rouge clignotant &mdash; GPS présent, non synchronisé
3. Rouge fixe &mdash; GPS synchronisé
4. Vert fixe &mdash; Agent prêt, traite les requêtes

Les enregistrements peuvent être récupérés via l'interface de gestion des agents de Sparrow-WiFi GUI.

### Notes de configuration du Pi

- Utilisez Raspberry Pi OS (Bookworm ou ultérieur) avec Python 3.8+
- Désactivez le WiFi intégré pour activer le scan 5 GHz avec des adaptateurs USB : ajoutez `dtoverlay=disable-wifi` à `/boot/firmware/config.txt` sur Bookworm et ultérieur, ou `/boot/config.txt` sur les anciennes versions
- Installez les prérequis : `sudo pip3 install --break-system-packages -r requirements.txt` (ou utilisez un venv comme dans la section [Installation](#installation))

---

## Structure du projet```
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

Licence

Ce projet est sous licence selon les termes inclus dans le dépôt. Consultez le fichier LICENSE pour plus de détails.

Télécharger l’outil
Intégration Elasticsearch / OpenSearch
VerbeCheminObjectif
POST{root}/v1/alerts/verifyVérification des identifiants — corps {"domain": "<configuré>"}. Le récepteur doit répondre 200 {"status":"ok"} en cas de succès, 401 en cas de mauvais jeton.
POST{root}/v1/alertsDéclencher une alerte — le corps est le JSON ci-dessous. Le récepteur doit répondre 201 {"alert_id":"..."} en cas de succès. Les réponses 503 sont réessayées avec un backoff exponentiel (3 tentatives) ; les 4xx annulent sans réessai. Un 200 {"status":"dropped"} indique que le domaine est désactivé en amont.
ModeMatérielCe que vous voyez
Scan des annonces BLEAdaptateur BT standardAppareils LE qui annoncent activement
Scan promiscuitéUbertooth One + Blue HydraTous les appareils BLE et Bluetooth Classic à portée
Annonce iBeaconAdaptateur BT standardAnnoncez vos propres iBeacons
Scan RemoteIDAdaptateur BT standardIdentification de drone conforme à la FAA (Sparrow DroneID uniquement)
DrapeauObjectif
--port PORTPort d'écoute HTTP
--allowedips IP1,IP2Restreindre les connexions client
--staticcoord LAT,LON,ALTUtiliser des coordonnées GPS fixes
--mavlinkgps 3drRécupérer le GPS du drone Solo 3DR
--recordinterface IFACEEnregistrement automatique au démarrage (sans écran)
--userpiledsUtiliser les LED du Raspberry Pi pour le statut
--sendannounceDiffusion UDP pour la découverte d'agents