GNU Radio

Toolkit logiciel libre pour la radio logicielle (SDR), utilisé pour construire des flowgraphs de traitement du signal pour l'analyse et les attaques RF. Free software development toolkit for software-defined radio, used to build signal-processing flowgraphs for RF analysis and attacks.

↗ https://www.gnuradio.org

Overview

GNU Radio is a graphical and programmatic framework for building software-defined radio (SDR) applications out of reusable signal-processing blocks — sources, filters, demodulators, decoders, sinks — wired together into a “flowgraph”. In RF security work it’s the foundation for reverse-engineering unknown protocols (garage door remotes, key fobs, industrial telemetry, proprietary IoT links) captured with a HackRF, RTL-SDR, USRP, or similar device.

Common Usage

Launch the GNU Radio Companion GUI flowgraph editor

gnuradio-companion

Run a compiled flowgraph (.py generated from a .grc file) directly

python3 my_flowgraph.py

Quick spectrum look with a bundled example app

gqrx   # separate package, built on GNU Radio, for receive-only spectrum viewing

Typical Flowgraph Building Blocks

Source: osmocom Source (HackRF/RTL-SDR/USRP input)
  -> Frequency Xlating FIR Filter (tune/decimate to signal of interest)
  -> AM/FM/OOK Demod block
  -> Clock Recovery / Symbol Sync
  -> Decoder (custom or gr-modules like gr-osmosdr, gr-ais, gr-adsb)
  -> File Sink / Message Debug (capture decoded bits for analysis)

Example: run a signal capture to a raw IQ file for offline analysis

osmocom_fft -a hackrf=0 -f 433.92M -s 2M

Replay a captured IQ file through a flowgraph for reverse engineering

python3 replay_flowgraph.py --input capture.cfile --rate 2000000

Tips

  • Start unknown signals in a File Sink flowgraph, then iterate offline on the captured IQ — avoids burning airtime re-transmitting during analysis
  • gr-osmosdr is the near-universal source/sink block for talking to HackRF, RTL-SDR, BladeRF, and USRP hardware from within a flowgraph
  • Inspection tools like inspectrum are often faster than GRC for eyeballing raw captures before building a full decode chain
  • Many public flowgraphs for common protocols (POCSAG, ADS-B, AIS, ISM-band OOK/ASK remotes) exist on GitHub — check before building from scratch
Help / Man page
gnuradio-companion [options] [file.grc]

  -h, --help        Show help
  file.grc          Open a specific flowgraph on launch

GNU Radio is primarily used via:
  1. gnuradio-companion (GUI) - build flowgraphs visually, generates Python
  2. Python API - import gnuradio.gr and related blocks directly in scripts

Common block libraries:
  gr-osmosdr    SDR hardware source/sink abstraction (HackRF, RTL-SDR, USRP, BladeRF)
  gr-digital    Digital modulation/demodulation blocks
  gr-analog     Analog modulation (AM/FM/PM) blocks
  gr-fft        FFT and spectral analysis blocks

Vue d’ensemble

GNU Radio est un framework graphique et programmatique pour construire des applications de radio logicielle (SDR) à partir de blocs de traitement du signal réutilisables : sources, filtres, démodulateurs, décodeurs, sinks, câblés ensemble en un “flowgraph”. Dans le travail de sécurité RF, c’est la base pour rétro-ingénierer des protocoles inconnus (télécommandes de porte de garage, clés de voiture, télémétrie industrielle, liaisons IoT propriétaires) capturés avec un HackRF, un RTL-SDR, un USRP ou un appareil similaire.

Utilisation courante

# Lancer l'éditeur de flowgraph graphique GNU Radio Companion
gnuradio-companion

# Exécuter un flowgraph compilé (.py généré depuis un fichier .grc) directement
python3 my_flowgraph.py

# Coup d'œil rapide sur le spectre avec une app d'exemple intégrée
gqrx   # paquet séparé, construit sur GNU Radio, pour la visualisation de spectre en réception seule

Blocs de construction typiques d’un flowgraph

Source: osmocom Source (entrée HackRF/RTL-SDR/USRP)
  -> Frequency Xlating FIR Filter (accorder/décimer vers le signal d'intérêt)
  -> Bloc de démodulation AM/FM/OOK
  -> Récupération d'horloge / Symbol Sync
  -> Décodeur (personnalisé ou modules gr comme gr-osmosdr, gr-ais, gr-adsb)
  -> File Sink / Message Debug (capturer les bits décodés pour analyse)

Exemple : lancer une capture de signal vers un fichier IQ brut pour analyse hors-ligne

osmocom_fft -a hackrf=0 -f 433.92M -s 2M

Rejouer un fichier IQ capturé à travers un flowgraph pour la rétro-ingénierie

python3 replay_flowgraph.py --input capture.cfile --rate 2000000

Conseils

  • Commencer les signaux inconnus dans un flowgraph File Sink, puis itérer hors-ligne sur l’IQ capturé : évite de brûler du temps d’antenne en re-transmettant pendant l’analyse
  • gr-osmosdr est le bloc source/sink quasi-universel pour dialoguer avec du matériel HackRF, RTL-SDR, BladeRF et USRP depuis un flowgraph
  • Des outils d’inspection comme inspectrum sont souvent plus rapides que GRC pour visualiser des captures brutes avant de construire une chaîne de décodage complète
  • De nombreux flowgraphs publics pour des protocoles courants (POCSAG, ADS-B, AIS, télécommandes OOK/ASK en bande ISM) existent sur GitHub : vérifier avant de repartir de zéro
Aide / Page de manuel
gnuradio-companion [options] [file.grc]

  -h, --help        Show help
  file.grc          Open a specific flowgraph on launch

GNU Radio is primarily used via:
  1. gnuradio-companion (GUI) - build flowgraphs visually, generates Python
  2. Python API - import gnuradio.gr and related blocks directly in scripts

Common block libraries:
  gr-osmosdr    SDR hardware source/sink abstraction (HackRF, RTL-SDR, USRP, BladeRF)
  gr-digital    Digital modulation/demodulation blocks
  gr-analog     Analog modulation (AM/FM/PM) blocks
  gr-fft        FFT and spectral analysis blocks