Skip to content

rfhs/challengectl

Repository files navigation

challengectl

Queues challenges and gr-osmosdr radios to transmit for the RFCTF

$ python challengectl.py -h
usage: challengectl.py [-h] [-v] flagfile devicefile

A script to run SDR challenges on multiple SDR devices.

positional arguments:
  flagfile       Flags file
  devicefile     Devices file

options:
  -h, --help     show this help message and exit
  -v, --verbose

Flags File

The flags file is a csv file, with the first line containing the conference name, and start and end times. After the first line, add one line per challenge, using the format shown below.

conference,starttime,endtime
chal_id,chal_name,flag,module,modopt1,modopt2,minwait,maxwait,freq1,freq2,freq3

The flags-archive directory contains example flags files from previous RFCTF events.

Devices File

The devices file is a csv file, with one line per SDR device. Each line begins with a 0 based index, and the device string for each device to be used by challengectl.

dev_id,osmosdr_device_string
0,"bladerf=longhexserialnumberhere,biastee=1"

create-devices-txt.py will attempt to detect supported devices on your system, and automatically output a devices.txt file with a line for each of those devices.

Supported Devices

Any transmit capable device that can be used to transmit using a GNURadio gr-osmosdr sink should work, however only the following devices have been tested so far.

Challenges

spectrum_paint.py Paints an image using gr-paint
ask.py Transmits Amplitude Shift Keying challenges
cw.py Transmits CW / Morse Code challenges
nbfm.py Transmits Narrowband Frequency Modulation
usb_tx.py Transmits Upper Sideband
lrs_pager.py Generates a pager.bin file to be transmitted by lrs_tx.py. This code is based on github.com/tony-tiger/lrs
lrs_tx.py Transmits an LRS signal, based on a pager.bin file generated by lrs_pager.py
pocsagtx_osmocom.py Transmits POCSAG messages using gr-mixalot