dpi-detector/crates
Kirill Minovsky 4836520713 quic: test 2's QUIC column sends the RFC 9000 Initial itself
`net/quic.rs` builds the hello for QUIC: the header protection, the `CRYPTO`
stream and the RFC 9001 §5.2 keys; `probe/quic.rs` is the column, and
`probe/quic_quinn.rs` runs the same column through `quinn` (feature
`quinn-probe`, off by default — not a shipping candidate, as `Cargo.toml` says).

The shapes needed two things for it: `Variant::NoGrease`, because a browser
greases over TCP and not over QUIC (measured on a live Chrome's QUIC hello),
and `sends_extension`/`extension_body`, so an edit starts from the shape's own
bytes and a shape that does not send an extension does not get one. The
vendored hook gains `ClientHelloProfile::quic`: a QUIC hello's
`legacy_session_id` is empty (RFC 9001 §8.4), which the patched hook could not
reach from the connection's protocol alone.

`scripts/quic/` is the stand that validates the column against aioquic;
`tools/quinn-stand/` is the out-of-workspace second one, and `capture-run.ps1`
captures the column's traffic for a look at the wire.
2026-09-27 00:03:47 +03:00
..
dpi-core quic: test 2's QUIC column sends the RFC 9000 Initial itself 2026-09-27 00:03:47 +03:00
dpi-detector quic: test 2's QUIC column sends the RFC 9000 Initial itself 2026-09-27 00:03:47 +03:00