Skip to content

Add Chrome 139 parrot preset (GREASE keyshare, google_initial_rtt 0x3127) #81

@Juktong

Description

@Juktong

Summary
I captured Chrome 139’s QUIC/TLS 1.3 ClientHello with Wireshark. It differs from QUICChrome_115_{IPv4,IPv6} in several fingerprint-relevant fields. I’ll open a PR to add QUICChrome_139_{IPv4,IPv6} before next week. I will attach a sanitized ClientHello tree from Wireshark (personal info removed).

Key diffs vs current parrot

  • QUIC TP includes google_initial_rtt 0x3127; omit google_connection_options 0x3128.
  • GREASE unknown extension 0x44CD (length 5); supported_groups starts with 0x11EC then x25519,p256,p384; key_share first entry 0x11EC (~1216 B) then x25519.
  • Resumption path pre_shared_key (41) and early_data (42) present (should be toggleable).

Proposed change

  • Add QUICChrome_139 in u_parrot.go.
  • Update QUIC TPs to include 0x3127 and omitting 0x3128.
  • Add GREASE group/key_share and unknown GREASE ext 0x44CD.

Captured QUIC Client hello

Handshake Protocol: Client Hello
    Handshake Type: Client Hello (1)
    Length: 2220
    Version: TLS 1.2 (0x0303)
    Random: *
    Session ID Length: 0
    Cipher Suites Length: 6
    Cipher Suites (3 suites)
        Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
        Cipher Suite: TLS_AES_256_GCM_SHA384 (0x1302)
        Cipher Suite: TLS_CHACHA20_POLY1305_SHA256 (0x1303)
    Compression Methods Length: 1
    Compression Methods (1 method)
        Compression Method: null (0)
    Extensions Length: 2173
    Extension: compress_certificate (len=3)
        Type: compress_certificate (27)
        Length: 3
        Algorithms Length: 2
        Algorithm: brotli (2)
    Extension: quic_transport_parameters (len=93)
        Type: quic_transport_parameters (57)
        Length: 93
        Parameter: initial_max_stream_data_bidi_remote (len=4) 6291456
            Type: initial_max_stream_data_bidi_remote (0x06)
            Length: 4
            Value: 80600000
            initial_max_stream_data_bidi_remote: 6291456
        Parameter: initial_max_stream_data_uni (len=4) 6291456
            Type: initial_max_stream_data_uni (0x07)
            Length: 4
            Value: 80600000
            initial_max_stream_data_uni: 6291456
        Parameter: initial_max_stream_data_bidi_local (len=4) 6291456
            Type: initial_max_stream_data_bidi_local (0x05)
            Length: 4
            Value: 80600000
            initial_max_stream_data_bidi_local: 6291456
        Parameter: google_quic_version (len=4)
            Type: google_quic_version (0x4752)
            Length: 4
            Value: 00000001
            Google QUIC version: 1 (0x00000001)
        Parameter: max_idle_timeout (len=4) 30000 ms
            Type: max_idle_timeout (0x01)
            Length: 4
            Value: 80007530
            max_idle_timeout: 30000
        Parameter: max_datagram_frame_size (len=4) 65536
            Type: max_datagram_frame_size (0x20)
            Length: 4
            Value: 80010000
            max_datagram_frame_size: 65536
        Parameter: initial_source_connection_id (len=0)
            Type: initial_source_connection_id (0x0f)
            Length: 0
            Value: <MISSING>
            Initial Source Connection ID: <MISSING>
        Parameter: initial_max_streams_bidi (len=2) 100
            Type: initial_max_streams_bidi (0x08)
            Length: 2
            Value: 4064
            initial_max_streams_bidi: 100
        Parameter: google_initial_rtt (len=4) 45508 us
            Type: google_initial_rtt (0x3127)
            Length: 4
            Value: 8000b1c4
            Google Initial RTT: 45508
        Parameter: version_information (len=12)
            Type: version_information (0x11)
            Length: 12
            Value: 00000001000000018a0aba6a
            Chosen Version: 1 (0x00000001)
            Other Version: 1 (0x00000001)
            Other Version: Unknown (0x8a0aba6a) (GREASE)
        Parameter: initial_max_data (len=4) 15728640
            Type: initial_max_data (0x04)
            Length: 4
            Value: 80f00000
            initial_max_data: 15728640
        Parameter: max_udp_payload_size (len=2) 1472
            Type: max_udp_payload_size (0x03)
            Length: 2
            Value: 45c0
            max_udp_payload_size: 1472
        Parameter: GREASE (len=4)
            Type: GREASE (0x1f657a19f98e5ad1)
            Length: 4
            Value: 9c65bb33
        Parameter: initial_max_streams_uni (len=2) 103
            Type: initial_max_streams_uni (0x09)
            Length: 2
            Value: 4067
            initial_max_streams_uni: 103
    Extension: supported_versions (len=3) TLS 1.3
        Type: supported_versions (43)
        Length: 3
        Supported Versions length: 2
        Supported Version: TLS 1.3 (0x0304)
    Extension: server_name (len=25) name=accounts.youtube.com
        Type: server_name (0)
        Length: 25
        Server Name Indication extension
            Server Name list length: 23
            Server Name Type: host_name (0)
            Server Name length: 20
            Server Name: accounts.youtube.com
    Extension: Unknown type 17613 (len=5)
        Type: Unknown (17613)
        Length: 5
        Data: 0003026833
    Extension: psk_key_exchange_modes (len=2)
        Type: psk_key_exchange_modes (45)
        Length: 2
        PSK Key Exchange Modes Length: 1
        PSK Key Exchange Mode: PSK with (EC)DHE key establishment (psk_dhe_ke) (1)
    Extension: encrypted_client_hello (len=218)
        Type: encrypted_client_hello (65037)
        Length: 218
        Client Hello type: Outer Client Hello (0)
        Cipher Suite: HKDF-SHA256/AES-128-GCM
            KDF Id: HKDF-SHA256 (1)
            AEAD Id: AES-128-GCM (1)
        Config Id: 70
        Enc length: 32
        Enc: *
        Payload length: 176
        Payload [truncated]: *
    Extension: application_layer_protocol_negotiation (len=5)
        Type: application_layer_protocol_negotiation (16)
        Length: 5
        ALPN Extension Length: 3
        ALPN Protocol
            ALPN string length: 2
            ALPN Next Protocol: h3
    Extension: supported_groups (len=10)
        Type: supported_groups (10)
        Length: 10
        Supported Groups List Length: 8
        Supported Groups (4 groups)
            Supported Group: Unknown (0x11ec)
            Supported Group: x25519 (0x001d)
            Supported Group: secp256r1 (0x0017)
            Supported Group: secp384r1 (0x0018)
    Extension: signature_algorithms (len=20)
        Type: signature_algorithms (13)
        Length: 20
        Signature Hash Algorithms Length: 18
        Signature Hash Algorithms (9 algorithms)
            Signature Algorithm: ecdsa_secp256r1_sha256 (0x0403)
                Signature Hash Algorithm Hash: SHA256 (4)
                Signature Hash Algorithm Signature: ECDSA (3)
            Signature Algorithm: rsa_pss_rsae_sha256 (0x0804)
                Signature Hash Algorithm Hash: Unknown (8)
                Signature Hash Algorithm Signature: Unknown (4)
            Signature Algorithm: rsa_pkcs1_sha256 (0x0401)
                Signature Hash Algorithm Hash: SHA256 (4)
                Signature Hash Algorithm Signature: RSA (1)
            Signature Algorithm: ecdsa_secp384r1_sha384 (0x0503)
                Signature Hash Algorithm Hash: SHA384 (5)
                Signature Hash Algorithm Signature: ECDSA (3)
            Signature Algorithm: rsa_pss_rsae_sha384 (0x0805)
                Signature Hash Algorithm Hash: Unknown (8)
                Signature Hash Algorithm Signature: Unknown (5)
            Signature Algorithm: rsa_pkcs1_sha384 (0x0501)
                Signature Hash Algorithm Hash: SHA384 (5)
                Signature Hash Algorithm Signature: RSA (1)
            Signature Algorithm: rsa_pss_rsae_sha512 (0x0806)
                Signature Hash Algorithm Hash: Unknown (8)
                Signature Hash Algorithm Signature: Unknown (6)
            Signature Algorithm: rsa_pkcs1_sha512 (0x0601)
                Signature Hash Algorithm Hash: SHA512 (6)
                Signature Hash Algorithm Signature: RSA (1)
            Signature Algorithm: rsa_pkcs1_sha1 (0x0201)
                Signature Hash Algorithm Hash: SHA1 (2)
                Signature Hash Algorithm Signature: RSA (1)
    Extension: key_share (len=1258) Unknown (4588), x25519
        Type: key_share (51)
        Length: 1258
        Key Share extension
            Client Key Share Length: 1256
            Key Share Entry: Group: Unknown (4588), Key Exchange length: 1216
                Group: Unknown (4588)
                Key Exchange Length: 1216
                Key Exchange [truncated]: *
            Key Share Entry: Group: x25519, Key Exchange length: 32
                Group: x25519 (29)
                Key Exchange Length: 32
                Key Exchange: *
    Extension: early_data (len=0)
        Type: early_data (42)
        Length: 0
    Extension: pre_shared_key (len=479)
        Type: pre_shared_key (41)
        Length: 479
        Pre-Shared Key extension
            Identities Length: 442
            PSK Identity (length: 436)
                Identity Length: 436
                Identity [truncated]: *
                Obfuscated Ticket Age: *
            PSK Binders length: 33
            PSK Binders
    [JA4: u13d0313h3_55b375c5d22e_226f3f127bbe]
    [JA4_r: u13d0313h3_1301,1302,1303_000a,000d,001b,0029,002a,002b,002d,0033,0039,44cd,fe0d_0403,0804,0401,0503,0805,0501,0806,0601,0201]
    [JA3 Fullstring: 771,4865-4866-4867,27-57-43-0-17613-45-65037-16-10-13-51-42-41,4588-29-23-24,]
    [JA3: 82f426fce8cc17b3c83eefbc7dcf677b]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions