diff --git a/LICENSE b/LICENSE index 844ff64..ff8c02d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 +Copyright (c) 2025 smittix Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 3575746..52a162c 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Python 3.7+ MIT License Platform + Author

@@ -11,8 +12,8 @@

- A sleek, modern web-based pager decoder using RTL-SDR and multimon-ng.
- Decode POCSAG and FLEX pager signals with a futuristic SpaceX-inspired interface. + A sleek, modern web-based front-end for RTL-SDR signal decoding tools.
+ Provides a unified interface for multimon-ng (POCSAG/FLEX) and rtl_433 (433MHz sensors).

## Screenshot @@ -20,15 +21,40 @@ --- +## What is INTERCEPT? + +INTERCEPT is a **web-based front-end** that provides a unified, modern interface for popular RTL-SDR signal decoding tools: + +- **rtl_fm + multimon-ng** - For decoding POCSAG and FLEX pager signals +- **rtl_433** - For decoding 433MHz ISM band devices (weather stations, sensors, etc.) + +Instead of running command-line tools manually, INTERCEPT handles the process management, output parsing, and presents decoded data in a clean, real-time web interface. + +--- + ## Features +### Pager Decoding - **Real-time decoding** of POCSAG (512/1200/2400) and FLEX protocols +- **Customizable frequency presets** stored in browser +- **Auto-restart** on frequency change while decoding + +### 433MHz Sensor Decoding +- **200+ device protocols** supported via rtl_433 +- **Weather stations** - temperature, humidity, wind, rain +- **TPMS** - Tire pressure monitoring sensors +- **Doorbells, remotes, and IoT devices** +- **Smart meters** and utility monitors + +### General - **Web-based interface** - no desktop app needed - **Live message streaming** via Server-Sent Events (SSE) +- **Audio alerts** with mute toggle +- **Message export** to CSV/JSON +- **Signal activity meter** and waterfall display - **Message logging** to file with timestamps -- **Customizable frequency presets** stored in browser - **RTL-SDR device detection** and selection -- **Configurable gain, squelch, and PPM correction** +- **Configurable gain and PPM correction** ## Requirements @@ -40,7 +66,8 @@ - Python 3.7+ - Flask - rtl-sdr tools (`rtl_fm`) -- multimon-ng +- multimon-ng (for pager decoding) +- rtl_433 (for 433MHz sensor decoding) ## Installation @@ -75,7 +102,7 @@ sudo apt-get install multimon-ng **From source:** ```bash -git clone https://github.com/EliasOewortal/multimon-ng.git +git clone https://github.com/EliasOenal/multimon-ng.git cd multimon-ng mkdir build && cd build cmake .. @@ -83,13 +110,35 @@ make sudo make install ``` -### 3. Install Python dependencies +### 3. Install rtl_433 (optional, for 433MHz sensors) + +**macOS (Homebrew):** +```bash +brew install rtl_433 +``` + +**Ubuntu/Debian:** +```bash +sudo apt-get install rtl-433 +``` + +**From source:** +```bash +git clone https://github.com/merbanan/rtl_433.git +cd rtl_433 +mkdir build && cd build +cmake .. +make +sudo make install +``` + +### 4. Install Python dependencies ```bash pip install -r requirements.txt ``` -### 4. Clone and run +### 5. Clone and run ```bash git clone https://github.com/yourusername/intercept.git @@ -119,12 +168,19 @@ Open your browser to `http://localhost:5050` Enable logging in the Logging section to save decoded messages to a file. Messages are saved with timestamp, protocol, address, and content. -## Default Frequencies (UK) +## Default Frequencies +### Pager (UK) - **153.350 MHz** - UK pager frequency - **153.025 MHz** - UK pager frequency -You can customize these presets in the web interface. +### 433MHz Sensors +- **433.92 MHz** - EU/UK ISM band (most common) +- **315.00 MHz** - US ISM band +- **868.00 MHz** - EU ISM band +- **915.00 MHz** - US ISM band + +You can customize pager presets in the web interface. ## API Endpoints @@ -132,10 +188,13 @@ You can customize these presets in the web interface. |----------|--------|-------------| | `/` | GET | Main web interface | | `/devices` | GET | List RTL-SDR devices | -| `/start` | POST | Start decoding | -| `/stop` | POST | Stop decoding | +| `/start` | POST | Start pager decoding | +| `/stop` | POST | Stop pager decoding | +| `/start_sensor` | POST | Start 433MHz sensor listening | +| `/stop_sensor` | POST | Stop 433MHz sensor listening | | `/status` | GET | Get decoder status | -| `/stream` | GET | SSE stream for messages | +| `/stream` | GET | SSE stream for pager messages | +| `/stream_sensor` | GET | SSE stream for sensor data | | `/logging` | POST | Toggle message logging | | `/killall` | POST | Kill all decoder processes | @@ -160,10 +219,15 @@ You can customize these presets in the web interface. MIT License - see [LICENSE](LICENSE) for details. +## Author + +Created by **smittix** - [GitHub](https://github.com/smittix) + ## Acknowledgments - [rtl-sdr](https://osmocom.org/projects/rtl-sdr/wiki) - RTL-SDR drivers -- [multimon-ng](https://github.com/EliasOenal/multimon-ng) - Multi-protocol decoder +- [multimon-ng](https://github.com/EliasOenal/multimon-ng) - Multi-protocol pager decoder +- [rtl_433](https://github.com/merbanan/rtl_433) - 433MHz sensor decoder - Inspired by the SpaceX mission control aesthetic ## Disclaimer diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 0000000..81b4829 --- /dev/null +++ b/favicon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/intercept.py b/intercept.py index e662956..bcf49f3 100755 --- a/intercept.py +++ b/intercept.py @@ -11,14 +11,17 @@ import queue import pty import os import select -from flask import Flask, render_template_string, jsonify, request, Response +from flask import Flask, render_template_string, jsonify, request, Response, send_file app = Flask(__name__) # Global process management current_process = None +sensor_process = None output_queue = queue.Queue() +sensor_queue = queue.Queue() process_lock = threading.Lock() +sensor_lock = threading.Lock() # Logging settings logging_enabled = False @@ -32,6 +35,7 @@ HTML_TEMPLATE = ''' INTERCEPT // Signal Intelligence +