@browsercore/profiles 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -13
- package/dist/codes.d.ts +40 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/codes.js +111 -0
- package/dist/codes.js.map +1 -0
- package/dist/diff.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/profiles/chrome.d.ts +17 -4
- package/dist/profiles/chrome.d.ts.map +1 -1
- package/dist/profiles/chrome.js +68 -83
- package/dist/profiles/chrome.js.map +1 -1
- package/dist/profiles/edge.d.ts +2 -1
- package/dist/profiles/edge.d.ts.map +1 -1
- package/dist/profiles/edge.js +39 -41
- package/dist/profiles/edge.js.map +1 -1
- package/dist/profiles/firefox.d.ts +13 -3
- package/dist/profiles/firefox.d.ts.map +1 -1
- package/dist/profiles/firefox.js +48 -63
- package/dist/profiles/firefox.js.map +1 -1
- package/dist/profiles/safari.d.ts +6 -3
- package/dist/profiles/safari.d.ts.map +1 -1
- package/dist/profiles/safari.js +63 -46
- package/dist/profiles/safari.js.map +1 -1
- package/dist/registry.d.ts +4 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +4 -2
- package/dist/registry.js.map +1 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js.map +1 -1
- package/dist/validate.d.ts +8 -4
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +8 -72
- package/dist/validate.js.map +1 -1
- package/package.json +4 -6
package/dist/validate.d.ts
CHANGED
|
@@ -59,6 +59,13 @@ export declare class ValidationError extends ProfileError {
|
|
|
59
59
|
cause?: Error;
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
+
/** Outcome of validating a profile against a captured ClientHello. */
|
|
63
|
+
export interface ValidationResult {
|
|
64
|
+
/** True when every field matches (respecting GREASE randomization for cipher suites). */
|
|
65
|
+
readonly ok: boolean;
|
|
66
|
+
/** Empty when `ok` is true; otherwise one {@link ProfileDiff} per mismatched field. */
|
|
67
|
+
readonly diffs: ProfileDiff[];
|
|
68
|
+
}
|
|
62
69
|
/**
|
|
63
70
|
* Project a profile's TLS fields onto the wire values its ClientHello should
|
|
64
71
|
* carry for a connection to `serverName`. Extension order is taken verbatim from
|
|
@@ -73,8 +80,5 @@ export declare function buildExpectedClientHello(profile: BrowserProfile, server
|
|
|
73
80
|
* for cipher suites), and the list of diffs otherwise. SNI is not compared
|
|
74
81
|
* because captures do not record the destination hostname.
|
|
75
82
|
*/
|
|
76
|
-
export declare function validateProfileAgainstCapture(profile: BrowserProfile, capture: TlsCapture):
|
|
77
|
-
ok: boolean;
|
|
78
|
-
diffs: ProfileDiff[];
|
|
79
|
-
};
|
|
83
|
+
export declare function validateProfileAgainstCapture(profile: BrowserProfile, capture: TlsCapture): ValidationResult;
|
|
80
84
|
//# sourceMappingURL=validate.d.ts.map
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,wFAAwF;AACxF,MAAM,WAAW,UAAU;IACvB,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,qEAAqE;IACrE,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,yCAAyC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,yCAAyC;IACzC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,uEAAuE;IACvE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,yDAAyD;IACzD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,iCAAiC;IACjC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,iCAAiC;IACjC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAED,kFAAkF;AAClF,qBAAa,eAAgB,SAAQ,YAAY;IAC7C,SAAyB,IAAI,EAAG,iBAAiB,CAAU;IAE3D,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,EAGvD;CACJ;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC7B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;CACjC;AAkCD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,GACnB,mBAAmB,CAUrB;AA2DD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CACzC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,UAAU,GACpB,gBAAgB,CAoBlB"}
|
package/dist/validate.js
CHANGED
|
@@ -15,76 +15,7 @@
|
|
|
15
15
|
* extension slot. See the per-field comments below.
|
|
16
16
|
*/
|
|
17
17
|
import { ProfileError } from "./errors.js";
|
|
18
|
-
|
|
19
|
-
const CIPHER_GREASE_PLACEHOLDER = "TLS_GREASE_RESERVED_0";
|
|
20
|
-
/**
|
|
21
|
-
* IANA TLS Cipher Suite Registry — selected codes.
|
|
22
|
-
*
|
|
23
|
-
* Values are the canonical 2-byte wire codes from
|
|
24
|
-
* <https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4>.
|
|
25
|
-
* Only the suites used by the shipped profiles are mapped; an unknown name is a
|
|
26
|
-
* bug in a profile definition and throws.
|
|
27
|
-
*/
|
|
28
|
-
const CIPHER_SUITE_CODES = {
|
|
29
|
-
// GREASE: real value is randomized per-connection (0x0a0a..0xfafa). We use the
|
|
30
|
-
// first canonical GREASE code for the expected representation; validation
|
|
31
|
-
// accepts any GREASE-pattern value at a GREASE slot.
|
|
32
|
-
[CIPHER_GREASE_PLACEHOLDER]: 0x0a0a,
|
|
33
|
-
TLS_AES_128_GCM_SHA256: 0x1301,
|
|
34
|
-
TLS_AES_256_GCM_SHA384: 0x1302,
|
|
35
|
-
TLS_CHACHA20_POLY1305_SHA256: 0x1303,
|
|
36
|
-
TLS_AES_128_CCM_SHA256: 0x1304,
|
|
37
|
-
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: 0xc02b,
|
|
38
|
-
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: 0xc02f,
|
|
39
|
-
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: 0xc02c,
|
|
40
|
-
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: 0xc030,
|
|
41
|
-
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: 0xcca9,
|
|
42
|
-
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: 0xcca8,
|
|
43
|
-
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: 0xc013,
|
|
44
|
-
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: 0xc014,
|
|
45
|
-
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: 0xc009,
|
|
46
|
-
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: 0xc00a,
|
|
47
|
-
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: 0xc023,
|
|
48
|
-
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384: 0xc024,
|
|
49
|
-
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: 0xc027,
|
|
50
|
-
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384: 0xc028,
|
|
51
|
-
TLS_RSA_WITH_AES_128_GCM_SHA256: 0x009c,
|
|
52
|
-
TLS_RSA_WITH_AES_256_GCM_SHA384: 0x009d,
|
|
53
|
-
TLS_RSA_WITH_AES_128_CBC_SHA: 0x002f,
|
|
54
|
-
TLS_RSA_WITH_AES_256_CBC_SHA: 0x0035,
|
|
55
|
-
TLS_RSA_WITH_AES_128_CBC_SHA256: 0x003c,
|
|
56
|
-
TLS_RSA_WITH_AES_256_CBC_SHA256: 0x003d,
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* IANA TLS Supported Groups Registry (named groups) — selected codes.
|
|
60
|
-
* <https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8>
|
|
61
|
-
*/
|
|
62
|
-
const NAMED_GROUP_CODES = {
|
|
63
|
-
x25519: 0x001d,
|
|
64
|
-
secp256r1: 0x0017,
|
|
65
|
-
secp384r1: 0x0018,
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* IANA TLS SignatureScheme Registry — selected codes.
|
|
69
|
-
* <https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-16>
|
|
70
|
-
*/
|
|
71
|
-
const SIGNATURE_SCHEME_CODES = {
|
|
72
|
-
ecdsa_secp256r1_sha256: 0x0403,
|
|
73
|
-
rsa_pss_rsae_sha256: 0x0804,
|
|
74
|
-
rsa_pkcs1_sha256: 0x0401,
|
|
75
|
-
ecdsa_secp384r1_sha384: 0x0503,
|
|
76
|
-
rsa_pss_rsae_sha384: 0x0805,
|
|
77
|
-
rsa_pkcs1_sha384: 0x0501,
|
|
78
|
-
ed25519: 0x0807,
|
|
79
|
-
rsa_pkcs1_sha1: 0x0201,
|
|
80
|
-
};
|
|
81
|
-
/** IANA TLS ProtocolVersion codes for the supported_versions extension. */
|
|
82
|
-
const VERSION_CODES = {
|
|
83
|
-
"TLS 1.3": 0x0304,
|
|
84
|
-
"TLS 1.2": 0x0303,
|
|
85
|
-
"TLS 1.1": 0x0302,
|
|
86
|
-
"TLS 1.0": 0x0301,
|
|
87
|
-
};
|
|
18
|
+
import { CIPHER_GREASE_PLACEHOLDER, CIPHER_SUITE_CODES, NAMED_GROUP_CODES, SIGNATURE_SCHEME_CODES, VERSION_CODES, } from "./codes.js";
|
|
88
19
|
/** Validation / projection failure (unknown profile value, bad capture, etc.). */
|
|
89
20
|
export class ValidationError extends ProfileError {
|
|
90
21
|
kind = "ValidationError";
|
|
@@ -133,9 +64,14 @@ export function buildExpectedClientHello(profile, serverName) {
|
|
|
133
64
|
sni: serverName,
|
|
134
65
|
};
|
|
135
66
|
}
|
|
136
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* A 2-byte value matches the GREASE pattern 0x?a?a (high byte === low byte).
|
|
69
|
+
* RFC 8701 reserves the range 0x0a0a..0xfafa in steps of 0x1010, so values below
|
|
70
|
+
* 0x0a0a (notably 0x0000) are excluded even though they share the high===low
|
|
71
|
+
* byte shape.
|
|
72
|
+
*/
|
|
137
73
|
function isGreaseValue(v) {
|
|
138
|
-
return (v >> 8) === (v & 0xff);
|
|
74
|
+
return v >= 0x0a0a && (v >> 8) === (v & 0xff);
|
|
139
75
|
}
|
|
140
76
|
/**
|
|
141
77
|
* Element-wise diff of two numeric arrays, reporting one {@link ProfileDiff} per
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@browsercore/profiles",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Browser fingerprint definitions (TLS / HTTP/2 / HTTP/1.1). Pure data — no protocol implementation.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,17 +38,15 @@
|
|
|
38
38
|
"lint": "oxlint --type-aware src/"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
+
"@browsercore/dev": "latest",
|
|
41
42
|
"@types/node": "^26.1.2",
|
|
42
|
-
"@vitest/coverage-v8": "
|
|
43
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
43
44
|
"typescript": "^7.0.0",
|
|
44
|
-
"vitest": "
|
|
45
|
+
"vitest": "^4.1.10",
|
|
45
46
|
"oxlint": "^1.76.0",
|
|
46
47
|
"oxlint-tsgolint": "7.0.2001"
|
|
47
48
|
},
|
|
48
49
|
"engines": {
|
|
49
50
|
"node": ">=26.0.0"
|
|
50
|
-
},
|
|
51
|
-
"overrides": {
|
|
52
|
-
"vitest": "2.1.8"
|
|
53
51
|
}
|
|
54
52
|
}
|