ZaStoGram_desktop/Telegram/SourceFiles/mtproto/proxy/mtproxy
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
..
client_hello_builder.cpp Report the clock a hello carried, with its reference 2026-07-26 02:20:17 +03:00
client_hello_builder.h Report the clock a hello carried, with its reference 2026-07-26 02:20:17 +03:00
client_hello_constants.h Check the relay's contract before sending the hello 2026-07-26 01:38:34 +03:00
client_hello_facts.cpp Walk the extensions once 2026-07-26 14:13:59 +03:00
client_hello_facts.h Check the relay's contract before sending the hello 2026-07-26 01:38:34 +03:00
client_hello_fragmentation.cpp распил 2026-07-08 00:44:27 +03:00
client_hello_profile.cpp Say what the filtered network actually matches on 2026-07-26 16:48:08 +03:00
client_hello_profile.h Stop sending the fingerprint a filtered network refuses 2026-07-26 15:55:21 +03:00
client_hello_rules.cpp Say what the filtered network actually matches on 2026-07-26 16:48:08 +03:00
endpoint_identity.cpp Name the camouflage answer instead of blaming the digest 2026-07-26 00:15:27 +03:00
endpoint_identity.h Unify MTProxy endpoint control plane 2026-07-10 01:12:22 +03:00
handshake_diagnosis.h Refactor proxy admission control into dedicated arbiter 2026-07-12 22:53:12 +03:00
handshake_plan.cpp Stop sending the fingerprint a filtered network refuses 2026-07-26 15:55:21 +03:00
handshake_plan.h Pace MTProxy dials instead of steering them 2026-07-25 16:58:05 +03:00
tls_socket.cpp Stop sending the fingerprint a filtered network refuses 2026-07-26 15:55:21 +03:00
tls_socket.h Report what the socket saw when no ServerHello came 2026-07-26 15:40:17 +03:00
tls_socket_diagnostics.cpp Salt the logged SNI hash, because unsalted it named the domain 2026-07-26 19:15:13 +03:00
tls_socket_handshake.cpp Stop paying six seconds of queue and a round trip of Nagle 2026-07-26 19:08:19 +03:00
tls_socket_psk.cpp fix 2026-07-08 16:28:12 +03:00
tls_socket_psk.h fix 2026-07-08 16:28:12 +03:00
tls_socket_records.cpp Pace MTProxy dials instead of steering them 2026-07-25 16:58:05 +03:00
tls_socket_transport.cpp глубокая перекройка монолитных god файлов 2026-07-08 15:39:27 +03:00
tls_socket_transport.h глубокая перекройка монолитных god файлов 2026-07-08 15:39:27 +03:00
tls_socket_utils.h Fix build with Qt 5: replace QByteArrayView in tls_socket_utils 2026-07-10 21:00:51 +03:00