Radio Frequencies
Radio Frequencies are electromagnetic signals sent over a specific frequency such as 60 kilohertz (kHz).
To send our data over a communication channel, such as radio waves, we often use one modulation techniques among:
- Amplitude Modulation (AM) π’
- Frequency Modulation (FM) π»
FM as a few more advantages like it's more efficient.
Manipulating RF Recordings
GNU Radio
GNU Radio is a suite of radio tools such as gnuradio-companion
graphical editor that can be used to work on radio captures.
$ sudo apt install -y gnuradio
$ gnuradio-companion
The right panel contains a list of components that we can drag to the main panel. For instance, drag a File Source
and double-click on it to make it point to your capture. Set the type to FLOAT
.
To hear a sound, we could use a Audio Sink
. Connect both, and don't forget to set the type to FLOAT
and try to find the SampleRate
. You can enter arbitrary values such as 50000
for 50 kHz
.
Python
We could use the soundfile library:
# pip install soundfile sounddevice numpy
import soundfile as sf
import sounddevice as sd
sig, fs = sf.read('<AM recording>', channels=1, samplerate=50000, format='RAW', subtype='FLOAT', endian='LITTLE')
sd.play(sig, fs, blocking=True)
Additional tools
- Audacity may work for some transmissions
- We can use
aplay
fromalsa-utils
:
$ cat <AM recording> | aplay -f FLOAT_LE -r <sample rate>
π» To-do π»
Stuff that I found, but never read/used yet.
- Capture with a software-defined radio (SDR)?
- hacktricks RFID
- proxmark3 RFID
- rftap
- Universal Radio Hacker (10.4k β)
$ DEST="$HOME/tools/urh"
$ git clone -b "master" https://github.com/jopohl/urh.git $DEST
$ pip install cython # no venv because their setup.py is a pain
$ python $DEST/setup.py install --user
$ urh