mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 14:06:44 +08:00
feat: 添加-m icmp参数支持存活探测模式
新增功能: - 支持通过-m icmp参数启用存活探测功能 - 与现有-ao参数功能等价,提供更直观的使用方式 - 添加参数冲突检查,当同时使用-ao和-m icmp时给出友好提示 - 完善参数验证,将icmp添加到有效扫描模式列表 技术实现: - 扩展ValidationParser支持icmp模式验证 - 修改Scanner策略选择逻辑支持icmp模式 - 新增参数冲突检查函数checkParameterConflicts - 更新帮助信息和国际化消息支持 向后兼容: - 保持-ao参数原有功能不变 - 两种参数方式都能正确触发存活探测 - 支持中英文双语界面和提示信息
This commit is contained in:
parent
78f81610cd
commit
022461f407
@ -255,6 +255,9 @@ func parseCommandLineArgs() {
|
||||
|
||||
// 解析命令行参数
|
||||
flag.Parse()
|
||||
|
||||
// 检查参数冲突
|
||||
checkParameterConflicts()
|
||||
}
|
||||
|
||||
// parseEnvironmentArgs 安全地解析环境变量中的参数
|
||||
@ -338,3 +341,11 @@ func shouldShowHelp(Info *HostInfo) bool {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// checkParameterConflicts 检查参数冲突和兼容性
|
||||
func checkParameterConflicts() {
|
||||
// 检查 -ao 和 -m icmp 同时指定的情况(向后兼容提示)
|
||||
if AliveOnly && ScanMode == "icmp" {
|
||||
LogBase(i18n.GetText("param_conflict_ao_icmp_both"))
|
||||
}
|
||||
}
|
||||
|
@ -35,8 +35,8 @@ var FlagMessages = map[string]map[string]string{
|
||||
LangEN: "Ports file",
|
||||
},
|
||||
"flag_scan_mode": {
|
||||
LangZH: "扫描模式: all, portscan, tcpscan, udpscan等",
|
||||
LangEN: "Scan mode: all, portscan, tcpscan, udpscan, etc.",
|
||||
LangZH: "扫描模式: all, portscan, tcpscan, udpscan, icmp等",
|
||||
LangEN: "Scan mode: all, portscan, tcpscan, udpscan, icmp, etc.",
|
||||
},
|
||||
"flag_thread_num": {
|
||||
LangZH: "端口扫描线程数",
|
||||
@ -74,6 +74,10 @@ var FlagMessages = map[string]map[string]string{
|
||||
LangZH: "仅进行存活探测",
|
||||
LangEN: "Alive detection only",
|
||||
},
|
||||
"param_conflict_ao_icmp_both": {
|
||||
LangZH: "提示: 同时指定了 -ao 和 -m icmp,两者功能相同,使用存活探测模式",
|
||||
LangEN: "Note: Both -ao and -m icmp specified, both enable alive detection mode",
|
||||
},
|
||||
"flag_username": {
|
||||
LangZH: "用户名",
|
||||
LangEN: "Username",
|
||||
|
@ -273,7 +273,7 @@ func (vp *ValidationParser) checkPerformance(input *ValidationInput, config *Par
|
||||
|
||||
// validateScanMode 验证扫描模式
|
||||
func (vp *ValidationParser) validateScanMode(scanMode string) error {
|
||||
validModes := []string{"all", "main", "web", "db", "service", "top1000", "custom"}
|
||||
validModes := []string{"all", "main", "web", "db", "service", "top1000", "custom", "icmp"}
|
||||
|
||||
for _, mode := range validModes {
|
||||
if scanMode == mode {
|
||||
|
@ -24,7 +24,7 @@ type ScanStrategy interface {
|
||||
// selectStrategy 根据扫描配置选择适当的扫描策略
|
||||
func selectStrategy(info common.HostInfo) ScanStrategy {
|
||||
switch {
|
||||
case common.AliveOnly:
|
||||
case common.AliveOnly || common.ScanMode == "icmp":
|
||||
common.LogBase(i18n.GetText("scan_mode_alive_selected"))
|
||||
return NewAliveScanStrategy()
|
||||
case common.LocalMode:
|
||||
|
Loading…
Reference in New Issue
Block a user