← back

Dr. Nose | updates
Jan 22, 2026

dr-nose

Wi-Fi recon is mostly about observation: detect beacons, learn BSSIDs, map channels, and track signal behavior over time. Dr. Nose is a small Rust app that stays strictly passive while giving you an operator-friendly view of 802.11 captures. It reads monitor-mode PCAPs (radiotap + 802.11), aggregates access points, and lets you save and export frames for deeper analysis.

Data flow overview

Dr. Nose runs a decode loop in a background thread:

  1. Read packets from a PCAP file.
  2. Decode radiotap (RSSI, channel MHz) and 802.11 headers.
  3. Build a frame summary for UI and aggregation.
  4. Optionally save a selected frame to SQLite for later export.

The UI shows a live timeline and a rolling AP list. It never transmits or injects; it's read-only on captures.

Radiotap and 802.11 decoding

The decoder handles two linktypes:

Radiotap parsing is intentionally minimal. It extracts only:

802.11 header parsing is "MVP-correct" for management and data frames. It parses frame control fields, addresses, and subtype, and then infers BSSID using the DS flags.

This is enough to support most recon tasks:

Live tailing a growing PCAP

On macOS, Wireless Diagnostics Sniffer writes to /var/tmp/*.pcap. Dr. Nose can tail a growing capture by periodically reopening the file and advancing to the last processed index.

The loop pattern is:

open pcap
skip N packets already seen
read new packets until EOF
sleep briefly and repeat

This is safe, simple, and good enough for a live feed. It avoids external dependencies and works with long-running captures while staying passive.

Aggregation and memory hygiene

For operational clarity, the app keeps two rolling data structures:

AP pruning is LRU-like, based on the last seen timestamp. This prevents unbounded memory use when capturing in dense RF environments.

Persistence and export

Saved frames go into SQLite with metadata plus raw bytes. The schema includes:

Exports are supported for:

This setup works well for triage and later deep dives:

Filtering and frame inspection

The UI includes filters for BSSID, SSID, channel, and frame type. Matching happens in-app without database queries.

Inspect mode surfaces:

This makes it easy to spot patterns like:

Testing the decoder

Unit tests cover:

Tiny synthetic fixtures are enough to lock in parsing behavior without large PCAP fixtures in the repo.

Operational guidance

Dr. Nose is designed for ethical recon and troubleshooting:

Always ensure you have authorization for the airspace you are monitoring. Passive observation can still fall under regulatory and organizational rules.