Skip to content

ssloxford/space-jam-artifacts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpaceJam: Protocol-aware Jamming Attacks against Space Communications

README for reproducibility submission of paper ID #255

This repository contains the code for the paper "SpaceJam: Protocol-aware Jamming Attacks against Space Communications".

The specifics of experiment design, methodology and evaluation can be found in the paper. This work has been a collaboration between Edd Salkield, Sebastian Köhler, Simon Birnbach, and Ivan Martinovic from the Systems Security Lab at the University of Oxford, and Martin Strohmeier from armasuisse Science and Technology.

This repository firstly contains the code and results relating to regenerating all software simulation data. We provide both the GNURadio pipeline required gather results on the hardware receiver, and the data gathered for the paper. The remaining code consists of several Python scripts for simulation and graphing.

Source code

Repository: https://github.com/ssloxford/space-jam-artefacts/ List of Programming Languages: [Python/sh] Compiler Info: Python interpreter v3.11

Packages/Libraries needed

For the simulations:

  • python3
  • gnuradio
  • py3-numpy
  • py3-matplotlib
  • py3-seaborn
  • py3-pandas
  • py3-tqdm
  • boost-dev
  • gnuradio-dev

A custom branch of ldpc-toolbox of ldpc-toolbox is required, to be installed within gr-ldpc-toolbox. This furthermore requires:

  • cmake
  • make
  • gcc
  • g++
  • rust
  • cargo

Datasets

The datasets for graphs relating to the overshadow factor are generated by simulation automatically by the scripts.

The datasets gathered through real world experiments are in ./space-jam-artifacts/data/.

Hardware

For the simulations, only a computer with a modern Python interpreter is required. For reference, we ran the experiments on a machine with the following specifications:

OS: Alpine Linux v3.20
Host: latitude-e5550
Kernel: 6.6.63-0-lts
CPU: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz ( cores) @ 3200.0000GHz
GPU: Intel Corporation HD Graphics 5500 (rev 09)
Memory: 7.8Gi/15Gi
SDR: USRP N210

From the following commands:

echo "OS: $(cat /etc/os-release | grep PRETTY_NAME | cut -d '=' -f2 | tr -d '\"')"
echo "Host: $(hostname)"
echo "Kernel: $(uname -r)"
echo "CPU: $(lscpu | grep 'Model name' | cut -d ':' -f2 | xargs) ($(lscpu | grep '^CPU$s$:' | awk '{print $2}') cores) @ $(lscpu | grep 'CPU max MHz' | awk '{print $4}')GHz"
echo "GPU: $(lspci | grep -i vga | cut -d ':' -f3 | xargs)"
echo "Memory: $(free -h | grep Mem | awk '{print $3 "/" $2}')"

For the real-world experiments, the following additional equipment is required:

  • 2x SDR e.g. USRP N210, synchronized with a MIMO cable
  • Attenuator and appropriate cables
  • Satellite receiver
  • A laptops capable of running the GNURadio pipelines

Experimentation

Running the code

The figures and tables from the paper can be generated with:

$ cd /root/space-jam-artifacts
$ ./runExperiments.sh

Each can be run individually by executing the Python file in the appropriate directory. On our machine with the above specs, processing takes approx. 10 mins.

Using the vitual machine

The supplied VM has the following credentials:

Username: root Password: [empty string]

The scripts are found in /root/space-jam-artifacts, and are identical to those described in section Running the code. The figures are output to /root/space-jam-artifacts/plot.

Software license

This software is licensed under the GNU GPLv3.

Additional information

Since the simulations for the graphs are stochastic in nature, the results computed will differ slightly from those in the paper.

Certain figures and tables from the paper are not considered in this repository, because they do not represent results derived from computation. We proceed to explain how these can be derived;

Figure 1, 3, and 8 are illustrative diagrams, and do not contain results. Table 1 contains publicly available information on the relative sizes of different fields within the protocol frames; the decibel gain values are simple segment-to-total ratios.

Releases

No releases published

Packages

No packages published