You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# VMess 设计
## 摘要
* 版本: 1
## 数据请求
认证部分:
* 16 字节:基于时间的 hash(用户 ID),见下文
指令部分:
* 1 字节:随机填充长度 M (0 < M <= 32 )
* M 字节:随机填充内容
* 1 字节:版本号,目前为 0x1
* 16 字节:请求数据 IV
* 16 字节:请求数据 Key
* 4 字节:认证信息 V
* 1 字节:指令
* 0x00 :保留
* 0x01 : TCP 请求
* 0x02 : UDP 请求
* 2 字节:目标端口
* 1 字节:目标类型
* 0x01 : IPv4
* 0x02 :域名
* 0x03 : IPv6
* 目标地址:
* 4 字节: IPv4
* 1 字节长度 + 域名
* 16 字节: IPv6
* 1 字节:随机填充长度 M2 ( 0 < M2 <= 32 )
* M2 字节:随机填充内容
数据部分
* N 字节:请求数据
其中指令部分经过 AES-128-CFB 加密:
* Key : md5 (用户 ID + ' c48619fe-8f02-49e0-b9e9-edf763e17e21 ')
* IV : md5 ( X + X + X + X ), X = []byte(UserHash 生成的时间) ( 8 字节, Big Endian )
数据部分使用 AES-128-CFB 加密, Key 和 IV 在请求数据中
## 数据应答
数据部分
* 4 字节:认证信息 V
* N 字节:应答数据
其中数据部分使用 AES-128-CFB 加密, IV 为 md5 (请求数据 IV ), Key 为 md5 (请求数据 Key )
## 基于时间的用户 ID Hash
* H = MD5
* K = 用户 ID ( 16 字节)
* M = UTC 时间,精确到秒,取值为当前时间的前后 30 秒随机值( 8 字节, Big Endian )
* Hash = HMAC(H, K , M )