Other

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

iOS WarDragon Utility App 技术分析

项目背景与痛点

WarDragon Utility App(以下简称 DragonSync)是一个针对 iOS 平台的 WarDragon 游戏辅助工具。WarDragon 是一款以Dragon为背景的战术射击游戏,而 DragonSync 则是专为游戏内的用户需求提供解决方案的应用程序。玩家在使用 WarDragon 游戏时,经常遭遇配置麻烦、数据同步困难等问题。DragonSync 的出现,旨在通过高度集成的功能体系,大幅减少用户手动操作的复杂性,实现简单、高效的管理体验。

游戏辅助工具的一大痛点在于,既要简化复杂的用户操作,又要确保数据处理和安全性的严格要求。DragonSync 通过一套精巧的设计架构,实现了这一切,这在各类竞品中尤为突出。

核心技术揭秘

架构设计

DragonSync 在技术设计上,严格遵循高效、简洁的原则,特别注重模块化的构建方式,提升代码的解耦性和复用性。此外,它采用响应式编程模式,保证用户界面与数据之间的实时交互性,以及整个系统运行的流畅稳定。

技术栈与数据流

DragonSync 的主要技术栈包括 Swift 和一系列插件库(如 Firebase、Alamofire 等),通过这些技术工具,构建了一个稳定且高效的数据传输与处理系统。用户请求作为事件源发起,触发一系列内部处理流程,直至完成数据处理及返回反馈。

graph TD A[用户请求] --> B{"参数校验"} B -->|"通过"| C[执行业务] C --> D[数据处理] C --> E[返回结果] B -->|"失败"| F[返回错误]

实现原理

在数据流方面,DragonSync 的设计遵循了组件化和模块化的原则,利用微服务架构,将各个功能模块分解为独立的服务组件,实现灵活的扩展和部署能力。各个组件通过RESTful API 进行通信,所有操作的逻辑处理均在服务器端完成,而客户端负责简单的解析和用户交互。

通过以上架构设计,DragonSync 实现了数据的高效传输与管理,确保了整个系统的稳定性与可扩展性。

功能亮点与差异

DragonSync 的独特之处不仅在于其功能的集成度,更在于其背后的设计理念与实现方法。不同于其他同类辅助工具的复杂操作和界面,它提供了简洁直观的用户界面和流畅的用户体验,大大减少了用户的学习成本。

此外,DragonSync 利用 Firebase 作为数据同步和服务后台,确保了数据的高度一致性和实时性;同时,通过引入 AI 技术进行智能推荐和自我优化,大大提升了工具的效能。

应用场景与落地建议

在生产环境中使用 DragonSync,开发者需要关注以下几个方面:

  1. 安全性:由于涉及到用户数据的同步与存储,确保系统的安全性至关重要。建议开发者定期审计和检测安全漏洞。
  2. 稳定性:稳定的服务与功能是衡量工具好坏的重要标准。建议在高并发的情况下进行测试与优化,以确保服务的高效运转。
  3. 扩展性:随着需求的变化,系统应具备灵活的扩展能力,能够轻松地增加或修改功能模块。

此外,开发者可以根据实际需求,选择安装适当的插件或者组件,实现进一步的优化和定制。

综合评价

尽管 DragonSync 项目在设计与技术方面颇具亮点,但其使用范围和复杂性仍需更加灵活的处理。优点在于出色的用户体验与高效的数据处理能力;缺点体现在某些高级功能的集成度与稳定性上可能有待提高。总体而言,这是一款令人期待的高质量 iOS 游戏辅助应用。

关于

GitHub 原始描述(英文)

iOS WarDragon Utility App

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
374
价值分
180
活跃状态
活跃

语言占比

C
C++
Python
Ruby
Shell
Swift

Release

README

DragonSync iOS

Join TestFlight Beta Latest Release

DragonSync Logo

Professional drone and aircraft detection for iOS/macOS

Remote/Drone ID • ADS-B • FPV Detection • Encrypted Drone ID • Spoofing & Randomization Sniffers

Works with the WarDragon Pro out of the box

Get Started • What It Detects • In-Action • Integrations • Legal


What It Detects

screen1
Detection interface Signal analysis 914C869C-2EAA-47D2-AA86-0DB41CF0EE74

Remote ID Broadcasts

  • WiFi 2.4GHz and 5GHz transmissions
  • Bluetooth Low Energy advertisements
  • SDR-based RF decoding (ANTSDR)
  • Live position, altitude, speed, heading
  • Pilot and home point locations, FAA lookup

ADS-B Aircraft

  • 1090MHz Mode S transponders
  • Real-time aircraft tracking
  • Flight number, altitude, speed
  • Supply your own or use OpenSky

Encrypted Drones (DJI Ocusync)

  • RSSI-based distance estimation
  • Reads unencrypted elements of RID

FPV Video Transmitters

  • 5.8GHz analog video detection
  • RX5808 receiver integration
  • Channel and frequency identification
  • Signal strength ring map markers

Threats and Anomalies

  • Spoof detection via signal analysis
  • Position consistency validation
  • Flight physics anomaly detection
  • MAC randomization detection

In Action

Portable

image

Features

  • Live Map View - All detections on unified map with color-coded markers
  • Detection Details - Full telemetry: position, altitude, speed, heading, manufacturer & more
  • FAA Registry Lookup - Real-time drone registration data with operator info
  • History & Analysis - Search, filter, export encounters (KML, CSV). Data is stored securely in iOS Keychain (TAK) and the app uses SwiftData.
  • System Monitoring - CPU, memory, temperature, GPS, ANTSDR sensors
  • Proximity & System Alerts - Configurable distance thresholds with notifications. Memory and temperature alert triggers.
screen2

EF03E9CF-B175-4B55-BCDE-B6B65A9032A4_4_5005_c


Integrations

Push Detection Data To:

  • MQTT - Home Assistant auto-discovery, TLS support, QoS 0-2
  • TAK/ATAK - CoT XML via multicast/TCP/TLS with iOS Keychain .p12
  • Lattice DAS - Structured detection reports to Lattice platform
  • Webhooks - Discord, Slack, custom HTTP POST with event filtering

Receive Data From:

  • ZMQ - Ports 4224 (detections, droneid-go unified output — falls back to legacy zmq_decoder.py) and 4225 (system status from wardragon_monitor)
  • Multicast CoT - 239.2.3.1:6969 from DragonSync.py wrapper
  • ADS-B - readsb, tar1090, dump1090 JSON feeds and OpenSky Network
  • Background Mode - Continuous monitoring with local notifications

Android & Linux users: See DragonSync KMP for the cross-platform version targeting Android and Linux desktop.


Installation

Hardware Options

Setup Time WiFi RID BT RID SDR FPV Best For
WarDragon Pro 30 sec ✓ ✓ ✓ ✓ Full-spectrum deployment
Drag0net ESP32 15 min ✓ 2.4GHz ✗ ✗ ✗ Portable WiFi RID only
Custom Build 60 min ✓ ✓ ✓ ✓ DIY / maximum control

  • New default backend: droneid-go — single Go binary (zmq-decoder systemd service) that replaces the old wifi_receiver + sniffle + zmq_decoder.py Python pipeline. Same wire port (4224), richer JSON (adds transport, frequency_mhz, Frequency Message, Auth Message, area beacons, full ASTM accuracy fields).
  • Existing legacy installs (DroneID + DragonSync 3-process pipeline) still work — the iOS parser supports both. Run setup.sh --legacy to install that path.
  • For new kits: git pull in droneid-go and DragonSync. (DroneID and Sniffle Python clones are no longer required.)
  • Multicast/dragonsync.py is not a requirement for FPV. Run fpv_mdn_receiver.py from the DroneID repo if you need FPV detection.

Option 1: WarDragon Pro (Powerful)

Pre-configured system with ANTSDR E200, WiFi/BT, GPS hardware

Quick Start:

  1. Power on device
  2. Connect iOS device to same network
  3. App → Settings → ZMQ → Enter WarDragon IP
  4. Start monitoring

Troubleshooting:

No Network Connection/Data:

  • Ensure iOS app permission granted in Settings > Apps > DragonSync > Network
  • Multicast: Toggle the connect button if first launch, needs to request permissions.

RSSI rings not showing for encrypted/fpv:

  • Needs GPS data for the host in Status from wardragonmonitor.py
    • Ensure iOS app permission granted in Settings > Apps > DragonSync > Location

System Status:

A. In prior versions wardragon_monitor.py requires GPS lock (use --static_gps flag or wait for lock) to send data.

B. SDR temps require DJI firmware on ANTSDR (UHD firmware won’t report temps)


Option 2: Drag0net ESP32 (Portable) Firmware

ESP32-C3/S3 (with optional mesh integration) for standalone WiFi RID detection

Automated Flash:

curl -fsSL https://raw.githubusercontent.com/Root-Down-Digital/DragonSync-iOS/refs/heads/main/Util/setup.sh -o setup.sh
chmod +x setup.sh && ./setup.sh
# Select option 4 (ESP32-C3) or 5 (ESP32-S3)

Connect to Device:

  • SSID: Dr4g0net
  • Password: wardragon1234
  • IP Address: 192.168.4.1
  • App Settings → ZMQ IP: 192.168.4.1
  • Web UI: Navigate to 192.168.4.1 in browser

Manual Flash: Download firmware

esptool.py --chip auto --port /dev/YOUR_PORT --baud 115200 \
  --before default_reset --after hard_reset write_flash -z \
  --flash_mode dio --flash_freq 80m --flash_size detect \
  0x10000 firmware.bin

Option 3: Custom Build (Full Features)

Complete detection stack with all protocols. Default install uses droneid-go — a single Go binary that replaces the old wifi_receiver.py + sniffle + zmq_decoder.py Python pipeline. The iOS app is fully compatible with both backends.

Hardware Requirements:

  • Dual-band WiFi adapter (2.4/5GHz, monitor-mode capable)
  • Sniffle-compatible BLE dongle (nRF52840 or Sonoff CC2652P, pre-flashed with Sniffle firmware)
  • Optional: DragonSDR / ANTSDR E200 (DJI DroneID), GPS module, RX5808 (FPV)

Automated Install (droneid-go default):

curl -fsSL https://raw.githubusercontent.com/Root-Down-Digital/DragonSync-iOS/refs/heads/main/Util/setup.sh -o setup.sh
chmod +x setup.sh && ./setup.sh           # droneid-go install (recommended)
# or, to install the legacy 3-process Python pipeline:
./setup.sh --legacy
Manual Installation Steps

Default — droneid-go (Linux x86_64 / ARM64):

sudo apt update
sudo apt install -y libpcap0.8 libzmq5 git
cd /home/dragon/WarDragon
git clone https://github.com/alphafox02/droneid-go.git
cd droneid-go
sudo ./install.sh

The installer:

  • Drops the binary at /home/dragon/WarDragon/droneid-go/droneid
  • Stops/disables legacy wifi-receiver and sniff-receiver services
  • Installs and enables a zmq-decoder systemd service that publishes unified JSON on tcp://*:4224
  • Health probe: ./droneid-check.sh

DragonSync still handles multicast CoT / TAK / MQTT fan-out:

git clone https://github.com/alphafox02/DragonSync.git
cd DragonSync && pip install -r requirements.txt

Legacy — Python 3-process pipeline (use only if you need it):

sudo apt install -y python3 python3-pip git gpsd gpsd-clients lm-sensors
git clone https://github.com/alphafox02/DroneID.git
git clone https://github.com/alphafox02/DragonSync.git
cd DroneID && git submodule update --init && ./setup.sh

macOS: droneid-go ships Linux binaries only. Install on a Linux host (WarDragon kit / Pi). Use macOS for the iOS app build only.

Windows: Use WSL2.

Run Detection Stack — droneid-go (default):

# Single service, all sources unified on tcp://*:4224
sudo systemctl status zmq-decoder
sudo journalctl -u zmq-decoder -f

# Manual run with everything enabled (WiFi 5GHz hop + native BLE + ESP32 UART + DJI DroneID)
sudo /home/dragon/WarDragon/droneid-go/droneid \
    -g -ble auto -uart /dev/esp0 -dji 127.0.0.1:4221 \
    -z -zmqsetting 0.0.0.0:4224

# System health monitor (separate from drone telemetry)
cd DragonSync
python3 wardragon_monitor.py --zmq_host 0.0.0.0 --zmq_port 4225 --interval 30

# Optional FPV
cd DroneID && python3 fpv_mdn_receiver.py --serial /dev/ttyFPV --baud 115200 --zmq-port 4226 --stationary --debug
Run Detection Stack — Legacy 3-process pipeline
# Terminal 1 - WiFi RID Receiver
cd DroneID
python3 wifi_receiver.py --interface wlan0 -z --zmqsetting 127.0.0.1:4223

# Terminal 2 - Bluetooth RID Receiver
cd DroneID/Sniffle
python3 python_cli/sniff_receiver.py -l -e -a -z -b 2000000

# Terminal 3 - Decoder (aggregates all sources)
cd DroneID
python3 zmq_decoder.py -z --dji 127.0.0.1:4221 --zmqsetting 0.0.0.0:4224 --zmqclients 127.0.0.1:4222,127.0.0.1:4223,127.0.0.1:4226 -v

# Terminal 4 - System Health Monitor
cd DragonSync
python3 wardragon_monitor.py --zmq_host 0.0.0.0 --zmq_port 4225 --interval 30

iOS App Configuration:

  • Settings → ZMQ → Host IP address, Port 4224 (telemetry — droneid-go default)
  • Advanced → Status Port 4225 (system health from wardragon_monitor.py)
  • Enable ADS-B, MQTT, TAK, webhooks as needed

The app’s parser supports both droneid-go (canonical long-form keys, transport, frequency_mhz, Frequency Message, Auth Message, area beacons) and legacy zmq_decoder.py (short-form accuracy keys). No app reconfiguration needed when switching backends.

63D3EB3E-ACFC-481D-8E17-954FA5F22D40

Persistence: droneid-go installs its own zmq-decoder systemd unit. For the legacy path, use DragonSync systemd files.


System Architecture

┌──────────────────────────────────────────────────────┐
│               Detection Sources                      │
│                                                      │
│  WiFi RID (2.4/5GHz) ──┐                             │
│  Bluetooth RID (Sniffle)┤                            │
│  ESP32 UART passthrough ┼──► droneid-go (Go binary)  │
│  DJI DroneID (DragonSDR)┘     unified ZMQ tcp:4224   │
│  FPV Video ─────────── RX5808 + fpv_mdn_receiver     │
│  ESP32 Standalone ──── Drag0net WiFi 2.4GHz          │
└────────────────────┬─────────────────────────────────┘
                     │ JSON Data 
        ┌────────────┴────────────┐
        │                         │
 ┌──────▼────────┐       ┌────────▼────────┐
 │ droneid-go    │       │ DragonSync.py   │
 │ Port 4224     │       │ (wrapper)       │
 │ (JSON)        │       │ Multicast CoT   │
 │ + health      │       │ + MQTT/TAK      │
 └──────┬────────┘       └────────┬────────┘
        │                         │
        └──────────┬──────────────┘
                   │
        ┌──────────▼──────────┐      ┌────────────────┐
        │  DragonSync iOS     │◄─────┤ ADS-B Source   │
        │                     │      │ HTTP JSON      │
        │  ZMQ: 4224, 4225    │      │ readsb/tar1090 │
        │  CoT: 239.2.3.1     │      └────────────────┘
        └──────────┬──────────┘
                   │
        ┌──────────▼──────────┐
        │   Output Channels   │
        │                     │
        │  MQTT               │
        │  TAK/ATAK (CoT)     │
        │  Webhooks           │
        │  Lattice DAS        │
        └─────────────────────┘

Data Flow:

  • Ingestion: ZMQ JSON (4224 unified detections from droneid-go, 4225 system status from wardragon_monitor), Multicast CoT (239.2.3.1:6969), ADS-B HTTP
  • Processing: SwiftData persistence, spoof detection, signature analysis, rate limiting
  • Output: MQTT, TAK/ATAK, Webhooks & Lattice

Command Reference

Task Command
droneid-go (all sources) sudo /home/dragon/WarDragon/droneid-go/droneid -g -ble auto -uart /dev/esp0 -dji 127.0.0.1:4221 -z -zmqsetting 0.0.0.0:4224
droneid-go health probe /home/dragon/WarDragon/droneid-go/droneid-check.sh
System Monitor python3 wardragon_monitor.py --zmq_host 0.0.0.0 --zmq_port 4225 --interval 30
Static GPS python3 wardragon_monitor.py --static_gps 37.7749,-122.4194,10
WiFi only (droneid-go) sudo droneid -i wlan1 -g -z -v
BLE only (droneid-go) sudo droneid -ble auto -z -v
DJI only (droneid-go) droneid -dji 127.0.0.1:4221 -z -v
FPV Detection python3 fpv_mdn_receiver.py -z --zmqsetting 127.0.0.1:4222
Legacy WiFi Sniffer python3 wifi_receiver.py --interface wlan0 -z --zmqsetting 127.0.0.1:4223
Legacy BT Sniffer python3 Sniffle/python_cli/sniff_receiver.py -l -e -a -z -b 2000000
Legacy Decoder python3 zmq_decoder.py -z --zmqsetting 0.0.0.0:4224 --zmqclients 127.0.0.1:4222,127.0.0.1:4223 -v

Connection Protocols

ZMQ (Recommended) - Full JSON telemetry with complete detection data

  • Port 4224: Drone detections
  • Port 4225: System health and status

Multicast CoT - TAK/ATAK integration with reduced detail

  • Address: 239.2.3.1:6969
  • Protocol: CoT XML

ADS-B HTTP - Aircraft tracking from standard feeds or OpenSky

  • Endpoints: readsb, tar1090, dump1090
  • OpenSky Network: Use with or without an account

MQTT - Publish to Home Assistant or broker

  • Formats: JSON, Home Assistant discovery
  • TLS and authentication support

Build from Source

git clone https://github.com/Root-Down-Digital/DragonSync-iOS.git
cd DragonSync-iOS
pod install

Open WarDragon.xcworkspace in Xcode 15+.

Requirements:

  • Xcode 15.0 or later
  • iOS 17.0+ / macOS 14.0+ deployment target
  • CocoaPods for dependencies

Credits & License

This app is not affiliated with DragonOS or cemaxecutor in any official context. I wanted a simple way to interact with the drone capabilities, and easily integrate my ANTSDR. cemaxecuter was instrumental to the development of this project- All credit really should go to him.

Built on: DroneID • DragonSync • Sniffle

Third-party frameworks used:

SwiftyZeroMQ5
CocoaMQTT
CocoaAsyncSocket
Starscream

API Data Sources:

Privacy Policy

MIT License


READ BEFORE USE

Nature of This Software

DragonSync iOS is a passive radio frequency monitoring and data visualization application. It receives and displays publicly broadcast Remote ID (RID) transmissions as mandated by FAA 14 CFR Part 89, FCC regulations, and equivalent international standards (EU 2019/945, EASA, etc.). It transmits no signals of any kind.

Remote ID broadcasts are intentionally public by regulatory design. The FAA, FCC, and EASA explicitly require drone operators to continuously broadcast RID data for public safety, airspace awareness, and law enforcement use. Reception and display of these broadcasts is not only legal — it is the intended and stated purpose of the RID mandate.

No Interception. No Decryption. No Transmission.

This application:

  • Receives only publicly broadcast, unencrypted radio transmissions
  • Does not intercept, decode, or access any private, encrypted, or protected communications
  • Does not transmit any RF signals
  • Does not interfere with any aircraft, drone, or communications system
  • Does not circumvent any security measure or access control
  • ADS-B data is similarly public by FAA mandate (14 CFR Part 91.225). ADS-B ground station data provided via OpenSky Network is publicly licensed.

Federal Wiretap Act / ECPA

The Electronic Communications Privacy Act (18 U.S.C. § 2511) explicitly exempts radio communications that are:

  • Transmitted using frequencies allocated under Part 15 or Part 97 of FCC rules, or
  • Not scrambled, encrypted, or made private by the transmitter, or
  • Transmitted for the use of the general public
  • Remote ID (WiFi 2.4/5GHz, Bluetooth LE) and ADS-B (1090MHz) fall entirely within these exemptions. No provision of ECPA is implicated by passive receipt of these broadcasts.

User Responsibilities

Users are responsible for:

  • Compliance with all applicable local, state, federal, and international laws
  • Ensuring any hardware used (SDR, WiFi adapters, Bluetooth sniffers) is operated within licensed parameters
  • Not using detection data to harass, track, or harm any individual
  • Understanding that laws vary by jurisdiction and may change
  • Disclaimer of Warranties and Liability

This software is provided “AS IS” without warranty of any kind, express or implied. The authors, contributors, and maintainers:

  • Make no warranty of fitness for any particular purpose
  • Accept no liability for damages, legal consequences, or harm arising from use or misuse
  • Bear no responsibility for actions taken by users based on data displayed

By using this software, you confirm you have read, understood, and accept these terms in full.


Note 注意

Keep WarDragon and DragonOS updated for optimal compatibility.

Caution 注意

Use only in compliance with local regulations and laws.

评论

暂无评论