pluto-siege 2.1.0__tar.gz → 2.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/PKG-INFO +46 -48
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/README.md +43 -45
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/__init__.py +1 -19
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/cli.py +1 -1
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/constants.py +1 -1
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege.egg-info/PKG-INFO +46 -48
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pyproject.toml +2 -3
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/LICENSE +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/__main__.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/config.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/device.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/dsp.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/engine.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/gps.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/settings.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/sigmf.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/sound.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/__init__.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/screens/__init__.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/screens/capture.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/screens/loopback.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/screens/main_menu.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/screens/settings.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/screens/transmit.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/widgets/__init__.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege/ui/widgets/framework.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege.egg-info/SOURCES.txt +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege.egg-info/dependency_links.txt +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege.egg-info/entry_points.txt +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege.egg-info/requires.txt +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/pluto_siege.egg-info/top_level.txt +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/setup.cfg +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/tests/test_config.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/tests/test_dsp.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/tests/test_engine_and_ui.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/tests/test_gps.py +0 -0
- {pluto_siege-2.1.0 → pluto_siege-2.1.1}/tests/test_sigmf.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pluto_siege
|
|
3
|
-
Version: 2.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 2.1.1
|
|
4
|
+
Summary: RF Capture & Replay Tool for PlutoSDR
|
|
5
5
|
Author: SketchTurnerDev
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
7
7
|
Project-URL: Homepage, https://github.com/SketchTurnerDev/pluto_siege
|
|
8
8
|
Project-URL: Repository, https://github.com/SketchTurnerDev/pluto_siege.git
|
|
9
9
|
Project-URL: Issues, https://github.com/SketchTurnerDev/pluto_siege/issues
|
|
10
|
-
Keywords: 433mhz,868mhz,adalm-pluto,ham-radio,
|
|
10
|
+
Keywords: 433mhz,868mhz,adalm-pluto,ham-radio,pentesting,pluto-sdr,pluto-siege,plutosdr,plutosiege,python,radio-frequency,red-team,rf-hacking,sdr,security-tools,sigmf,subghz,wireless,wireless-security
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Classifier: Operating System :: POSIX :: Linux
|
|
13
13
|
Classifier: Environment :: Console :: Curses
|
|
@@ -23,7 +23,7 @@ Dynamic: license-file
|
|
|
23
23
|
<h1 align="center">PlutoSiege</h1>
|
|
24
24
|
|
|
25
25
|
<p align="center">
|
|
26
|
-
<strong>
|
|
26
|
+
<strong>RF Capture & Replay Tool for PlutoSDR</strong>
|
|
27
27
|
</p>
|
|
28
28
|
|
|
29
29
|
<p align="center">
|
|
@@ -43,12 +43,12 @@ Dynamic: license-file
|
|
|
43
43
|
|
|
44
44
|
## About
|
|
45
45
|
|
|
46
|
-
**PlutoSiege** is a terminal
|
|
46
|
+
**PlutoSiege** is a terminal and command-line tool for recording and replaying short RF bursts at 433 MHz, 868 MHz, and nearby frequencies from car remotes, garage doors, doorbells, and wireless sensors.
|
|
47
47
|
|
|
48
|
-
Built for
|
|
48
|
+
Built for ADALM-Pluto SDR hardware, it saves captures in the standard SigMF format so recordings can be opened directly in URH, IQEngine, GNU Radio, or Inspectrum.
|
|
49
49
|
|
|
50
50
|
### Hardware Compatibility
|
|
51
|
-
|
|
51
|
+
Supports official Analog Devices ADALM-Pluto Rev. B and Rev. C boards as well as compatible AD9363 and AD9361 clones such as Pluto Nano, Pluto Plus, and custom PlutoSDR hardware.
|
|
52
52
|
|
|
53
53
|
## Features
|
|
54
54
|
|
|
@@ -64,25 +64,25 @@ Fully supports both official **Analog Devices ADALM-Pluto** hardware (Rev. B / R
|
|
|
64
64
|
|
|
65
65
|
## Installation
|
|
66
66
|
|
|
67
|
-
### 1. System Drivers
|
|
67
|
+
### 1. System Drivers
|
|
68
68
|
Install the required IIO system drivers for your distribution family:
|
|
69
69
|
|
|
70
|
-
**Debian-based
|
|
70
|
+
**Debian-based:**
|
|
71
71
|
```bash
|
|
72
72
|
sudo apt update && sudo apt install -y libiio0 libiio-dev libiio-utils
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
**RPM-based
|
|
75
|
+
**RPM-based:**
|
|
76
76
|
```bash
|
|
77
77
|
sudo dnf install -y libiio python3-iio libiio-utils
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
**Arch-based
|
|
80
|
+
**Arch-based:**
|
|
81
81
|
```bash
|
|
82
82
|
sudo pacman -S libiio
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
### 2. Optional: GPS Support
|
|
85
|
+
### 2. Optional: GPS Support
|
|
86
86
|
If you plan to use GPS geotagging for SigMF recordings, install the `gpsd` daemon and tools:
|
|
87
87
|
|
|
88
88
|
**Debian-based:**
|
|
@@ -116,7 +116,7 @@ Launch from any terminal:
|
|
|
116
116
|
pluto_siege
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
#### Option B: From Source
|
|
119
|
+
#### Option B: From Source
|
|
120
120
|
Clone the repository and install dependencies:
|
|
121
121
|
```bash
|
|
122
122
|
git clone https://github.com/SketchTurnerDev/pluto_siege.git
|
|
@@ -138,8 +138,6 @@ python pluto_siege.py
|
|
|
138
138
|
|
|
139
139
|
## Application Menu
|
|
140
140
|
|
|
141
|
-
The main menu provides access to all core operations:
|
|
142
|
-
|
|
143
141
|
### 1. Capture
|
|
144
142
|
Listens for incoming RF bursts on the configured receiver frequency (`rx_freq`).
|
|
145
143
|
- Captures a single burst by default, or loops continuously (numbering saved bursts `[#1]`, `[#2]`, ... until stopped with `Esc` / `Q` in TUI or `Ctrl+C` in headless mode) when **Auto capture** (`--auto-capture true`) is enabled.
|
|
@@ -164,44 +162,44 @@ Configures radio parameters, trigger behavior, GPS integration, and interface pr
|
|
|
164
162
|
|
|
165
163
|
| Flags / Parameter | Type | Default | Description |
|
|
166
164
|
| :--- | :--- | :--- | :--- |
|
|
167
|
-
| `--pluto-uri
|
|
168
|
-
| `--rx-freq
|
|
169
|
-
| `--sample-rate
|
|
170
|
-
| `--rf-bandwidth
|
|
171
|
-
| `--rx-gain
|
|
172
|
-
| `--tx-gain
|
|
173
|
-
| `--tx-repeats
|
|
174
|
-
| `--auto-capture
|
|
175
|
-
| `--auto-threshold
|
|
176
|
-
| `--auto-trigger-margin
|
|
177
|
-
| `--auto-recal-seconds
|
|
178
|
-
| `--manual-threshold
|
|
179
|
-
| `--pre-trigger-buffers
|
|
180
|
-
| `--min-burst-seconds
|
|
181
|
-
| `--silence-seconds
|
|
182
|
-
| `--max-post-trigger-seconds
|
|
183
|
-
| `--rx-buffer-size
|
|
184
|
-
| `--enable-gps
|
|
185
|
-
| `--gpsd-host
|
|
186
|
-
| `--gpsd-port
|
|
187
|
-
| `--records-dir
|
|
188
|
-
| `--enable-sound
|
|
189
|
-
| `--enable-mouse
|
|
165
|
+
| `--pluto-uri`<br>`--pu` | `str` | `usb:` | PlutoSDR `libiio` context URI (`usb:`, `usb:1.4.5`, `ip:192.168.2.1`, `local:`). |
|
|
166
|
+
| `--rx-freq`<br>`--rf` | `int` | `433.92M` | Receiver center frequency in Hz; supports `k`/`M`/`G` suffixes and bare MHz shorthand (`70M - 6G`; e.g. `433`, `868`). |
|
|
167
|
+
| `--sample-rate`<br>`--sr` | `int` | `2.1M` | Sample rate in SPS; supports `k`/`M` suffixes (`521k - 61.44M`). |
|
|
168
|
+
| `--rf-bandwidth`<br>`--rb` | `int` | `0` | Analog RF filter bandwidth in Hz, or `0`/`auto` to follow `--sample-rate`; supports `k`/`M` suffixes (`0` or `200k - 56M`). |
|
|
169
|
+
| `--rx-gain`<br>`--rg` | `float` | `15.0` | Manual RX hardware gain in dB (`-10.0 .. 74.5`). |
|
|
170
|
+
| `--tx-gain`<br>`--tg` | `float` | `0.0` | Manual TX hardware gain in dB (`-89.75 .. 0.0`). |
|
|
171
|
+
| `--tx-repeats`<br>`--tr` | `int` | `1` | Number of consecutive burst transmissions per replay (`1 .. 100`). |
|
|
172
|
+
| `--auto-capture`<br>`--ac` | `bool` | `false` | Enable continuous multi-burst capture loop (`true` or `false`). |
|
|
173
|
+
| `--auto-threshold`<br>`--at` | `bool` | `true` | Enable automatic noise floor threshold detection (`true` or `false`). |
|
|
174
|
+
| `--auto-trigger-margin`<br>`--atm` | `float` | `8.0` | Trigger margin above noise floor in dB (`1.0 .. 30.0`; unused when `--auto-threshold` is `false`). |
|
|
175
|
+
| `--auto-recal-seconds`<br>`--ars` | `float` | `0.0` | Periodic noise floor recalibration interval in seconds while listening, or `0` to disable; supports `ms`/`s` suffixes (`0.0 .. 600.0`; unused when `--auto-threshold` is `false`). |
|
|
176
|
+
| `--manual-threshold`<br>`--mt` | `float` | `-30.0` | Fixed trigger threshold in dBFS (`-120.0 .. 0.0`; unused when `--auto-threshold` is `true`). |
|
|
177
|
+
| `--pre-trigger-buffers`<br>`--ptb` | `int` | `2` | Number of pre-trigger history buffers kept in memory (`1 .. 50`). |
|
|
178
|
+
| `--min-burst-seconds`<br>`--mbs` | `float` | `0.0` | Minimum active burst duration in seconds to filter short noise spikes, or `0` to disable; supports `ms`/`s` suffixes (`0.0 .. 5.0`). |
|
|
179
|
+
| `--silence-seconds`<br>`--ss` | `float` | `0.8` | Continuous silence duration in seconds to stop recording; supports `ms`/`s` suffixes (`0.01 .. 10.0`). |
|
|
180
|
+
| `--max-post-trigger-seconds`<br>`--mpts` | `float` | `4.0` | Maximum recording duration in seconds after trigger; supports `ms`/`s` suffixes (`0.1 .. 30.0`). |
|
|
181
|
+
| `--rx-buffer-size`<br>`--rbs` | `int` | `32768` | DMA receive buffer size in samples (`1024 .. 1048576`). |
|
|
182
|
+
| `--enable-gps`<br>`--eg` | `bool` | `false` | Enable GPS geolocation tagging via `gpsd` daemon (`true` or `false`). |
|
|
183
|
+
| `--gpsd-host`<br>`--gh` | `str` | `127.0.0.1` | `gpsd` daemon hostname or IP address (unused when `--enable-gps` is `false`). |
|
|
184
|
+
| `--gpsd-port`<br>`--gp` | `int` | `2947` | `gpsd` daemon TCP port (`1 .. 65535`; unused when `--enable-gps` is `false`). |
|
|
185
|
+
| `--records-dir`<br>`--rd` | `str` | `./recordings` | Directory path for saving and loading SigMF recordings (`~/.pluto_siege/recordings` when installed via `pip`/`pipx`). |
|
|
186
|
+
| `--enable-sound`<br>`--es` | `bool` | `true` | Enable acoustic sound effect cues (`true` or `false`). |
|
|
187
|
+
| `--enable-mouse`<br>`--em` | `bool` | `true` | Enable terminal mouse support in the TUI (`true` or `false`). |
|
|
190
188
|
|
|
191
189
|
### CLI-Only Options
|
|
192
190
|
|
|
193
191
|
| Flags | Description |
|
|
194
192
|
| :--- | :--- |
|
|
195
|
-
| `--capture
|
|
196
|
-
| `--transmit
|
|
197
|
-
| `--loopback
|
|
198
|
-
| `--list
|
|
199
|
-
| `--show-config
|
|
200
|
-
| `--headless
|
|
201
|
-
| `--save
|
|
202
|
-
| `--reset
|
|
203
|
-
| `--version
|
|
204
|
-
| `--help
|
|
193
|
+
| `--capture`<br>`-c` | Start in Capture mode. |
|
|
194
|
+
| `--transmit`<br>`--tx` | Start in Transmit mode (pass a recording `#` from `--list`, `.sigmf-data` path, `'latest'`, or omit in TUI). |
|
|
195
|
+
| `--loopback`<br>`--lb` | Run the internal digital Loopback Test. |
|
|
196
|
+
| `--list`<br>`-l` | List available SigMF recordings in `records-dir` and exit. |
|
|
197
|
+
| `--show-config`<br>`--sc` | Show current configuration and exit. |
|
|
198
|
+
| `--headless`<br>`--hl` | Run in console text mode without the curses TUI (outputs plain logs without colors or live meter when redirected to a file/pipe; supports `NO_COLOR` / `FORCE_COLOR`). |
|
|
199
|
+
| `--save`<br>`-s` | Persist CLI setting changes to `settings.json`. |
|
|
200
|
+
| `--reset`<br>`-r` | Reset configuration to defaults and save to `settings.json`. |
|
|
201
|
+
| `--version`<br>`-v` | Show program version and exit. |
|
|
202
|
+
| `--help`<br>`-h` | Show help message and exit. |
|
|
205
203
|
|
|
206
204
|
## License
|
|
207
205
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<h1 align="center">PlutoSiege</h1>
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<strong>
|
|
4
|
+
<strong>RF Capture & Replay Tool for PlutoSDR</strong>
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
|
|
22
22
|
## About
|
|
23
23
|
|
|
24
|
-
**PlutoSiege** is a terminal
|
|
24
|
+
**PlutoSiege** is a terminal and command-line tool for recording and replaying short RF bursts at 433 MHz, 868 MHz, and nearby frequencies from car remotes, garage doors, doorbells, and wireless sensors.
|
|
25
25
|
|
|
26
|
-
Built for
|
|
26
|
+
Built for ADALM-Pluto SDR hardware, it saves captures in the standard SigMF format so recordings can be opened directly in URH, IQEngine, GNU Radio, or Inspectrum.
|
|
27
27
|
|
|
28
28
|
### Hardware Compatibility
|
|
29
|
-
|
|
29
|
+
Supports official Analog Devices ADALM-Pluto Rev. B and Rev. C boards as well as compatible AD9363 and AD9361 clones such as Pluto Nano, Pluto Plus, and custom PlutoSDR hardware.
|
|
30
30
|
|
|
31
31
|
## Features
|
|
32
32
|
|
|
@@ -42,25 +42,25 @@ Fully supports both official **Analog Devices ADALM-Pluto** hardware (Rev. B / R
|
|
|
42
42
|
|
|
43
43
|
## Installation
|
|
44
44
|
|
|
45
|
-
### 1. System Drivers
|
|
45
|
+
### 1. System Drivers
|
|
46
46
|
Install the required IIO system drivers for your distribution family:
|
|
47
47
|
|
|
48
|
-
**Debian-based
|
|
48
|
+
**Debian-based:**
|
|
49
49
|
```bash
|
|
50
50
|
sudo apt update && sudo apt install -y libiio0 libiio-dev libiio-utils
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
**RPM-based
|
|
53
|
+
**RPM-based:**
|
|
54
54
|
```bash
|
|
55
55
|
sudo dnf install -y libiio python3-iio libiio-utils
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
**Arch-based
|
|
58
|
+
**Arch-based:**
|
|
59
59
|
```bash
|
|
60
60
|
sudo pacman -S libiio
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
### 2. Optional: GPS Support
|
|
63
|
+
### 2. Optional: GPS Support
|
|
64
64
|
If you plan to use GPS geotagging for SigMF recordings, install the `gpsd` daemon and tools:
|
|
65
65
|
|
|
66
66
|
**Debian-based:**
|
|
@@ -94,7 +94,7 @@ Launch from any terminal:
|
|
|
94
94
|
pluto_siege
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
-
#### Option B: From Source
|
|
97
|
+
#### Option B: From Source
|
|
98
98
|
Clone the repository and install dependencies:
|
|
99
99
|
```bash
|
|
100
100
|
git clone https://github.com/SketchTurnerDev/pluto_siege.git
|
|
@@ -116,8 +116,6 @@ python pluto_siege.py
|
|
|
116
116
|
|
|
117
117
|
## Application Menu
|
|
118
118
|
|
|
119
|
-
The main menu provides access to all core operations:
|
|
120
|
-
|
|
121
119
|
### 1. Capture
|
|
122
120
|
Listens for incoming RF bursts on the configured receiver frequency (`rx_freq`).
|
|
123
121
|
- Captures a single burst by default, or loops continuously (numbering saved bursts `[#1]`, `[#2]`, ... until stopped with `Esc` / `Q` in TUI or `Ctrl+C` in headless mode) when **Auto capture** (`--auto-capture true`) is enabled.
|
|
@@ -142,44 +140,44 @@ Configures radio parameters, trigger behavior, GPS integration, and interface pr
|
|
|
142
140
|
|
|
143
141
|
| Flags / Parameter | Type | Default | Description |
|
|
144
142
|
| :--- | :--- | :--- | :--- |
|
|
145
|
-
| `--pluto-uri
|
|
146
|
-
| `--rx-freq
|
|
147
|
-
| `--sample-rate
|
|
148
|
-
| `--rf-bandwidth
|
|
149
|
-
| `--rx-gain
|
|
150
|
-
| `--tx-gain
|
|
151
|
-
| `--tx-repeats
|
|
152
|
-
| `--auto-capture
|
|
153
|
-
| `--auto-threshold
|
|
154
|
-
| `--auto-trigger-margin
|
|
155
|
-
| `--auto-recal-seconds
|
|
156
|
-
| `--manual-threshold
|
|
157
|
-
| `--pre-trigger-buffers
|
|
158
|
-
| `--min-burst-seconds
|
|
159
|
-
| `--silence-seconds
|
|
160
|
-
| `--max-post-trigger-seconds
|
|
161
|
-
| `--rx-buffer-size
|
|
162
|
-
| `--enable-gps
|
|
163
|
-
| `--gpsd-host
|
|
164
|
-
| `--gpsd-port
|
|
165
|
-
| `--records-dir
|
|
166
|
-
| `--enable-sound
|
|
167
|
-
| `--enable-mouse
|
|
143
|
+
| `--pluto-uri`<br>`--pu` | `str` | `usb:` | PlutoSDR `libiio` context URI (`usb:`, `usb:1.4.5`, `ip:192.168.2.1`, `local:`). |
|
|
144
|
+
| `--rx-freq`<br>`--rf` | `int` | `433.92M` | Receiver center frequency in Hz; supports `k`/`M`/`G` suffixes and bare MHz shorthand (`70M - 6G`; e.g. `433`, `868`). |
|
|
145
|
+
| `--sample-rate`<br>`--sr` | `int` | `2.1M` | Sample rate in SPS; supports `k`/`M` suffixes (`521k - 61.44M`). |
|
|
146
|
+
| `--rf-bandwidth`<br>`--rb` | `int` | `0` | Analog RF filter bandwidth in Hz, or `0`/`auto` to follow `--sample-rate`; supports `k`/`M` suffixes (`0` or `200k - 56M`). |
|
|
147
|
+
| `--rx-gain`<br>`--rg` | `float` | `15.0` | Manual RX hardware gain in dB (`-10.0 .. 74.5`). |
|
|
148
|
+
| `--tx-gain`<br>`--tg` | `float` | `0.0` | Manual TX hardware gain in dB (`-89.75 .. 0.0`). |
|
|
149
|
+
| `--tx-repeats`<br>`--tr` | `int` | `1` | Number of consecutive burst transmissions per replay (`1 .. 100`). |
|
|
150
|
+
| `--auto-capture`<br>`--ac` | `bool` | `false` | Enable continuous multi-burst capture loop (`true` or `false`). |
|
|
151
|
+
| `--auto-threshold`<br>`--at` | `bool` | `true` | Enable automatic noise floor threshold detection (`true` or `false`). |
|
|
152
|
+
| `--auto-trigger-margin`<br>`--atm` | `float` | `8.0` | Trigger margin above noise floor in dB (`1.0 .. 30.0`; unused when `--auto-threshold` is `false`). |
|
|
153
|
+
| `--auto-recal-seconds`<br>`--ars` | `float` | `0.0` | Periodic noise floor recalibration interval in seconds while listening, or `0` to disable; supports `ms`/`s` suffixes (`0.0 .. 600.0`; unused when `--auto-threshold` is `false`). |
|
|
154
|
+
| `--manual-threshold`<br>`--mt` | `float` | `-30.0` | Fixed trigger threshold in dBFS (`-120.0 .. 0.0`; unused when `--auto-threshold` is `true`). |
|
|
155
|
+
| `--pre-trigger-buffers`<br>`--ptb` | `int` | `2` | Number of pre-trigger history buffers kept in memory (`1 .. 50`). |
|
|
156
|
+
| `--min-burst-seconds`<br>`--mbs` | `float` | `0.0` | Minimum active burst duration in seconds to filter short noise spikes, or `0` to disable; supports `ms`/`s` suffixes (`0.0 .. 5.0`). |
|
|
157
|
+
| `--silence-seconds`<br>`--ss` | `float` | `0.8` | Continuous silence duration in seconds to stop recording; supports `ms`/`s` suffixes (`0.01 .. 10.0`). |
|
|
158
|
+
| `--max-post-trigger-seconds`<br>`--mpts` | `float` | `4.0` | Maximum recording duration in seconds after trigger; supports `ms`/`s` suffixes (`0.1 .. 30.0`). |
|
|
159
|
+
| `--rx-buffer-size`<br>`--rbs` | `int` | `32768` | DMA receive buffer size in samples (`1024 .. 1048576`). |
|
|
160
|
+
| `--enable-gps`<br>`--eg` | `bool` | `false` | Enable GPS geolocation tagging via `gpsd` daemon (`true` or `false`). |
|
|
161
|
+
| `--gpsd-host`<br>`--gh` | `str` | `127.0.0.1` | `gpsd` daemon hostname or IP address (unused when `--enable-gps` is `false`). |
|
|
162
|
+
| `--gpsd-port`<br>`--gp` | `int` | `2947` | `gpsd` daemon TCP port (`1 .. 65535`; unused when `--enable-gps` is `false`). |
|
|
163
|
+
| `--records-dir`<br>`--rd` | `str` | `./recordings` | Directory path for saving and loading SigMF recordings (`~/.pluto_siege/recordings` when installed via `pip`/`pipx`). |
|
|
164
|
+
| `--enable-sound`<br>`--es` | `bool` | `true` | Enable acoustic sound effect cues (`true` or `false`). |
|
|
165
|
+
| `--enable-mouse`<br>`--em` | `bool` | `true` | Enable terminal mouse support in the TUI (`true` or `false`). |
|
|
168
166
|
|
|
169
167
|
### CLI-Only Options
|
|
170
168
|
|
|
171
169
|
| Flags | Description |
|
|
172
170
|
| :--- | :--- |
|
|
173
|
-
| `--capture
|
|
174
|
-
| `--transmit
|
|
175
|
-
| `--loopback
|
|
176
|
-
| `--list
|
|
177
|
-
| `--show-config
|
|
178
|
-
| `--headless
|
|
179
|
-
| `--save
|
|
180
|
-
| `--reset
|
|
181
|
-
| `--version
|
|
182
|
-
| `--help
|
|
171
|
+
| `--capture`<br>`-c` | Start in Capture mode. |
|
|
172
|
+
| `--transmit`<br>`--tx` | Start in Transmit mode (pass a recording `#` from `--list`, `.sigmf-data` path, `'latest'`, or omit in TUI). |
|
|
173
|
+
| `--loopback`<br>`--lb` | Run the internal digital Loopback Test. |
|
|
174
|
+
| `--list`<br>`-l` | List available SigMF recordings in `records-dir` and exit. |
|
|
175
|
+
| `--show-config`<br>`--sc` | Show current configuration and exit. |
|
|
176
|
+
| `--headless`<br>`--hl` | Run in console text mode without the curses TUI (outputs plain logs without colors or live meter when redirected to a file/pipe; supports `NO_COLOR` / `FORCE_COLOR`). |
|
|
177
|
+
| `--save`<br>`-s` | Persist CLI setting changes to `settings.json`. |
|
|
178
|
+
| `--reset`<br>`-r` | Reset configuration to defaults and save to `settings.json`. |
|
|
179
|
+
| `--version`<br>`-v` | Show program version and exit. |
|
|
180
|
+
| `--help`<br>`-h` | Show help message and exit. |
|
|
183
181
|
|
|
184
182
|
## License
|
|
185
183
|
|
|
@@ -14,25 +14,7 @@
|
|
|
14
14
|
# You should have received a copy of the GNU General Public License
|
|
15
15
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
16
16
|
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
A full-screen terminal application that records brief RF transmissions - car
|
|
20
|
-
remotes, doorbells, weather stations and similar OOK/ASK devices - and replays
|
|
21
|
-
them. Recordings are written as SigMF pairs so they can be opened in other
|
|
22
|
-
tools as well.
|
|
23
|
-
|
|
24
|
-
Usage:
|
|
25
|
-
python3 -m pluto_siege
|
|
26
|
-
|
|
27
|
-
Requires Python 3.9+, an interactive terminal, an ADALM-Pluto (or compatible
|
|
28
|
-
AD936x device) and:
|
|
29
|
-
pip install -r requirements.txt
|
|
30
|
-
|
|
31
|
-
Transmitting is regulated. Replay only signals you are licensed or permitted to
|
|
32
|
-
emit, into a dummy load or at the lowest gain that does the job.
|
|
33
|
-
|
|
34
|
-
Author: SketchTurnerDev
|
|
35
|
-
"""
|
|
17
|
+
"""RF Capture & Replay Tool for PlutoSDR."""
|
|
36
18
|
|
|
37
19
|
from pluto_siege.constants import AUTHOR, LICENSE, VERSION
|
|
38
20
|
|
|
@@ -218,7 +218,7 @@ def build_arg_parser() -> argparse.ArgumentParser:
|
|
|
218
218
|
"""Construct the command-line argument parser for PlutoSiege."""
|
|
219
219
|
parser_kwargs: dict[str, Any] = {
|
|
220
220
|
"prog": "pluto_siege",
|
|
221
|
-
"description": "PlutoSiege -
|
|
221
|
+
"description": "PlutoSiege - RF capture and replay tool for PlutoSDR.",
|
|
222
222
|
"add_help": False,
|
|
223
223
|
"allow_abbrev": False,
|
|
224
224
|
"formatter_class": _PlutoHelpFormatter,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pluto_siege
|
|
3
|
-
Version: 2.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 2.1.1
|
|
4
|
+
Summary: RF Capture & Replay Tool for PlutoSDR
|
|
5
5
|
Author: SketchTurnerDev
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
7
7
|
Project-URL: Homepage, https://github.com/SketchTurnerDev/pluto_siege
|
|
8
8
|
Project-URL: Repository, https://github.com/SketchTurnerDev/pluto_siege.git
|
|
9
9
|
Project-URL: Issues, https://github.com/SketchTurnerDev/pluto_siege/issues
|
|
10
|
-
Keywords: 433mhz,868mhz,adalm-pluto,ham-radio,
|
|
10
|
+
Keywords: 433mhz,868mhz,adalm-pluto,ham-radio,pentesting,pluto-sdr,pluto-siege,plutosdr,plutosiege,python,radio-frequency,red-team,rf-hacking,sdr,security-tools,sigmf,subghz,wireless,wireless-security
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Classifier: Operating System :: POSIX :: Linux
|
|
13
13
|
Classifier: Environment :: Console :: Curses
|
|
@@ -23,7 +23,7 @@ Dynamic: license-file
|
|
|
23
23
|
<h1 align="center">PlutoSiege</h1>
|
|
24
24
|
|
|
25
25
|
<p align="center">
|
|
26
|
-
<strong>
|
|
26
|
+
<strong>RF Capture & Replay Tool for PlutoSDR</strong>
|
|
27
27
|
</p>
|
|
28
28
|
|
|
29
29
|
<p align="center">
|
|
@@ -43,12 +43,12 @@ Dynamic: license-file
|
|
|
43
43
|
|
|
44
44
|
## About
|
|
45
45
|
|
|
46
|
-
**PlutoSiege** is a terminal
|
|
46
|
+
**PlutoSiege** is a terminal and command-line tool for recording and replaying short RF bursts at 433 MHz, 868 MHz, and nearby frequencies from car remotes, garage doors, doorbells, and wireless sensors.
|
|
47
47
|
|
|
48
|
-
Built for
|
|
48
|
+
Built for ADALM-Pluto SDR hardware, it saves captures in the standard SigMF format so recordings can be opened directly in URH, IQEngine, GNU Radio, or Inspectrum.
|
|
49
49
|
|
|
50
50
|
### Hardware Compatibility
|
|
51
|
-
|
|
51
|
+
Supports official Analog Devices ADALM-Pluto Rev. B and Rev. C boards as well as compatible AD9363 and AD9361 clones such as Pluto Nano, Pluto Plus, and custom PlutoSDR hardware.
|
|
52
52
|
|
|
53
53
|
## Features
|
|
54
54
|
|
|
@@ -64,25 +64,25 @@ Fully supports both official **Analog Devices ADALM-Pluto** hardware (Rev. B / R
|
|
|
64
64
|
|
|
65
65
|
## Installation
|
|
66
66
|
|
|
67
|
-
### 1. System Drivers
|
|
67
|
+
### 1. System Drivers
|
|
68
68
|
Install the required IIO system drivers for your distribution family:
|
|
69
69
|
|
|
70
|
-
**Debian-based
|
|
70
|
+
**Debian-based:**
|
|
71
71
|
```bash
|
|
72
72
|
sudo apt update && sudo apt install -y libiio0 libiio-dev libiio-utils
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
**RPM-based
|
|
75
|
+
**RPM-based:**
|
|
76
76
|
```bash
|
|
77
77
|
sudo dnf install -y libiio python3-iio libiio-utils
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
**Arch-based
|
|
80
|
+
**Arch-based:**
|
|
81
81
|
```bash
|
|
82
82
|
sudo pacman -S libiio
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
### 2. Optional: GPS Support
|
|
85
|
+
### 2. Optional: GPS Support
|
|
86
86
|
If you plan to use GPS geotagging for SigMF recordings, install the `gpsd` daemon and tools:
|
|
87
87
|
|
|
88
88
|
**Debian-based:**
|
|
@@ -116,7 +116,7 @@ Launch from any terminal:
|
|
|
116
116
|
pluto_siege
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
#### Option B: From Source
|
|
119
|
+
#### Option B: From Source
|
|
120
120
|
Clone the repository and install dependencies:
|
|
121
121
|
```bash
|
|
122
122
|
git clone https://github.com/SketchTurnerDev/pluto_siege.git
|
|
@@ -138,8 +138,6 @@ python pluto_siege.py
|
|
|
138
138
|
|
|
139
139
|
## Application Menu
|
|
140
140
|
|
|
141
|
-
The main menu provides access to all core operations:
|
|
142
|
-
|
|
143
141
|
### 1. Capture
|
|
144
142
|
Listens for incoming RF bursts on the configured receiver frequency (`rx_freq`).
|
|
145
143
|
- Captures a single burst by default, or loops continuously (numbering saved bursts `[#1]`, `[#2]`, ... until stopped with `Esc` / `Q` in TUI or `Ctrl+C` in headless mode) when **Auto capture** (`--auto-capture true`) is enabled.
|
|
@@ -164,44 +162,44 @@ Configures radio parameters, trigger behavior, GPS integration, and interface pr
|
|
|
164
162
|
|
|
165
163
|
| Flags / Parameter | Type | Default | Description |
|
|
166
164
|
| :--- | :--- | :--- | :--- |
|
|
167
|
-
| `--pluto-uri
|
|
168
|
-
| `--rx-freq
|
|
169
|
-
| `--sample-rate
|
|
170
|
-
| `--rf-bandwidth
|
|
171
|
-
| `--rx-gain
|
|
172
|
-
| `--tx-gain
|
|
173
|
-
| `--tx-repeats
|
|
174
|
-
| `--auto-capture
|
|
175
|
-
| `--auto-threshold
|
|
176
|
-
| `--auto-trigger-margin
|
|
177
|
-
| `--auto-recal-seconds
|
|
178
|
-
| `--manual-threshold
|
|
179
|
-
| `--pre-trigger-buffers
|
|
180
|
-
| `--min-burst-seconds
|
|
181
|
-
| `--silence-seconds
|
|
182
|
-
| `--max-post-trigger-seconds
|
|
183
|
-
| `--rx-buffer-size
|
|
184
|
-
| `--enable-gps
|
|
185
|
-
| `--gpsd-host
|
|
186
|
-
| `--gpsd-port
|
|
187
|
-
| `--records-dir
|
|
188
|
-
| `--enable-sound
|
|
189
|
-
| `--enable-mouse
|
|
165
|
+
| `--pluto-uri`<br>`--pu` | `str` | `usb:` | PlutoSDR `libiio` context URI (`usb:`, `usb:1.4.5`, `ip:192.168.2.1`, `local:`). |
|
|
166
|
+
| `--rx-freq`<br>`--rf` | `int` | `433.92M` | Receiver center frequency in Hz; supports `k`/`M`/`G` suffixes and bare MHz shorthand (`70M - 6G`; e.g. `433`, `868`). |
|
|
167
|
+
| `--sample-rate`<br>`--sr` | `int` | `2.1M` | Sample rate in SPS; supports `k`/`M` suffixes (`521k - 61.44M`). |
|
|
168
|
+
| `--rf-bandwidth`<br>`--rb` | `int` | `0` | Analog RF filter bandwidth in Hz, or `0`/`auto` to follow `--sample-rate`; supports `k`/`M` suffixes (`0` or `200k - 56M`). |
|
|
169
|
+
| `--rx-gain`<br>`--rg` | `float` | `15.0` | Manual RX hardware gain in dB (`-10.0 .. 74.5`). |
|
|
170
|
+
| `--tx-gain`<br>`--tg` | `float` | `0.0` | Manual TX hardware gain in dB (`-89.75 .. 0.0`). |
|
|
171
|
+
| `--tx-repeats`<br>`--tr` | `int` | `1` | Number of consecutive burst transmissions per replay (`1 .. 100`). |
|
|
172
|
+
| `--auto-capture`<br>`--ac` | `bool` | `false` | Enable continuous multi-burst capture loop (`true` or `false`). |
|
|
173
|
+
| `--auto-threshold`<br>`--at` | `bool` | `true` | Enable automatic noise floor threshold detection (`true` or `false`). |
|
|
174
|
+
| `--auto-trigger-margin`<br>`--atm` | `float` | `8.0` | Trigger margin above noise floor in dB (`1.0 .. 30.0`; unused when `--auto-threshold` is `false`). |
|
|
175
|
+
| `--auto-recal-seconds`<br>`--ars` | `float` | `0.0` | Periodic noise floor recalibration interval in seconds while listening, or `0` to disable; supports `ms`/`s` suffixes (`0.0 .. 600.0`; unused when `--auto-threshold` is `false`). |
|
|
176
|
+
| `--manual-threshold`<br>`--mt` | `float` | `-30.0` | Fixed trigger threshold in dBFS (`-120.0 .. 0.0`; unused when `--auto-threshold` is `true`). |
|
|
177
|
+
| `--pre-trigger-buffers`<br>`--ptb` | `int` | `2` | Number of pre-trigger history buffers kept in memory (`1 .. 50`). |
|
|
178
|
+
| `--min-burst-seconds`<br>`--mbs` | `float` | `0.0` | Minimum active burst duration in seconds to filter short noise spikes, or `0` to disable; supports `ms`/`s` suffixes (`0.0 .. 5.0`). |
|
|
179
|
+
| `--silence-seconds`<br>`--ss` | `float` | `0.8` | Continuous silence duration in seconds to stop recording; supports `ms`/`s` suffixes (`0.01 .. 10.0`). |
|
|
180
|
+
| `--max-post-trigger-seconds`<br>`--mpts` | `float` | `4.0` | Maximum recording duration in seconds after trigger; supports `ms`/`s` suffixes (`0.1 .. 30.0`). |
|
|
181
|
+
| `--rx-buffer-size`<br>`--rbs` | `int` | `32768` | DMA receive buffer size in samples (`1024 .. 1048576`). |
|
|
182
|
+
| `--enable-gps`<br>`--eg` | `bool` | `false` | Enable GPS geolocation tagging via `gpsd` daemon (`true` or `false`). |
|
|
183
|
+
| `--gpsd-host`<br>`--gh` | `str` | `127.0.0.1` | `gpsd` daemon hostname or IP address (unused when `--enable-gps` is `false`). |
|
|
184
|
+
| `--gpsd-port`<br>`--gp` | `int` | `2947` | `gpsd` daemon TCP port (`1 .. 65535`; unused when `--enable-gps` is `false`). |
|
|
185
|
+
| `--records-dir`<br>`--rd` | `str` | `./recordings` | Directory path for saving and loading SigMF recordings (`~/.pluto_siege/recordings` when installed via `pip`/`pipx`). |
|
|
186
|
+
| `--enable-sound`<br>`--es` | `bool` | `true` | Enable acoustic sound effect cues (`true` or `false`). |
|
|
187
|
+
| `--enable-mouse`<br>`--em` | `bool` | `true` | Enable terminal mouse support in the TUI (`true` or `false`). |
|
|
190
188
|
|
|
191
189
|
### CLI-Only Options
|
|
192
190
|
|
|
193
191
|
| Flags | Description |
|
|
194
192
|
| :--- | :--- |
|
|
195
|
-
| `--capture
|
|
196
|
-
| `--transmit
|
|
197
|
-
| `--loopback
|
|
198
|
-
| `--list
|
|
199
|
-
| `--show-config
|
|
200
|
-
| `--headless
|
|
201
|
-
| `--save
|
|
202
|
-
| `--reset
|
|
203
|
-
| `--version
|
|
204
|
-
| `--help
|
|
193
|
+
| `--capture`<br>`-c` | Start in Capture mode. |
|
|
194
|
+
| `--transmit`<br>`--tx` | Start in Transmit mode (pass a recording `#` from `--list`, `.sigmf-data` path, `'latest'`, or omit in TUI). |
|
|
195
|
+
| `--loopback`<br>`--lb` | Run the internal digital Loopback Test. |
|
|
196
|
+
| `--list`<br>`-l` | List available SigMF recordings in `records-dir` and exit. |
|
|
197
|
+
| `--show-config`<br>`--sc` | Show current configuration and exit. |
|
|
198
|
+
| `--headless`<br>`--hl` | Run in console text mode without the curses TUI (outputs plain logs without colors or live meter when redirected to a file/pipe; supports `NO_COLOR` / `FORCE_COLOR`). |
|
|
199
|
+
| `--save`<br>`-s` | Persist CLI setting changes to `settings.json`. |
|
|
200
|
+
| `--reset`<br>`-r` | Reset configuration to defaults and save to `settings.json`. |
|
|
201
|
+
| `--version`<br>`-v` | Show program version and exit. |
|
|
202
|
+
| `--help`<br>`-h` | Show help message and exit. |
|
|
205
203
|
|
|
206
204
|
## License
|
|
207
205
|
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pluto_siege"
|
|
7
|
-
version = "2.1.
|
|
8
|
-
description = "
|
|
7
|
+
version = "2.1.1"
|
|
8
|
+
description = "RF Capture & Replay Tool for PlutoSDR"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "GPL-3.0-or-later"
|
|
11
11
|
authors = [
|
|
@@ -22,7 +22,6 @@ keywords = [
|
|
|
22
22
|
"868mhz",
|
|
23
23
|
"adalm-pluto",
|
|
24
24
|
"ham-radio",
|
|
25
|
-
"ism-band",
|
|
26
25
|
"pentesting",
|
|
27
26
|
"pluto-sdr",
|
|
28
27
|
"pluto-siege",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|