mirror of https://github.com/ospab/ostp.git
Adds a tiny built-in probe (ttl_probe) that measures the hop distance to the server, so the TTL-desync decoys are aimed automatically instead of by a hand-guessed number — without pulling in the whole ostp-prober and without any new server endpoint or exposed port. How it works, and why it needs no prober-server: the OSTP server answers only a valid handshake and silently drops everything else, so the client sends the real handshake with a rising IP TTL and watches for the first TTL that draws a reply. Datagrams whose TTL is too low die on a router before the server and create no state there; the first responding TTL is the server distance. Decoys are then stamped at hops-1, so they clear the DPI (which sits far closer than the server) yet expire before the server. This is inherently key-gated — no key, no valid handshake, no reply, so an unauthenticated caller learns nothing — and rides the existing UDP port, which is exactly the "works for key holders, no prober-server, no ports exposed to the internet" property that was asked for. Config: transport.ttl_desync_auto (on by default). When on and desync is enabled, the measured value overrides ttl_desync_ttl; measurement runs once and is cached, cleared on a config change. On measurement failure it falls back to the configured fixed TTL rather than skipping desync. The whole path is gated behind ttl_desync (off by default), so a normal connection never runs it. The probe logic is unit-tested (measures against a local responder; decoy-TTL math). The real hop measurement and the desync effect both need a real network to confirm and cannot be exercised here. |
||
|---|---|---|
| .. | ||
| capabilities | ||
| icons | ||
| permissions | ||
| src | ||
| windows | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| build.rs | ||
| tauri.conf.json | ||
| tauri.installer.conf.json | ||