Python based tool that generates synthetic RF IQ recordings (.sigmf-data + .sigmf-meta) with optional steganographic payloads embedded via LSB.
It also produces spectrogram PNGs and a manifest (metadata.csv + metadata.jsonl.gz).
- Modulations: BPSK, QPSK, GFSK, 16-QAM (Gray), 8-PSK
- Channel Impairments: AWGN, phase noise, IQ imbalance, Rician / Nakagami fading, frequency & phase offsets
- Steganography: LSB embedding into the I‑component
- Outputs: SigMF files, spectrogram images, CSV & gzipped JSONL manifests
- Configurable: via
config.yamlor interactive menu
Each clip folder contains:
clip_<idx>_<uuid>.sigmf-dataclip_<idx>_<uuid>.sigmf-metaclip_<idx>_<uuid>.png(spectrogram)
The manifest lists:
- Dataset name, sample rate
- Modulation, impairment parameters, SNR, frequency offset
- Stego method used
- File name, generation time, clip duration
- Machine Learning: train modulation classification or stego detection models
- Signal Processing: benchmark algorithms under controlled impairments
- Security Research: study steganography in RF domains
- Clone repo:
git clone https://github.com/tegridydev/rf-stego-dataset.git - Install dependencies:
pip install -r requirements.txt - Edit
config.yamlor run:python rf-gen.pyand choose Show config / Change param - Generate data: select Generate all clips
~~Enjoy <3