Radio Hacking Village - Technical Diagram

Welcome to the Radio Hacking Village

Never touched an SDR before? Perfect. Start here, we'll guide you through 3 hands-on activities that take you from "What's a Signal?" to actually decoding radio.

📚 The Basics

Before we dive into hands-on activities, let's understand the fundamentals of how information travels through radio waves.

🌟 The Big Picture: Encoding vs Modulation

Message → ENCODING (digital) → Bits → MODULATION (analog) → Radio Waves

🔢 ENCODING

What: How we represent information as bits (digital)

Examples:

  • Text → ASCII → Binary
  • Audio → MP3 → Binary
  • Error correction codes

📡 MODULATION

What: How we put those bits onto a radio wave (analog)

Examples:

  • Amplitude changes (AM)
  • Frequency changes (FM)
  • On/Off switching (OOK)
🔑 Key Concept: Encoding is choosing a language (English, Morse, Binary). Modulation is choosing how to transmit it (speaking, light signals, hand signals).

🌊 What is Modulation?

Radio waves have 3 properties we can change to encode information:

1. Amplitude

Height of the wave

   /\      /\
  /  \    /  \
 /    \  /    \
       \/
                            

2. Frequency

How fast it oscillates

/\/\/\/\/\/\  (fast)

/\    /\    (slow)
  \  /  \  /
   \/    \/
                            

3. Phase

Where in cycle it starts

/\      /\     (0°)
  \    /  \
   \  /    \

  /\    /\   (shifted)
 /  \  /  \
                            
💡 Modulation = Changing one of these properties to encode information
Carrier wave → Wiggle it → Receiver detects wiggling → Extract information

📻 Common Modulation Schemes

AM (Amplitude Modulation)

Basic

Changes: Height of wave

Used for: AM radio, aviation

Note: Simple but noise-sensitive

FM (Frequency Modulation)

Basic

Changes: Oscillation speed

Used for: FM radio, two-way radios

Note: More noise-resistant than AM

OOK (On-Off Keying)

⭐ Important

Changes: Signal ON or OFF

Used for: Key fobs, garage doors, IoT

Note: Simplest digital modulation

FSK (Frequency Shift Keying)

Intermediate

Changes: Frequency hops between values

Used for: Pagers, old modems

Note: Good noise resistance

PSK (Phase Shift Keying)

Advanced

Changes: Phase at symbol boundaries

Used for: Satellite, WiFi, GPS

Note: Efficient but complex

🔢 What is Encoding?

Encoding = Representing information as bits (happens before modulation)

Source Encoding

  • Text: ASCII, UTF-8
  • Images: JPEG, PNG
  • Audio: MP3, WAV

Channel Encoding

(Error Correction)

  • Parity bits
  • Hamming codes
  • Reed-Solomon
  • LDPC

Line Coding

  • NRZ: 0=low, 1=high
  • Manchester: Mid-bit transition
  • Differential: Change=1

🔗 The Complete Signal Chain

📤 Transmission

Message
Source Encoding
Channel Encoding
Modulation
Transmission

📥 Reception

Reception
Demodulation
Channel Decoding
Source Decoding
Message
🎯 In our hands-on activities: We'll focus primarily on Reception → Demodulation. You'll learn to extract the original signal from radio waves!

🔧 Hands-On Activities

Time to get your hands dirty! These 3 activities will take you from zero to decoding real signals.

1

📻 Activity 1: Decode FM with GQRX

🟢 Easy
⏱️ Time: 10 minutes 🎯 Goal: Hear your first decoded signal

What you'll do:

  1. Step 1: Download and install GQRX (see Resources below)
  2. Step 2: Download the FM radio IQ file:
    mumbai-10s-10M-92.3-8-10-25.iq

    10-second recording from Mumbai FM broadcast

    Sample Rate
    10 MSPS
    (10 million samples/second)
    Center Frequency
    92.3 MHz
    (FM radio band)
    Download File
  3. Step 3: Open the file in GQRX (set sample rate to 10 MSPS)
  4. Step 4: Select FM demodulator (Wideband FM)
  5. Step 5: Listen to the decoded audio!
✅ Success: You hear clear audio from the IQ file

What you learned: GQRX automatically performs all the demodulation steps for you. But what's happening under the hood?

2

🔗 Activity 2: Decode FM with GNURadio Flowgraph

🟡 Intermediate
⏱️ Time: 20 minutes 🎯 Goal: Build your own FM decoder

What you'll do:

  1. Step 1: Install GNURadio Companion (see Resources)
  2. Step 2: Build a flowgraph: File Source → Low Pass Filter → Quadrature Demod → Audio Sink
  3. Step 3: Use the same FM IQ file from Activity 1:
    mumbai-10s-10M-92.3-8-10-25.iq

    Same 10-second recording from Mumbai FM broadcast

    Sample Rate
    10 MSPS
    (10 million samples/second)
    Download File
  4. Step 4: Set File Source sample rate to 10 MSPS
  5. Step 5: Run your flowgraph and hear the SAME audio!
✅ Success: Your flowgraph decodes the same audio as GQRX
💡 Insight: You just built what GQRX does automatically! Now you understand the signal processing chain.
3

🐍 Activity 3: OOK Signals with Python

🟡 Intermediate
⏱️ Time: 25 minutes 🎯 Goal: Generate and decode OOK signals with code

What you'll do:

  1. Step 1: Install Python, NumPy, Matplotlib, Jupyter (see Resources)
  2. Step 2 - Part A: Run the generation notebook to create an OOK signal
    generate_ook_signal.ipynb

    Jupyter notebook to generate OOK signals with hidden messages

    Type
    Jupyter Notebook
    (Python + NumPy)
    Output
    Complex32 IQ file
    Download Notebook
    • This creates a complex32 IQ file with a hidden message
  3. Step 3 - Part B: Run the decoder notebook to extract the message
    decode_ook_signal.ipynb

    Jupyter notebook to decode OOK signals and extract hidden messages

    Type
    Jupyter Notebook
    (Python + SciPy)
    Techniques
    DSP + Demodulation
    Download Notebook
    • Learn threshold detection, baud rate estimation, bit extraction
✅ Success: You decoded the hidden message from the OOK signal you generated!
💡 What you learned: DSP is just math on arrays! IQ data = complex numbers, demodulation = array operations. You now understand signal processing at the code level.

🏆 Capture The Signal CTF

Ready to test your skills? Join our Capture The Flag competition!

📡 Connect to the CTF Network

📶 WiFi SSID: c0c0n_Grand_1
🔐 Password: c0c0n@Grand#1
🖥️ CTFD Server: http://10.1.0.24/
📋 Note: All challenge details, IQ files, and flag submissions are on the CTF platform. No hints here - use your skills and what you've learned!
🎯 Our Goal: Get at least 1 flag. That's all we ask. Every challenge you solve builds real RF skills!

🛠️ Resources

Essential tools and learning resources for your RF/SDR journey.

📦 Essential Tools

📊 GQRX

Software Defined Radio receiver with real-time spectrum analysis

🔍 Inspectrum

Offline signal analysis and parameter measurement tool

🔗 GNURadio Companion

Visual signal processing framework for building custom demodulators

🚀 FutureSDR

Next-generation async SDR runtime built in Rust

🔧 Specialized GNURadio Modules

Advanced out-of-tree (OOT) modules for specific protocols - useful for CTF challenges!

📡 gr-rds

RDS (Radio Data System) decoder for FM radio - extracts text, station info, and metadata

💡 Useful for decoding FM radio data streams

🛰️ gr-dvbs2rx

DVB-S2 receiver for satellite TV signals - advanced digital video broadcasting

💡 For satellite signal demodulation challenges

🔧 Custom DSP Tooling

As you advance, you can build custom tools for specialized signal processing:

🐍 Python Ecosystem

Best for: Rapid prototyping, learning, analysis

Key libraries:

  • NumPy: Array operations and math
  • SciPy: Signal processing functions
  • Matplotlib: Visualization
  • PySDR: SDR-specific tools

⚡ CUDA (GPU Acceleration)

Best for: High-bandwidth processing, real-time applications

Use cases:

  • FFT on large datasets
  • Parallel filtering operations
  • Real-time spectrum analysis
  • ML-based signal classification

🔌 FPGA Development

Best for: Hardware-accelerated processing, ultra-low latency

Use cases:

  • Custom hardware demodulators
  • High-speed signal capture
  • Deterministic real-time processing
  • SDR hardware development
💡 Choosing the right tool:
Python for learning and prototyping → CUDA for performance → FPGA for dedicated hardware

📚 Learning Resources

🎓 Video Courses

Mike Ossmann's SDR Course

The definitive introduction to SDR

Balint Seeber's SDR Tutorials

Advanced SDR techniques and demonstrations

GNURadio Tutorials

Official tutorials and examples

📖 Written Resources

PySDR Online Textbook

Python-focused SDR learning

Daniel Estevez's Blog

Satellite decoding, deep technical analysis, signal processing

The Scientist and Engineer's Guide to DSP

Comprehensive DSP reference

RTL-SDR Blog

Tutorials and hardware guides

💬 Community & Events

GRCon (GNURadio Conference)

Annual conference for SDR community

Reddit r/RTLSDR

Active community for SDR enthusiasts

GNURadio Mailing Lists

Technical discussions and support