How sbaresearch/scanywhere works
Scanywhere repeatedly launches measurement containers through selected VPN endpoints, optionally adding a Cloudflare Warp hop, and stores experiment outputs in mounted result directories. Its main controller also supports Tor and ephemeral AWS WireGuard endpoints; helper modules provide Tor relay and hide.me server selection. The documented experiments cover IP connectivity, VoWiFi domain resolution, and ePDG scanning. The sampled source shows orchestration and experiment behavior, but not all container networking or scan internals, so those links are limited to documented or directly visible relationships.
Main entry points: scanywhere.py Scanywhere CLI · resolve_domains.py Mass GeoDNS Resolution · main.py IP Connectivity Check · ec2_manager.py EC2 WireGuard
Components 17
Orchestration
- Scanywhere CLI
scanywhere.py - Docker Engine
VPN Tunnels
- Gluetun VPN
docker/gluetun - Cloudflare Warp
docker/gluetun-warp - Tor Relay Selection
utils/tor_utils.py - hide.me Servers
utils/hideme.py
Measurements
- IP Connectivity Check
docker/check-ip-connectivity/main.py - IP Address Utilities
utils/ip_utils.py - Experiment Results
docker
VoWiFi Study
- Mass GeoDNS Resolution
docker/vowifi-geoblocking-resolve-domains/resolve_domains.py - MassDNS
- DNS Resolver List
docker/vowifi-geoblocking-resolve-domains/resources/local_unbound.txt - ePDG IKE Scanner
docker/vowifi-geoblocking-scan-epdgs/main.py
Cloud Support
- EC2 WireGuard
utils/ec2_manager.py - AWS EC2
- Deadman Switch
utils/deadman_switch.sh
Other components
- Operator
Connections 18
- Operator → Scanywhere CLI: runs
README.md - Scanywhere CLI → Docker Engine: starts containers
scanywhere.py - Scanywhere CLI → Gluetun VPN: configures VPN
scanywhere.py - Scanywhere CLI → Cloudflare Warp: adds optional hop
scanywhere.py - Scanywhere CLI → Tor Relay Selection: selects Tor exit
scanywhere.py - Scanywhere CLI → hide.me Servers: gets servers
scanywhere.py - Scanywhere CLI → EC2 WireGuard: starts endpoint
scanywhere.py - EC2 WireGuard → AWS EC2: creates instance
utils/ec2_manager.py - EC2 WireGuard → Deadman Switch: installs shutdown monitor
README.md - Docker Engine → IP Connectivity Check: runs measurement
README.md - IP Connectivity Check → IP Address Utilities: checks IP
docker/check-ip-connectivity/main.py - IP Connectivity Check → Experiment Results: writes results
docker/check-ip-connectivity/main.py - Docker Engine → Mass GeoDNS Resolution: runs experiment
README.md - Mass GeoDNS Resolution → MassDNS: runs DNS queries
docker/vowifi-geoblocking-resolve-domains/resolve_domains.py - Mass GeoDNS Resolution → DNS Resolver List: uses resolver list
docker/vowifi-geoblocking-resolve-domains/resolve_domains.py - Mass GeoDNS Resolution → Experiment Results: writes results
docker/vowifi-geoblocking-resolve-domains/resolve_domains.py - Docker Engine → ePDG IKE Scanner: runs experiment
README.md - ePDG IKE Scanner → Experiment Results: stores scan output