The smoke detector was once commercial equipment. So was the surveillance camera. The motion sensor. The doorbell with a lens in it. Each one migrated from specialized security infrastructure to standard household item because the technology got cheap and the threat justified it. Drone proliferation is following the same curve — faster.
There are already more drones in the air than there have ever been. Logistics runs on them. Infrastructure gets inspected by them. Farms get surveilled by them. The commercial operators and the recreational pilots and the people flying things over your property with a camera running — all of it is accelerating. The regulatory framework is not keeping pace. And the protocols underneath all of that movement were designed for hobbyist researchers flying in open fields in 2009.
A consumer drone is a flying computer with a radio stack, a GPS receiver, a flight controller running open-source firmware, and a telemetry link broadcasting its position and status in plaintext. Most of them still ship with the same trust assumptions that plagued enterprise networks in 2005.
DuckHunter is the research platform for understanding that surface before someone less friendly does. Simulation layer for building the understanding. Hardware bridge for validating it. Zero telemetry. Your perimeter, your problem.
The Protocol Problem
MAVLink was designed for the ArduPilot ecosystem in 2009. It solved a real problem elegantly: a lightweight binary protocol for passing telemetry and commands between a ground control station and an aircraft. Simple, efficient, widely adopted. The drone industry built on top of it and never looked back.
The security posture of that original design reflects the context it was built for: hobbyist researchers flying in open fields, not adversarial RF environments. There was no authentication layer because the assumption was physical proximity implied authorization. That assumption no longer holds.
MAVLink 2 added signing support in 2016. Adoption remains inconsistent. A significant portion of commercial and hobbyist vehicles in the field today either don't implement message signing, implement it incorrectly, or disable it for compatibility with older ground stations. The HEARTBEAT message that every MAVLink vehicle broadcasts continuously — announcing its presence, system type, firmware version, and operational state — is unsigned by default on most hardware.
// Simulated MAVLink HEARTBEAT capture
// Passive monitoring — no transmission required
const packet = await pulseSniff({
band: "2.4GHz",
protocol: "MAVLink2",
filter: ["HEARTBEAT", "POSITION"]
});
console.log(packet);
// {
// type: "HEARTBEAT",
// system_id: 1,
// autopilot: "ArduCopter",
// base_mode: "GUIDED | ARMED",
// custom_mode: 4,
// signed: false // <-- most common finding
// }
A passive HEARTBEAT capture tells you the vehicle is present, what firmware it's running, whether it's armed, and whether its command link is authenticated. That's a complete target profile without transmitting a single byte.
RF as Reconnaissance
Before you can interact with a drone's protocol stack, you have to find it. That starts with the spectrum — real-time signal identification across the three bands drone control links actually use.
2.4GHz is where most consumer and prosumer links live: DJI OcuSync, legacy Spektrum DSMX, ExpressLRS in its most common configuration. 5.8GHz carries a smaller subset of control links and most FPV video downlinks. 900MHz is the long-range tier — TBS Crossfire, ExpressLRS 900, systems designed to maintain link integrity at distances where 2.4GHz degrades.
Each protocol has a signature. Frequency-hopping spread spectrum links like ELRS and Crossfire use pseudorandom hop sequences that look like noise to a naive scanner but have detectable statistical properties. Consumer OcuSync links have characteristic burst patterns. A live power spectral density visualization turns the RF environment into something you can actually read.
