The rapid evolution of Unmanned Aerial Vehicle (UAV) technology has ushered in an era of unprecedented application potential. From military reconnaissance and aerial cinematography to power line inspection and atmospheric monitoring, DJI drone platforms and others have become indispensable tools. The cornerstone of modern UAV navigation remains the Global Navigation Satellite System (GNSS), with GPS being the most prevalent. However, the publicly known structure and inherently weak power level of GNSS signals render UAV flight control systems susceptible to a critical threat: spoofing attacks. Incidents of UAV spoofing are no longer theoretical; they are a demonstrated reality. A well-known academic demonstration involved researchers successfully diverting a UAV by transmitting carefully crafted, gradually changing GPS spoofing signals. Furthermore, military incidents have highlighted the severe consequences of such vulnerabilities. This tangible threat underscores the urgent need to understand the underlying mechanisms of UAV navigation and its potential weak points.
Driven by this imperative, my research focuses on dissecting the low-level flight control principles of commercial UAVs, specifically targeting widely used platforms, to analyze spoofing vulnerabilities. This work aims to design and validate proof-of-concept spoofing scenarios, ultimately revealing the fundamental reasons these systems are vulnerable. By shedding light on these risks, the goal is to foster greater awareness and encourage the integration of robust security measures within the expanding UAV application ecosystem. The platform of choice for this investigation is the DJI drone Matrice 100 (M100), an open-source quadcopter designed for developer experimentation. Coupled with a commercial Satellite IF Signal Sampler and Playback Unit, this project delves into application development for autonomous path planning and the design of a corresponding spoofing demonstration scheme.
1. System Architecture and Design Philosophy
The core objective of this system is to demonstrate a complete spoofing cycle: first, commanding a DJI drone to follow a pre-defined, benign flight path, and then, during its autonomous mission, deceiving its navigation system to believe it has arrived at its destination prematurely, triggering an early landing. This two-stage process effectively illustrates the spoofing threat.
1.1 Overall System Design
The system architecture is bifurcated into two sequential operational modes: the Path Planning Mode and the Spoofing Intervention Mode.
Stage 1: Path Planning & Execution. In this stage, I developed a custom mobile application using the DJI Mobile SDK. This app connects to the DJI drone via its remote controller and allows for the creation of a waypoint mission. The user defines a series of geographical coordinates (latitude, longitude, altitude) that the drone must traverse autonomously. The application sends this mission to the drone’s flight controller. Upon initiation, the drone takes off, navigates sequentially through each waypoint using its onboard GNSS receiver for positioning, and finally lands at the last designated point. The system components and a conceptual diagram for this stage are summarized below.
| Component | Role in Path Planning |
|---|---|
| DJI Matrice 100 (DJI drone) | Primary flight platform executing the autonomous mission. |
| DJI Remote Controller | Bridge for communication between the mobile app and the drone. |
| Custom Mobile App (SDK) | Interface for mission planning, upload, and real-time monitoring. |
| GNSS Satellite Signals | Authentic source of positioning data for the drone’s navigation. |
Stage 2: Spoofing Intervention. During the drone’s transit along the planned path, a spoofing device is activated at a predetermined “spoofing point.” This device, a Satellite IF Signal Playback Unit, replays a pre-recorded set of GNSS signals that correspond to the drone’s intended final destination. When the drone’s receiver captures these counterfeit signals, which are stronger than the authentic ones, its navigation solution converges on the spoofed location. The flight control logic, comparing this spoofed position to the target waypoint, concludes it has arrived and commands a landing sequence. Crucially, this landing occurs not at the true destination, but at the spoofing device’s location. The components and flow for this deceptive stage are outlined in the following table.
| Component | Role in Spoofing Intervention |
|---|---|
| Satellite Signal Playback Unit | Generates and broadcasts counterfeit GNSS signals matching the target destination. |
| DJI drone GNSS Receiver | Victim system that processes spoofed signals, yielding a false position. |
| Drone Flight Controller | Acts on the false position, triggering an erroneous landing command. |
| Custom Mobile App | Monitors the anomalous state change (e.g., unexpected landing sequence initiation). |
The success of this scheme hinges on a critical condition: the power of the replayed spoofing signal (\(P_{spoof}\)) must exceed the power of the authentic GNSS signal (\(P_{auth}\)) at the drone’s receiver antenna, typically requiring \(P_{spoof} > P_{auth}\) by a sufficient margin to cause the receiver’s tracking loops to lock onto the counterfeit signals.
1.2 Hardware Platform Configuration
The hardware foundation consists of two key elements: the UAV platform and the signal generation system.
1.2.1 UAV Platform: DJI Matrice 100. The DJI drone M100 was selected for its open development framework. Its modular design allows for the attachment of additional sensors and payloads, which was beneficial for potential future expansions of this research. More importantly, it provides full programmatic access to its flight control and sensor data through the DJI Software Development Kit (SDK), making it an ideal platform for low-level experimentation and vulnerability analysis.

1.2.2 Signal Spoofing Platform: Satellite IF Playback Unit. The SAS6862A Satellite IF Signal Sampler and Playback Unit is the core instrument for generating the deceptive signals. Its operational principle involves a two-step process: Record and Replay.
- Record (Signal Snapshot): The device is placed at a target location (e.g., the intended mission destination). It captures and digitally records the raw Intermediate Frequency (IF) data stream containing the live GNSS signals from all visible satellites at that specific point in time and space.
- Replay (Spoofing Attack): The device is then moved to the desired spoofing location. By replaying the recorded IF data, it reconstructs and broadcasts the RF signals that are identical to those originally recorded. Any GNSS receiver processing these signals will compute a position, time, and velocity solution corresponding to the original record location, not its true physical location. The key parameters of the hardware setup are summarized below.
| Parameter | DJI Matrice 100 Specification | SAS6862A Playback Unit Specification |
|---|---|---|
| Primary Function | Autonomous Flight Platform | GNSS Signal Record & Replay |
| Interface for Control | DJI Mobile SDK (USB/Remote Link) | Ethernet / Manual Control |
| Critical Dependency | GNSS for Navigation | Pre-recorded GNSS Signal File |
| Output | Flight Path / Sensor Data | Counterfeit GNSS RF Signals |
1.3 Software Development and Algorithmic Flow
The custom mobile application is the brain of the path planning operation. Developed for Android using the DJI Mobile SDK, it encapsulates the logic for mission planning, drone control, and data monitoring. The core algorithm follows a sequential state machine, as described in the flowchart below and implemented using key SDK components.
The development process involved several critical steps utilizing the DJI Mobile SDK:
- SDK Integration: Importing the DJI Android SDK package into the Android Studio project. This library contains all the classes and interfaces (APIs) necessary to communicate with the DJI drone.
- Application Registration: Acquiring a unique DJI App Key from the developer website and registering it within the application. This is a mandatory step for the SDK to establish a valid connection with DJI’s services and the drone.
- Mission Manager Implementation: Utilizing the `dji.sdk.mission.waypoint` package, specifically the `DJIWaypointMission` class, to construct autonomous flight missions. A waypoint mission object is configured with parameters for each point:
- Coordinate (Latitude, Longitude).
- Target Altitude (\(H_{target}\)).
- Heading (\( \psi_{target} \)).
- Actions upon arrival (e.g., hover, take photo).
The mission’s overall parameters, such as maximum flight speed (\(V_{max}\)), are also set.
- Flight Controller Data Access: Continuously reading real-time telemetry from the `DJIFlightControllerCurrentState` object. This provides essential data streams:
- Real-time Position (\(Lat_{current}, Lon_{current}, Alt_{current}\)).
- Velocity components (\(V_{north}, V_{east}, V_{down}\)).
- GNSS satellite count (\(N_{sat}\)).
This data is displayed on the app’s UI and logged for post-flight analysis.
- Map Integration: Embedding a Google Maps view within the application to provide a visual context for the drone’s operation and waypoint placement.
- Connection Management: Implementing the logic to handle the connection chain: Mobile Device \(\leftrightarrow\) Remote Controller (via USB) \(\leftrightarrow\) DJI drone (via wireless link).
The mission execution flow can be formally described. Let a waypoint mission \(M\) be defined as an ordered set of \(n\) waypoints:
$$ M = \{W_1, W_2, …, W_n\} $$
where each waypoint \(W_i\) is defined by:
$$ W_i = (Lat_i, Lon_i, Alt_i, \psi_i, A_i) $$
with \(A_i\) representing the action at that waypoint. The drone’s state \(S\) is given by its estimated pose from the flight controller:
$$ S(t) = (Lat(t), Lon(t), Alt(t), \psi(t), V_{north}(t), V_{east}(t)) $$
The core navigation logic during the mission is to minimize the distance \(d\) between the current state \(S(t)\) and the target waypoint \(W_k\):
$$ d(t) = \sqrt{(Lat(t)-Lat_k)^2 + (Lon(t)-Lon_k)^2 + (Alt(t)-Alt_k)^2} $$
A waypoint is considered reached when \(d(t) < \delta\), where \(\delta\) is a predefined proximity threshold. The control system then advances to the next waypoint \(W_{k+1}\).
2. Experimental Validation and Testing
Before attempting the full DJI drone spoofing demonstration, a methodical, step-by-step validation of each subsystem and its capability was essential.
2.1 Preliminary Validation: GNSS Spoofing on Consumer Devices
To confirm the fundamental efficacy of the playback unit, a vehicular spoofing test was conducted using a consumer smartphone as the target. This served as a controlled, low-risk precursor to UAV testing.
Procedure:
- A clean GNSS signal recording was taken at a known location, “Location A.”
- The playback unit was transported in a vehicle to a geographically distinct “Location B.”
- While the vehicle was stationary at Location B, the recording from Location A was replayed.
Observation: Within seconds, the smartphone’s mapping application updated its displayed position. It now showed coordinates corresponding to Location A, despite physically being at Location B. Furthermore, the displayed signal strength for GNSS satellites appeared anomalously high and uniform, a classic signature of a simplistic spoofing attack where the counterfeit signals overpower the authentic ones. This test conclusively verified the playback unit’s ability to manipulate the PVT (Position, Velocity, Time) solution of a commercial GNSS receiver.
2.2 UAV Platform and Basic Software Functionality Test
Prior to autonomous mission testing, manual flight tests were performed to ensure the DJI drone platform was mechanically sound and responsive. Following this, the core functionality of the custom application was validated through a series of basic waypoint missions.
Test Mission Profile: A simple rectangular path with four waypoints (\(W_1, W_2, W_3, W_4\)) was programmed into the application. The mission parameters were configured as follows:
| Parameter | Value / Setting |
|---|---|
| Number of Waypoints (\(n\)) | 4 |
| Takeoff Altitude | 15 meters |
| Waypoint Altitude | 20 meters |
| Mission Speed (\(V_{mission}\)) | 5 m/s |
| Action at Waypoint | Hover briefly, then proceed |
| Finished Action | Auto-land at last waypoint |
Execution and Results: The mission was initiated via the application interface. The DJI drone successfully:
- Auto-took off and climbed to 15m.
- Proceeded to and hovered at \(W_1\).
- Sequentially navigated to \(W_2\), \(W_3\), and \(W_4\) with stable flight performance.
- Automatically landed upon reaching \(W_4\).
The application’s UI successfully displayed the drone’s real-time position on the map, updated its velocity readouts, and logged the entire flight path. The test confirmed that the developed software could reliably plan, upload, and execute an autonomous mission on the DJI drone platform.
2.3 Position Data Extraction for Spoofing Analysis
A crucial step in designing the spoofing attack is understanding the exact position data the DJI drone uses for navigation. The DJI SDK provides access to this data primarily through two streams: the raw GNSS data from the remote controller and the fused navigation solution from the flight controller. For spoofing purposes, we target the raw GNSS receiver data. The key class is `DJIRCGPSData`, which provides the following critical fields used in the navigation solution:
| Data Field | Description | Mathematical Symbol |
|---|---|---|
| latitude | Latitude in degrees | \( \phi \) |
| longitude | Longitude in degrees | \( \lambda \) |
| altitude | Altitude relative to home (m) | \( h \) |
| satelliteCount | Number of tracked satellites | \( N_{sat} \) |
| speedEast / speedNorth | East and North velocity components (m/s) | \( V_e, V_n \) |
By successfully extracting and displaying this data stream in real-time within the application, I confirmed the ability to monitor the very parameters that a spoofing attack aims to corrupt. This capability is vital for both diagnosing the attack’s effect and for precisely timing the spoofing intervention.
3. Integrated Spoofing Demonstration Scheme Design
Based on the validated components, I formalize a detailed spoofing demonstration scheme against a DJI drone executing an autonomous waypoint mission.
3.1 Threat Model and Assumptions
The scheme operates under a specific threat model:
- Attacker Capability: The attacker has physical access to the target mission area beforehand to record GNSS signals at the destination. The attacker can then transport and operate the playback unit near the planned flight path during mission execution.
- Defender (Drone) Limitation: The DJI drone relies solely on civilian-grade, unauthenticated GNSS signals (e.g., GPS L1 C/A) for positioning during the autonomous mission. It employs no additional spoofing mitigation techniques such as cryptographic authentication (e.g., Galileo OSNMA), inertial measurement unit (IMU) consistency checks tuned for spoofing detection, or direction-of-arrival sensing.
- Attack Type: This is a “synthetic” or “record-and-replay” spoofing attack, not a sophisticated “signal generator” attack that can create dynamic scenarios. Its goal is a static position fix deception.
3.2 Step-by-Step Attack Procedure
The attack is a multi-phase operation, outlined in the following sequence table.
| Phase | Step | Action | Objective / Outcome |
|---|---|---|---|
| I. Preparation | 1 | At the true mission destination (\(D_{true}\)), use the playback unit to record GNSS signals. Store the file (\(F_{dest}\)). | Create the “bait” signal fingerprint of \(D_{true}\). |
| 2 | Design a standard waypoint mission \(M\) for the DJI drone with \(D_{true}\) as the final waypoint \(W_n\). | Establish the drone’s normal flight plan. | |
| II. Execution & Intervention | 3 | Initiate mission \(M\). The drone takes off and begins navigating. | Drone enters autonomous, GNSS-dependent flight mode. |
| 4 | At a chosen spoofing point (\(P_{spoof}\)) along the route, activate the playback unit broadcasting \(F_{dest}\). | Inject counterfeit signals for \(D_{true}\) at location \(P_{spoof}\). | |
| 5 | The drone’s receiver locks onto the stronger spoofed signals. Its computed position \(S(t)\) jumps to \(D_{true}\). | Drone’s navigation state is corrupted. \(d(t) \approx 0\) for \(W_n\). | |
| III. Exploitation | 6 | The flight controller logic evaluates \(d(t) < \delta\). Believing it is at \(D_{true}\), it triggers the landing sequence. | Drone initiates auto-land command based on false state. |
| 7 | The drone descends and lands at the attacker’s location, \(P_{spoof}\), instead of \(D_{true}\). | Attack Success: Physical diversion of the DJI drone. |
3.3 Mathematical Representation of the Spoofing Effect
The spoofing attack induces a discontinuous error in the drone’s estimated state. Let \(X_{true}(t)\) be the drone’s actual geographical state vector at time \(t\):
$$ X_{true}(t) = [\phi_{true}(t), \lambda_{true}(t), h_{true}(t)]^T $$
Under normal conditions, the GNSS receiver provides a measurement \(Z_{gnss}(t)\) which is a noisy estimate of \(X_{true}(t)\):
$$ Z_{gnss}(t) = X_{true}(t) + \nu(t) $$
where \(\nu(t)\) represents measurement noise. The flight controller uses \(Z_{gnss}(t)\) for navigation.
During the spoofing attack, starting at time \(t_{attack}\), the receiver is presented with counterfeit signals designed to represent a static location \(X_{spoof} = [\phi_{dest}, \lambda_{dest}, h_{dest}]^T\). The receiver’s output \(Z_{gnss}(t)\) becomes:
$$ Z_{gnss}(t) = X_{spoof} + \nu'(t) \quad \text{for} \quad t \geq t_{attack} $$
where \(\nu'(t)\) is noise on the spoofed signal. Therefore, the perceived state error (\(E(t)\)) experienced by the flight controller jumps from a small navigation error to a large, persistent bias equal to the vector difference between the spoofed and true location:
$$ E(t) = Z_{gnss}(t) – X_{true}(t) \approx X_{spoof} – X_{true}(t) \quad \text{(for $t \geq t_{attack}$)} $$
The magnitude of this error is the distance between the spoofing point and the destination: \(\|E(t)\| \approx \| X_{dest} – X_{true}(t_{attack}) \|\). However, because the spoofed signal corresponds to the destination, the flight controller’s waypoint proximity check is satisfied, leading to the erroneous landing decision.
4. Conclusions and Implications
This work successfully demonstrates the foundational principles and a practical design for exploiting the GNSS dependency in commercial UAV autonomy. By leveraging the open-source capabilities of a DJI drone platform and commercially available signal playback hardware, I developed a functional autonomous path planning application and formulated a detailed spoofing attack scheme. The stepwise validation—from consumer device spoofing to UAV mission control—builds a compelling case for the viability of such threats.
The implications of this vulnerability are far-reaching and apply to numerous domains where DJI drone platforms and similar systems are deployed:
| Application Domain | Potential Impact of Spoofing | Suggested Mitigation Direction |
|---|---|---|
| Civil Infrastructure & Inspection (Power Grids, Pipelines) | Divert inspection drones, causing mission failure or loss of asset; potentially lure them into hazardous areas causing damage. | Implementation of mission-specific geofencing with independent integrity checks; use of vision-based navigation as a primary or verifying sensor in critical corridors. |
| Precision Agriculture | Disrupt automated spraying or surveying patterns, leading to financial loss and uneven treatment of crops. | Multi-constellation GNSS receivers (GPS, Galileo, BeiDou) to increase attack complexity; fusion with inertial navigation systems (INS) for consistency checking. |
| Law Enforcement & Security | Spoof friendly drones during surveillance or crowd monitoring operations, creating blind spots or operational confusion. | Deployment of encrypted/authenticated navigation signals where available; development of standard operating procedures that include non-GNSS verification of position. |
| Military & Defense | As a subset of Electronic Warfare (EW), spoofing can divert reconnaissance UAVs, compromise the guidance of loitering munitions, or disrupt logistics. It serves as a non-kinetic, reversible countermeasure. | Mandatory use of Military Code (M-code) GPS or other secure PNT (Positioning, Navigation, and Timing) sources; advanced anti-spoofing techniques like signal characterization and array processing. |
In conclusion, this research underscores that the very feature enabling the widespread autonomy of modern DJI drone systems—their reliance on open GNSS signals—is also a critical Achilles’ heel. The spoofing scheme presented is not merely a theoretical exercise but a blueprint for a tangible threat. It serves as a crucial reminder for operators, regulators, and manufacturers across all sectors. Advancing from awareness to action is essential. The future of safe and secure UAV integration depends on the widespread adoption of robust PNT resilience strategies, including signal authentication, multi-sensor fusion, and intelligent anomaly detection within the flight control stack of every DJI drone and its counterparts.
