ctzisme/burstui
GitHub: ctzisme/burstui
一个基于 Bubble Tea 的 Go 终端 TUI,为 Gobuster 提供交互式界面与实时输出,简化扫描配置与日志管理。
Stars: 2 | Forks: 0
# BurstUI
一个使用 Bubble Tea 和 Lip Gloss 构建的 Go 终端 UI,用于 Gobuster。
BurstUI 提供了一个小型 TUI,围绕常见的 Gobuster 工作流程,使你无需每次都输入完整命令即可切换模式、设置选项、运行扫描并查看实时输出。
[](https://github.com/ctzisme/burstui/blob/main/LICENSE)
[](https://github.com/ctzisme/burstui/releases)
[](https://go.dev/)
[](https://github.com/OJ/gobuster)
[](https://github.com/ctzisme/burstui/pkgs/container/burstui)
[](https://github.com/ctzisme/burstui)
## 功能

- 支持 Gobuster 的 `dir`、`vhost` 和 `dns` 模式
- 启动时检测 Gobuster 路径和版本
- 带有可滚动结果窗格的实时扫描输出
- 线程数输入
- 模式感知的状态码过滤器
- 单词列表文件选择器
- 可选的 DNS 模式自定义 DNS 解析器
- 扫描完成后导出输出日志
## 要求
- Docker
*或*
- Go `1.26.1` 或更高版本
- Gobuster `3.8.2` 或更高版本
- 可用的 `gobuster` 二进制文件在 `PATH` 中
## 🐳 使用 Docker
### 拉取最新镜像
```
docker pull ghcr.io/ctzisme/burstui:latest
```
### 运行容器
运行一个 BurstUI 容器,将主机单词列表以只读方式挂载,并将当前目录挂载到 `/output` 以保存扫描日志。
```
docker run --rm -it \
-e TERM=xterm-256color \
-v /usr/share/wordlists:/usr/share/wordlists:ro \
-v "$(pwd):/output" \
ghcr.io/ctzisme/burstui:latest
```
*请确保只将日志保存到挂载目录(例如,使用上述命令时为 `/output/123.log`)。*
## 🔨 手动安装
### 步骤 1. 安装并构建 BurstUI
#### 选项 A:使用 Go 安装
```
go install github.com/ctzisme/burstui@latest
```
*或*
#### 选项 B:从源代码
```
git clone https://github.com/ctzisme/burstui
cd burstui
go mod tidy
go build .
```
*或*
#### 选项 C:使用二进制发布版本
从 [发布页面](https://github.com/ctzisme/burstui/releases) 下载二进制发布版本。
### 步骤 2. 使用 Go 安装 Gobuster
安装推荐的 Gobuster 版本 `v3.8.2`:
```
go install github.com/OJ/gobuster/v3@v3.8.2
```
*或*
安装最新的 Gobuster 发布版本:
```
go install github.com/OJ/gobuster/v3@latest
```
### 步骤 3. 将最新的 Gobuster 添加到 PATH
在当前 shell 中立即使用:
```
export PATH="$(go env GOPATH)/bin:$PATH"
```
验证正在使用的 Gobuster 是否为 Go 安装的版本:
```
which gobuster
gobuster --version
```
### 步骤 4. 使 PATH 更改持久化
对于 Bash,将以下行添加到 `~/.bashrc`:
```
export PATH="$HOME/go/bin:$PATH"
```
为了同时覆盖登录 shell,将相同的行添加到 `~/.profile`:
```
export PATH="$HOME/go/bin:$PATH"
```
然后重新加载你的 shell:
```
source ~/.bashrc
hash -r
```
## 用法
启动应用程序:
```
./burstui
```
当 BurstUI 启动时,它将显示:
- Gobuster 路径(来自 `which gobuster`)
- Gobuster 版本(来自 `gobuster --version`)
## 控制
- `↑ / ↓`:在字段之间移动
- `← / →` 在 `Mode` 上切换模式
- `→`:当字段为空时用占位符填充
- `Tab / Shift+Tab`:在表单和结果窗格之间切换
- `← / →` 在结果窗格中水平滚动长输出行
- `Enter` 在 `Browse Wordlist` 上:打开单词列表选择器
- `Enter` 在 `Start Scan` 上:运行 Gobuster
- `Enter` 在 `Output Log File` 上:扫描完成后保存日志
- `ctrl+c`:退出
## 模式
### `dir`(目录模式)
字段:
- 目标 URL
- 过滤状态码
- 线程数
- 单词列表路径
生成的命令格式:
```
gobuster dir -u https://example.com -w wordlist.txt -s 200,301,302 -t 10
```
说明:
- 你可以设置多个 `Filter Status Codes`,用逗号分隔(例如 `200,304,403`)。
- 如果留空,BurstUI 使用 `200`
### `vhost`(虚拟主机模式)
字段:
- 目标 URL
- 排除状态码
- 线程数
- 单词列表路径
生成的命令格式:
```
gobuster vhost -u https://example.com -w wordlist.txt -t 10 -xs 400 --append-domain
```
说明:
- 你可以设置多个 `Exclude Status Codes`,用逗号分隔(例如 `400,500`)。
- 如果留空,BurstUI 使用 `400`
### `dns`(DNS 模式)
字段:
- 域名
- 自定义 DNS 服务器(可选)
- 线程数
- 单词列表路径
生成的命令格式:
```
gobuster dns -do example.com -w wordlist.txt -t 10
```
使用自定义解析器(可选):
```
gobuster dns -do example.com -w wordlist.txt -t 10 --resolver 8.8.8.8:53
```
说明:
- 你不能在 `dns` 模式中过滤状态码
- `Custom DNS Server` 是可选的
## 输出日志
扫描完成后,你可以使用 `Output Log File` 字段将收集的输出保存到文件中。
默认输出路径:
```
./burstui-output.log
```
*如果使用 Docker,请确保只将日志保存到挂载目录。*
## 项目结构
- `main.go`:程序入口点
- `model.go`:模型、初始化、Gobuster 启动检测
- `update.go`:按键处理、焦点逻辑、更新循环
- `scan.go`:Gobuster 命令构建和输出流式传输
- `view.go`:TUI 渲染
- `styles.go`:Lip Gloss 样式和日志着色辅助函数
- `version.go`:用于发布构建的版本元数据变量
标签:Bubble Tea, DNS枚举, DNS解析器, EVTX分析, GitHub CLI 工具, Go 1.26, Go语言, Lip Gloss, NIDS, TUI, 大数据, 子域名枚举, 实时输出, 容器化, 工作流切换, 开源安全工具, 开箱即用, 日志审计, 日志导出, 状态码过滤, 目录扫描, 程序破解, 系统安全, 线程数配置, 终端UI, 网络安全工具, 词表文件选择, 请求拦截, 逆向工程平台