OpenGFW/analyzer/internal/openvpn.go

45 lines
1.1 KiB
Go

package internal
// Ref paper:
// https://www.usenix.org/system/files/sec22fall_xue-diwen.pdf
// OpenVPN Opcodes definitions from:
// https://github.com/OpenVPN/openvpn/blob/master/src/openvpn/ssl_pkt.h
const (
OpenVpnControlHardResetClientV1 = 1
OpenVpnControlHardResetServerV1 = 2
OpenVpnControlSoftResetV1 = 3
OpenVpnControlV1 = 4
OpenVpnAckV1 = 5
OpenVpnDataV1 = 6
OpenVpnControlHardResetClientV2 = 7
OpenVpnControlHardResetServerV2 = 8
OpenVpnDataV2 = 9
OpenVpnControlHardResetClientV3 = 10
OpenVpnControlWkcV1 = 11
)
const (
OpenVpnMinPktLen = 6
OpenVpnTcpPktDefaultLimit = 256
OpenVpnUdpPktDefaultLimit = 256
)
func OpenVpnCheckForValidOpcode(opcode byte) bool {
switch opcode {
case OpenVpnControlHardResetClientV1,
OpenVpnControlHardResetServerV1,
OpenVpnControlSoftResetV1,
OpenVpnControlV1,
OpenVpnAckV1,
OpenVpnDataV1,
OpenVpnControlHardResetClientV2,
OpenVpnControlHardResetServerV2,
OpenVpnDataV2,
OpenVpnControlHardResetClientV3,
OpenVpnControlWkcV1:
return true
}
return false
}