a
    kÄ#dÈ  ã                   @   s´  d Z ddlZddlZddlZej ej ej e¡d¡¡Z	e	gej e_ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dZed
d�Zejddd� ejdddd� ejddd� ejdddd� ejdddd� ejdddd� ejd d!d� ejd"d#d� ejd$d%d� ejd&d'd(dd)d*� ejd+d,d-d.d/� ejd0d,ed1d2d3� e ¡ Zej�rxd4Znd5Ze ej d¡Z!e!�sše "d6¡ ze #ej$ej%¡ W n6 ej&�yä Z' ze "d7e' ¡ W Y dZ'['n
dZ'['0 0 ej(�r&eej(d8ƒZ)e)e*e+d9d:ƒƒv�ree)d;�Z,n
ee)d;�Z,ndZ,ej-Z.e.�sjej$�rjzeej$ƒ W n ej&�yh   ej$Z.Y n0 eej$ej%e.e,ej e	d< e	d= ejeej/ej0ej1ej2ej3d>�Z4e4 5¡  dS )?zm
Basic TLS client. A ciphersuite may be commanded via a first argument.
Default protocol version is TLS 1.3.
é    Nz../../)Úconf)Ú	inet_aton)ÚTLSClientAutomaton)Ú_tls_version_options)ÚTLSClientHelloÚTLS13ClientHello)ÚArgumentParserzSimple TLS Client)Údescriptionz--pskz7External PSK for symmetric authentication (for TLS 1.3))Úhelpz--no_pfsÚ
store_truez!Disable (EC)DHE exchange with PFS)Úactionr
   z--ciphersuitezCiphersuite preferencez	--versionzTLS VersionZtls13)r
   Údefaultz--ticket_inÚsession_ticket_file_inz(File to read a ticket from (for TLS 1.3))Údestr
   z--ticket_outÚsession_ticket_file_outz'File to write a ticket to (for TLS 1.3)z--res_masterz&Resumption master secret (for TLS 1.3)z--snizServer Name Indicationz--curvezECC group to advertisez--debugÚstore_consté   zEnter debug mode)r   Úconstr   r
   Úserverú?z	127.0.0.1zThe server to connect to)Únargsr   r
   ÚportiQ  zThe TCP destination port)r   Útyper   r
   Zpsk_keZ
psk_dhe_kez Unrecognized TLS version option.z!Could not resolve host server: %sé   i  i  )Úciphersz/test/tls/pki/cli_cert.pemz/test/tls/pki/cli_key.pem)r   ÚdportÚserver_nameZclient_helloÚversionZmycertZmykeyÚpskÚpsk_modeZresumption_master_secretr   r   ÚcurveÚdebug)6Ú__doc__ÚosÚsocketÚsysÚpathÚabspathÚjoinÚdirnameÚ__file__ZbasedirZscapy.configr   Zscapy.utilsr   Zscapy.layers.tls.automaton_clir   Zscapy.layers.tls.basefieldsr   Zscapy.layers.tls.handshaker   r   Úargparser   r   ÚparserÚadd_argumentÚintÚ
parse_argsÚargsZno_pfsr   Úgetr   ÚvÚexitÚgetaddrinfor   r   ÚerrorÚexZciphersuiter   ÚlistÚrangeÚchZsnir   Z
res_masterr   r   r    r!   ÚtÚrun© r<   r<   úN/var/www/html/gsl.tools/lib/python3.9/site-packages/test/tls/example_client.pyÚ<module>   s¢   
ÿÿÿÿÿÿÿ
ÿÿ
$
ô