Notes

Data set

Each attack takes in elements from the data set in DATA_LOC. X-Y elements are considered to be instances of site X and are monitored. Integer elements Z without a hyphen are considered to be non-monitored elements in the open world; each should come from a different site. X, Y should start from 0.

The input files should be well-filtered, i.e. it should not have missing or empty elements. There should be at least 75 cells in each instance.

Data is in the following format: Each line is a pair time\tpacketsize. Packetsize is positive if outgoing and negative if incoming In the cell format, |packetsize| = 1.

Options

Each attack needs options to set its input/output locations and other parameters.

Here is a sample Options file. This works with this small data set (unzip it directly).

Common options are:

Attacks

kFP (Hayes and Danezis USENIX 2016)

Download all files:

CUMUL (Panchenko et al. NDSS 2016)

First, compile libsvm to obtain svm-train and svm-predict. The code assumes svm-train and svm-predict are in the same folder.

Download all files:

The performance depends heavily on the choice of SVM_C_LOG and SVM_G_LOG. It may freeze if those are not chosen correctly.

kNN (Wang et al. USENIX 2014)

Download all files:

Run with python3 Wa-kNN.py options-temp. The accuracy output of flearner.cpp shows tp, fp, p, and f. More accurate output is shown in the .score file in OUTPUT_LOC. Performance is heavily based on NEIGHBOURS_NUM, and somewhat based on ROUND_NUM and RECOPOINTS_NUM all in flearner.cpp; edit those directly to test. Hyperparameter selection is not covered in the original work.

OSAD (Cai et al. CCS 2012, etc.)

First, compile libsvm to obtain svm-train and svm-predict. The code assumes svm-train and svm-predict are in the same folder.

Download all files:

Run clLev first, then clgen_stratify, then Ca-OSAD. Warning: clLev is very computationally heavy and you should be prepared to use 100+ cores on it even for a relatively small data set; this is why it's written for mpi by default.

LEV_METHOD = 1 is required in the options file for Ca-OSAD. The code can also run the Lu version, or the two Wang versions by changing LEV_METHOD.

Feature-based SVM (Panchenko et al. WPES 2011)

First, compile libsvm to obtain svm-train and svm-predict. The code assumes svm-train and svm-predict are in the same folder.

Download all files:

The performance depends heavily on the choice of SVM_C_LOG and SVM_G_LOG. It may freeze if those are not chosen correctly.

Old attacks

cc.py jac.py mnb.py
nb.py timing.py vngpp.py