# Author: Hubert Kario, (c) 2017 # Released under Gnu GPL v2.0, see LICENSE file for details """Verify that different iOS clients can connect to the server under test.""" from __future__ import print_function import traceback import sys import getopt import re from itertools import chain from random import sample from tlsfuzzer.runner import Runner from tlsfuzzer.messages import Connect, ClientHelloGenerator, \ ClientKeyExchangeGenerator, ChangeCipherSpecGenerator, \ FinishedGenerator, ApplicationDataGenerator, AlertGenerator from tlsfuzzer.expect import ExpectServerHello, ExpectCertificate, \ ExpectServerHelloDone, ExpectChangeCipherSpec, ExpectFinished, \ ExpectAlert, ExpectApplicationData, ExpectClose, \ ExpectServerKeyExchange from tlslite.extensions import SNIExtension, ECPointFormatsExtension, \ SupportedGroupsExtension, SignatureAlgorithmsExtension, NPNExtension, \ TLSExtension, ClientKeyShareExtension, KeyShareEntry, \ SupportedVersionsExtension, SignatureAlgorithmsCertExtension from tlsfuzzer.utils.ordered_dict import OrderedDict from tlslite.constants import CipherSuite, AlertLevel, AlertDescription, \ ExtensionType, GroupName, ECPointFormat, HashAlgorithm, \ SignatureAlgorithm from tlsfuzzer.helpers import RSA_SIG_ALL from tlsfuzzer.utils.lists import natural_sort_keys version = 5 def help_msg(): print("Usage: [-h hostname] [-p port] [[probe-name] ...]") print(" -h hostname name of the host to run the test against") print(" localhost by default") print(" -p port port number to use for connection, 4433 by default") print(" probe-name if present, will run only the probes with given") print(" names and not all of them, e.g \"sanity\"") print(" -e probe-name exclude the probe from the list of the ones run") print(" may be specified multiple times") print(" -x probe-name expect the probe to fail. When such probe passes despite being marked like this") print(" it will be reported in the test summary and the whole script will fail.") print(" May be specified multiple times.") print(" -X message expect the `message` substring in exception raised during") print(" execution of preceding expected failure probe") print(" usage: [-x probe-name] [-X exception], order is compulsory!") print(" -n num run 'num' or all(if 0) tests instead of default(50)") print(" (excluding \"sanity\" tests)") print(" -d Use (EC)DHE instead of RSA for key exchange (for") print(" sanity probes only)") print(" --help this message") def main(): host = "localhost" port = 4433 num_limit = 50 run_exclude = set() expected_failures = {} last_exp_tmp = str() dhe = False argv = sys.argv[1:] opts, args = getopt.getopt(argv, "h:p:e:x:X:n:d", ["help"]) for opt, arg in opts: if opt == '-h': host = arg elif opt == '-p': port = int(arg) elif opt == '-e': run_exclude.add(arg) elif opt == '-x': expected_failures[arg] = None last_exp_tmp = str(arg) elif opt == '-X': if not last_exp_tmp: raise ValueError("-x has to be specified before -X") expected_failures[last_exp_tmp] = str(arg) elif opt == '-n': num_limit = int(arg) elif opt == '-d': dhe = True elif opt == '--help': help_msg() sys.exit(0) else: raise ValueError("Unknown option: {0}".format(opt)) if args: run_only = set(args) else: run_only = None conversations = {} conversation = Connect(host, port) node = conversation ext = {} if dhe: groups = [GroupName.secp256r1, GroupName.ffdhe2048] ext[ExtensionType.supported_groups] = SupportedGroupsExtension()\ .create(groups) ext[ExtensionType.signature_algorithms] = \ SignatureAlgorithmsExtension().create(RSA_SIG_ALL) ext[ExtensionType.signature_algorithms_cert] = \ SignatureAlgorithmsCertExtension().create(RSA_SIG_ALL) ciphers = [CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_DHE_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_EMPTY_RENEGOTIATION_INFO_SCSV] else: ext = None ciphers = [CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_EMPTY_RENEGOTIATION_INFO_SCSV] node = node.add_child(ClientHelloGenerator(ciphers, extensions=ext)) node = node.add_child(ExpectServerHello()) node = node.add_child(ExpectCertificate()) if dhe: node = node.add_child(ExpectServerKeyExchange()) node = node.add_child(ExpectServerHelloDone()) node = node.add_child(ClientKeyExchangeGenerator()) node = node.add_child(ChangeCipherSpecGenerator()) node = node.add_child(FinishedGenerator()) node = node.add_child(ExpectChangeCipherSpec()) node = node.add_child(ExpectFinished()) node = node.add_child(ApplicationDataGenerator( bytearray(b"GET / HTTP/1.0\n\n"))) node = node.add_child(ExpectApplicationData()) node = node.add_child(AlertGenerator(AlertLevel.warning, AlertDescription.close_notify)) node = node.add_child(ExpectAlert()) node.next_sibling = ExpectClose() conversations["sanity"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [4, 5, 47, 51, 50, 10, 22, 19, 9, 21, 18, 3, 8, 20, 17, 255] node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0])) node = node.add_child(ExpectServerHello()) conversations["56: Android 2.3.7 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49172, 49162, 57, 56, 49167, 49157, 53, 49170, 49160, 22, 19, 49165, 49155, 10, 49171, 49161, 51, 50, 49166, 49156, 47, 49169, 49159, 49164, 49154, 5, 4, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\t\x00\n\x00\x0b\x00\x0c\x00\r\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[1, 0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["58: Android 4.0.4 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49172, 49162, 49186, 49185, 57, 56, 49167, 49157, 53, 49170, 49160, 49180, 49179, 22, 19, 49165, 49155, 10, 49171, 49161, 49183, 49182, 51, 50, 49166, 49156, 47, 49169, 49159, 49164, 49154, 5, 4, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[1, 0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["59: Android 4.1.1 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49172, 49162, 49186, 49185, 57, 56, 49167, 49157, 53, 49170, 49160, 49180, 49179, 22, 19, 49165, 49155, 10, 49171, 49161, 49183, 49182, 51, 50, 49166, 49156, 47, 49169, 49159, 49164, 49154, 5, 4, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["60: Android 4.2.2 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49172, 49162, 49186, 49185, 57, 56, 49167, 49157, 53, 49170, 49160, 49180, 49179, 22, 19, 49165, 49155, 10, 49171, 49161, 49183, 49182, 51, 50, 49166, 49156, 47, 49169, 49159, 49164, 49154, 5, 4, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["61: Android 4.3 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49172, 49162, 163, 159, 107, 106, 57, 56, 157, 61, 53, 49170, 49160, 22, 19, 10, 49199, 49195, 49191, 49187, 49171, 49161, 162, 158, 103, 64, 51, 50, 156, 60, 47, 49169, 49159, 5, 4, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x19\x00\x18\x00\x17')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00 \x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03\x01\x01')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["62: Android 4.4.2 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [52244, 52243, 52245, 49172, 49162, 57, 56, 53, 49170, 49160, 22, 19, 10, 49199, 49195, 49171, 49161, 162, 158, 51, 50, 156, 47, 49169, 49159, 5, 4, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00 \x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03\x01\x01')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x19\x00\x18\x00\x17')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["88: Android 5.0.0 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [52244, 52243, 52245, 49195, 49199, 158, 49162, 49172, 57, 49161, 49171, 51, 156, 53, 47, 10, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x12\x08http/1.1\x08spdy/3.1')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["129: Android 6.0 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [52393, 52392, 52244, 52243, 49195, 49199, 49196, 49200, 49161, 49171, 49162, 49172, 156, 157, 47, 53, 10] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x1d\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["139: Android 7.0 on unknown"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [255, 49196, 49195, 49188, 49162, 49187, 49161, 49200, 49199, 49192, 49191, 49171] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0c\x05\x01\x04\x01\x02\x01\x05\x03\x04\x03\x02\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00.\x02h2\x05h2-16\x05h2-15\x05h2-14\x08spdy/3.1\x06spdy/3\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["112: Apple ATS 9 on iOS 9"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 4, 5, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["94: Baidu Jan 2015 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [47, 53, 5, 10, 49171, 49172, 49161, 49162, 50, 56, 19, 4] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["41: BingBot Dec 2013 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [57, 56, 53, 22, 19, 10, 51, 50, 47, 7, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[1, 0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["47: BingPreview Dec 2013 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49192, 49188, 49172, 49162, 49186, 49185, 163, 159, 107, 106, 57, 56, 136, 135, 49202, 49198, 49194, 49190, 49167, 49157, 157, 61, 53, 132, 49170, 49160, 49180, 49179, 22, 19, 49165, 49155, 10, 49199, 49195, 49191, 49187, 49171, 49161, 49183, 49182, 162, 158, 103, 64, 51, 50, 154, 153, 69, 68, 49201, 49197, 49193, 49189, 49166, 49156, 156, 60, 47, 150, 65, 7, 49169, 49159, 49164, 49154, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00 \x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03\x01\x01')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[1, 0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["91: BingPreview Jan 2015 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [57, 56, 53, 22, 19, 10, 51, 50, 47, 7, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[1, 0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["74: BingPreview Jun 2014 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 102, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 2), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["10: Chrome 27 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 102, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 2), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["11: Chrome 28 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49172, 57, 107, 53, 61, 49159, 49161, 49187, 49169, 49171, 49191, 51, 103, 50, 5, 4, 47, 60, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 2), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["12: Chrome 29 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49172, 57, 107, 53, 61, 49159, 49161, 49187, 49169, 49171, 49191, 51, 103, 50, 5, 4, 47, 60, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00 \x06spdy/2\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["38: Chrome 30 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 156, 49162, 49172, 57, 53, 49159, 49161, 49169, 49171, 51, 50, 5, 4, 47, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00 \x06spdy/2\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["46: Chrome 31 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 156, 49162, 49172, 57, 53, 49159, 49161, 49169, 49171, 51, 50, 5, 4, 47, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00 \x06spdy/2\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["49: Chrome 32 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [52244, 52243, 49195, 49199, 158, 156, 49162, 49172, 57, 53, 49159, 49161, 49169, 49171, 51, 50, 5, 4, 47, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x19\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["54: Chrome 33 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 52244, 52243, 49162, 49161, 49171, 49172, 49159, 49169, 51, 50, 57, 156, 47, 53, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x19\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["66: Chrome 34 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [52244, 52243, 49195, 49199, 158, 49162, 49161, 49171, 49172, 49159, 49169, 51, 50, 57, 156, 47, 53, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x19\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["69: Chrome 35 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [52244, 52243, 49195, 49199, 158, 49162, 49161, 49171, 49172, 49159, 49169, 51, 50, 57, 156, 47, 53, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x19\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["76: Chrome 36 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 52244, 52243, 49162, 49161, 49171, 49172, 49159, 49169, 51, 50, 57, 156, 47, 53, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x19\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["80: Chrome 37 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49199, 49195, 158, 52244, 52243, 52245, 49172, 49162, 57, 49171, 49161, 51, 49169, 49159, 156, 53, 47, 5, 4, 10, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x19\x08http/1.1\x06spdy/3\x08spdy/3.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["82: Chrome 39 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49199, 49195, 158, 52244, 52243, 52245, 49172, 49162, 57, 49171, 49161, 51, 49169, 49159, 156, 53, 47, 5, 4, 10, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x12\x08http/1.1\x08spdy/3.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["89: Chrome 40 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 52244, 52243, 52245, 49162, 49172, 57, 49161, 49171, 51, 49159, 49169, 156, 53, 47, 5, 4, 10, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x18\x08http/1.1\x08spdy/3.1\x05h2-14')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["105: Chrome 42 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 52244, 52243, 52245, 49162, 49172, 57, 49161, 49171, 51, 156, 53, 47, 10, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x1b\x08http/1.1\x08spdy/3.1\x05h2-14\x02h2')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["108: Chrome 43 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 52244, 52243, 52245, 49162, 49172, 57, 49161, 49171, 51, 156, 53, 47, 10, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x1b\x08http/1.1\x08spdy/3.1\x05h2-14\x02h2')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["115: Chrome 45 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 52244, 52243, 49162, 49172, 57, 49161, 49171, 51, 156, 53, 47, 10] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x08http/1.1\x08spdy/3.1\x02h2')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["117: Chrome 47 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 158, 52244, 52243, 49162, 49172, 57, 49161, 49171, 51, 156, 53, 47, 10] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["122: Chrome 48 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 52393, 52392, 52244, 52243, 49162, 49172, 49161, 49171, 156, 53, 47, 10] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["124: Chrome 49 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49199, 52392, 52243, 49172, 49171, 156, 53, 47, 10] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x03\x01\x03\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["136: Chrome 49 on XP SP3"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 52393, 52392, 52244, 52243, 49162, 49172, 49161, 49171, 156, 53, 47, 10] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x1d\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["125: Chrome 50 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49196, 49200, 52393, 52392, 52244, 52243, 49161, 49171, 49162, 49172, 156, 157, 47, 53, 10] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x02\x01\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x1d\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["126: Chrome 51 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [14906, 4865, 4866, 4867, 49195, 49199, 49196, 49200, 52393, 52392, 49171, 49172, 156, 157, 47, 53, 10] ext = OrderedDict() ext[14906] = TLSExtension(extType=14906).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x02\x01')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[40] = TLSExtension(extType=40).create(bytearray(b'\x00)\n\n\x00\x01\x00\x00\x1d\x00 \xbe\xb5^\xc1\x7f\xeeSqV\tX\xf7\x8d\xb4\x9dM\xc37#\xe4* \x0b$dkmw\xa7\xa9Hg')) ext[45] = TLSExtension(extType=45).create(bytearray(b'\x01\x01')) ext[43] = SupportedVersionsExtension().create([(170, 170), (127, 18), (3, 3), (3, 2), (3, 1)]) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x08\n\n\x00\x1d\x00\x17\x00\x18')) ext[56026] = TLSExtension(extType=56026).create(bytearray(b'\x00')) ext[21] = TLSExtension(extType=21).create(bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["141: Chrome 57 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [43690, 4865, 4866, 4867, 49195, 49199, 49196, 49200, 52393, 52392, 49171, 49172, 156, 157, 47, 53, 10] ext = OrderedDict() ext[47802] = TLSExtension(extType=47802).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x02\x01')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[30032] = TLSExtension(extType=30032).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[51] = ClientKeyShareExtension().create([KeyShareEntry().create(64250, bytearray(b'\x00'), None), KeyShareEntry().create(29, bytearray(b"\xbf\xd1V\x04p-\xb7\xf4\xb6\x93\xd3F\xe3--=\xfc\x8d\xff$81\x0f\x00.\xefy\xd1\xd8\x8a\xc9\'"), bytearray(b'\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05'))]) ext[45] = TLSExtension(extType=45).create(bytearray(b'\x01\x01')) ext[43] = SupportedVersionsExtension().create([(122, 122), (127, 23), (3, 3), (3, 2), (3, 1)]) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x08\xfa\xfa\x00\x1d\x00\x17\x00\x18')) ext[23130] = TLSExtension(extType=23130).create(bytearray(b'\x00')) ext[21] = TLSExtension(extType=21).create(bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["149: Chrome 65 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [51914, 4865, 4866, 4867, 49195, 49199, 49196, 49200, 52393, 52392, 49171, 49172, 156, 157, 47, 53, 10] ext = OrderedDict() ext[60138] = TLSExtension(extType=60138).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x02\x01')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[51] = ClientKeyShareExtension().create([KeyShareEntry().create(64250, bytearray(b'\x00'), None), KeyShareEntry().create(29, bytearray(b'\xa1$\n\xaf!\x0btR\xe6\xed\x11\xb1j \xa6\x8c*O\xeb\\\x87\x06\x86\xa3.\xeb\x8f\xf1t G\x0c'), bytearray(b'\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05'))]) ext[45] = TLSExtension(extType=45).create(bytearray(b'\x01\x01')) ext[43] = SupportedVersionsExtension().create([(250, 250), (127, 28), (3, 3), (3, 2), (3, 1)]) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x08\xfa\xfa\x00\x1d\x00\x17\x00\x18')) ext[39578] = TLSExtension(extType=39578).create(bytearray(b'\x00')) ext[21] = TLSExtension(extType=21).create(bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["152: Chrome 69 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49200, 49199, 49192, 49191, 49172, 49171, 159, 158, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02\x06\x01\x06\x03')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["110: Edge 12 on Win 10"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49196, 49195, 49200, 49199, 159, 158, 49188, 49187, 49192, 49191, 49162, 49161, 49172, 49171, 157, 156, 61, 60, 53, 47, 10, 106, 64, 56, 50, 19] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02\x06\x01\x06\x03')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[21760] = TLSExtension(extType=21760).create(bytearray(b'\x00\x01\x00\x02\x00\x02')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["119: Edge 13 on Win 10"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49196, 49195, 49200, 49199, 159, 158, 49188, 49187, 49192, 49191, 49162, 49161, 49172, 49171, 57, 51, 157, 156, 61, 60, 53, 47, 10, 106, 64, 56, 50, 19] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02\x06\x01\x06\x03')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[21760] = TLSExtension(extType=21760).create(bytearray(b'\x00\x01\x00\x02\x00\x02')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["130: Edge 13 on Win 10"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49196, 49195, 49200, 49199, 159, 158, 49188, 49187, 49192, 49191, 49162, 49161, 49172, 49171, 157, 156, 61, 60, 53, 47, 10, 106, 64, 56, 50, 19] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02\x06\x01\x06\x03')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[21760] = TLSExtension(extType=21760).create(bytearray(b'\x00\x01\x00\x02\x00\x02')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["120: Edge 13 on Win Phone 10"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49196, 49195, 49200, 49199, 49188, 49187, 49192, 49191, 49162, 49161, 49172, 49171, 157, 156, 61, 60, 53, 47, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x1d\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02\x06\x01\x06\x03')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[24] = TLSExtension(extType=24).create(bytearray(b'\x00\n\x03\x02\x01\x00')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["144: Edge 15 on Win 10"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["14: Firefox 10.0.12 ESR on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["15: Firefox 17.0.7 ESR on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 136, 135, 57, 56, 132, 53, 69, 68, 51, 50, 150, 65, 5, 4, 47, 22, 19, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\t\x00\n\x00\x0b\x00\x0c\x00\r\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["16: Firefox 21 on Fedora 19"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["13: Firefox 21 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["17: Firefox 22 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["37: Firefox 24 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49161, 49159, 49171, 49169, 69, 68, 51, 50, 49166, 49164, 49156, 49154, 150, 65, 47, 5, 4, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["48: Firefox 24.2.0 ESR on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49161, 49159, 49171, 49169, 69, 68, 51, 50, 49166, 49164, 49156, 49154, 150, 65, 47, 5, 4, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["50: Firefox 26 on Win 8"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 49170, 49159, 49169, 51, 50, 69, 57, 56, 136, 22, 47, 65, 53, 132, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["51: Firefox 27 on Win 8"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 49170, 49159, 49169, 51, 50, 69, 57, 56, 136, 22, 47, 65, 53, 132, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["67: Firefox 29 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 49170, 49159, 49169, 51, 50, 69, 57, 56, 136, 22, 47, 65, 53, 132, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["70: Firefox 30 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 49170, 49159, 49169, 51, 50, 69, 57, 56, 136, 22, 47, 65, 53, 132, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["77: Firefox 31 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 49170, 49159, 49169, 51, 50, 69, 57, 56, 136, 22, 47, 65, 53, 132, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["84: Firefox 31.3.0 ESR on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 49170, 49159, 49169, 51, 50, 69, 57, 56, 136, 22, 47, 65, 53, 132, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["79: Firefox 32 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 49159, 49169, 51, 50, 57, 47, 53, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x19\x08spdy/3.1\x06spdy/3\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["83: Firefox 34 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 49159, 49169, 51, 50, 57, 47, 53, 10, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x1f\x05h2-14\x08spdy/3.1\x06spdy/3\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["90: Firefox 35 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b"\x00\'\x05h2-16\x05h2-15\x05h2-14\x02h2\x08spdy/3.1\x08http/1.1")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["103: Firefox 37 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b"\x00\'\x05h2-16\x05h2-15\x05h2-14\x02h2\x08spdy/3.1\x08http/1.1")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["109: Firefox 39 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["116: Firefox 41 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["118: Firefox 42 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["123: Firefox 44 on OS X"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["127: Firefox 45 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["128: Firefox 46 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 52393, 52392, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["132: Firefox 47 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 52393, 52392, 49196, 49200, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x16\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x05\x02\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["135: Firefox 49 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 52393, 52392, 49196, 49200, 49162, 49161, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x15\x02h2\x08spdy/3.1\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x16\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x05\x02\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["137: Firefox 49 on XP SP3"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [4865, 4867, 4866, 49195, 49199, 52393, 52392, 49196, 49200, 49171, 49172, 51, 57, 47, 53, 10] ext = OrderedDict() ext[21] = TLSExtension(extType=21).create(bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x0c\x00\x1d\x00\x17\x00\x18\x00\x19\x01\x00\x01\x01')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[40] = TLSExtension(extType=40).create(bytearray(b"\x00i\x00\x1d\x00 \xab i\xb8\xbe\x8c\xdd\x01\x8b\xca\x89\x86\x9fb\xbf\xbc\xc0\xe2@\xb2\x8c\xcc(\xf9\xc3J\x0cl=\'\xb3C\x00\x17\x00A\x04\x1a\xbf\x1bt\xec\xef\xdc\xb4f\xe1\x97\xa7\xbeG\xfb\xbd\xbfLm\x10\xe8\xb9\xb7=\xf2\x12v\xa2\xdf\xc4\x03\xdbm\xb3\x07\xb3\x94FS\x00\xde!k*;\xa4}\x87\xce\x88:\xdfe\xea\xe1\xe2\xa0\xad\xb8!\xe0\xa6J\x06")) ext[43] = SupportedVersionsExtension().create([(127, 18), (3, 3), (3, 2), (3, 1)]) ext[65283] = TLSExtension(extType=65283).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x16\x04\x03\x05\x03\x06\x03\x08\x04\x08\x05\x08\x06\x04\x01\x05\x01\x06\x01\x02\x03\x02\x01')) ext[45] = TLSExtension(extType=45).create(bytearray(b'\x01\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["142: Firefox 53 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [4865, 4867, 4866, 49195, 49199, 52393, 52392, 49196, 49200, 49171, 49172, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x0c\x00\x1d\x00\x17\x00\x18\x00\x19\x01\x00\x01\x01')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[51] = ClientKeyShareExtension().create([KeyShareEntry().create(29, bytearray(b'\x16\xafM\xe5\x96a\xc2\xd9>c\xfb\xc4\x13O\x07\xf5eA^\xc6\xc8k3\xb2\xa2\x05\xe9\xa5\x16\xbe\x1e"'), bytearray(b'\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05')), KeyShareEntry().create(23, bytearray(b'\x04\xf0<\xda,\xf1\x93{\x84\x112#l\x89)j\xcd#\x1b9\x0cHM\x03\x81J\xb5\xcb3v\x0c`\x03jPUn\x1f\x18FaT\x14\x7fA\xd4\xa1J\xce\xa7U+\xaeS:\xa8\xcfrbhf\xfa\xfdN\x0c'), 5)]) ext[43] = SupportedVersionsExtension().create([(127, 23), (3, 3), (3, 2), (3, 1)]) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x16\x04\x03\x05\x03\x06\x03\x08\x04\x08\x05\x08\x06\x04\x01\x05\x01\x06\x01\x02\x03\x02\x01')) ext[45] = TLSExtension(extType=45).create(bytearray(b'\x01\x01')) ext[21] = TLSExtension(extType=21).create(bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["150: Firefox 59 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [4865, 4867, 4866, 49195, 49199, 52393, 52392, 49196, 49200, 49171, 49172, 47, 53, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x0c\x00\x1d\x00\x17\x00\x18\x00\x19\x01\x00\x01\x01')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[51] = ClientKeyShareExtension().create([KeyShareEntry().create(29, bytearray(b'3\xdeW\x93\x89|0\x80\xf1\xcep\xff\xbe\x88/\xbe~\x15t\\W\x89\xa4\x004\xafT\xf2@e\x89\t'), bytearray(b'\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05')), KeyShareEntry().create(23, bytearray(b'\x04\xf9z0\xc4\x17\xdczu\xf7R\x92\x87<2\xbc\xac\xb0(\xdc\x90H\xfc\xde\x11\x91x0a\x1b\xd1|\x83O\xfb\x1d\x14\x8e\xb7\x14h\x81\xcc0\xaf;\xd7"\xea\xf5\x9dQ\xd9\xf1\x93\xe4\xc8\x88W\x9e\x82\x85\xcaF\xe7'), 5)]) ext[43] = SupportedVersionsExtension().create([(127, 28), (3, 3), (3, 2), (3, 1)]) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x16\x04\x03\x05\x03\x06\x03\x08\x04\x08\x05\x08\x06\x04\x01\x05\x01\x06\x01\x02\x03\x02\x01')) ext[45] = TLSExtension(extType=45).create(bytearray(b'\x01\x01')) ext[21] = TLSExtension(extType=21).create(bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["151: Firefox 62 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 49159, 49169, 49161, 49171, 49162, 49172, 156, 5, 4, 47, 10, 53, 51, 50, 22, 19, 57, 56, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x1e\x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["97: Googlebot Feb 2015 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49195, 49199, 52393, 52392, 49196, 49200, 49161, 49171, 49162, 49172, 156, 157, 47, 53, 10] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x02\x01')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x1d\x00\x17\x00\x18')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["145: Googlebot Feb 2018 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49159, 49169, 49161, 49171, 49162, 49172, 5, 4, 47, 10, 53, 51, 50, 22, 19, 57, 56, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["72: Googlebot Jun 2014 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49159, 49169, 49161, 49171, 49162, 49172, 5, 4, 47, 10, 53, 51, 50, 22, 19, 57, 56, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["40: Googlebot Oct 2013 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [47, 53, 5, 10, 49171, 49172, 49161, 49162, 50, 56, 19, 4] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["64: IE 10 on Win Phone 8.0"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49200, 49199, 49192, 49191, 49172, 49171, 159, 158, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02\x06\x01\x06\x03')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["107: IE 11 on Win 10"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49196, 49195, 49200, 49199, 159, 158, 49188, 49187, 49192, 49191, 49162, 49161, 49172, 49171, 57, 51, 157, 156, 61, 60, 53, 47, 10, 106, 64, 56, 50, 19] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02\x06\x01\x06\x03')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0c\x02h2\x08http/1.1')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[21760] = TLSExtension(extType=21760).create(bytearray(b'\x00\x01\x00\x02\x00\x02')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["131: IE 11 on Win 10"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49200, 49199, 49192, 49191, 49172, 49171, 159, 158, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0e\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x0f\x05h2-14\x08http/1.1')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["81: IE 11 on Win 10 Preview"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [60, 47, 61, 53, 5, 10, 49191, 49171, 49172, 49195, 49187, 49196, 49188, 49161, 49162, 64, 50, 106, 56, 19, 4] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0e\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["36: IE 11 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 49191, 49172, 49171, 159, 158, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19, 5, 4] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["95: IE 11 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 49191, 49172, 49171, 159, 158, 157, 156, 49196, 49195, 49188, 49187, 49162, 49161, 61, 60, 53, 47, 106, 64, 56, 50, 10, 19, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x06\x01\x06\x03\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["102: IE 11 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 49191, 49172, 49171, 159, 158, 57, 51, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x06\x01\x06\x03\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["133: IE 11 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 49191, 49172, 49171, 159, 158, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x06\x01\x06\x03\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["143: IE 11 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [60, 47, 61, 53, 10, 49191, 49171, 49172, 49195, 49187, 49196, 49188, 49161, 49162, 64, 50, 106, 56, 19] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0e\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x10\x06spdy/3\x08http/1.1')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["24: IE 11 on Win 8.1"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 159, 158, 157, 156, 49195, 49187, 49191, 49172, 49171, 61, 60, 53, 47, 49196, 49188, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0e\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x10\x06spdy/3\x08http/1.1')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["71: IE 11 on Win 8.1"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 49191, 49172, 49171, 159, 158, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x02\x02')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x10\x06spdy/3\x08http/1.1')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["96: IE 11 on Win 8.1"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 49191, 49172, 49171, 159, 158, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x02\x02')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x10\x06spdy/3\x08http/1.1')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["104: IE 11 on Win 8.1"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 49191, 49172, 49171, 159, 158, 57, 51, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x12\x04\x01\x05\x01\x06\x01\x02\x01\x04\x03\x05\x03\x06\x03\x02\x03\x02\x02')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x10\x06spdy/3\x08http/1.1')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["134: IE 11 on Win 8.1"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [60, 47, 61, 53, 10, 49191, 49171, 49172, 49195, 49187, 49196, 49188, 49161, 49162, 64, 50, 106, 56, 19] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0e\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x10\x06spdy/3\x08http/1.1')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["65: IE 11 on Win Phone 8.1"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49192, 49191, 49172, 49171, 159, 158, 157, 156, 61, 60, 53, 47, 49196, 49195, 49188, 49187, 49162, 49161, 106, 64, 56, 50, 10, 19] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0e\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x02\x02')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00\x10\x06spdy/3\x08http/1.1')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["106: IE 11 on Win Phone 8.1 Update"] = conversation conversation = Connect(host, port, version=(0, 2)) node = conversation ciphers = [4, 5, 10, 65664, 458944, 196736, 9, 393280, 100, 98, 3, 6, 131200, 262272, 19, 18, 99] node = node.add_child(ClientHelloGenerator(ssl2=True, ciphers=ciphers, version=(3, 0), compression=[0])) node = node.add_child(ExpectServerHello()) conversations["18: IE 6 on XP"] = conversation conversation = Connect(host, port, version=(0, 2)) node = conversation ciphers = [4, 5, 10, 65664, 458944, 196736, 9, 393280, 100, 98, 3, 6, 131200, 262272, 19, 18, 99, 255] node = node.add_child(ClientHelloGenerator(ssl2=True, ciphers=ciphers, version=(3, 0), compression=[0])) node = node.add_child(ExpectServerHello()) conversations["100: IE 6 on XP"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [47, 53, 5, 10, 49161, 49162, 49171, 49172, 50, 56, 19, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["19: IE 7 on Vista"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [47, 53, 5, 10, 49171, 49172, 49161, 49162, 50, 56, 19, 4] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["21: IE 8 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [4, 5, 10, 9, 100, 98, 3, 6, 19, 18, 99] node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0])) node = node.add_child(ExpectServerHello()) conversations["20: IE 8 on XP"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [4, 5, 10, 9, 100, 98, 3, 6, 19, 18, 99] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["101: IE 8 on XP"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [47, 53, 5, 10, 49171, 49172, 49161, 49162, 50, 56, 19, 4] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["23: IE 8-10 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49172, 49171, 53, 47, 49162, 49161, 56, 50, 10, 19, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["113: IE 8-10 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [47, 53, 5, 10, 49171, 49172, 49161, 49162, 50, 56, 19, 4] ext = OrderedDict() ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x17\x00\x18')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["22: IE 9 on Win 7"] = conversation conversation = Connect(host, port, version=(0, 2)) node = conversation ciphers = [4, 65664, 5, 47, 51, 50, 10, 458944, 22, 19, 9, 393280, 21, 18, 3, 131200, 8, 20, 17, 255] node = node.add_child(ClientHelloGenerator(ssl2=True, ciphers=ciphers, version=(3, 1), compression=[0])) node = node.add_child(ExpectServerHello()) conversations["25: Java 6u45 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49161, 49171, 47, 49156, 49166, 51, 50, 49159, 49169, 5, 49154, 49164, 49160, 49170, 10, 49155, 49165, 22, 19, 4, 255] ext = OrderedDict() ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x17\x00\x01\x00\x03\x00\x13\x00\x15\x00\x06\x00\x07\x00\t\x00\n\x00\x18\x00\x0b\x00\x0c\x00\x19\x00\r\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x02\x00\x12\x00\x04\x00\x05\x00\x14\x00\x08\x00\x16')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["26: Java 7u25 on unknown"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49187, 49191, 60, 49189, 49193, 103, 64, 49161, 49171, 47, 49156, 49166, 51, 50, 49159, 49169, 5, 49154, 49164, 49195, 49199, 156, 49197, 49201, 158, 162, 49160, 49170, 10, 49155, 49165, 22, 19, 4, 255] ext = OrderedDict() ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x17\x00\x01\x00\x03\x00\x13\x00\x15\x00\x06\x00\x07\x00\t\x00\n\x00\x18\x00\x0b\x00\x0c\x00\x19\x00\r\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x02\x00\x12\x00\x04\x00\x05\x00\x14\x00\x08\x00\x16')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x18\x06\x03\x06\x01\x05\x03\x05\x01\x04\x03\x04\x01\x03\x03\x03\x01\x02\x03\x02\x01\x02\x02\x01\x01')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["53: Java 8b132 on unknown"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49187, 49191, 60, 49189, 49193, 103, 64, 49161, 49171, 47, 49156, 49166, 51, 50, 49195, 49199, 156, 49197, 49201, 158, 162, 49160, 49170, 10, 49155, 49165, 22, 19, 255] ext = OrderedDict() ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x17\x00\x01\x00\x03\x00\x13\x00\x15\x00\x06\x00\x07\x00\t\x00\n\x00\x18\x00\x0b\x00\x0c\x00\x19\x00\r\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x02\x00\x12\x00\x04\x00\x05\x00\x14\x00\x08\x00\x16')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x03\x06\x01\x05\x03\x05\x01\x04\x03\x04\x01\x04\x02\x02\x03\x02\x01\x02\x02')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["146: Java 8u111 on unknown"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49188, 49192, 61, 49190, 49194, 107, 106, 49162, 49172, 53, 49157, 49167, 57, 56, 49187, 49191, 60, 49189, 49193, 103, 64, 49161, 49171, 47, 49156, 49166, 51, 50, 49196, 49195, 49200, 157, 49198, 49202, 159, 163, 49199, 156, 49197, 49201, 158, 162, 49160, 49170, 10, 49155, 49165, 22, 19, 255] ext = OrderedDict() ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x14\x00\x17\x00\x18\x00\x19\x00\t\x00\n\x00\x0b\x00\x0c\x00\r\x00\x0e\x00\x16')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x03\x06\x01\x05\x03\x05\x01\x04\x03\x04\x01\x04\x02\x02\x03\x02\x01\x02\x02')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["147: Java 8u161 on unknown"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49187, 49191, 60, 49189, 49193, 103, 64, 49161, 49171, 47, 49156, 49166, 51, 50, 49195, 49199, 156, 49197, 49201, 158, 162, 49160, 49170, 10, 49155, 49165, 22, 19, 49159, 49169, 5, 49154, 49164, 4, 255] ext = OrderedDict() ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x17\x00\x01\x00\x03\x00\x13\x00\x15\x00\x06\x00\x07\x00\t\x00\n\x00\x18\x00\x0b\x00\x0c\x00\x19\x00\r\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x02\x00\x12\x00\x04\x00\x05\x00\x14\x00\x08\x00\x16')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x18\x06\x03\x06\x01\x05\x03\x05\x01\x04\x03\x04\x01\x03\x03\x03\x01\x02\x03\x02\x01\x02\x02\x01\x01')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["86: Java 8u31 on unknown"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [49196, 49195, 49200, 157, 49198, 49202, 159, 163, 49199, 156, 49197, 49201, 158, 162, 49188, 49192, 61, 49190, 49194, 107, 106, 49162, 49172, 53, 49157, 49167, 57, 56, 49187, 49191, 60, 49189, 49193, 103, 64, 49161, 49171, 47, 49156, 49166, 51, 50, 49160, 49170, 10, 49155, 49165, 22, 19, 255] ext = OrderedDict() ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x1e\x00\x17\x00\x18\x00\x19\x00\t\x00\n\x00\x0b\x00\x0c\x00\r\x00\x0e\x00\x16\x01\x00\x01\x01\x01\x02\x01\x03\x01\x04')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x14\x06\x03\x06\x01\x05\x03\x05\x01\x04\x03\x04\x01\x04\x02\x02\x03\x02\x01\x02\x02')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[17] = TLSExtension(extType=17).create(bytearray(b'\x00\x0e\x02\x00\x04\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["148: Java 9.0.4 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [57, 56, 53, 22, 19, 10, 51, 50, 47, 7, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["27: OpenSSL 0.9.8y on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49192, 49188, 49172, 49162, 49186, 49185, 163, 159, 107, 106, 57, 56, 136, 135, 49202, 49198, 49194, 49190, 49167, 49157, 157, 61, 53, 132, 49170, 49160, 49180, 49179, 22, 19, 49165, 49155, 10, 49199, 49195, 49191, 49187, 49171, 49161, 49183, 49182, 162, 158, 103, 64, 51, 50, 154, 153, 69, 68, 49201, 49197, 49193, 49189, 49166, 49156, 156, 60, 47, 150, 65, 7, 49169, 49159, 49164, 49154, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00 \x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03\x01\x01')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["28: OpenSSL 1.0.1h on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49192, 49188, 49172, 49162, 163, 159, 107, 106, 57, 56, 136, 135, 49202, 49198, 49194, 49190, 49167, 49157, 157, 61, 53, 132, 49199, 49195, 49191, 49187, 49171, 49161, 162, 158, 103, 64, 51, 50, 154, 153, 69, 68, 49201, 49197, 49193, 49189, 49166, 49156, 156, 60, 47, 150, 65, 7, 49169, 49159, 49164, 49154, 5, 4, 49170, 49160, 22, 19, 49165, 49155, 10, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x1e\x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["99: OpenSSL 1.0.1l on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49192, 49188, 49172, 49162, 165, 163, 161, 159, 107, 106, 105, 104, 57, 56, 55, 54, 136, 135, 134, 133, 49202, 49198, 49194, 49190, 49167, 49157, 157, 61, 53, 132, 49199, 49195, 49191, 49187, 49171, 49161, 164, 162, 160, 158, 103, 64, 63, 62, 51, 50, 49, 48, 154, 153, 152, 151, 69, 68, 67, 66, 49201, 49197, 49193, 49189, 49166, 49156, 156, 60, 47, 150, 65, 7, 49169, 49159, 49164, 49154, 5, 4, 49170, 49160, 22, 19, 16, 13, 49165, 49155, 10, 21, 18, 15, 12, 9, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x1a\x00\x17\x00\x19\x00\x1c\x00\x1b\x00\x18\x00\x1a\x00\x16\x00\x0e\x00\r\x00\x0b\x00\x0c\x00\t\x00\n')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x1e\x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["121: OpenSSL 1.0.2e on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [107, 106, 105, 104, 61, 57, 56, 55, 54, 53, 103, 64, 63, 62, 60, 51, 50, 49, 48, 47, 5, 4, 19, 13, 22, 16, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["29: Opera 12.15 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 102, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 2), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["30: Opera 15 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49172, 57, 107, 53, 61, 49159, 49161, 49187, 49169, 49171, 49191, 51, 103, 50, 5, 4, 47, 60, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 2), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["39: Opera 16 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49172, 57, 107, 53, 61, 49159, 49161, 49187, 49169, 49171, 49191, 51, 103, 50, 5, 4, 47, 60, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[65281] = TLSExtension(extType=65281).create(bytearray(b'\x00')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00 \x06spdy/2\x06spdy/3\x08spdy/3.1\x08http/1.1')) ext[30031] = TLSExtension(extType=30031).create(bytearray(b'')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x05\x01\x02\x01\x04\x03\x05\x03\x02\x03\x04\x02\x02\x02')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["43: Opera 17 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49196, 49195, 49188, 49187, 49162, 49161, 49160, 49200, 49199, 49192, 49191, 49172, 49171, 49170, 157, 156, 61, 60, 53, 47, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x02\x01\x05\x01\x06\x01\x04\x03\x02\x03\x05\x03\x06\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00.\x02h2\x05h2-16\x05h2-15\x05h2-14\x08spdy/3.1\x06spdy/3\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["138: Safari 10 on OS X 10.12"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49196, 49195, 49188, 49187, 49162, 49161, 49160, 49200, 49199, 49192, 49191, 49172, 49171, 49170, 157, 156, 61, 60, 53, 47, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x10\x04\x01\x02\x01\x05\x01\x06\x01\x04\x03\x02\x03\x05\x03\x06\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00.\x02h2\x05h2-16\x05h2-15\x05h2-14\x08spdy/3.1\x06spdy/3\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) ext[23] = TLSExtension(extType=23).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["140: Safari 10 on iOS 10"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [255, 49188, 49187, 49162, 49161, 49159, 49160, 49192, 49191, 49172, 49171, 49169, 49170, 49190, 49189, 49194, 49193, 49156, 49157, 49154, 49155, 49166, 49167, 49164, 49165, 61, 60, 47, 5, 4, 53, 10, 103, 107, 51, 57, 22] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\n\x05\x01\x04\x01\x02\x01\x04\x03\x02\x03')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["31: Safari 5 on iOS 5.1.1"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49162, 49161, 49159, 49160, 49171, 49172, 49169, 49170, 49156, 49157, 49154, 49155, 49166, 49167, 49164, 49165, 47, 5, 4, 53, 10, 9, 3, 8, 6, 50, 51, 56, 57, 22, 21, 20, 19, 18, 17] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["32: Safari 5.1.9 on OS X 10.6.8"] = conversation conversation = Connect(host, port, version=(3, 3)) node = conversation ciphers = [255, 49188, 49187, 49162, 49161, 49159, 49160, 49192, 49191, 49172, 49171, 49169, 49170, 49190, 49189, 49194, 49193, 49156, 49157, 49154, 49155, 49166, 49167, 49164, 49165, 61, 60, 47, 5, 4, 53, 10, 103, 107, 51, 57, 22, 49158, 49168, 49153, 49163, 59, 2, 1] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\n\x05\x01\x04\x01\x02\x01\x04\x03\x02\x03')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["33: Safari 6 on iOS 6.0.1"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49161, 49159, 49160, 49172, 49171, 49169, 49170, 49156, 49157, 49154, 49155, 49166, 49167, 49164, 49165, 47, 5, 4, 53, 10, 51, 57, 22] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["34: Safari 6.0.4 on OS X 10.8.4"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49188, 49187, 49162, 49161, 49159, 49160, 49192, 49191, 49172, 49171, 49169, 49170, 49190, 49189, 49194, 49193, 49157, 49156, 49154, 49155, 49167, 49166, 49164, 49165, 61, 60, 47, 5, 4, 53, 10, 103, 107, 51, 57, 22] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\n\x05\x01\x04\x01\x02\x01\x04\x03\x02\x03')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["35: Safari 7 on OS X 10.9"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49188, 49187, 49162, 49161, 49159, 49160, 49192, 49191, 49172, 49171, 49169, 49170, 49190, 49189, 49194, 49193, 49157, 49156, 49154, 49155, 49167, 49166, 49164, 49165, 61, 60, 47, 5, 4, 53, 10, 103, 107, 51, 57, 22] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\n\x05\x01\x04\x01\x02\x01\x04\x03\x02\x03')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["63: Safari 7 on iOS 7.1"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49188, 49187, 49162, 49161, 49160, 49192, 49191, 49172, 49171, 49170, 49190, 49189, 49157, 49156, 49155, 49194, 49193, 49167, 49166, 49165, 107, 103, 57, 51, 22, 61, 60, 53, 47, 10, 49159, 49169, 49154, 49164, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\n\x05\x01\x04\x01\x02\x01\x04\x03\x02\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["87: Safari 8 on OS X 10.10"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49188, 49187, 49162, 49161, 49160, 49192, 49191, 49172, 49171, 49170, 49190, 49189, 49157, 49156, 49155, 49194, 49193, 49167, 49166, 49165, 107, 103, 57, 51, 22, 61, 60, 53, 47, 10, 49159, 49169, 49154, 49164, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\n\x05\x01\x04\x01\x02\x01\x04\x03\x02\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["75: Safari 8 on iOS 8.0 Beta"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49188, 49187, 49162, 49161, 49160, 49192, 49191, 49172, 49171, 49170, 49190, 49189, 49157, 49156, 49155, 49194, 49193, 49167, 49166, 49165, 107, 103, 57, 51, 22, 61, 60, 53, 47, 10, 49159, 49169, 49154, 49164, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\n\x05\x01\x04\x01\x02\x01\x04\x03\x02\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["85: Safari 8 on iOS 8.4"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49196, 49195, 49188, 49187, 49162, 49161, 49160, 49200, 49199, 49192, 49191, 49172, 49171, 49170, 157, 156, 61, 60, 53, 47, 10, 49159, 49169, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0c\x05\x01\x04\x01\x02\x01\x05\x03\x04\x03\x02\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00.\x02h2\x05h2-16\x05h2-15\x05h2-14\x08spdy/3.1\x06spdy/3\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["111: Safari 9 on OS X 10.11"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49196, 49195, 49188, 49187, 49162, 49161, 49160, 49200, 49199, 49192, 49191, 49172, 49171, 49170, 157, 156, 61, 60, 53, 47, 10, 49159, 49169, 5, 4] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x0c\x05\x01\x04\x01\x02\x01\x05\x03\x04\x03\x02\x03')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) ext[16] = TLSExtension(extType=16).create(bytearray(b'\x00.\x02h2\x05h2-16\x05h2-15\x05h2-14\x08spdy/3.1\x06spdy/3\x08http/1.1')) ext[5] = TLSExtension(extType=5).create(bytearray(b'\x01\x00\x00\x00\x00')) ext[18] = TLSExtension(extType=18).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["114: Safari 9 on iOS 9"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 5, 4, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[13172] = TLSExtension(extType=13172).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["44: Tor 17.0.9 on Win 7"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49192, 49188, 49172, 49162, 163, 159, 107, 106, 57, 56, 136, 135, 49202, 49198, 49194, 49190, 49167, 49157, 157, 61, 53, 132, 49170, 49160, 22, 19, 49165, 49155, 10, 49199, 49195, 49191, 49187, 49171, 49161, 162, 158, 103, 64, 51, 50, 154, 153, 69, 68, 49201, 49197, 49193, 49189, 49166, 49156, 156, 60, 47, 150, 65, 7, 49169, 49159, 49164, 49154, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x18\x00\x17')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00 \x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03\x01\x01')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["92: Yahoo Slurp Jan 2015 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49192, 49188, 49172, 49162, 163, 159, 107, 106, 57, 56, 136, 135, 49202, 49198, 49194, 49190, 49167, 49157, 157, 61, 53, 132, 49170, 49160, 22, 19, 49165, 49155, 10, 49199, 49195, 49191, 49187, 49171, 49161, 162, 158, 103, 64, 51, 50, 154, 153, 69, 68, 49201, 49197, 49193, 49189, 49166, 49156, 156, 60, 47, 150, 65, 7, 49169, 49159, 49164, 49154, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x04\x00\x18\x00\x17')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00 \x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03\x01\x01')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["73: Yahoo Slurp Jun 2014 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [255, 49162, 49172, 136, 135, 57, 56, 49167, 49157, 132, 53, 49159, 49161, 49169, 49171, 69, 68, 51, 50, 49164, 49166, 49154, 49156, 150, 65, 4, 5, 47, 49160, 49170, 22, 19, 49165, 49155, 65279, 10] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x00\x06\x00\x17\x00\x18\x00\x19')) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x01\x00')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["42: Yahoo Slurp Oct 2013 on unknown"] = conversation conversation = Connect(host, port, version=(3, 0)) node = conversation ciphers = [10, 5, 4] node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 0), compression=[0])) node = node.add_child(ExpectServerHello()) conversations["52: YandexBot 3.0 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49192, 49188, 49172, 49162, 49186, 49185, 163, 159, 107, 106, 57, 56, 49202, 49198, 49194, 49190, 49167, 49157, 157, 61, 53, 49170, 49160, 49180, 49179, 22, 19, 49165, 49155, 10, 49199, 49195, 49191, 49187, 49171, 49161, 49183, 49182, 162, 158, 103, 64, 51, 50, 49201, 49197, 49193, 49189, 49166, 49156, 156, 60, 47, 7, 49169, 49159, 49164, 49154, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x1e\x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["93: YandexBot Jan 2015 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [57, 56, 53, 22, 19, 10, 51, 50, 47, 7, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 1), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["68: YandexBot May 2014 on unknown"] = conversation conversation = Connect(host, port, version=(3, 1)) node = conversation ciphers = [49200, 49196, 49192, 49188, 49172, 49162, 49186, 49185, 163, 159, 107, 106, 57, 56, 49202, 49198, 49194, 49190, 49167, 49157, 157, 61, 53, 49170, 49160, 49180, 49179, 22, 19, 49165, 49155, 10, 49199, 49195, 49191, 49187, 49171, 49161, 49183, 49182, 162, 158, 103, 64, 51, 50, 49201, 49197, 49193, 49189, 49166, 49156, 156, 60, 47, 7, 49169, 49159, 49164, 49154, 5, 4, 21, 18, 9, 20, 17, 8, 6, 3, 255] ext = OrderedDict() ext[0] = SNIExtension().create(bytearray(host, "ascii")) ext[11] = TLSExtension(extType=11).create(bytearray(b'\x03\x00\x01\x02')) ext[10] = TLSExtension(extType=10).create(bytearray(b'\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x00\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11')) ext[35] = TLSExtension(extType=35).create(bytearray(b'')) ext[13] = TLSExtension(extType=13).create(bytearray(b'\x00\x1e\x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03')) ext[15] = TLSExtension(extType=15).create(bytearray(b'\x01')) node = node.add_child(ClientHelloGenerator(ciphers=ciphers, version=(3, 3), compression=[0], extensions=ext)) node = node.add_child(ExpectServerHello()) conversations["78: YandexBot Sep 2014 on unknown"] = conversation # run the conversation good = 0 bad = 0 xfail = 0 xpass = 0 failed = [] xpassed = [] if not num_limit: num_limit = len(conversations) # make sure that sanity test is run first and last # to verify that server was running and kept running throughout sanity_tests = [('sanity', conversations['sanity'])] if run_only: if num_limit > len(run_only): num_limit = len(run_only) regular_tests = [(k, v) for k, v in conversations.items() if k in run_only] else: regular_tests = [(k, v) for k, v in conversations.items() if (k != 'sanity') and k not in run_exclude] sampled_tests = sample(regular_tests, min(num_limit, len(regular_tests))) ordered_tests = chain(sanity_tests, sampled_tests, sanity_tests) for c_name, c_test in ordered_tests: print("{0} ...".format(c_name)) runner = Runner(c_test) res = True exception = None try: runner.run() except Exception as exp: exception = exp print("Error while processing") print(traceback.format_exc()) res = False if c_name in expected_failures: if res: xpass += 1 xpassed.append(c_name) print("XPASS-expected failure but test passed\n") else: if expected_failures[c_name] is not None and \ expected_failures[c_name] not in str(exception): bad += 1 failed.append(c_name) print("Expected error message: {0}\n" .format(expected_failures[c_name])) else: xfail += 1 print("OK-expected failure\n") else: if res: good += 1 print("OK\n") else: bad += 1 failed.append(c_name) print("Test end") print(20 * '=') print("version: {0}".format(version)) print(20 * '=') print("TOTAL: {0}".format(len(sampled_tests) + 2*len(sanity_tests))) print("SKIP: {0}".format(len(run_exclude.intersection(conversations.keys())))) print("PASS: {0}".format(good)) print("XFAIL: {0}".format(xfail)) print("FAIL: {0}".format(bad)) print("XPASS: {0}".format(xpass)) print(20 * '=') sort = sorted(xpassed ,key=natural_sort_keys) if len(sort): print("XPASSED:\n\t{0}".format('\n\t'.join(repr(i) for i in sort))) sort = sorted(failed, key=natural_sort_keys) if len(sort): print("FAILED:\n\t{0}".format('\n\t'.join(repr(i) for i in sort))) if bad or xpass: sys.exit(1) if __name__ == "__main__": main()