Aetherscope 1.0: a self-hosted browser UI for a HackRF One, now stable.
This caps a full SDR instrument + situational-awareness tool. Highlights since the 0.x line:
- Spectrum analyzer (FFT + waterfall, max-hold/avg, peak table, zoom, marks, calibration).
- Radio: FM / NBFM / AM in the browser, one-click snap-to-peak tuning, a scanner, WAV recording of what you hear, and saved bookmarks.
- Captures you can use: record IQ, then replay as a spectrogram, listen with an offset tuner, or decode with rtl_433. Each capture gets a SigMF sidecar.
- Optional GPS geotagging (opt-in, default off) with per-capture redaction and precision coarsening; a live receiver marker on the map.
- ADS-B enrichment: US registration (N-number), country, range rings around your receiver, and live stats.
- Persistent device inventory aggregating ADS-B + ISM contacts (first/last seen, count, location).
- Configurable port (AETHERSCOPE_PORT); same-origin websockets; strict CSP with vendored deps (works offline).
1.0 readiness pass
Before tagging, a security + quality review (three adversarial passes + semgrep) hardened the release:
- Websocket origin check fixed to enforce same-origin by default.
- RF-derived strings escaped in the Decode/scan/ADS-B renderers; non-numeric RF fields no longer crash the map.
- Capture-label and other input bounds; capture-start failures no longer wedge the app.
- Lock/race fixes (audio-record connect read + start TOCTOU); SigMF and DSP correctness tweaks.
- Semgrep clean (0 findings); 15 test suites green.
Still localhost-only by design with no built-in auth; put TLS + auth in front to expose it.