0000: 23 20 47 72 6f 75 70 2c 4e 61 6d 65 2c 43 6f 6e # Group,Name,Con
0010: 73 74 72 61 69 6e 74 73 2c 53 65 74 75 70 2c 42 straints,Setup,B
0020: 6f 64 79 2c 43 6c 65 61 6e 75 70 2c 4d 61 74 63 ody,Cleanup,Matc
0030: 68 2c 52 65 73 75 6c 74 2c 4f 75 74 70 75 74 2c h,Result,Output,
0040: 45 72 72 6f 72 20 4f 75 74 70 75 74 2c 52 65 74 Error Output,Ret
0050: 75 72 6e 20 43 6f 64 65 73 0a 63 6f 6d 6d 61 6e urn Codes.comman
0060: 64 2c 70 61 63 6b 61 67 65 20 70 72 65 66 65 72 d,package prefer
0070: 20 6c 61 74 65 73 74 2c 2c 2c 2c 2c 2c 2c 2c 2c latest,,,,,,,,,
0080: 0a 63 6f 6d 6d 61 6e 64 2c 70 61 63 6b 61 67 65 .command,package
0090: 20 72 65 71 75 69 72 65 20 74 6c 73 2c 2c 2c 2c require tls,,,,
00a0: 2c 2c 2c 2c 2c 0a 63 6f 6d 6d 61 6e 64 2c 70 61 ,,,,,.command,pa
00b0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 68 74 ckage require ht
00c0: 74 70 2c 2c 2c 2c 2c 2c 2c 2c 2c 0a 2c 2c 2c 2c tp,,,,,,,,,.,,,,
00d0: 2c 2c 2c 2c 2c 2c 0a 63 6f 6d 6d 61 6e 64 2c 23 ,,,,,,.command,#
00e0: 20 43 6f 6e 73 74 72 61 69 6e 74 73 2c 2c 2c 2c Constraints,,,,
00f0: 2c 2c 2c 2c 2c 0a 63 6f 6d 6d 61 6e 64 2c 73 6f ,,,,,.command,so
0100: 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 urce [file join
0110: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69 [file dirname [i
0120: 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 63 6f 6d nfo script]] com
0130: 6d 6f 6e 2e 74 63 6c 5d 2c 2c 2c 2c 2c 2c 2c 2c mon.tcl],,,,,,,,
0140: 2c 0a 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c 0a 63 6f 6d ,.,,,,,,,,,,.com
0150: 6d 61 6e 64 2c 23 20 48 65 6c 70 65 72 20 66 75 mand,# Helper fu
0160: 6e 63 74 69 6f 6e 73 2c 2c 2c 2c 2c 2c 2c 2c 2c nctions,,,,,,,,,
0170: 0a 63 6f 6d 6d 61 6e 64 2c 73 65 74 20 3a 3a 63 .command,set ::c
0180: 61 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e afile [file join
0190: 20 5b 70 77 64 5d 20 63 65 72 74 73 20 63 61 63 [pwd] certs cac
01a0: 65 72 74 2e 70 65 6d 5d 2c 2c 2c 2c 2c 2c 2c 2c ert.pem],,,,,,,,
01b0: 2c 0a 63 6f 6d 6d 61 6e 64 2c 73 65 74 20 3a 3a ,.command,set ::
01c0: 65 6e 76 28 53 53 4c 5f 43 45 52 54 5f 46 49 4c env(SSL_CERT_FIL
01d0: 45 29 20 24 3a 3a 63 61 66 69 6c 65 2c 2c 2c 2c E) $::cafile,,,,
01e0: 2c 2c 2c 2c 2c 0a 63 6f 6d 6d 61 6e 64 2c 3a 3a ,,,,,.command,::
01f0: 68 74 74 70 3a 3a 72 65 67 69 73 74 65 72 20 68 http::register h
0200: 74 74 70 73 20 34 34 33 20 5b 6c 69 73 74 20 3a ttps 443 [list :
0210: 3a 74 6c 73 3a 3a 73 6f 63 6b 65 74 20 2d 63 61 :tls::socket -ca
0220: 66 69 6c 65 20 24 3a 3a 63 61 66 69 6c 65 5d 2c file $::cafile],
0230: 2c 2c 2c 2c 2c 2c 2c 2c 0a 63 6f 6d 6d 61 6e 64 ,,,,,,,,.command
0240: 2c 22 70 72 6f 63 20 67 65 74 5f 75 72 6c 20 7b ,"proc get_url {
0250: 75 72 6c 7d 20 7b 0a 20 20 20 20 73 65 74 20 74 url} {. set t
0260: 6f 6b 65 6e 20 5b 3a 3a 68 74 74 70 3a 3a 67 65 oken [::http::ge
0270: 74 75 72 6c 20 24 75 72 6c 5d 0a 20 20 20 20 73 turl $url]. s
0280: 65 74 20 62 6f 64 79 20 5b 3a 3a 68 74 74 70 3a et body [::http:
0290: 3a 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a 20 20 :data $token].
02a0: 20 20 3a 3a 68 74 74 70 3a 3a 63 6c 65 61 6e 75 ::http::cleanu
02b0: 70 20 24 74 6f 6b 65 6e 0a 20 20 20 20 72 65 74 p $token. ret
02c0: 75 72 6e 20 24 62 6f 64 79 0a 7d 0a 22 2c 2c 2c urn $body.}.",,,
02d0: 2c 2c 2c 2c 2c 2c 0a 63 6f 6d 6d 61 6e 64 2c 22 ,,,,,,.command,"
02e0: 70 72 6f 63 20 67 65 74 5f 64 61 74 61 20 7b 75 proc get_data {u
02f0: 72 6c 7d 20 7b 0a 20 20 20 20 73 65 74 20 74 6f rl} {. set to
0300: 6b 65 6e 20 5b 3a 3a 68 74 74 70 3a 3a 67 65 74 ken [::http::get
0310: 75 72 6c 20 24 75 72 6c 5d 0a 20 20 20 20 73 65 url $url]. se
0320: 74 20 62 6f 64 79 20 5b 3a 3a 68 74 74 70 3a 3a t body [::http::
0330: 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a 20 20 20 data $token].
0340: 20 3a 3a 68 74 74 70 3a 3a 63 6c 65 61 6e 75 70 ::http::cleanup
0350: 20 24 74 6f 6b 65 6e 0a 20 20 20 20 73 65 74 20 $token. set
0360: 70 61 74 74 65 72 6e 20 7b 3c 62 6f 64 79 2e 2a pattern {<body.*
0370: 3f 3e 28 2e 2a 3f 29 3c 2f 62 6f 64 79 3e 7d 0a ?>(.*?)</body>}.
0380: 20 20 20 20 73 65 74 20 64 61 74 61 20 22 22 22 set data """
0390: 22 0a 20 20 20 20 72 65 67 65 78 70 20 2d 6e 6f ". regexp -no
03a0: 63 61 73 65 20 24 70 61 74 74 65 72 6e 20 24 62 case $pattern $b
03b0: 6f 64 79 20 6d 61 74 63 68 20 64 61 74 61 0a 20 ody match data.
03c0: 20 20 20 72 65 74 75 72 6e 20 24 64 61 74 61 0a return $data.
03d0: 7d 0a 22 2c 2c 2c 2c 2c 2c 2c 2c 2c 0a 2c 2c 2c }.",,,,,,,,,.,,,
03e0: 2c 2c 2c 2c 2c 2c 2c 0a 63 6f 6d 6d 61 6e 64 2c ,,,,,,,.command,
03f0: 23 20 62 72 6f 77 73 65 72 6c 65 61 6b 73 2e 63 # browserleaks.c
0400: 6f 6d 20 54 65 73 74 73 2c 2c 2c 2c 2c 2c 2c 2c om Tests,,,,,,,,
0410: 2c 0a 42 72 6f 77 73 65 72 4c 65 61 6b 73 2c 54 ,.BrowserLeaks,T
0420: 4c 53 20 31 2e 33 2c 4f 70 65 6e 53 53 4c 33 2e LS 1.3,OpenSSL3.
0430: 32 2c 2c 67 65 74 5f 75 72 6c 20 68 74 74 70 73 2,,get_url https
0440: 3a 2f 2f 74 6c 73 31 33 2e 62 72 6f 77 73 65 72 ://tls13.browser
0450: 6c 65 61 6b 73 2e 63 6f 6d 2c 2c 2c 54 4c 53 20 leaks.com,,,TLS
0460: 31 2e 33 2c 2c 2c 0a 42 72 6f 77 73 65 72 4c 65 1.3,,,.BrowserLe
0470: 61 6b 73 2c 54 4c 53 20 31 2e 32 2c 4f 70 65 6e aks,TLS 1.2,Open
0480: 53 53 4c 33 2e 32 2c 2c 67 65 74 5f 75 72 6c 20 SSL3.2,,get_url
0490: 68 74 74 70 73 3a 2f 2f 74 6c 73 31 32 2e 62 72 https://tls12.br
04a0: 6f 77 73 65 72 6c 65 61 6b 73 2e 63 6f 6d 2c 2c owserleaks.com,,
04b0: 2c 54 4c 53 20 31 2e 32 2c 2c 2c 0a 42 72 6f 77 ,TLS 1.2,,,.Brow
04c0: 73 65 72 4c 65 61 6b 73 2c 54 4c 53 20 31 2e 31 serLeaks,TLS 1.1
04d0: 2c 4f 70 65 6e 53 53 4c 33 2e 32 2c 2c 67 65 74 ,OpenSSL3.2,,get
04e0: 5f 75 72 6c 20 68 74 74 70 73 3a 2f 2f 74 6c 73 _url https://tls
04f0: 31 31 2e 62 72 6f 77 73 65 72 6c 65 61 6b 73 2e 11.browserleaks.
0500: 63 6f 6d 2c 2c 2c 66 61 69 6c 65 64 20 74 6f 20 com,,,failed to
0510: 75 73 65 20 73 6f 63 6b 65 74 2c 2c 2c 31 0a 42 use socket,,,1.B
0520: 72 6f 77 73 65 72 4c 65 61 6b 73 2c 54 4c 53 20 rowserLeaks,TLS
0530: 31 2e 30 2c 4f 70 65 6e 53 53 4c 33 2e 32 2c 2c 1.0,OpenSSL3.2,,
0540: 67 65 74 5f 75 72 6c 20 68 74 74 70 73 3a 2f 2f get_url https://
0550: 74 6c 73 31 30 2e 62 72 6f 77 73 65 72 6c 65 61 tls10.browserlea
0560: 6b 73 2e 63 6f 6d 2c 2c 2c 66 61 69 6c 65 64 20 ks.com,,,failed
0570: 74 6f 20 75 73 65 20 73 6f 63 6b 65 74 2c 2c 2c to use socket,,,
0580: 31 0a 42 72 6f 77 73 65 72 4c 65 61 6b 73 2c 4a 1.BrowserLeaks,J
0590: 41 34 20 52 61 77 20 46 69 6e 67 65 72 70 72 69 A4 Raw Fingerpri
05a0: 6e 74 2c 4f 70 65 6e 53 53 4c 33 2e 32 2c 2c 67 nt,OpenSSL3.2,,g
05b0: 65 74 5f 64 61 74 61 20 68 74 74 70 73 3a 2f 2f et_data https://
05c0: 74 6c 73 2e 62 72 6f 77 73 65 72 6c 65 61 6b 73 tls.browserleaks
05d0: 2e 63 6f 6d 2f 69 66 72 61 6d 65 2f 6a 61 34 2c .com/iframe/ja4,
05e0: 2c 67 6c 6f 62 2c 74 2a 2c 2c 2c 0a 42 72 6f 77 ,glob,t*,,,.Brow
05f0: 73 65 72 4c 65 61 6b 73 2c 22 4a 41 34 20 52 61 serLeaks,"JA4 Ra
0600: 77 20 46 69 6e 67 65 72 70 72 69 6e 74 2c 20 4f w Fingerprint, O
0610: 72 69 67 69 6e 61 6c 20 4f 72 64 65 72 22 2c 4f riginal Order",O
0620: 70 65 6e 53 53 4c 33 2e 32 2c 2c 67 65 74 5f 64 penSSL3.2,,get_d
0630: 61 74 61 20 68 74 74 70 73 3a 2f 2f 74 6c 73 2e ata https://tls.
0640: 62 72 6f 77 73 65 72 6c 65 61 6b 73 2e 63 6f 6d browserleaks.com
0650: 2f 69 66 72 61 6d 65 2f 6a 61 34 5f 6f 2c 2c 67 /iframe/ja4_o,,g
0660: 6c 6f 62 2c 74 2a 2c 2c 2c 0a 42 72 6f 77 73 65 lob,t*,,,.Browse
0670: 72 4c 65 61 6b 73 2c 4a 41 33 20 52 61 77 20 46 rLeaks,JA3 Raw F
0680: 69 6e 67 65 72 70 72 69 6e 74 2c 4f 70 65 6e 53 ingerprint,OpenS
0690: 53 4c 33 2e 32 2c 2c 67 65 74 5f 64 61 74 61 20 SL3.2,,get_data
06a0: 68 74 74 70 73 3a 2f 2f 74 6c 73 2e 62 72 6f 77 https://tls.brow
06b0: 73 65 72 6c 65 61 6b 73 2e 63 6f 6d 2f 69 66 72 serleaks.com/ifr
06c0: 61 6d 65 2f 6a 61 33 2c 2c 67 6c 6f 62 2c 2a 2c ame/ja3,,glob,*,
06d0: 2c 2c 0a 42 72 6f 77 73 65 72 4c 65 61 6b 73 2c ,,.BrowserLeaks,
06e0: 22 4a 41 33 20 52 61 77 20 46 69 6e 67 65 72 70 "JA3 Raw Fingerp
06f0: 72 69 6e 74 2c 20 4f 72 69 67 69 6e 61 6c 20 4f rint, Original O
0700: 72 64 65 72 22 2c 4f 70 65 6e 53 53 4c 33 2e 32 rder",OpenSSL3.2
0710: 2c 2c 67 65 74 5f 64 61 74 61 20 68 74 74 70 73 ,,get_data https
0720: 3a 2f 2f 74 6c 73 2e 62 72 6f 77 73 65 72 6c 65 ://tls.browserle
0730: 61 6b 73 2e 63 6f 6d 2f 69 66 72 61 6d 65 2f 6a aks.com/iframe/j
0740: 61 33 5f 6e 2c 2c 67 6c 6f 62 2c 2a 2c 2c 2c 0a a3_n,,glob,*,,,.
0750: 42 72 6f 77 73 65 72 4c 65 61 6b 73 2c 45 6e 63 BrowserLeaks,Enc
0760: 72 79 70 74 65 64 20 43 6c 69 65 6e 74 20 48 65 rypted Client He
0770: 6c 6c 6f 2c 4f 70 65 6e 53 53 4c 33 2e 32 2c 2c llo,OpenSSL3.2,,
0780: 67 65 74 5f 64 61 74 61 20 68 74 74 70 73 3a 2f get_data https:/
0790: 2f 74 6c 73 2e 62 72 6f 77 73 65 72 6c 65 61 6b /tls.browserleak
07a0: 73 2e 63 6f 6d 2f 69 66 72 61 6d 65 2f 65 63 68 s.com/iframe/ech
07b0: 2c 2c 67 6c 6f 62 2c 20 2a 46 61 6c 73 65 2a 2c ,,glob, *False*,
07c0: 2c 2c 0a ,,.