feat: 完善参数互斥检查,-h/-u/-local三个参数只能指定一个

问题:
- 之前只检查了-local与-h/-u的互斥性
- 但-h和-u也应该互斥,代表不同的扫描模式
- 用户可能误用多个参数导致行为不明确

解决方案:
- 统一检查三个核心参数的互斥性
- 提供清晰的错误提示和参数说明
- 确保用户明确选择一种扫描模式

三种扫描模式:
- -h: 网络主机扫描 (端口+服务+漏洞)
- -u: Web URL扫描 (Web漏洞+内容分析)
- -local: 本地信息收集 (系统信息+痕迹清理)

测试验证:
✓ -h + -u: 正确拒绝并提示互斥
✓ -h + -local: 正确拒绝并提示互斥
✓ -u + -local: 正确拒绝并提示互斥
✓ 单独使用: 正常工作

用户体验改进:
- 清晰的错误信息
- 每个参数的功能说明
- 避免了参数冲突的困惑
This commit is contained in:
ZacharyZcR 2025-09-02 08:09:59 +00:00
parent 80644cd6f1
commit a7ea2f5198

35
main.go
View File

@ -22,13 +22,36 @@ func main() {
var info common.HostInfo var info common.HostInfo
common.Flag(&info) common.Flag(&info)
// 检查-local与-h -u的互斥性 // 检查核心参数的互斥性:-h、-u、-local 只能指定一个
if common.LocalPlugin != "" && info.Host != "" { paramCount := 0
fmt.Printf("错误: -local参数与-h参数互斥本地插件只能在本机运行\n") var activeParam string
os.Exit(1)
if info.Host != "" {
paramCount++
activeParam = "-h"
} }
if common.LocalPlugin != "" && common.TargetURL != "" { if common.TargetURL != "" {
fmt.Printf("错误: -local参数与-u参数互斥本地插件不需要URL目标\n") paramCount++
if activeParam != "" {
activeParam += " 和 -u"
} else {
activeParam = "-u"
}
}
if common.LocalPlugin != "" {
paramCount++
if activeParam != "" {
activeParam += " 和 -local"
} else {
activeParam = "-local"
}
}
if paramCount > 1 {
fmt.Printf("错误: 参数 %s 互斥,请只指定一个扫描目标\n", activeParam)
fmt.Printf(" -h: 网络主机扫描\n")
fmt.Printf(" -u: Web URL扫描\n")
fmt.Printf(" -local: 本地信息收集\n")
os.Exit(1) os.Exit(1)
} }