scapy发送TLS自定义包

00 安装配置scapy

直接从github上下载scapy源码,然后进入到目录中运行即可。
由于TLS并不是默认开启的layer,所以需要在配置项中的layer里加入tls。
运行后输入TLS查看是否报错,如果没有报错说明TLS层的启用正常。

01 构造TLS请求

经过一系列的研究尝试,得出如下构造hello包的代码:

1
2
3
4
5
6
7
8
9
sn = ServerName(servername="<put server name here>\x00\x00\x00\0")
ext = [TLS_Ext_SupportedGroups(groups=["secp256r1"]),
TLS_Ext_ServerName(servernames=[sn]),
TLS_Ext_KeyShare_CH(client_shares=[KeyShareEntry(group=23)]), # noqa: E501
# TLS_Ext_SupportedVersions(versions=["TLS 1.3-d18"]),
TLS_Ext_SignatureAlgorithms(sig_algs=["sha256+rsapss",
"sha256+rsa"])]
p = TLSClientHello(ciphers=0x1301, ext=ext)
TLSClientAutomaton(server="mail.guahao.com",dport=995,client_hello=p).run()

Servername那个参数可以替换成任意的服务器名即可达到我们的目的