1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-30 02:55:23 +00:00

update format

This commit is contained in:
V2Ray 2015-09-07 23:13:55 +02:00
parent b5416c9f42
commit b0849dd23b
2 changed files with 20 additions and 15 deletions

View File

@ -2,7 +2,8 @@
package vmess package vmess
import ( import (
"net" "fmt"
"io"
) )
// VMessInput implements the input message of VMess protocol. It only contains // VMessInput implements the input message of VMess protocol. It only contains
@ -19,19 +20,19 @@ type VMessInput struct {
target [256]byte target [256]byte
} }
type VMessReader struct { func Read(reader io.Reader) (input *VMessInput, err error) {
conn *net.Conn buffer := make([]byte, 17 /* version + user hash */)
nBytes, err := reader.Read(buffer)
if err != nil {
return
}
if nBytes != len(buffer) {
err = fmt.Errorf("Unexpected length of header %d", nBytes)
return
}
return
} }
// NewVMessReader creates a new VMessReader type VMessOutput [4]byte
func NewVMessReader(conn *net.Conn) (VMessReader, error) {
var reader VMessReader
reader.conn = conn
return reader, nil
}
// Read reads data from current connection and form a VMessInput if possible.
func (*VMessReader) Read() (VMessInput, error) {
var input VMessInput
return input, nil
}

View File

@ -5,8 +5,10 @@
## 数据请求 ## 数据请求
版本部分: 版本部分:
* 1 字节:版本号,目前为 0x1 * 1 字节:版本号,目前为 0x1
认证部分: 认证部分:
* 16 字节md5(用户 VID + 'ASK') * 16 字节md5(用户 VID + 'ASK')
指令部分: 指令部分:
* 1 字节:随机填充长度 M (M <= 32) * 1 字节:随机填充长度 M (M <= 32)
* M 字节:随机填充内容 * M 字节:随机填充内容
@ -29,14 +31,16 @@
* 16 字节IPv6 * 16 字节IPv6
* 1 字节:随机填充长度 M2 (M2 <= 32) * 1 字节:随机填充长度 M2 (M2 <= 32)
* M2 字节:随机填充内容 * M2 字节:随机填充内容
数据部分 数据部分
* N 字节:请求数据 * N 字节:请求数据
其中指令部分经过 AES-128 加密Key 为用户 VID数据部分使用 AES-128-CBC 加密 其中指令部分经过 AES-128 加密Key 为用户 VID数据部分使用 AES-128-CBC 加密
## 数据应答 ## 数据应答
认证部分: 认证部分:
* 4 字节:认证信息 V * 4 字节:认证信息 V
数据部分 数据部分
* N 字节:应答数据 * N 字节:应答数据