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
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.
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.
TX Antenna Ports: challengectl will transmit by default from the default transmit port on your SDR device, the only port if your SDR only has one transmit port, TX1 on bladeRF 2.0 Micro, TX/RX on a USRP B200 - whichever port is selected by an empty string passed to the antenna parameter for the Osmocom GNU Radio Sink. If you would like to transmit from a different port than the default, you will need to update the get_antenna_port function in challengectl.py to select a different port for the device. There is an example in that function, selecting TX2 for one of the RFHS bladeRF devices with a physically broken TX1 port. Setting transmit ports via configuration files will likely be in a future iteration of challengectl, but for now changing the transmit port requires updating the code.
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.
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