2016-09-22 18:07:32 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
## This file is part of Scapy
|
|
|
|
## This program is published under a GPLv2 license
|
|
|
|
|
|
|
|
"""
|
|
|
|
TLS client used in unit tests.
|
|
|
|
Usage: [sudo] ./unit_test_client.py [send_data [cipher_suite_code [version]]]
|
|
|
|
|
|
|
|
Start our TLS client, send our send_data, and terminate session with an Alert.
|
|
|
|
Optional cipher_cuite_code and version may be provided as hexadecimal strings
|
|
|
|
(e.g. c09e for TLS_DHE_RSA_WITH_AES_128_CCM and 0303 for TLS 1.2).
|
|
|
|
Reception of the exact send_data on the server is to be checked externally.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
2017-01-11 18:03:53 +00:00
|
|
|
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__),"../../"))
|
|
|
|
sys.path=[basedir]+sys.path
|
|
|
|
|
2017-02-03 17:11:51 +00:00
|
|
|
from scapy.layers.tls.automaton import TLSClientAutomaton
|
|
|
|
from scapy.layers.tls.handshake import TLSClientHello
|
|
|
|
|
2017-01-11 18:03:53 +00:00
|
|
|
|
2016-09-22 18:07:32 +00:00
|
|
|
send_data = cipher_suite_code = version = None
|
|
|
|
|
|
|
|
if len(sys.argv) >= 2:
|
|
|
|
send_data = sys.argv[1]
|
|
|
|
|
|
|
|
if len(sys.argv) >= 3:
|
|
|
|
cipher_suite_code = int(sys.argv[2], 16)
|
|
|
|
|
|
|
|
if len(sys.argv) >= 4:
|
|
|
|
version = int(sys.argv[3], 16)
|
|
|
|
|
|
|
|
|
|
|
|
ch = TLSClientHello(version=version, ciphers=cipher_suite_code)
|
|
|
|
t = TLSClientAutomaton(client_hello=ch, data=send_data)
|
|
|
|
t.run()
|
|
|
|
|
|
|
|
|