curl-impersonate icon indicating copy to clipboard operation
curl-impersonate copied to clipboard

add dart:io TLS targets

Open selfisekai opened this issue 1 year ago • 0 comments

fairly popular client within mobile apps, due to Flutter widespread. should also be easy to implement in curl-impersonate:

  • uses BoringSSL,
  • HTTP/2 fingerprinting not applicable (HTTP/1.1 only),
  • straightforward headers

https://api.dart.dev/stable/2.19.5/dart-io/HttpClient-class.html

example request from my machine (code: https://gist.github.com/selfisekai/37b88bf0c08e7e0772201f22f956ada6)

{
  "http_version": "HTTP/1.1",
  "method": "GET",
  "tls": {
    "ciphers": [
      "TLS_AES_128_GCM_SHA256",
      "TLS_AES_256_GCM_SHA384",
      "TLS_CHACHA20_POLY1305_SHA256",
      "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
      "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
      "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
      "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
      "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
      "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
      "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
      "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
      "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
      "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
      "TLS_RSA_WITH_AES_128_GCM_SHA256",
      "TLS_RSA_WITH_AES_256_GCM_SHA384",
      "TLS_RSA_WITH_AES_128_CBC_SHA",
      "TLS_RSA_WITH_AES_256_CBC_SHA",
      "TLS_RSA_WITH_3DES_EDE_CBC_SHA"
    ],
    "extensions": [
      {
        "name": "server_name (0)",
        "server_name": "tls.peet.ws"
      },
      {
        "name": "extended_master_secret (23)",
        "master_secret_data": "",
        "extended_master_secret_data": ""
      },
      {
        "name": "extensionRenegotiationInfo (boringssl) (65281)",
        "data": "00"
      },
      {
        "name": "supported_groups (10)",
        "supported_groups": [
          "X25519 (29)",
          "P-256 (23)",
          "P-384 (24)"
        ]
      },
      {
        "name": "ec_point_formats (11)",
        "elliptic_curves_point_formats": [
          "0x00"
        ]
      },
      {
        "name": "session_ticket (35)",
        "data": ""
      },
      {
        "name": "signature_algorithms (13)",
        "signature_algorithms": [
          "ecdsa_secp256r1_sha256",
          "rsa_pss_rsae_sha256",
          "rsa_pkcs1_sha256",
          "ecdsa_secp384r1_sha384",
          "rsa_pss_rsae_sha384",
          "rsa_pkcs1_sha384",
          "rsa_pss_rsae_sha512",
          "rsa_pkcs1_sha512",
          "rsa_pkcs1_sha1"
        ]
      },
      {
        "name": "key_share (51)",
        "shared_keys": [
          {
            "X25519 (29)": "4b88967eb4c83ab234979bdf189976242dc9115514fda08565503eab6ea97838"
          }
        ]
      },
      {
        "name": "psk_key_exchange_modes (45)",
        "PSK_Key_Exchange_Mode": "PSK with (EC)DHE key establishment (psk_dhe_ke) (1)"
      },
      {
        "name": "supported_versions (43)",
        "versions": [
          "TLS 1.3",
          "TLS 1.2"
        ]
      }
    ],
    "tls_version_record": "771",
    "tls_version_negotiated": "772",
    "ja3": "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49161-49171-49162-49172-156-157-47-53-10,0-23-65281-10-11-35-13-51-45-43,29-23-24,0",
    "ja3_hash": "c318b1ae5d7abaaa0265af514737f2b8",
    "peetprint (WIP)": "772-771||29-23-24|1027-2052-1025-1283-2053-1281-2054-1537-513|1||4865-4866-4867-49195-49199-49196-49200-52393-52392-49161-49171-49162-49172-156-157-47-53-10|0-23-65281-10-11-35-13-51-45-43",
    "peetprint_hash (WIP)": "67e7ec4bbf1db8eaec612fe560f91274",
    "client_random": "70c188fe24fa4411af6721357bb8caaa986314ebdb5078216655d3327a2934d1",
    "session_id": "ba2025cf92241d7f3c83989766b3d95a25eb27e72d2eb94a3b55cda0e7dddf20"
  },
  "http1": {
    "headers": [
      "user-agent: Dart/2.19 (dart:io)",
      "accept-encoding: gzip",
      "host: tls.peet.ws"
    ]
  }
}

selfisekai avatar Mar 26 '23 02:03 selfisekai