ZaStoGram_desktop/Telegram/SourceFiles/mtproto/proxy
Repository files (latest commit first)
Filename Latest commit message Latest commit date
loop-uh b4d1418e81 Salt the logged SNI hash, because unsalted it named the domain
The masqueraded domain is logged as a hash so a log can be shared
without naming it. That did not hold: the name is short and drawn
from a small set of plausible ones, so eight bytes of SHA-256 fall
to a wordlist immediately - www.google.com came back out of a real
log this way in under a second, from 12900 candidates, while
working out which relay a user was on.

The salt is sixteen random bytes drawn once per run and hashed
before the domain, so no prefix of the digest depends on the domain
alone. What the field is actually for still works: inside one log,
connections carrying the same name still share a hash. Across two
logs they no longer line up, which is the right trade for a field
whose whole purpose was to not name the domain.

Both report builders now go through one helper; neither hashes the
domain directly. Guarded, including that the salt is drawn once
rather than per call - per call would leave the field useless for
matching within a log.
2026-07-26 19:15:13 +03:00
..
mtproxy Salt the logged SNI hash, because unsalted it named the domain 2026-07-26 19:15:13 +03:00
wss
capabilities.cpp
capabilities.h
check.cpp Stop calling every mtproxy a fake TLS one in the log 2026-07-26 00:04:14 +03:00
check.h Pace MTProxy dials instead of steering them 2026-07-25 16:58:05 +03:00
control_plane.cpp Name the camouflage answer instead of blaming the digest 2026-07-26 00:15:27 +03:00
control_plane.h Pace MTProxy dials instead of steering them 2026-07-25 16:58:05 +03:00
data.cpp
data.h
diagnostics.cpp Report what the socket saw when no ServerHello came 2026-07-26 15:40:17 +03:00
diagnostics.h Report what the socket saw when no ServerHello came 2026-07-26 15:40:17 +03:00
dial_pacer.cpp Stop paying six seconds of queue and a round trip of Nagle 2026-07-26 19:08:19 +03:00
dial_pacer.h Drop the dial concurrency cap the relays disproved 2026-07-26 00:28:06 +03:00
dns_resolver_cache.cpp
dns_resolver_cache.h
proxy_endpoint_context.cpp Pace MTProxy dials instead of steering them 2026-07-25 16:58:05 +03:00
proxy_endpoint_context.h Pace MTProxy dials instead of steering them 2026-07-25 16:58:05 +03:00
proxy_services.cpp Pace MTProxy dials instead of steering them 2026-07-25 16:58:05 +03:00
proxy_services.h Pace MTProxy dials instead of steering them 2026-07-25 16:58:05 +03:00
resolving_connection.cpp Name the camouflage answer instead of blaming the digest 2026-07-26 00:15:27 +03:00
resolving_connection.h Simplify MTProxy endpoint retry scheduling 2026-07-19 20:53:14 +03:00
socket_factory.cpp Unify MTProxy endpoint control plane 2026-07-10 01:12:22 +03:00
socket_factory.h Unify MTProxy endpoint control plane 2026-07-10 01:12:22 +03:00
status.cpp Name the camouflage answer instead of blaming the digest 2026-07-26 00:15:27 +03:00
status.h Name the camouflage answer instead of blaming the digest 2026-07-26 00:15:27 +03:00
transport_policy.cpp Stop calling every mtproxy a fake TLS one in the log 2026-07-26 00:04:14 +03:00
transport_policy.h