1

我是 Go 编程语言的新手,我正在使用 Google 的“gopacket”库自己制作以太网帧。我已经成功地在用户空间中实现了用于教育目的的基本 TCP 功能,并且我可以成功地启动与 Web 服务器的 3 次握手。

现在我想在此基础上启动 TLS 握手,我的问题是 go 中所有现有的 TLS 库都使用套接字或 Conn 接口来启动 TLS 连接。是否有一些简单的方法可以在 go 中制作原始 TLS 客户端 Hello 消息,我可以将其用作我的 TCP 段的有效负载?

我不想实现诸如数据传输之类的花哨的东西。如果我能够将 Client-Hello 发送到服务器并在结束连接之前查看回复的样子就足够了。

感谢您对 Go 新手的任何建议。:-)

4

2 回答 2

2

我想说一种方法是模拟Conn你提供给 TLS 库的内容,这样你就可以拦截调用并转发/中继它们,或者......你可以通过查看例如handshake_client.go 并复制你的任何内容来手动执行此操作需要(遗憾的是,它包含的方法只是私有的)。

就个人而言,我可能会采用这种Conn方法。

于 2018-06-14T08:45:14.690 回答
0

我尝试了两种方法,但都没有成功。

最后,我选择了最丑陋的解决方案,但它适用于我的简单场景:我通过 Wireshark 捕获了一个 TLS 客户端 Hello,并将其硬编码为十六进制的字节数组。

于 2018-06-15T07:57:49.807 回答