mirror of
https://github.com/Runnin4ik/dpi-detector.git
synced 2026-10-21 05:21:39 +00:00
`curl_safari155` advertises `GREASE, 0x0304, 0x0303, 0x0302, 0x0301`; ours stopped at 1.2, so Safari's hello was a shape no Safari sends, and `peetprint` — which hashes the version list and the padding that JA4 does not — separated us from the bundle even though JA3 and JA4 matched. The vendored rustls patch gains `ClientHelloProfile::legacy_versions`, written into `supported_versions` behind the configured ones, and the Safari profile lists TLS 1.1 and 1.0 there. Nothing about negotiation changes: rustls still speaks only what the config offers, so a peer that selects 1.1 ends the handshake in `PeerIncompatible::ServerDoesNotSupportTls12Or13` — which the classifier already reads as `NO TLS1.3`, not as a block. Pinned runs (test 2's two columns, test 6's TLS 1.2 axis) drop the fallbacks on the copy they build, because isolating one version is the whole point of those runs. Measured against `tls.peet.ws`: the Safari profile is now identical to `curl_safari155` on JA3, JA4 *and* peetprint (`b2bafdc6…`, was `c8705f31…`), and on the wire test 6 sends `GREASE, 0x0304, 0x0303, 0x0302, 0x0301`, 512 bytes. `PATCH.diff` is regenerated from the crates.io source (741 lines, 7 files) and validated with `patch -p1 --dry-run` against pristine 0.23.43; the copy it replaces had missed the GREASE hooks added later, so the file now matches the tree it claims to describe. |
||
|---|---|---|
| .. | ||
| dpi-core | ||
| dpi-detector | ||