1*7dc08ffcSJunyu Lai#!/usr/bin/env python 2*7dc08ffcSJunyu Lai 3*7dc08ffcSJunyu Lai## This file is part of Scapy 4*7dc08ffcSJunyu Lai## This program is published under a GPLv2 license 5*7dc08ffcSJunyu Lai 6*7dc08ffcSJunyu Lai""" 7*7dc08ffcSJunyu LaiBasic TLS client. A ciphersuite may be commanded via a first argument. 8*7dc08ffcSJunyu LaiDefault protocol version is TLS 1.2. 9*7dc08ffcSJunyu Lai 10*7dc08ffcSJunyu LaiFor instance, "sudo ./client_simple.py c014" will try to connect to any TLS 11*7dc08ffcSJunyu Laiserver at 127.0.0.1:4433, with suite TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA. 12*7dc08ffcSJunyu Lai""" 13*7dc08ffcSJunyu Lai 14*7dc08ffcSJunyu Laiimport os 15*7dc08ffcSJunyu Laiimport sys 16*7dc08ffcSJunyu Lai 17*7dc08ffcSJunyu Laibasedir = os.path.abspath(os.path.join(os.path.dirname(__file__),"../../")) 18*7dc08ffcSJunyu Laisys.path=[basedir]+sys.path 19*7dc08ffcSJunyu Lai 20*7dc08ffcSJunyu Laifrom scapy.layers.tls.automaton_cli import TLSClientAutomaton 21*7dc08ffcSJunyu Laifrom scapy.layers.tls.handshake import TLSClientHello 22*7dc08ffcSJunyu Lai 23*7dc08ffcSJunyu Lai 24*7dc08ffcSJunyu Laiif len(sys.argv) == 2: 25*7dc08ffcSJunyu Lai ch = TLSClientHello(ciphers=int(sys.argv[1], 16)) 26*7dc08ffcSJunyu Laielse: 27*7dc08ffcSJunyu Lai ch = None 28*7dc08ffcSJunyu Lai 29*7dc08ffcSJunyu Lait = TLSClientAutomaton(client_hello=ch, 30*7dc08ffcSJunyu Lai version="tls13-d18", 31*7dc08ffcSJunyu Lai mycert=basedir+"/test/tls/pki/cli_cert.pem", 32*7dc08ffcSJunyu Lai mykey=basedir+"/test/tls/pki/cli_key.pem") 33*7dc08ffcSJunyu Lait.run() 34*7dc08ffcSJunyu Lai 35