Hex Artifact Content

Artifact 18cdc057dad8a5e0a382088cb635d8767cf3a6556ccfbf42d3a040208c68cea3:


0000: 23 20 41 75 74 6f 20 67 65 6e 65 72 61 74 65 64  # Auto generated
0010: 20 74 65 73 74 20 63 61 73 65 73 20 66 6f 72 20   test cases for 
0020: 62 72 6f 77 73 65 72 6c 65 61 6b 73 2e 63 73 76  browserleaks.csv
0030: 0a 0a 23 20 4c 6f 61 64 20 54 63 6c 20 54 65 73  ..# Load Tcl Tes
0040: 74 20 70 61 63 6b 61 67 65 0a 69 66 20 7b 5b 6c  t package.if {[l
0050: 73 65 61 72 63 68 20 5b 6e 61 6d 65 73 70 61 63  search [namespac
0060: 65 20 63 68 69 6c 64 72 65 6e 5d 20 3a 3a 74 63  e children] ::tc
0070: 6c 74 65 73 74 5d 20 3c 20 30 7d 20 7b 0a 09 70  ltest] < 0} {..p
0080: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74  ackage require t
0090: 63 6c 74 65 73 74 0a 09 6e 61 6d 65 73 70 61 63  cltest..namespac
00a0: 65 20 69 6d 70 6f 72 74 20 3a 3a 74 63 6c 74 65  e import ::tclte
00b0: 73 74 3a 3a 2a 0a 7d 0a 0a 73 65 74 20 3a 3a 61  st::*.}..set ::a
00c0: 75 74 6f 5f 70 61 74 68 20 5b 63 6f 6e 63 61 74  uto_path [concat
00d0: 20 5b 6c 69 73 74 20 5b 66 69 6c 65 20 64 69 72   [list [file dir
00e0: 6e 61 6d 65 20 5b 66 69 6c 65 20 64 69 72 6e 61  name [file dirna
00f0: 6d 65 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d  me [info script]
0100: 5d 5d 5d 20 24 3a 3a 61 75 74 6f 5f 70 61 74 68  ]]] $::auto_path
0110: 5d 0a 0a 70 61 63 6b 61 67 65 20 70 72 65 66 65  ]..package prefe
0120: 72 20 6c 61 74 65 73 74 0a 70 61 63 6b 61 67 65  r latest.package
0130: 20 72 65 71 75 69 72 65 20 74 6c 73 0a 70 61 63   require tls.pac
0140: 6b 61 67 65 20 72 65 71 75 69 72 65 20 68 74 74  kage require htt
0150: 70 0a 0a 23 20 43 6f 6e 73 74 72 61 69 6e 74 73  p..# Constraints
0160: 0a 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f  .source [file jo
0170: 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  in [file dirname
0180: 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20   [info script]] 
0190: 63 6f 6d 6d 6f 6e 2e 74 63 6c 5d 0a 0a 23 20 48  common.tcl]..# H
01a0: 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a  elper functions.
01b0: 73 65 74 20 3a 3a 63 61 66 69 6c 65 20 5b 66 69  set ::cafile [fi
01c0: 6c 65 20 6a 6f 69 6e 20 5b 70 77 64 5d 20 63 65  le join [pwd] ce
01d0: 72 74 73 20 63 61 63 65 72 74 2e 70 65 6d 5d 0a  rts cacert.pem].
01e0: 73 65 74 20 3a 3a 65 6e 76 28 53 53 4c 5f 43 45  set ::env(SSL_CE
01f0: 52 54 5f 46 49 4c 45 29 20 24 3a 3a 63 61 66 69  RT_FILE) $::cafi
0200: 6c 65 0a 3a 3a 68 74 74 70 3a 3a 72 65 67 69 73  le.::http::regis
0210: 74 65 72 20 68 74 74 70 73 20 34 34 33 20 5b 6c  ter https 443 [l
0220: 69 73 74 20 3a 3a 74 6c 73 3a 3a 73 6f 63 6b 65  ist ::tls::socke
0230: 74 20 2d 63 61 66 69 6c 65 20 24 3a 3a 63 61 66  t -cafile $::caf
0240: 69 6c 65 5d 0a 70 72 6f 63 20 67 65 74 5f 75 72  ile].proc get_ur
0250: 6c 20 7b 75 72 6c 7d 20 7b 0a 20 20 20 20 73 65  l {url} {.    se
0260: 74 20 74 6f 6b 65 6e 20 5b 3a 3a 68 74 74 70 3a  t token [::http:
0270: 3a 67 65 74 75 72 6c 20 24 75 72 6c 5d 0a 20 20  :geturl $url].  
0280: 20 20 73 65 74 20 62 6f 64 79 20 5b 3a 3a 68 74    set body [::ht
0290: 74 70 3a 3a 64 61 74 61 20 24 74 6f 6b 65 6e 5d  tp::data $token]
02a0: 0a 20 20 20 20 3a 3a 68 74 74 70 3a 3a 63 6c 65  .    ::http::cle
02b0: 61 6e 75 70 20 24 74 6f 6b 65 6e 0a 20 20 20 20  anup $token.    
02c0: 72 65 74 75 72 6e 20 24 62 6f 64 79 0a 7d 0a 0a  return $body.}..
02d0: 70 72 6f 63 20 67 65 74 5f 64 61 74 61 20 7b 75  proc get_data {u
02e0: 72 6c 7d 20 7b 0a 20 20 20 20 73 65 74 20 74 6f  rl} {.    set to
02f0: 6b 65 6e 20 5b 3a 3a 68 74 74 70 3a 3a 67 65 74  ken [::http::get
0300: 75 72 6c 20 24 75 72 6c 5d 0a 20 20 20 20 73 65  url $url].    se
0310: 74 20 62 6f 64 79 20 5b 3a 3a 68 74 74 70 3a 3a  t body [::http::
0320: 64 61 74 61 20 24 74 6f 6b 65 6e 5d 0a 20 20 20  data $token].   
0330: 20 3a 3a 68 74 74 70 3a 3a 63 6c 65 61 6e 75 70   ::http::cleanup
0340: 20 24 74 6f 6b 65 6e 0a 20 20 20 20 73 65 74 20   $token.    set 
0350: 70 61 74 74 65 72 6e 20 7b 3c 62 6f 64 79 2e 2a  pattern {<body.*
0360: 3f 3e 28 2e 2a 3f 29 3c 2f 62 6f 64 79 3e 7d 0a  ?>(.*?)</body>}.
0370: 20 20 20 20 73 65 74 20 64 61 74 61 20 22 22 0a      set data "".
0380: 20 20 20 20 72 65 67 65 78 70 20 2d 6e 6f 63 61      regexp -noca
0390: 73 65 20 24 70 61 74 74 65 72 6e 20 24 62 6f 64  se $pattern $bod
03a0: 79 20 6d 61 74 63 68 20 64 61 74 61 0a 20 20 20  y match data.   
03b0: 20 72 65 74 75 72 6e 20 24 64 61 74 61 0a 7d 0a   return $data.}.
03c0: 0a 0a 23 20 62 72 6f 77 73 65 72 6c 65 61 6b 73  ..# browserleaks
03d0: 2e 63 6f 6d 20 54 65 73 74 73 0a 0a 0a 74 65 73  .com Tests...tes
03e0: 74 20 42 72 6f 77 73 65 72 4c 65 61 6b 73 2d 31  t BrowserLeaks-1
03f0: 2e 31 20 7b 54 4c 53 20 31 2e 33 7d 20 2d 63 6f  .1 {TLS 1.3} -co
0400: 6e 73 74 72 61 69 6e 74 73 20 7b 4f 70 65 6e 53  nstraints {OpenS
0410: 53 4c 33 2e 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  SL3.2} -body {..
0420: 67 65 74 5f 75 72 6c 20 68 74 74 70 73 3a 2f 2f  get_url https://
0430: 74 6c 73 31 33 2e 62 72 6f 77 73 65 72 6c 65 61  tls13.browserlea
0440: 6b 73 2e 63 6f 6d 0a 20 20 20 20 7d 20 2d 72 65  ks.com.    } -re
0450: 73 75 6c 74 20 7b 54 4c 53 20 31 2e 33 7d 0a 0a  sult {TLS 1.3}..
0460: 74 65 73 74 20 42 72 6f 77 73 65 72 4c 65 61 6b  test BrowserLeak
0470: 73 2d 31 2e 32 20 7b 54 4c 53 20 31 2e 32 7d 20  s-1.2 {TLS 1.2} 
0480: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 4f 70  -constraints {Op
0490: 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 6f 64 79 20  enSSL3.2} -body 
04a0: 7b 0a 09 67 65 74 5f 75 72 6c 20 68 74 74 70 73  {..get_url https
04b0: 3a 2f 2f 74 6c 73 31 32 2e 62 72 6f 77 73 65 72  ://tls12.browser
04c0: 6c 65 61 6b 73 2e 63 6f 6d 0a 20 20 20 20 7d 20  leaks.com.    } 
04d0: 2d 72 65 73 75 6c 74 20 7b 54 4c 53 20 31 2e 32  -result {TLS 1.2
04e0: 7d 0a 0a 74 65 73 74 20 42 72 6f 77 73 65 72 4c  }..test BrowserL
04f0: 65 61 6b 73 2d 31 2e 33 20 7b 54 4c 53 20 31 2e  eaks-1.3 {TLS 1.
0500: 31 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  1} -constraints 
0510: 7b 4f 70 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 6f  {OpenSSL3.2} -bo
0520: 64 79 20 7b 0a 09 67 65 74 5f 75 72 6c 20 68 74  dy {..get_url ht
0530: 74 70 73 3a 2f 2f 74 6c 73 31 31 2e 62 72 6f 77  tps://tls11.brow
0540: 73 65 72 6c 65 61 6b 73 2e 63 6f 6d 0a 20 20 20  serleaks.com.   
0550: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 61 69 6c   } -result {fail
0560: 65 64 20 74 6f 20 75 73 65 20 73 6f 63 6b 65 74  ed to use socket
0570: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
0580: 31 7d 0a 0a 74 65 73 74 20 42 72 6f 77 73 65 72  1}..test Browser
0590: 4c 65 61 6b 73 2d 31 2e 34 20 7b 54 4c 53 20 31  Leaks-1.4 {TLS 1
05a0: 2e 30 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73  .0} -constraints
05b0: 20 7b 4f 70 65 6e 53 53 4c 33 2e 32 7d 20 2d 62   {OpenSSL3.2} -b
05c0: 6f 64 79 20 7b 0a 09 67 65 74 5f 75 72 6c 20 68  ody {..get_url h
05d0: 74 74 70 73 3a 2f 2f 74 6c 73 31 30 2e 62 72 6f  ttps://tls10.bro
05e0: 77 73 65 72 6c 65 61 6b 73 2e 63 6f 6d 0a 20 20  wserleaks.com.  
05f0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 61 69    } -result {fai
0600: 6c 65 64 20 74 6f 20 75 73 65 20 73 6f 63 6b 65  led to use socke
0610: 74 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  t} -returnCodes 
0620: 7b 31 7d 0a 0a 74 65 73 74 20 42 72 6f 77 73 65  {1}..test Browse
0630: 72 4c 65 61 6b 73 2d 31 2e 35 20 7b 4a 41 34 20  rLeaks-1.5 {JA4 
0640: 52 61 77 20 46 69 6e 67 65 72 70 72 69 6e 74 7d  Raw Fingerprint}
0650: 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 4f   -constraints {O
0660: 70 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 6f 64 79  penSSL3.2} -body
0670: 20 7b 0a 09 67 65 74 5f 64 61 74 61 20 68 74 74   {..get_data htt
0680: 70 73 3a 2f 2f 74 6c 73 2e 62 72 6f 77 73 65 72  ps://tls.browser
0690: 6c 65 61 6b 73 2e 63 6f 6d 2f 69 66 72 61 6d 65  leaks.com/iframe
06a0: 2f 6a 61 34 0a 20 20 20 20 7d 20 2d 6d 61 74 63  /ja4.    } -matc
06b0: 68 20 7b 67 6c 6f 62 7d 20 2d 72 65 73 75 6c 74  h {glob} -result
06c0: 20 7b 74 2a 7d 0a 0a 74 65 73 74 20 42 72 6f 77   {t*}..test Brow
06d0: 73 65 72 4c 65 61 6b 73 2d 31 2e 36 20 7b 4a 41  serLeaks-1.6 {JA
06e0: 34 20 52 61 77 20 46 69 6e 67 65 72 70 72 69 6e  4 Raw Fingerprin
06f0: 74 2c 20 4f 72 69 67 69 6e 61 6c 20 4f 72 64 65  t, Original Orde
0700: 72 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  r} -constraints 
0710: 7b 4f 70 65 6e 53 53 4c 33 2e 32 7d 20 2d 62 6f  {OpenSSL3.2} -bo
0720: 64 79 20 7b 0a 09 67 65 74 5f 64 61 74 61 20 68  dy {..get_data h
0730: 74 74 70 73 3a 2f 2f 74 6c 73 2e 62 72 6f 77 73  ttps://tls.brows
0740: 65 72 6c 65 61 6b 73 2e 63 6f 6d 2f 69 66 72 61  erleaks.com/ifra
0750: 6d 65 2f 6a 61 34 5f 6f 0a 20 20 20 20 7d 20 2d  me/ja4_o.    } -
0760: 6d 61 74 63 68 20 7b 67 6c 6f 62 7d 20 2d 72 65  match {glob} -re
0770: 73 75 6c 74 20 7b 74 2a 7d 0a 0a 74 65 73 74 20  sult {t*}..test 
0780: 42 72 6f 77 73 65 72 4c 65 61 6b 73 2d 31 2e 37  BrowserLeaks-1.7
0790: 20 7b 4a 41 33 20 52 61 77 20 46 69 6e 67 65 72   {JA3 Raw Finger
07a0: 70 72 69 6e 74 7d 20 2d 63 6f 6e 73 74 72 61 69  print} -constrai
07b0: 6e 74 73 20 7b 4f 70 65 6e 53 53 4c 33 2e 32 7d  nts {OpenSSL3.2}
07c0: 20 2d 62 6f 64 79 20 7b 0a 09 67 65 74 5f 64 61   -body {..get_da
07d0: 74 61 20 68 74 74 70 73 3a 2f 2f 74 6c 73 2e 62  ta https://tls.b
07e0: 72 6f 77 73 65 72 6c 65 61 6b 73 2e 63 6f 6d 2f  rowserleaks.com/
07f0: 69 66 72 61 6d 65 2f 6a 61 33 0a 20 20 20 20 7d  iframe/ja3.    }
0800: 20 2d 6d 61 74 63 68 20 7b 67 6c 6f 62 7d 20 2d   -match {glob} -
0810: 72 65 73 75 6c 74 20 7b 2a 7d 0a 0a 74 65 73 74  result {*}..test
0820: 20 42 72 6f 77 73 65 72 4c 65 61 6b 73 2d 31 2e   BrowserLeaks-1.
0830: 38 20 7b 4a 41 33 20 52 61 77 20 46 69 6e 67 65  8 {JA3 Raw Finge
0840: 72 70 72 69 6e 74 2c 20 4f 72 69 67 69 6e 61 6c  rprint, Original
0850: 20 4f 72 64 65 72 7d 20 2d 63 6f 6e 73 74 72 61   Order} -constra
0860: 69 6e 74 73 20 7b 4f 70 65 6e 53 53 4c 33 2e 32  ints {OpenSSL3.2
0870: 7d 20 2d 62 6f 64 79 20 7b 0a 09 67 65 74 5f 64  } -body {..get_d
0880: 61 74 61 20 68 74 74 70 73 3a 2f 2f 74 6c 73 2e  ata https://tls.
0890: 62 72 6f 77 73 65 72 6c 65 61 6b 73 2e 63 6f 6d  browserleaks.com
08a0: 2f 69 66 72 61 6d 65 2f 6a 61 33 5f 6e 0a 20 20  /iframe/ja3_n.  
08b0: 20 20 7d 20 2d 6d 61 74 63 68 20 7b 67 6c 6f 62    } -match {glob
08c0: 7d 20 2d 72 65 73 75 6c 74 20 7b 2a 7d 0a 0a 74  } -result {*}..t
08d0: 65 73 74 20 42 72 6f 77 73 65 72 4c 65 61 6b 73  est BrowserLeaks
08e0: 2d 31 2e 39 20 7b 45 6e 63 72 79 70 74 65 64 20  -1.9 {Encrypted 
08f0: 43 6c 69 65 6e 74 20 48 65 6c 6c 6f 7d 20 2d 63  Client Hello} -c
0900: 6f 6e 73 74 72 61 69 6e 74 73 20 7b 4f 70 65 6e  onstraints {Open
0910: 53 53 4c 33 2e 32 7d 20 2d 62 6f 64 79 20 7b 0a  SSL3.2} -body {.
0920: 09 67 65 74 5f 64 61 74 61 20 68 74 74 70 73 3a  .get_data https:
0930: 2f 2f 74 6c 73 2e 62 72 6f 77 73 65 72 6c 65 61  //tls.browserlea
0940: 6b 73 2e 63 6f 6d 2f 69 66 72 61 6d 65 2f 65 63  ks.com/iframe/ec
0950: 68 0a 20 20 20 20 7d 20 2d 6d 61 74 63 68 20 7b  h.    } -match {
0960: 67 6c 6f 62 7d 20 2d 72 65 73 75 6c 74 20 7b 2a  glob} -result {*
0970: 46 61 6c 73 65 2a 7d 0a 0a 23 20 43 6c 65 61 6e  False*}..# Clean
0980: 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 6c  up.::tcltest::cl
0990: 65 61 6e 75 70 54 65 73 74 73 0a 72 65 74 75 72  eanupTests.retur
09a0: 6e 0a                                            n.