修订文档,代码;减少发布包编译的数量;修复“包头”变成“握手包”的漏洞

根据vless/trojan的协议标准,首包必须要包头和payload一起发送,而之前的vs架构分开发送了,这会导致可探测。已在本commit修复。

使用 captive.apple.com 和 http://www.msftconnecttest.com/connecttest.txt 作为测试url,而不用baidu和qq。这样在非中国国家进行测试 也可以正常了。
This commit is contained in:
hahahrfool
2022-04-16 22:25:37 +08:00
parent 8eecbacc57
commit d9f3b5d0e6
22 changed files with 327 additions and 192 deletions

View File

@@ -212,3 +212,19 @@ verysimple的架构是分层结构不限定到底传输什么协议的底层
也许网络层的代理传输命令,可以加到 vless v1里加一个CmdIP 即可
## 握手包长度混淆
v1 应该加一个 握手包长度混淆 功能
因为虽然是在tls内部tls record的长度还是能够暴露一些信息。如果每次tls握手的首个tls record的长度都不一样那么能好一些。
目前认为, 不要太过随机,比如一个小时内 每个 tls握手的首个tls record 长度都不一样,这个又会导致熵太大。
目前认为,每一次启动 程序,都会随机选择一个 混淆填充长度然后固定填充这个长度。这样短时间内首个tls record长度相同又不会让审查着 获取到任何 与协议有关的 tls record 首包长度特征。
tls record 最大长度是16k再长就要分片而 一般http请求读到的 文件很有可能超过16k一个html文件长达几百K是很正常的。
但是一个http响应不仅是返回文件内容而还有http响应头。一般一个响应头不长也就 几十 至 几百字节。
只要我们先伪装http响应头来完美模拟tls record首包再做混淆填充 vless v1的握手包就可以达到规避 流量 特征的目的