New modes: - BT Locate: SAR Bluetooth device location with GPS-tagged signal trail, RSSI-based proximity bands, audio alerts, and IRK auto-extraction from paired devices (macOS plist / Linux BlueZ) - GPS: Real-time position tracking with live map, speed, heading, altitude, satellite info, and track recording via gpsd Bug fixes: - Fix ABBA deadlock between session lock and aggregator lock in BT Locate - Fix bleak scan lifecycle tracking in BluetoothScanner (is_scanning property now cross-checks backend state) - Fix map tile persistence when switching modes - Use 15s max_age window for fresh detections in BT Locate poll loop Documentation: - Update README, FEATURES.md, USAGE.md, and GitHub Pages with new modes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
14 KiB
INTERCEPT Usage Guide
Detailed instructions for each mode.
Pager Mode
- Select Hardware - Choose your SDR type (RTL-SDR, LimeSDR, or HackRF)
- Select Device - Choose your SDR device from the dropdown
- Set Frequency - Enter a frequency in MHz or use a preset
- Choose Protocols - Select which protocols to decode (POCSAG/FLEX)
- Adjust Settings - Set gain, squelch, and PPM correction as needed
- Start Decoding - Click the green "Start Decoding" button
Frequency Presets
- Click a preset button to quickly set a frequency
- Add custom presets using the input field and "Add" button
- Right-click a preset to remove it
- Click "Reset to Defaults" to restore default frequencies
433MHz Sensor Mode
- Select Hardware - Choose your SDR type
- Select Device - Choose your SDR device
- Start Decoding - Click "Start Decoding"
- View Sensors - Decoded sensor data appears in real-time
Supports 200+ protocols including weather stations, TPMS, doorbells, and IoT devices.
WiFi Mode
- Select Interface - Choose a WiFi adapter capable of monitor mode
- Enable Monitor Mode - Click "Enable Monitor" (uncheck "Kill processes" to preserve other connections)
- Start Scanning - Click "Start Scanning" to begin
- View Networks - Networks appear in the output panel with signal strength
- Track Devices - Click the chart icon on any network to track its signal over time
- Capture Handshakes - Click "Capture" on a network to start handshake capture
Tips
- Run with
sudofor monitor mode to work - Check your adapter supports monitor mode:
iw list | grep monitor - Use "Kill processes" option if NetworkManager interferes
Bluetooth Mode
- Select Interface - Choose your Bluetooth adapter
- Choose Mode - Select scan mode (hcitool, bluetoothctl)
- Start Scanning - Click "Start Scanning"
- View Devices - Devices appear with name, address, and classification
Tracker Detection
INTERCEPT automatically detects known trackers:
- Apple AirTag
- Tile
- Samsung SmartTag
- Chipolo
Sub-GHz Analyzer
- Connect HackRF - Plug in your HackRF One device
- Set Frequency - Enter a frequency in the 300-928 MHz ISM range or use a preset
- Start Capture - Click "Start Capture" to begin signal analysis
- View Spectrum - Real-time spectrum visualization of the selected band
- Protocol Decoding - Identified protocols are displayed with decoded data
Supported Protocols
Common ISM band protocols including garage doors, key fobs, weather stations, and IoT devices in the 300-928 MHz range.
Listening Post
- Select Hardware - Choose your SDR type
- Set Frequency Range - Define start and end frequencies for scanning
- Start Scanning - Click "Start Scan" for wideband sweep
- View Signals - Discovered signals are listed with frequency and SNR
- Tune In - Click a signal to tune the audio demodulator
- Listen - Real-time audio plays in your browser
Demodulation Modes
- FM - Narrowband and wideband FM
- SSB - Upper and lower sideband for amateur radio and shortwave
Aircraft Mode (ADS-B)
- Select Hardware - Choose your SDR type (RTL-SDR uses dump1090, others use readsb)
- Check Tools - Ensure dump1090 or readsb is installed
- Set Location - Choose location source:
- Manual Entry - Type coordinates directly
- Browser GPS - Use browser's built-in geolocation (requires HTTPS)
- USB GPS Dongle - Connect a USB GPS receiver for continuous updates
- Shared Location - By default, the observer location is shared across modules
(disable with
INTERCEPT_SHARED_OBSERVER_LOCATION=false)
- Start Tracking - Click "Start Tracking" to begin ADS-B reception
- View Map - Aircraft appear on the interactive Leaflet map
- Click Aircraft - Click markers for detailed information
- Display Options - Toggle callsigns, altitude, trails, range rings, clustering
- Filter Aircraft - Use dropdown to show all, military, civil, or emergency only
- Full Dashboard - Click "Full Screen Dashboard" for dedicated radar view
Note: ADS-B auto-start is disabled by default. To enable auto-start on dashboard load, set
INTERCEPT_ADSB_AUTO_START=true.
Emergency Squawks
The system highlights aircraft transmitting emergency squawks:
- 7500 - Hijack
- 7600 - Radio failure
- 7700 - General emergency
ADS-B History (Optional)
The history dashboard persists aircraft messages and per-aircraft snapshots to Postgres for long-running tracking and reporting.
Enable History
Set the following environment variables (Docker recommended):
| Variable | Default | Description |
|---|---|---|
INTERCEPT_ADSB_HISTORY_ENABLED |
false |
Enables history storage and reporting |
INTERCEPT_ADSB_DB_HOST |
localhost |
Postgres host (use adsb_db in Docker) |
INTERCEPT_ADSB_DB_PORT |
5432 |
Postgres port |
INTERCEPT_ADSB_DB_NAME |
intercept_adsb |
Database name |
INTERCEPT_ADSB_DB_USER |
intercept |
Database user |
INTERCEPT_ADSB_DB_PASSWORD |
intercept |
Database password |
Other ADS-B Settings
| Variable | Default | Description |
|---|---|---|
INTERCEPT_ADSB_AUTO_START |
false |
Auto-start ADS-B tracking when the dashboard loads |
INTERCEPT_SHARED_OBSERVER_LOCATION |
true |
Share observer location across ADS-B/AIS/SSTV/Satellite modules |
Local install example
INTERCEPT_ADSB_AUTO_START=true \
INTERCEPT_SHARED_OBSERVER_LOCATION=false \
python app.py
Docker example (.env)
INTERCEPT_ADSB_AUTO_START=true
INTERCEPT_SHARED_OBSERVER_LOCATION=false
Docker Setup
docker-compose.yml includes an adsb_db service and a persistent volume for history storage:
docker compose --profile history up -d
To store Postgres data on external storage, set PGDATA_PATH (defaults to ./pgdata):
PGDATA_PATH=/mnt/usbpi1/intercept/pgdata
Using the History Dashboard
- Open /adsb/history
- Use Start Tracking to run ADS-B in headless mode
- View aircraft history and timelines
- Stop tracking when desired (session history is recorded)
If the History dashboard shows HISTORY DISABLED, enable INTERCEPT_ADSB_HISTORY_ENABLED=true and ensure Postgres is running.
Satellite Mode
- Set Location - Choose location source:
- Manual Entry - Type coordinates directly
- Browser GPS - Use browser's built-in geolocation
- USB GPS Dongle - Connect a USB GPS receiver for continuous updates
- Add Satellites - Click "Add Satellite" to enter TLE data or fetch from Celestrak
- Calculate Passes - Click "Calculate Passes" to predict upcoming passes
- View Sky Plot - Polar plot shows satellite positions in real-time
- Ground Track - Map displays satellite orbit path and current position
- Full Dashboard - Click "Full Screen Dashboard" for dedicated satellite view
Adding Satellites from Celestrak
- Click "Add Satellite"
- Select "Fetch from Celestrak"
- Choose a category (Amateur, Weather, ISS, Starlink, etc.)
- Select satellites to add
Weather Satellites
- Set Location - Enter observer coordinates or use GPS
- Select Satellite - Choose NOAA (APT) or Meteor (LRPT)
- View Passes - Upcoming passes shown with polar plot and ground track
- Start Capture - Click "Start Capture" when a satellite is overhead, or enable auto-scheduler
- View Images - Decoded imagery appears in the gallery
Auto-Scheduler
Enable the auto-scheduler to automatically capture passes:
- Calculates upcoming NOAA and Meteor passes for your location
- Starts SatDump at the correct time and frequency
- Decoded images are saved with timestamps
AIS Vessel Tracking
- Select Hardware - Choose your SDR type
- Start Tracking - Click "Start Tracking" to monitor AIS frequencies (161.975/162.025 MHz)
- View Map - Vessels appear on the interactive maritime map
- Click Vessels - View name, MMSI, callsign, destination, speed, heading
- Full Dashboard - Click "Full Screen Dashboard" for dedicated maritime view
VHF DSC Channel 70
Digital Selective Calling monitoring runs alongside AIS:
- Distress, Urgency, Safety, and Routine messages
- Distress positions plotted with pulsing alert markers
- Audio alerts for critical messages
APRS
- Select Hardware - Choose your SDR type
- Set Frequency - Defaults to regional APRS frequency (144.390 MHz NA, 144.800 MHz EU)
- Start Decoding - Click "Start Decoding" to begin packet radio reception via direwolf
- View Map - Station positions appear on the interactive map
- View Messages - Position reports, telemetry, and messages displayed in real time
Utility Meters
- Start Monitoring - Click "Start" to begin meter broadcast reception via rtl_amr
- View Meters - Decoded meter data appears with meter ID, type, and consumption
- Filter - Filter by meter type (electric, gas, water) or meter ID
BT Locate (SAR Device Location)
- Set Target - Enter one or more target identifiers:
- MAC Address - Exact Bluetooth address (AA:BB:CC:DD:EE:FF)
- Name Pattern - Substring match (e.g., "iPhone", "Galaxy")
- IRK - 32-character hex Identity Resolving Key for RPA resolution
- Detect IRKs - Click "Detect" to auto-extract IRKs from paired devices
- Choose Environment - Select the RF environment preset:
- Open Field (n=2.0) - Best for open areas with line-of-sight
- Outdoor (n=2.2) - Default, works well in most outdoor settings
- Indoor (n=3.0) - For buildings with walls and obstacles
- Start Locate - Click "Start Locate" to begin tracking
- Monitor HUD - The proximity display shows:
- Proximity band (IMMEDIATE / NEAR / FAR)
- Estimated distance in meters
- Raw RSSI and smoothed RSSI average
- Detection count and GPS-tagged points
- Follow the Signal - Move towards stronger signal (higher RSSI / closer distance)
- Audio Alerts - Enable audio for proximity tones that increase in pitch as you get closer
- Review Trail - Check the map for GPS-tagged detection trail
Hand-off from Bluetooth Mode
- Open Bluetooth scanning mode and find the target device
- Click the "Locate" button on the device card
- BT Locate opens with the device pre-filled
- Click "Start Locate" to begin tracking
Tips
- For devices with address randomization (iPhones, modern Android), use the IRK method
- Click "Detect" next to the IRK field to auto-extract IRKs from paired devices
- The RSSI chart shows signal trend over time — use it to determine if you're getting closer
- Clear the trail when starting a new search area
GPS Mode
- Start GPS - Click "Start" to connect to gpsd and begin position tracking
- View Map - Your position appears on the interactive map with a track trail
- Monitor Stats - Speed, heading, altitude, and satellite count displayed in real-time
- Record Track - Enable track recording to save your path
Tips
- Ensure gpsd is running:
sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock - GPS fix may take 30-60 seconds after cold start
- Accuracy improves with more satellites in view
Meshtastic
- Connect Device - Plug in a Meshtastic device via USB or connect via TCP
- Start - Click "Start" to connect to the mesh network
- View Messages - Real-time message stream from the mesh
- View Nodes - Connected nodes displayed with signal metrics (RSSI, SNR)
- Send Messages - Type messages to broadcast on the mesh
Remote Agents (Distributed SIGINT)
Deploy lightweight sensor nodes across multiple locations and aggregate data to a central controller.
Setting Up an Agent
- Install INTERCEPT on the remote machine
- Create config file (
intercept_agent.cfg):[agent] name = sensor-node-1 port = 8020 [controller] url = http://192.168.1.100:5050 api_key = your-secret-key push_enabled = true [modes] pager = true sensor = true adsb = true - Start the agent:
python intercept_agent.py --config intercept_agent.cfg
Registering Agents in the Controller
- Navigate to
/controller/managein the main INTERCEPT instance - Enter agent details:
- Name: Must match config file (e.g.,
sensor-node-1) - Base URL: Agent address (e.g.,
http://192.168.1.50:8020) - API Key: Must match config file
- Name: Must match config file (e.g.,
- Click "Register Agent"
- Use "Test" to verify connectivity
Using Remote Agents
Once registered, agents appear in mode dropdowns:
- Select agent from the dropdown in supported modes
- Start mode - Commands are proxied to the remote agent
- View data - Data streams back to your browser via SSE
Multi-Agent Streaming
Enable "Show All Agents" to aggregate data from all registered agents simultaneously.
For complete documentation, see Distributed Agents Guide.
Configuration
INTERCEPT can be configured via environment variables:
| Variable | Default | Description |
|---|---|---|
INTERCEPT_HOST |
0.0.0.0 |
Server bind address |
INTERCEPT_PORT |
5050 |
Server port |
INTERCEPT_DEBUG |
false |
Enable debug mode |
INTERCEPT_LOG_LEVEL |
WARNING |
Log level (DEBUG, INFO, WARNING, ERROR) |
INTERCEPT_DEFAULT_GAIN |
40 |
Default RTL-SDR gain |
Example: INTERCEPT_PORT=8080 sudo -E venv/bin/python intercept.py
Command-line Options
python3 intercept.py --help
-p, --port PORT Port to run server on (default: 5050)
-H, --host HOST Host to bind to (default: 0.0.0.0)
-d, --debug Enable debug mode
--check-deps Check dependencies and exit