From a7ea2f51980511de12435c87fb53318f4f498894 Mon Sep 17 00:00:00 2001 From: ZacharyZcR Date: Tue, 2 Sep 2025 08:09:59 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=BA=92=E6=96=A5=E6=A3=80=E6=9F=A5=EF=BC=8C-h/-u/-local?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E5=8F=82=E6=95=B0=E5=8F=AA=E8=83=BD=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E4=B8=80=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - 之前只检查了-local与-h/-u的互斥性 - 但-h和-u也应该互斥,代表不同的扫描模式 - 用户可能误用多个参数导致行为不明确 解决方案: - 统一检查三个核心参数的互斥性 - 提供清晰的错误提示和参数说明 - 确保用户明确选择一种扫描模式 三种扫描模式: - -h: 网络主机扫描 (端口+服务+漏洞) - -u: Web URL扫描 (Web漏洞+内容分析) - -local: 本地信息收集 (系统信息+痕迹清理) 测试验证: ✓ -h + -u: 正确拒绝并提示互斥 ✓ -h + -local: 正确拒绝并提示互斥 ✓ -u + -local: 正确拒绝并提示互斥 ✓ 单独使用: 正常工作 用户体验改进: - 清晰的错误信息 - 每个参数的功能说明 - 避免了参数冲突的困惑 --- main.go | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index d5d98e2..f5db39f 100644 --- a/main.go +++ b/main.go @@ -22,13 +22,36 @@ func main() { var info common.HostInfo common.Flag(&info) - // 检查-local与-h -u的互斥性 - if common.LocalPlugin != "" && info.Host != "" { - fmt.Printf("错误: -local参数与-h参数互斥,本地插件只能在本机运行\n") - os.Exit(1) + // 检查核心参数的互斥性:-h、-u、-local 只能指定一个 + paramCount := 0 + var activeParam string + + if info.Host != "" { + paramCount++ + activeParam = "-h" } - if common.LocalPlugin != "" && common.TargetURL != "" { - fmt.Printf("错误: -local参数与-u参数互斥,本地插件不需要URL目标\n") + if common.TargetURL != "" { + 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) }