Back in Defcon 21, Dragorn was asked by Druid to put together a wireless and SDR challenge for a party invite contest. What was born of this was a small used NVG pelican case that would be re-purposed to being the first SDR challenge kit I’ve seen. Time moved on, and at BSidesDE, Dragorn brought the kit to the talk that we were giving with Zero_Chaos on all things wireless. One of the subjects was SDR, and the kit provided a great example of some challenges that people attack for the class. Rick Mellendick reached out to us for building a SDR challenge at Shmoocon 2013. Some of us were skeptical about the level of interest, how hard we should make the flags, and others… but we moved forward.
Wow, simply wow. Not only were all the flags attempted, but the hidden message challenge of receiving the transmission of a NOAA weather satellite just like K2RNF had done was attempted (but ultimately not completed due to the Shmoocon party and good times). We were amazed by the level of interest. I felt overly ecstatic that many people tried the challenges, all the flags were identified in some capacity, and the over all feeling was positive. The next goal was a lofty one; develop a series of SDR challenges for Defcon 22 within the wireless village. We all threw back the red pills, and I started working on the design, build and implementation. And thus the nuclear football was built.
Core Components Needed
HackRF One, BladeRF and multiple RTL-SDR’s
Intel NUC (D34010WYK)
Multiple Raspberry Pi revision B’s
PiFM, GnuRadio Companion
/dev/random bits…
Let’s get it on
Designing a challenge is hard, but if you follow the same principals that I did, I feel that you can easily construct one yourself. Simply enough, we need more am radio operators and the challenges that are built help generate interest in this field. By following the premise of teaching by doing, come up with a series of challenges that fit into the low, medium, high, OMG WHY and /dev/random categories.
Low
-Identify the center frequency
-Morse Code
Either done by playing a premade audio file with dit’s and dah’s, or by reading from a file and using on/off keying.
/dev/random - Participant transmissions
For the receive components where participants have to transmit back, you can use GnuRadio or your own variety of wrappers and decoders. I hacked together a perl script that would intercept the output of various programs that would force the pi to transmit another response.
mkfifo audiotx
start_rx.sh
#!/bin/sh
rtl_fm -f 146.0M -M wbfm -s 200000 -r 48000 -o 6 | sox -traw-r48k-es-b16-c1-V1 - -twav - | minimodem --rx-8 1200
-f - > audiotx
knockknock.sh
#!/bin/shwhile true;do echo"knock knock... : `date +%c`" | minimodem --tx-f-8 1200 -f /home/pi/sentence.wav && /home/pi/pifm /home/pi/sentence.wav 146.0 48000 ; /home/pi/pi-shutdown.sh;sleep 10;done
knock-knock.pl
#!/usr/bin/perl
use Time::HiRes qw(usleep nanosleep);#`./start_rx.sh&`;
open (AUDIOFIFO, "audiotx");
print "opening fifo\n";while(<AUDIOFIFO>){
chomp;
print "RX: $_\n";if((index(lc($_), "who's there")!=-1)||(index(lc($_), "who is there")!=-1)){
print "I RX: Who's there?\n";
print "I TX: morpheus\n";
usleep (500);`echo'morpheus.' | minimodem --tx-f-8 1200 -f /home/pi/knockknock1.wav && /home/pi/pifm /home/pi/knockknock1.wav 146.0 48000`;`/home/pi/pi-shutdown.sh`;}if((index(lc($_), "morpheus who")!=-1)){
print "I RX: morpheus who?\n";
print "I TX: the body cannot live without the mind\n";
usleep(500);`echo'the body cannot live without the mind.' | minimodem --tx-f-8 1200 -f /home/pi/knockknock2.wav && /home/pi/pifm /home/pi/knockknock2.wav 146.0 48000`;`/home/pi/pi-shutdown.sh`;}}
pi-shutdown.sh
#!/bin/shtouch /tmp/empty && /home/pi/pifm /tmp/empty
start.sh
#!/bin/sh
./knockknock.sh & ./start_rx.sh & ./knock-knock.pl&
Okay, so this is where it starts to get busy… you have to manage all this noise. Initially everything was executed by a series of shell scripts and heartbeat monitors. Next steps are writing a webUI that helps manage all the moving parts.
This is an example of one of the challenges that was run at Shmoocon 2013. Participants would have to intercept the audio transmission, replay it at 1200 baud through minimodem and were presented with the string that you see there. Following steps would be to base64 decode, and review the resulting file.
Remember, keep all your transmissions legal. Get your Ham Radio ticket and you’re mostly there.
How you put it together to travel is up to you. Just keep in mind that if it looks like the picture below and you fly a lot, you’re going to have a bad time.
Thank You
I’d like to extend a warm, hearty and, eventually, beer supplemented thank you to Dragorn, Zero_Chaos, Rick Mellendick, DaKahuna, Justin Simon, Tara Miller, Mike Ossmann, Rob Ghilduta and Travis Goodspeed. Gents, you’re great friends; thank you for you help, training and patience. It truly takes a village :)
Ⓒ 1997- Russell Handorf. All other copyrights and trademarks are the property of their respective owners.