Detection and coverage

Radio observations cannot establish ownership, intent, recording state or whether a device is tracking anyone.

Disconnect bursts

Packets are length-checked and their hardware FCS removed before parsing. The callback queues observations; the main loop makes detection decisions.

Deauthentication/disassociation packets share a per-BSSID counter. Identical source/destination/sequence combinations within two seconds are deduplicated. Protected frames are excluded because their encrypted reason payload is unavailable.

The default requires 30 distinct frames in each of two consecutive 2-second windows for one BSSID. The first window never alerts. Quiet gaps and channel changes reset confirmation. Thresholds cannot be lowered below 20 per window. RSSI filtering applies first.

This suppresses isolated departures and brief bursts. Legitimate mass disconnects or sustained network faults can still look similar. Reason codes do not establish intent. Slow attacks, protected frames, off-channel traffic and dropped observations can be missed.

Device candidates

The Dragon Detector parser retains weak, medium and strong confidence labels. Presence alerts require repeated observations spanning at least one second.

Family Evidence Limitation
Axon / body camera Axon CID 034D, FC81/FE6B/FE6C services, BWCDEVICE marker, registered OUI, body-camera vendor or name Confidence depends on combination; model/recording unknown
Flipper 0x3081–0x3083 advertised services; Flipper name fallback Advertising can be changed or absent
Pineapple Pineapple/Hak5 name; 00:13:37 OUI Not a universal model detector
Flock Name; Xuntong manufacturer + specific battery-name combination Generic module alone is insufficient
Meta Luxottica company ID; Meta company/service/name heuristics Other Meta products may match
Pwnagotchi Name; stronger peer MAC + structured peer fields Spoofable
Nyanbox / HaleHound Advertised name Low confidence
Tracker Find My payload/service or DULT service Owner/intent unknown
Serial-module / skimmer HC-05, HC-06, HC-08 name Often benign; alert disabled by default
Biscuit Name plus specific service Pro/Ultra model unverified
SmartTag Samsung FD5A service Owner unknown
Acoustic sensors Raven service combination Field validation pending
Google Find Hub Valid FEAA 40/41 frames and EID length; weaker Chipolo indicators Owner unknown
Tile Assigned services Owner unknown
Ring / camera / ALPR vendor Registered vendor-prefix database or name Vendor does not identify model/activity
Drone / Remote ID Decoded BLE, Wi-Fi beacon or NAN Remote ID; weaker vendor/service indicators Self-reported identity; no map in this UI
iBeacon Valid iBeacon payload Common benign beacon; alert disabled by default
Dragon fox Dragon training-beacon signature Training marker, not a threat; alert disabled

Ordinary Wi-Fi/BLE devices appear in Nearby without generic presence alerts. Meta defaults to medium confidence. Strong-only rules stay silent for families that have no strong signature.

The parser, vendor-prefix table and Axon helpers come from the current Dragon Detector v0.13.23 source release. Public BLE addresses can supply vendor evidence; random addresses are not treated as registered vendor assignments. The local monitor accepts packets up to 768 bytes; larger records are discarded, not partially classified.

SSID security conflicts compare repeatedly observed beacons from different BSSIDs with the same exact SSID. An open/protected mismatch is a candidate alert, not proof of an evil twin: legitimate network configurations can also differ.

Pairing bursts

Apple popup, Google Fast Pair and Microsoft Swift Pair structures are recognized. At least 16 distinct addresses in five seconds within a matching payload family are required. Ordinary BLE crowd size is not an alert criterion. Crowded venues can still produce legitimate matching traffic.

Coverage and limits

Wi-Fi remains on one channel while a web client is attached. Optional idle survey uses channels 1–11, six seconds each: roughly 66 seconds between visits. C5 uses 2.4 GHz only. BLE passively scans four seconds per six-second cycle, 35/120 ms window/interval. Names available only in scan responses may be absent.

The queue has 20 slots; processing consumes at most 12 per loop. Contacts cap at 48 and disappear from the UI after two minutes. Events cap at 24. Both are RAM-only. Heavy traffic or HTTP transfers can drop observations; System exposes the count.

Duration and cooldown are separate. Continued activity can re-alert after its cooldown. Silence suppresses light/sound for five minutes while event logging continues. Manual tests override silence. Deauth alerts can preempt lower-priority patterns; otherwise one alert pattern plays at a time.