ostp/ostp-gui/src-tauri
ospab 1e9111ab9f feat(client): auto-calibrate TTL-desync by measuring hops to the server
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.
2026-08-19 19:53:14 +03:00
..
capabilities
icons
permissions
src feat(client): auto-calibrate TTL-desync by measuring hops to the server 2026-08-19 19:53:14 +03:00
windows fix(installer): grant users permission to start the helper task 2026-08-11 23:28:36 +03:00
.gitignore
Cargo.lock chore: release v0.4.5-beta.1 on beta 2026-08-11 16:54:34 +03:00
Cargo.toml chore: release v0.4.5-beta.1 on beta 2026-08-11 16:54:34 +03:00
build.rs
tauri.conf.json chore: release v0.4.5-beta.1 on beta 2026-08-11 16:54:34 +03:00
tauri.installer.conf.json fix(gui): confine the installer's sidecar to the installer build 2026-08-11 16:54:11 +03:00