使用 netcat 的 openvpn 连接中“\x38\x01\x00\x00\x00\x00\x00\x00\x00”是什么意思?

使用 netcat 的 openvpn 连接中“\x38\x01\x00\x00\x00\x00\x00\x00\x00”是什么意思?

我正在通过 netcat 测试我的 openvpn 服务器,发现了这个答案: 如何在不使用 OpenVPN 客户端的情况下检查 OpenVPN 服务器是否正在监听远程端口?

通过发送一个魔术字符串“\x38\x01\x00\x00\x00\x00\x00\x00\x00\x00”它运行良好,但我想知道这个字符串的含义是什么?

答案1

它只是 OpenVPN 协议的一部分,表示一些初始化指令。要了解确切的解码含义,您可能需要查看 OpenVPN 源代码才能确切了解它的含义。

答案2

这个问题很老了,但在谷歌搜索 magic string 时仍然是最热门的答案。我也觉得 magic string 很烦人,所以在深入研究了 openvpn 源代码后,你可以看到 0x38 是操作码P_CONTROL_HARD_RESET_CLIENT_V2(参见第一个字节描述操作码值在 openvpn repo 中)

数据包的其余 8 个字节只是会话 ID,对于真实连接来说,它看起来是一个随机数,但在示例字符串中是一个硬编码的 0x01000000000000000,它导致 openvpn 服务器中的日志如下所示: TLS: Initial packet from [AF_INET]:x.y.z.zz:53832, sid=01000000 00000000

您可以看到类似的数据包用于openvpn 单元测试

相关内容