Cybersecurity & IoT Security R&D

We read the invisible layer of the physical world.

Zero Trust Technologies is an independent R&D and prototyping lab working at the edge of RF, spatial sensing, and connected-device (IoT) security. We build working experimental hardware and software to investigate hard problems in how the physical world can be sensed and secured.

Wi-Fi CSI sensing SDR / HackRF IoT security Embedded / ESP32
CSI · Subcarrier Waterfall STREAMING 56 SC
2.4GHz · CH1 · amplitude(dB) → colormap t+00:00.0

↑ Visualization of live CSI output. Our pipeline runs on real captured signal, not synthetic data — motion perturbs multipath across subcarriers. See the project →

zero trust n.

A security model built on one rule: trust nothing by default — not a device, a network, not even something already inside the perimeter — until it's verified.

It's the assumption behind every build on this page: audit the signal itself, don't take its origin's word for it.

Areas of research

Six directions, one discipline: measure what others can't see.

These are the domains the practice actively prototypes in — much of it centered on the Internet of Things: the networked sensors and embedded devices that increasingly fill our spaces. Every build pairs hands-on RF and embedded engineering with structured delivery — scoping, technical risk management, and documented tracking from first prototype to field test.

01

Wi-Fi CSI Spatial Sensing

Experiments in camera-free motion, presence, and fall detection from ambient Wi-Fi — sensing through walls without wearables or optics.

02

Cellular Mapping & Anomaly Detection

SDR-based base-station survey across GSM/LTE/5G — geotagged tower maps with rogue / IMSI-catcher anomaly flagging.

03

Wireless Security Auditing

Prototyping automated 802.11 and BLE discovery, vendor fingerprinting, and rogue-AP detection — tools for surveying a spectrum and spotting what doesn't belong.

04

Protocol Analysis & Capture

Hardware-level 802.15.4 / BLE packet capture into Wireshark — deep-packet dissection for Zigbee and Thread networks.

05

IoT & Embedded Systems

Custom ESP32 / nRF firmware, sensor fusion, and mmWave radar — building and securing networked IoT devices from schematic to field node.

06

Open-Source Intelligence

Fusing public data streams — AIS maritime tracking, transmission-gap and encounter detection — into live situational pictures.

Selected R&D

Working prototypes, not slideware.

Each of these is a functioning experimental build — scoped, built, and documented end to end. They're research prototypes and proofs of concept, not productized offerings. Live demos and full technical walk-throughs available on request.

CSI Live Viewer · node topology REAL DATARX
3 nodes · UDP/JSON · browser viewer idle
CASE 01 Spatial Sensing

Real-time Wi-Fi CSI motion sensing

A multi-node sensing pipeline that turns ordinary Wi-Fi into a motion detector — running on genuine captured signal, not simulation. ESP32 receivers extract per-subcarrier Channel State Information and broadcast UDP/JSON frames to a subnet, where a browser-based viewer renders a live subcarrier waterfall. Human movement perturbs the multipath — visible as correlated variance across subcarriers.

The project started after auditing a widely-starred open-source CSI project and finding it ran entirely on synthetic data. This one was rebuilt from the ground up on Espressif's esp-csi stack specifically to capture and process real live signal off the radio — which is the whole point of the build.

Hardware
ESP32-C6 / C3 / S2 · 3-node array
Signal
802.11 CSI · 56 subcarriers · 2.4GHz
Transport
UDP JSON broadcast → subnet
Viewer
Python + browser waterfall (Canvas)
esp-csiESP-IDF 5.4 IoTreal capture
CSI Live Viewer · Fresnel activity map LIVE CAPTURE
Live CSI viewer dashboard: active links, frame rate, total frames, peak disturbance, per-receiver status, and the Fresnel-zone activity map estimating a person's location between transmitter and receivers. Real-time subcarrier amplitude waterfall for both receivers and an RSSI-over-time trace, captured live at roughly 200 frames per second.
Live output from the running system — real captured frames, no synthetic values. The Fresnel-zone map estimates where a person is standing from which links are currently disturbed; below it, the live subcarrier-amplitude waterfall and RSSI trace. 117,193 frames captured at ~200 frames/sec across two receivers.
Micro-Radar · PPI sweep SCAN
LD2410 24GHz + 5kHz biphasic carrier — m
CASE 02 Sensor Fusion

Biphasic micro-radar with DSP fusion

A sensor-fusion build combining a 24GHz LD2410 mmWave presence radar with a custom biphasic 5kHz carrier generated on the ESP32's PWM output and sampled back through the ADC. On-device FFT (via the ESP-DSP library) extracts movement signatures the packaged radar module alone can't resolve.

Results stream to a self-hosted web interface rendering a live radar-style visualization — no cloud, no external dependencies.

Primary
LD2410 24GHz radar (UART)
Secondary
5kHz biphasic carrier · LEDC PWM
Processing
ESP-DSP FFT · 128-pt · ADC sampled
Output
Embedded web radar viz
mmWaveFFTESP-DSPIoT

📷 Reserved: live web radar UI + oscilloscope trace of the biphasic carrier.

Cell Tower Signal Map · GSM/LTE MAPPED
Cell Tower Signal Map showing geotagged GSM900, GSM850, LTE, 4G, and 5G base stations across a neighbourhood map, with one anomalous cell flagged and survey positions marked. Synthetic demo data.
CASE 03 SDR / Cellular

Cellular tower mapping & rogue-cell detection

An end-to-end SDR pipeline that surveys the cellular environment and maps it. A HackRF One captures across GSM, LTE, and sub-6 5G bands; a custom touchscreen GPS node (ESP32 + LVGL) streams position over UDP; a Python processing layer correlates tower broadcasts with location and writes geotagged records.

A Leaflet.js front-end plots each cell and runs anomaly detection — flagging candidates for rogue base stations or IMSI-catchers from RSSI-to-distance discrepancies and missing reference records. Field-captured across the Greater Toronto Area.

Capture
HackRF One · GSM/LTE/5G NR
Position
ESP32 + NMEA GPS · LVGL touchscreen
Pipeline
Python · kalibrate → hackrf_transfer IQ
Map
Leaflet.js · anomaly detection layer
HackRFGNU Radioanomaly detectionLeaflet

Map and tower positions shown are synthetic demo data generated for this portfolio — not a live or field-captured dataset.

Multi-Target Tracking · Trajectories TRACKING
LD2410 24GHz · stock module, no custom carrier — targets
CASE 04 Multi-Target Tracking

Radar presence monitor with per-target velocity

A different build on the same LD2410 module — no custom carrier, no FFT. Here the sensor stays stock; the work is entirely in the tracking software. Peaks are picked across the module's own gate data and matched frame-to-frame against existing tracks with a hysteresis window, so each person keeps a stable ID as they move rather than flickering between detections.

Each track's velocity is computed over a rolling window with a dead-zone to ignore sensor jitter, surfaced as closing/opening indicators with a speed in cm/s. Zone occupancy (near/mid/far) and a settle/depart event log round out a fully self-hosted dashboard — no cloud, served directly by the ESP32.

Primary
LD2410 24GHz radar (UART, stock)
Tracking
Multi-target match · hysteresis window
Velocity
Rolling window · dead-zone filtered
Output
Zones · trajectories · event log
mmWavemulti-target trackingIoTweb UI
wifi_audit.sh · sample outputsanitized
[*] Parsing access points — vendor lookup via OUI… BSSID CH PWR ENC SSID VENDOR ───────────────────────────────────────────────────────── AA:BB:CC:00:1B:BE 1 -42 WPA2 corp-wifi Cisco Systems AA:BB:CC:11:F0:45 44 -55 WPA2 corp-wifi-5g Cisco Systems AA:BB:CC:22:94:E9 11 -61 WPA2 guest-net Ubiquiti AA:BB:CC:33:6A:5F 6 -70 OPEN setup_2231 ? unknown OUI [!] 1 open AP · 1 unrecognized vendor → flagged for review
CASE 05 Spectrum Audit

Wireless site-survey & audit toolkit

A lightweight toolkit for continuous 802.11 spectrum auditing. Bash automation drives airodump-ng capture, then parses access points and associated clients, resolving each MAC to its hardware vendor via IEEE OUI lookup — surfacing rogue APs, open networks, and unrecognized devices at a glance.

Complemented by headless ESP32 survey nodes that spin up an instant, browser-based view of the surrounding wireless landscape with zero external infrastructure.

Capture
airodump-ng · 2.4 / 5GHz
Enrichment
IEEE OUI vendor fingerprinting
Detects
Rogue AP · open net · unknown client
Nodes
ESP32 / ESP8266 survey + captive UI
bashaircrack-ngrogue-AP detectionESP8266
CC1101 Sub-GHz Console CAPTURE
CC1101 Sub-GHz console — radio tuned to 433.922 MHz 2FSK, live RSSI trace, band-sweep and listen controls, and decoded capture table showing UNKNOWN and UNCLEAR classifications with analysis.
315 MHz · OOK · 55 captures · 38 decoded real capture · rolling code
CASE 05b Sub-GHz RF

Sub-GHz signal capture & blind protocol decoder

Complete sub-GHz capture and analysis pipeline around an RP2040 + CC1101 dongle — the RP2040's PIO state machine handles precise edge timestamping at microsecond resolution directly in hardware, offloading the CC1101's GDO0 output without CPU interrupt jitter. From raw edge timings through blind protocol detection and bit recovery, with no prior knowledge of the target device. The pipeline classifies encoding automatically: PWM (EV1527/PT2262), PPM (car fobs), or NRZ/Manchester (FSK). A fingerprinter assesses rolling-code probability across multiple presses and generates an annotated bit overlay aligned to the waveform.

A custom capture format (ztcap) preserves signed-microsecond edge timings. Because the CC1101 demodulates internally and the original RF waveform is gone before the host sees anything, a synthesis tool reconstructs IQ files URH can analyse. A standalone SDR probe tool (RTL-SDR) characterises unknown remotes before the CC1101 is configured — solving the blind-tuning problem that makes sub-GHz capture unreliable without prior signal characterisation.

Capture hardware
RP2040 (PIO edge timestamping) + CC1101 sub-GHz transceiver, RTL-SDR (SDR probe path)
Protocols decoded
EV1527/PT2262 PWM, PPM car fobs, NRZ/Manchester FSK, KeeLoq rolling code detection
Frequencies
300–928 MHz; presets for 315, 345, 390, 433, 434, 868, 915 MHz ISM bands
Stack
Python (no framework) · numpy · WebSocket (hand-rolled RFC 6455) · Canvas waveform renderer
Test coverage
Signal/noise discriminator, protocol classifier, fingerprinter, WebSocket framing, dongle protocol — all on synthetic data, no hardware required
RP2040PIOCC1101rolling-code detectionRTL-SDROOK/FSKKeeLoq

Capture shown is a real car fob transmission decoded as a 78-bit KeeLoq rolling code — replay-resistant by design; the receiver invalidates each code on use. No fixed-code remotes or replayable signals are shown.

Pinktooth · BLE Scanner SCAN
Pinktooth banner and logo. Scan Control panel with Start Scan and Stop Scan buttons. Discovered BLE Devices table with MAC address, name, RSSI, device type, connectable, manufacturer, and last-seen columns, plus a scan-stats footer showing scan status, devices found, last scan duration, and uptime.
CASE 06 BLE Audit

Bluetooth LE security auditing tool

A headless ESP32 tool with a web interface that discovers and profiles nearby Bluetooth Low Energy devices — the wearables, sensors, and IoT gadgets that broadcast constantly. It parses advertisement packets, fingerprints manufacturers from OUI and manufacturer-specific data, classifies device types, estimates proximity from RSSI, and performs GATT service enumeration — with filtering, sorting, and a live event log.

Platform
ESP32 · web UI + auth
Parses
BLE adv data · mfr ID · UUIDs
Profiles
Vendor · type · proximity · GATT
Interface
Live table · filter / sort · logs
BLEGATTdevice discoveryESP32IoT

Shown as built, with the red-team capable controls stripped out for public display, and every device row replaced with fabricated data so no real nearby hardware or MAC address is ever shown.

nRF52840 · Wireshark extcap CAPTURE
Wireshark packet list — IEEE 802.15.4 / ZigBee frames captured via the nRF52840 extcap interface, showing time, source, destination, protocol, length, and RSSI columns. Wireshark frame detail pane — dissected IEEE 802.15.4 TAP header with RSSI, channel, and link quality indicator, plus the raw hex dump and capture status bar.
CASE 07 Protocol Analysis

802.15.4 & BLE protocol capture

The deep-inspection layer of the practice. An nRF52840 runs as a Wireshark extcap capture interface, piping hardware-level IEEE 802.15.4 and BLE traffic straight into Wireshark for dissection — with configured decryption keys and out-of-band metadata (channel, RSSI, LQI) per frame.

Used to inspect and validate Zigbee and Thread mesh traffic where active scanners can't reach — the analysis counterpart to the auditing toolkit.

Radio
nRF52840 dongle / DK
Protocols
IEEE 802.15.4 · BLE · Zigbee · Thread
Analysis
Wireshark extcap · Lua dissectors
Metadata
Channel · RSSI · LQI per frame
WiresharknRF52840Zigbee/ThreadDPI

The capture pipeline and dissection are real; the packet contents shown are synthetic data generated for this demo, not a live network capture.

Naval Watch · AIS + GFW LIVE
Naval Watch maritime dashboard showing live AIS vessel positions across the Mediterranean and European waters, with a vessel detail popup for a Croatian passenger ship showing position, course, speed, callsign, and destination. Global Fishing Watch panel visible in the top-right corner.
CASE 08 OSINT

Maritime domain awareness dashboard

A real-time maritime intelligence tool built on open data. It streams live AIS vessel positions and layers in Global Fishing Watch datasets — AIS transmission gaps ("dark" vessels), at-sea encounters, and apparent fishing activity — the same signals used to surface illegal, unreported fishing and transshipment.

Engineered to hold thousands of live markers smoothly: a batched update queue, viewport culling, and IndexedDB persistence keep the map responsive across sessions.

Sources
AISstream · Global Fishing Watch v3
Layers
Positions · gaps · encounters · fishing
Render
Leaflet canvas · batched · culled
Persist
IndexedDB vessel cache
AISdark-vessel detectionWebSocketLeaflet
How we work

Research rigor, run like a program.

The engineering is only half of it. Every build is scoped, de-risked, and documented the way a bank runs an enterprise initiative — because that's where this discipline comes from.

STEP 01

Scope & feasibility

Define the sensing or security question, assess RF feasibility, and evaluate hardware and reference sources before committing a build.

STEP 02

Technical risk-down

Prove the riskiest assumption first — validate real signal over synthetic, confirm the physics, then iterate toward a working prototype.

STEP 03

Build & instrument

Develop firmware and pipeline with AI-augmented tooling, instrumenting output so results are observable and measurable, not asserted.

STEP 04

Document & track

Epics, stories, and defect logs tracked in Jira & Confluence — the same delivery framework used on enterprise financial-services programs.

METHOD

The consultancy is run by a program manager with 17+ years delivering complex initiatives in Canadian financial services, including 11 years at CIBC Wealth Management leading migrations, custody implementations, and regulatory programs at enterprise scale. That delivery discipline — not just the soldering — is what makes the R&D repeatable.

Get in touch

Let's talk signals.

Available for senior delivery and program roles in financial services, and for applied RF, sensing, and wireless-security research engagements.