
लिनक्स के लिए नेक्स्ट-जनरेशन GUI-आधारित वाईफाई और ब्लूटूथ विश्लेषक
स्पैरो-वाईफाई लिनक्स के लिए 2.4 GHz और 5 GHz वाईफाई और ब्लूटूथ स्पेक्ट्रल जागरूकता उपकरण है। यह वाईफाई स्कैनिंग, ब्लूटूथ लो एनर्जी और क्लासिक डिस्कवरी, सॉफ्टवेयर-परिभाषित रेडियो स्पेक्ट्रम विश्लेषण (हैकआरएफ, उबर्टूथ), जीपीएस ट्रैकिंग, एफएए रिमोटआईडी ड्रोन डिटेक्शन, ड्रोन/रोवर-माउंटेड रिमोट ऑपरेशन, और ईसीएस 8.17 इंडेक्सिंग को एक ही प्लेटफॉर्म में एकीकृत करता है। पूरी तरह से पायथन 3 में लिखा गया है।
परियोजना में चार घटक शामिल हैं जो अकेले या एक साथ काम करते हैं:
| घटक | इंटरफ़ेस | उद्देश्य |
|---|---|---|
| Sparrow-WiFi | पायक्यूटी5 डेस्कटॉप जीयूआई | वाईफाई/बीटी स्कैनिंग, स्पेक्ट्रम विश्लेषण, स्रोत ट्रैकिंग, वार्ड्राइविंग |
| Sparrow एजेंट | हेडलेस HTTP सर्वर | रिमोट स्कैनिंग, ड्रोन/रोवर तैनाती, तृतीय-पक्ष एकीकरण |
| Sparrow ड्रोनआईडी | वेब-आधारित (ब्राउज़र) | वाईफाई और ब्लूटूथ LE के माध्यम से एफएए रिमोटआईडी ड्रोन डिटेक्शन |
| Sparrow इलास्टिक ब्रिज | हेडलेस CLI सेवा | ईसीएस 8.17 इंडेक्सिंग द्वारा वाईफाई/बीटी अवलोकनों को एलास्टिकसर्च/ओपनसर्च में भेजना |
Sparrow एजेंट और Sparrow ड्रोनआईडी JSON REST API को उजागर करते हैं जो अन्य अनुप्रयोगों को स्कैन परिणामों को क्वेरी करने, स्कैन ट्रिगर करने, ड्रोन डिटेक्शन प्राप्त करने और अपने स्वयं के कार्यप्रवाहों में वायरलेस/ड्रोन जागरूकता को एकीकृत करने की अनुमति देते हैं। इलास्टिक ब्रिज एजेंट के REST API का उपभोग करता है और बंडल किबाना डैशबोर्ड के साथ ईसीएस 8.17 दस्तावेज़ भेजता है।
इस रिलीज़ में पिछले संस्करण पर तीन महत्वपूर्ण सुधार शामिल हैं:
/wireless/networks/<iface> पर एक साथ हिट करते हैं, तो एजेंट पहले N अनावश्यक iw scan कॉल शुरू करता था जो प्रति-इंटरफ़ेस लॉक पर सीरियलाइज़ होते थे, जिससे स्कैन विलंबता क्लाइंट की संख्या से गुणा हो जाती थी। पहला अनुरोध अब "लीडर" है जो वास्तव में स्कैन करता है; समवर्ती अनुरोध threading.Event की प्रतीक्षा करते हैं और लीडर के परिणाम को साझा करते हैं। इसमें लॉक-निर्माण TOCTOU फिक्स और प्रति-इंटरफ़ेस लॉक पर अपवाद-सुरक्षा भी शामिल है।droneid.* नेमस्पेस के साथ), और एक मल्टी-डिवाइस रिस्पॉन्सिव वेब यूआई शामिल है। नीचे Sparrow ड्रोनआईडी अनुभाग देखें।sparrow-elastic.py ब्रिज को ईसीएस 8.17 दस्तावेज़ (पहले ईसीएस 1.5 था) उत्पन्न करने के लिए फिर से लिखा गया है, अब Elasticsearch 8.x और OpenSearch 2.x दोनों का समर्थन करता है, कम्पोज़ेबल इंडेक्स टेम्पलेट्स को ILM/ISM लाइफसाइकिल पॉलिसियों और रोलओवर राइट एलियासेस के साथ स्वचालित रूप से बूटस्ट्रैप करता है, OUI विक्रेता संवर्धन और नियम-आधारित डिवाइस वर्गीकरण (वैकल्पिक Fingerbank फिंगरप्रिंटिंग के साथ) करता है, और चार बंडल किबाना डैशबोर्ड के साथ छह लिगेसी-संरक्षित विज़ुअलाइज़ेशन भेजता है। लिगेसी ईसीएस 1.5 ब्रिज को legacy/sparrow-elastic.py पर संरक्षित किया गया है। Elasticsearch / OpenSearch एकीकरण देखें।मूल Sparrow एप्लिकेशन एक व्यापक GUI-आधारित प्रतिस्थापन प्रदान करता है inSSIDer और LinSSID जैसे उपकरणों के लिए, जिसमें बुनियादी स्कैनिंग से परे क्षमताएँ हैं:
sparrowwifiagent.py) वितरित स्कैनिंग, ड्रोन/रोवर-माउंटेड ऑपरेशन और रास्पबेरी पाई तैनाती के लिएiw scan आउटपुट
एक स्टैंडअलोन वेब-आधारित ड्रोन डिटेक्शन और ट्रैकिंग सिस्टम जो FAA-अनिवार्य रिमोट आइडेंटिफिकेशन (RemoteID) प्रसारणों को डिकोड करता है। पायथन HTTP सर्वर के रूप में चलता है जिसमें ब्राउज़र-आधारित UI होता है जो नेटवर्क पर किसी भी डिवाइस से सुलभ होता है।
वेब UI शुरू होने पर http://localhost:8097 पर चलता है। सेटअप के लिए नीचे इंस्टॉलेशन देखें, और प्रोग्रामेटिक पहुँच के लिए API संदर्भ देखें।
स्लैक वेबहुक के अतिरिक्त, Sparrow ड्रोनआईडी प्रत्येक सक्रिय अलर्ट को एक सामान्य बाहरी अलर्ट-इंगेस्ट एंडपॉइंट पर POST कर सकता है। यह चैनल डिफ़ॉल्ट रूप से अक्षम है; इसे सेटिंग्स → अलर्ट → API-आधारित अलर्टिंग में कॉन्फ़िगर करें:
http://MY_API_HOST:PORT/API_ROOTAuthorization: Bearer ... हेडर में भेजा जाता है; संग्रहीत होने पर UI में मास्क किया जाता हैrule.category: "test", सीरियल TEST-0000) ताकि रिसीवर का एंड-टू-एंड परीक्षण वास्तविक ड्रोन की प्रतीक्षा किए बिना किया जा सकेSparrow ड्रोनआईडी कॉन्फ़िगर किए गए रूट URL के विरुद्ध दो कॉल करता है:
दोनों कॉल Authorization: Bearer <token> और Content-Type: application/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": "..." } } }
`observer.geo.location` शामिल किया जाता है जब रिसीवर के पास GPS फिक्स होता है; `source.geo.location` शामिल किया जाता है जब ड्रोन स्थान प्रसारित कर रहा होता है। गंभीरता ECS सम्मेलन का अनुसरण करती है (कम = अधिक तत्काल): चेतावनियाँ (`new_drone`, `altitude_max`, `speed_max`) `40` हैं, सूचनात्मक घटनाएँ (`signal_lost`) `70` हैं। मैत्री-टैग किए गए ड्रोन अलर्ट नहीं भेजते जब ऑपरेटर-पक्ष का "Alert on Friendly drones" टॉगल बंद हो, इसलिए वे इस एंडपॉइंट पर भी नहीं पहुँचते।
**Send Test Message** बटन द्वारा उत्सर्जित सिंथेटिक परीक्षण अलर्ट `rule.category: "test"`, `event.action: "test"`, `event.severity: 70`, और सीरियल `TEST-0000` का उपयोग करते हैं ताकि रिसीवर उन्हें पहचान सके और परिचालन डैशबोर्ड से बाहर कर सके।
---
## सिस्टम आवश्यकताएँ
| आवश्यकता | Sparrow-WiFi (GUI) | Sparrow DroneID (Web) |
|-------------|-------------------|----------------------|
| **OS** | Ubuntu 20.04+, Kali 2020.3+, Debian 11+ | Ubuntu 20.04+, Kali, Debian 11+, Raspberry Pi OS |
| **Python** | 3.8+ | 3.8+ |
| **Root** | आवश्यक (iw स्कैन) | आवश्यक (मॉनिटर मोड, BLE) |
| **WiFi एडाप्टर** | कोई भी `iw` समर्थन वाला | मॉनिटर-मोड सक्षम (जैसे, rtl8812au, Intel AX200) |
| **Bluetooth** | वैकल्पिक (hci एडाप्टर, Ubertooth) | वैकल्पिक (RemoteID के लिए कोई भी BLE-सक्षम एडाप्टर) |
| **GPS** | वैकल्पिक (gpsd) | वैकल्पिक (gpsd या स्थिर निर्देशांक) |
| **Display** | X11/Wayland डेस्कटॉप | हेडलेस ठीक है (किसी भी डिवाइस पर वेब ब्राउज़र) |
---
## स्थापना
### Sparrow-WiFi (डेस्कटॉप GUI)```bash
git clone https://github.com/ghostop14/sparrow-wifi
cd sparrow-wifi
सिस्टम पैकेज (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
> **Kali उपयोगकर्ता:** PyQt5, PyQtChart, और aircrack-ng (Falcon प्लगइन के लिए) आमतौर पर पहले से इंस्टॉल होते हैं। आपको अधिकतर केवल `gpsd`, `gpsd-clients`, और नीचे दिए गए Python डिपेंडेंसी की आवश्यकता होगी।
Python डिपेंडेंसी — कोई भी तरीका चुनें:
**विकल्प A: `--break-system-packages` के साथ सिस्टम-व्यापी इंस्टॉल** — सबसे सरल, GUI/एजेंट कैसे लॉन्च होते हैं (रूट-स्वामित्व वाली स्क्रिप्ट) के अनुकूल:```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
विकल्प B: वर्चुअल वातावरण — पृथक, कोई सिस्टम pip चेतावनी नहीं, कुछ ऑपरेटरों द्वारा पसंद किया जाता है:```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
sudo venv/bin/python3 ./sparrow-wifi.py
किसी भी तरह, चलाएँ:```bash
sudo ./sparrow-wifi.py
cd sparrow-droneid
sudo apt install tcpdump bluez
sudo pip3 install --break-system-packages -r sparrow_droneid/requirements.txt
python3 -m venv venv && source venv/bin/activate && pip install -r sparrow_droneid/requirements.txt
sudo python3 sparrow_droneid/app.py
ब्राउज़र में `http://localhost:8097` खोलें। सेटिंग्स में मॉनिटर इंटरफ़ेस और GPS कॉन्फ़िगर करें, फिर Start पर क्लिक करें।
### Elasticsearch / OpenSearch Bridge (वैकल्पिक)```bash
sudo pip3 install --break-system-packages -r requirements-elastic.txt
# or via venv as above
See Elasticsearch / OpenSearch Integration नीचे।
अधिकांश वाई-फ़ाई एडाप्टर बुनियादी स्कैनिंग के लिए काम करते हैं। Sparrow-WiFi कई इंटरफ़ेस गणना बैकएंड (iw, iwconfig, nmcli) का समर्थन करता है, इसलिए यह उन सिस्टमों पर काम करता है जिनमें iw स्थापित नहीं हो सकता (जैसे, केवल NetworkManager के साथ RHEL/Fedora)।
मॉनिटर मोड के लिए (Sparrow DroneID और Falcon प्लगइन द्वारा आवश्यक), एडाप्टर और ड्राइवर समर्थन भिन्न होता है:
iw phy <phy> info | grep monitor या iwconfig <iface> क्षमताओं की पुष्टि करने के लिएविशेष रूप से Sparrow DroneID के लिए, एडाप्टर को मॉनिटर मोड में कच्चे 802.11 फ्रेम वितरित करने होंगे। कुछ Intel एडाप्टर मॉनिटर मोड को समर्थित बताते हैं लेकिन फर्मवेयर स्तर पर चुपचाप फ्रेम छोड़ देते हैं। एप्लिकेशन इसका पता लगाता है और आपको चेतावनी देता है।
Sparrow-WiFi कई ब्लूटूथ स्कैनिंग मोड का समर्थन करता है:
मानक निर्मित या USB ब्लूटूथ एडाप्टर BLE विज्ञापन स्कैनिंग और RemoteID ड्रोन का पता लगाने के लिए पर्याप्त है। अपने एडाप्टर का परीक्षण bluetoothctl scan on से करें।
क्लासिक और BLE दोनों उपकरणों की पूर्ण प्रोमिस्क्युअस खोज के लिए, आपको /opt/bluetooth/blue_hydra में स्थापित एक Ubertooth One और Blue Hydra की आवश्यकता होगी। यह वैकल्पिक है और बुनियादी BLE या RemoteID स्कैनिंग के लिए आवश्यक नहीं है।
वाई-फ़ाई चैनल दृश्यों के ऊपर रीयल-टाइम स्पेक्ट्रल ओवरले:
ubertooth-specan-uihackrf_sweep
दोनों एप्लिकेशन GPS के लिए gpsd का उपयोग करते हैं। त्वरित सेटअप:```bash
sudo apt install gpsd gpsd-clients
sudo gpsd -D 2 -N /dev/ttyUSB0
xgps # or: cgps -s
प्रोडक्शन के लिए, `/etc/default/gpsd` को अपने डिवाइस पथ के साथ कॉन्फ़िगर करें और सेवा को पुनरारंभ करें।
Sparrow DroneID स्थिर निर्देशांक (Settings में कॉन्फ़िगर किया गया) भी सपोर्ट करता है, बिना GPS रिसीवर के फिक्स्ड-साइट इंस्टॉलेशन के लिए।
---
## रिमोट एजेंट और API इंटीग्रेशन
Sparrow एजेंट (`sparrowwifiagent.py`) एक हेडलेस HTTP सर्वर है जो Sparrow की सभी WiFi और Bluetooth स्कैनिंग क्षमताओं को JSON-आधारित REST API के रूप में उजागर करता है। इसी तरह Sparrow-WiFi GUI रिमोट सेंसर के साथ संचार करता है, लेकिन API किसी भी एप्लिकेशन के उपयोग के लिए खुला है।
**उपयोग के मामले:**
- रिमोट/मोबाइल स्कैनिंग के लिए Raspberry Pi, ड्रोन या रोवर पर तैनात करें
- अपने एप्लिकेशन में WiFi और Bluetooth स्थितिजन्य जागरूकता को एकीकृत करें
- स्कैन डेटा को SIEM, डैशबोर्ड या अलर्टिंग पाइपलाइनों में फीड करें
- स्क्रिप्ट के साथ स्कैनिंग को स्वचालित करें (स्कैन ट्रिगर करें, कर्ल/Python/आदि के माध्यम से परिणाम प्राप्त करें)
Sparrow DroneID का अपना REST API भी है ([API संदर्भ](https://github.com/ghostop14/sparrow-wifi/blob/HEAD/sparrow-droneid/sparrow_drone_id_api.md)), जो ड्रोन डिटेक्शन, अलर्ट प्रबंधन, जियोज़ोन और सिस्टम कॉन्फ़िगरेशन तक प्रोग्रामेटिक एक्सेस प्रदान करता है।
### एजेंट चलाना```bash
sudo ./sparrowwifiagent.py
डिफ़ॉल्ट रूप से पोर्ट 8020 पर सुनता है। मुख्य विकल्प:
पूरी सूची के लिए --help देखें।
curl http://sensor:8020/wireless/interfaces
curl http://sensor:8020/wireless/networks/wlan0
curl "http://sensor:8020/wireless/networks/wlan0?frequencies=2412,2437,2462"
curl http://sensor:8020/gps/status
curl http://sensor:8020/bluetooth/discoverystarta
curl http://sensor:8020/bluetooth/discoverystatus
For Sparrow DroneID, dedicated [API reference](https://github.com/ghostop14/sparrow-wifi/blob/HEAD/sparrow-droneid/sparrow_drone_id_api.md) देखें।
> **उत्पादन नोट:** एजेंट डिफ़ॉल्ट रूप से सभी इंटरफ़ेस पर सुनता है। विश्वसनीय नेटवर्क के बाहर तैनाती के लिए, कॉलर्स को प्रतिबंधित करने हेतु `--allowedips` का उपयोग करें, TLS के साथ रिवर्स प्रॉक्सी के पीछे चलाएँ, या केवल एक निजी इंटरफ़ेस से बाइंड करें।
---
## Falcon / Aircrack-ng Plugin
उन्नत वायरलेस पेनिट्रेशन टेस्टिंग एकीकरण। निम्नलिखित तक पॉइंट-एंड-क्लिक पहुँच प्रदान करता है:
- airodump-ng के माध्यम से हिडन SSID डिस्कवरी
- क्लाइंट स्टेशन एनुमेरेशन (कनेक्टेड AP, प्रोब किए गए SSID)
- लक्षित और ब्रॉडकास्ट डीऑथेंटिकेशन
- WEP IV कैप्चर
- स्वचालित हैश निष्कर्षण के साथ WPA हैंडशेक कैप्चर (JTR `wpapcap2john` आवश्यक है)
### पूर्वापेक्षाएँ```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.
सक्रिय पेनिट्रेशन टेस्टिंग कानूनी नियमों के अधीन है। इन उपकरणों का उपयोग करने से पहले उचित प्राधिकरण प्राप्त करना आपकी जिम्मेदारी है।
sparrow_elastic पैकेज एक ECS 8.17 ब्रिज प्रदान करता है जो Sparrow WiFi एजेंट को पोल करता है और WiFi और Bluetooth अवलोकनों को Elasticsearch 8.x या OpenSearch 2.x में बल्क-इंडेक्स करता है। यह स्वचालित रूप से कम्पोज़ेबल इंडेक्स टेम्पलेट्स, ILM/ISM लाइफसाइकिल नीतियां और रोलओवर राइट एलियासेस बूटस्ट्रैप करता है; OUI वेंडर एनरिचमेंट और नियम-आधारित डिवाइस वर्गीकरण (वैकल्पिक Fingerbank फिंगरप्रिंटिंग के साथ) करता है; और पहले से निर्मित Kibana डैशबोर्ड भेजता है।
sudo ./sparrowwifiagent.py
sudo pip3 install --break-system-packages -r requirements-elastic.txt
./sparrow-elastic.py --elasticserver http://user:pass@host:9200 --wifiinterface wlan1
python3 install_dashboards.py --kibana-url http://kibana:5601
--username elastic --password ''
> **क्रेडेंशियल स्वच्छता:** `--elasticserver` में `user:pass@` एम्बेड करना सुविधाजनक है लेकिन URL `ps`, `journalctl` और शेल इतिहास में दिखाई देता है। उत्पादन के लिए, `--username`/`--password` फ़्लैग, पर्यावरण चर (`SPARROW_ES_USERNAME`, `SPARROW_ES_PASSWORD`), या शामिल systemd यूनिट उदाहरण में `EnvironmentFile=` पैटर्न का उपयोग करें।
### ब्रिज के साथ क्या आता है
- **5 Kibana डैशबोर्ड** — स्थितिजन्य जागरूकता, जीवन का पैटर्न, नए उपकरण का पता लगाना, स्पेक्ट्रम योजना (SSID × चैनल सिग्नल-स्ट्रेंथ हीटमैप के साथ), और ब्लूटूथ स्थितिजन्य जागरूकता (वास्तविक-नए-उपकरण Vega पैनल और अनुमानित-सीमा निकटता तालिका के साथ)
- **6 विरासत-संरक्षित विज़ुअलाइज़ेशन** — मूल `Sparrow*` विज़ के फ़ील्ड-नाम बदले गए क्लोन ताकि पुरानी मांसपेशी स्मृति काम करती रहे
- **उपकरण वर्गीकरणकर्ता** — ड्रोन नियंत्रकों (DJI/Autel/Skydio/Parrot/Yuneec), BT क्लास ऑफ़ डिवाइस, GAP अपीयरेंस, Apple कंटिन्यूटी उपप्रकार, और OUI विक्रेता अनुमानों को कवर करने वाली 64-नियम सीड तालिका
- **संदर्भ-डेटा रिफ्रेश** — बंडल किया गया Wireshark `manuf`, BT SIG कंपनी ID, सेवा UUID, GAP अपीयरेंस मान, और Apple कंटिन्यूटी उपप्रकार तालिकाएँ, 30/90-दिवसीय स्व-रिफ्रेश पृष्ठभूमि थ्रेड के साथ
- **प्री-फ़्लाइट संगतता जांच** — लेगसी ECS 1.5 इंडेक्स में लिखने से इनकार करता है और चुपचाप डेटा दूषित करने के बजाय स्पष्ट सुधार कदम प्रिंट करता है
पूर्ण ऑपरेटर दस्तावेज़ीकरण (इंजन चयन, प्रमाणीकरण मोड, डैशबोर्ड आयात, संदर्भ डेटा, पूर्ण CLI संदर्भ) के लिए देखें [sparrow_elastic/README.md](https://github.com/ghostop14/sparrow-wifi/blob/HEAD/sparrow_elastic/README.md)।
नमूना कॉन्फ़िगरेशन फ़ाइलें रिपॉजिटरी रूट और `init.d_scripts/` में हैं:
- `sparrow-elastic.conf.example` — सभी समर्थित कुंजियों के साथ INI-शैली कॉन्फ़िग
- `sparrow-elastic.env.example` — systemd तैनाती के लिए शेल-प्रारूप env फ़ाइल
- `init.d_scripts/sparrow-elastic.service.example` — systemd यूनिट टेम्पलेट
### लेगसी ECS 1.5 ब्रिज से माइग्रेशन
पूर्व-2026 ब्रिज ने `--wifiindex` / `--btindex` के माध्यम से ऑपरेटर-नामित इंडेक्स में ECS 1.5 दस्तावेज़ लिखे। नया ब्रिज रोलओवर-प्रबंधित राइट एलियास (डिफ़ॉल्ट `sparrow-wifi` / `sparrow-bt`) में ECS 8.17 दस्तावेज़ लिखता है।
**लेगसी स्क्रिप्ट `legacy/sparrow-elastic.py` पर संरक्षित है** इसके `.txt` टेम्पलेट और ILM नीति फ़ाइलों के साथ। इसे चलाने के लिए अभी भी लेगसी वातावरण (मैन्युअल टेम्पलेट + ILM सेटअप) की आवश्यकता है।
**फ्लैग परिवर्तन (बैकवर्ड संगतता के साथ):**
| लेगसी फ्लैग | नया फ्लैग | नोट्स |
|---------------------|--------------------|--------------------------------------------------------|
| `--wifiindex NAME` | `--wifi-alias NAME`| लेगसी वर्तनी अभी भी एक पदावनत उपनाम के रूप में स्वीकार की जाती है। |
| `--btindex NAME` | `--bt-alias NAME` | लेगसी वर्तनी अभी भी एक पदावनत उपनाम के रूप में स्वीकार की जाती है। |
| `--dont-create-indices` | अपरिवर्तित | बूटस्ट्रैप को छोड़ता है। |
| `--elasticserver`, `--sparrowagent`, `--sparrowport`, `--wifiinterface`, `--scandelay` | अपरिवर्तित | |
एक लेगसी आह्वान जैसे:```bash
./sparrow-elastic.py --elasticserver=http://user:pass@host:9200 \
--wifiinterface=wlan1 \
--wifiindex=sparrowwifi-home \
--btindex=sparrowbt-home
still parses and runs — but the bridge now refuses to write into a pre-existing index whose mapping doesn't carry the ECS 8.17 schema marker, exiting with three remediation options (use a different alias, wipe and re-bootstrap, or run the legacy bridge). For a clean install, just drop --wifiindex / --btindex and accept the new defaults.
रिमोट एजेंट को ड्रोन या रोवर पर लगे रास्पबेरी पाई पर तैनात किया जा सकता है, जो मोबाइल वायरलेस सर्वेक्षण के लिए है। MAVLink के माध्यम से GPS एकीकरण के साथ Solo 3DR ड्रोन पर परीक्षण किया गया।
sudo python3 ./sparrowwifiagent.py --userpileds --sendannounce --mavlinkgps 3dr --recordinterface wlan0
LED संकेतक (Raspberry Pi):
1. दोनों बंद — प्रारंभ हो रहा है
2. लाल धड़कन — GPS मौजूद है, सिंक्रनाइज़ नहीं है
3. लाल स्थिर — GPS सिंक्रनाइज़ है
4. हरा स्थिर — एजेंट तैयार है, अनुरोधों की सेवा कर रहा है
रिकॉर्डिंग Sparrow-WiFi GUI के एजेंट प्रबंधन इंटरफ़ेस के माध्यम से प्राप्त की जा सकती हैं।
### Pi सेटअप नोट्स
- Raspberry Pi OS (Bookworm या बाद का) का उपयोग Python 3.8+ के साथ करें
- 5 GHz स्कैनिंग को USB एडेप्टर के साथ सक्षम करने के लिए ऑनबोर्ड WiFi अक्षम करें: `dtoverlay=disable-wifi` को Bookworm और बाद के संस्करणों पर `/boot/firmware/config.txt` में जोड़ें, या पुराने रिलीज़ पर `/boot/config.txt` में जोड़ें
- आवश्यक शर्तें स्थापित करें: `sudo pip3 install --break-system-packages -r requirements.txt` (या [स्थापना](#installation) अनुभाग में बताए अनुसार venv का उपयोग करें)
---
## परियोजना संरचना```
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
यह परियोजना रिपॉजिटरी में शामिल शर्तों के तहत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।
| क्रिया | पथ | उद्देश्य |
|---|
POST | {root}/v1/alerts/verify | क्रेडेंशियल जाँच — बॉडी {"domain": "<configured>"}। रिसीवर को सफलता पर 200 {"status":"ok"}, खराब टोकन पर 401 उत्तर देना चाहिए। |
POST | {root}/v1/alerts | एक अलर्ट फायर करें — बॉडी नीचे JSON है। रिसीवर को सफलता पर 201 {"alert_id":"..."} उत्तर देना चाहिए। 503 प्रतिक्रियाएँ एक्सपोनेंशियल बैकऑफ़ (3 रिट्राइ) के साथ पुनः प्रयास की जाती हैं; 4xx बिना पुनः प्रयास के रद्द हो जाती है। 200 {"status":"dropped"} इंगित करता है कि डोमेन अपस्ट्रीम में अक्षम है। |
| मोड | हार्डवेयर | आप क्या देखते हैं |
|---|
| BLE विज्ञापन स्कैन | मानक BT एडाप्टर | सक्रिय रूप से विज्ञापन करने वाले LE उपकरण |
| प्रोमिस्क्युअस स्कैन | Ubertooth One + Blue Hydra | रेंज में सभी BLE और क्लासिक BT उपकरण |
| iBeacon विज्ञापन | मानक BT एडाप्टर | अपने स्वयं के iBeacons का विज्ञापन करें |
| RemoteID स्कैन | मानक BT एडाप्टर | FAA-अनुरूप ड्रोन पहचान (केवल Sparrow DroneID) |
| Flag | Purpose |
|---|
--port PORT | HTTP सुनने का पोर्ट |
--allowedips IP1,IP2 | क्लाइंट कनेक्शन प्रतिबंधित करें |
--staticcoord LAT,LON,ALT | निश्चित GPS निर्देशांक का उपयोग करें |
--mavlinkgps 3dr | Solo 3DR ड्रोन से GPS खींचें |
--recordinterface IFACE | स्टार्टअप पर स्वचालित रिकॉर्डिंग (हेडलेस) |
--userpileds | स्थिति के लिए Raspberry Pi LED का उपयोग करें |
--sendannounce | एजेंट खोज के लिए UDP प्रसारण |