wikicensorship / tracevis

Traceroute with any packet. Visualize the routes. Discover Middleboxes and Firewalls
https://wikicensorship.github.io/
The Unlicense
181 stars 20 forks source link
application-traceroute censorship dns firewall graphs internet measurements middlebox network packet packet-tracer pep quic ripe ripe-atlas routing tcp traceroute udp visualization

TraceVis

Traceroute with any packet. Visualize the routes. Discover Middleboxes and Firewalls

CodeQL Dockerise unittest

TraceVis is a research project whose main goal is to find middleboxes. Where a packet is tampered with or blocked. This tool also has other features such as downloading and visualizing traceroute data from RIPE Atlas probes.

example graph

Install and build

Note:

You need to install npcap in Windows. If you already have programs like Wireshark or Nmap/Zenmap, they will install this automatically.

(Not required on Linux.)

Using docker:

Pull docker image from github container registry:
docker pull ghcr.io/wikicensorship/tracevis
Or clone project and build docker image on your machine:
docker build -t tracevis .

Directly:

Download or clone project and then install Python dependencies:
python3 -m pip install -r requirements.txt

How to use

Default DNS trace:
python3 ./tracevis.py --dns

or with docker image:

docker run ghcr.io/wikicensorship/tracevis --dns

or trace in paris mode:

python3 ./tracevis.py --dns --paris
Packet trace:
python3 ./tracevis.py --packet

or with docker image:

docker run -it ghcr.io/wikicensorship/tracevis --packet
trace with a config file:
python3 ./tracevis.py --config ./samples/quicv0xbabababa.conf

or you can override:

python3 ./tracevis.py --config ./samples/syn.conf -i "75.2.60.5,99.83.231.61"

(There is more in ./samples: Client-Hello, NTP, HTTP-GET, and more QUIC packets)

Download traceroute data from a RIPE Atlas probe:
python3 ./tracevis.py --ripe [probe-id]

or with docker image:

docker run \
    --mount type=bind,source=/path/to/results,target=/tracevis_data/ \
    ghcr.io/wikicensorship/tracevis --ripe [probe-id]
# OR
docker run \
    -v /path/to/results/:/tracevis_data/ \
    ghcr.io/wikicensorship/tracevis --ripe [probe-id]
Visualize a json file:
python3 ./tracevis.py --file ./path/to/file.json

or with docker image:

docker run \
    --mount type=bind,source=/path/to/results,target=/tracevis_data/ \
    ghcr.io/wikicensorship/tracevis --file /tracevis_data/file.json
# OR
docker run \
    -v /path/to/results/:/tracevis_data/ \
    ghcr.io/wikicensorship/tracevis --file /tracevis_data/file.json
See the help message:
python3 ./tracevis.py -h

or with docker image:

docker run ghcr.io/wikicensorship/tracevis

Examples:

example graph

example cli

example cli

example cli

example graph

example graph

example graph