No description
- Python 100%
| corpus.py | ||
| dpi.py | ||
| evade.py | ||
| experiments.py | ||
| README.md | ||
| selfcheck.py | ||
DPI censor lab
What is what
| File | Role |
|---|---|
corpus.py |
given: 600 synthetic connection records, the blocklist, the keywords, the two CDN addresses, the proxy, and truth(); the record format is documented at the top |
dpi.py |
given: name_matches, dns_filter, ip_filter, keyword_filter; sni_filter is the extra credit |
evade.py |
given: hide_sni, use_doh, via_proxy, the three evasions |
selfcheck.py |
given: PASS, FAIL with what it expected, or SKIP per function |
experiments.py |
given: the measurement harness, writes results.json |
report.md |
yours: create it; the Canvas page says what belongs in it |
Keep the given files as they are, except sni_filter in dpi.py if you do the extra credit.
Run
Python 3 only, no packages, any computer.
python3 -c "import corpus; [print(r) for r in corpus.records()[:5]]"
python3 selfcheck.py
python3 experiments.py # all four parts
python3 experiments.py corpus # A: what is in the traffic
python3 experiments.py filters # B: the strategies, measured
python3 experiments.py evasion # C: which strategies still catch each evasion
python3 experiments.py escalate # D: the censor's next move, and its cost
Each run rewrites results.json for the parts it ran.