Нет описания

Vecna e89c002f0f Link to original Lox code and paper 6 часов назад
conf b384d8d283 Fix non-interactive docker setup 3 месяцев назад
parsing-results e7fdaaa271 Align tables on decimal points 4 недель назад
scripts 4578104d28 Update README, remove -s option 2 недель назад
ARTIFACT-APPENDIX.md 7eae014efa Fix units 2 дней назад
Dockerfile 509dc31483 Add dependency for siunitx, test LaTeX compilation 4 недель назад
LICENSE 60f23e2549 Add license 3 месяцев назад
README.md e89c002f0f Link to original Lox code and paper 6 часов назад
run.sh 4578104d28 Update README, remove -s option 2 недель назад

README.md

Troll Patrol: Anonymous User Reporting of Bridge Censorship (Artifact)

This artifact accompanies the paper:

  • Vecna, Ian Goldberg. 2026. Troll Patrol: Anonymous User Reporting of Bridge Censorship. Proceedings on Privacy Enhancing Technologies 2026, 4 (2026).

This repository contains scripts for reproducing the results from Section 6, as well as additional results in Appendices A and C.

PoPETs Artifact

The instructions for reproducing the results in our paper are in the ARTIFACT-APPENDIX.md file.

Code Overview

This repository directly runs code from two different git repositories:

(Other repositories cloned by the setup.sh script are dependencies for lox-troll-patrol-extension.)

The purpose and basic description of each repository is given below.

lox-troll-patrol-extension

This repository has three important branches:

  • lox-extension, which contains the Tor Project development Lox code from which we forked, with only minimal changes of ours, to allow us to collect the necessary benchmarks.
  • main, which contains our modified code.
  • lox-original, which contains the Lox code from the original Lox paper, with only minimal changes of ours, to allow us to collect the necessary benchmarks.

The generate-lox-results.sh script runs various testing functions for each branch. These functions' names all begin with stats_test, and the functions' definitions can be found in the following files:

The results are parsed by the process-lox-results.sh script, which runs the get_results.sh script and produces a .tex file and a corresponding .pdf file for each branch:

  • Branch "lox-extension": table-2-results.tex and table-2-results.pdf (containing Table 2 from our paper)
  • Branch "main": table-3-results.tex and table-3-results.pdf (containing Table 3 from our paper)
  • Branch "lox-original": appendix-c-results.tex and appendix-c-results.pdf (containing Table 5 from Appendix C of our paper)

belarus-2020-2021

This repository contains scripts for data analysis related to the Tor blocking events in Belarus from 2020–2021. This corresponds to the case study in Appendix A of our paper. Reproducing the results from Appendix A is managed by the belarus.sh script in this artifact (in the scripts directory), which calls various scripts in the belarus-2020-2021 repo to download historical Tor bridge data from Tor Metrics, process this data, and run various analyses on the data.

The main analysis orchestration script (which is run after downloading the Tor Metrics data and processing this data to get daily connection counts to each bridge from Belarus) is get-stats.sh, which does the following:

  1. Run evaluate-blockages.py to run Algorithms 1–3 from our paper.
  2. Run get-stats.py to create Table 4 (contained in the file appendix-a-results.tex) from the results of step 1. This script also computes the mean and standard deviation of each email-distributed obfs4 bridge's daily connection counts, as well as these measurements for each pair of these bridges.
  3. Compile appendix-a-results.tex to get appendix-a-results.pdf.
  4. Parse the relevant data (number of bridges/pairs of bridges that received a certain number of connections on a single day, number of bridges/pairs of bridges with connection count mean more than 1 standard deviation from 0, maximum number of standard deviations from 0) from the data produced in step 2.
  5. Run get-stats-non-obfs4-email.py, which computes and outputs the number of bridges that either were not distributed via email or did not report supporting obfs4, which received at least n connections from Belarus on some day for a range of n values. (This demonstrates that there were bridges that were popular in Belarus, but the email-distributed obfs4 bridges that were blocked were not the popular bridges.)

This repository is used to produce the following files:

  • appendix-a-results (which contains the output of the get-stats.sh script; see belarus.sh)
  • appendix-a-results.pdf (produced by get-stats.sh)
  • appendix-a-results.tex (produced by get-stats.py, which is called by get-stats.sh)

License

This project as a whole is licensed under the MIT License. The belarus-2020-2021 repository downloads and uses data from the Tor Project that is provided under the CC0 Deed.