From 2e9321837f3525321e51eac7272a996d832c8f18 Mon Sep 17 00:00:00 2001 From: ZacharyZcR Date: Tue, 12 May 2026 15:29:08 +0800 Subject: [PATCH] feat: add -ntp flag to disable TCP supplementary probe --- common/config_struct.go | 2 ++ common/flag.go | 1 + common/flag_config.go | 2 ++ common/i18n/locales/en.yaml | 2 ++ common/i18n/locales/zh.yaml | 2 ++ core/icmp.go | 4 ++++ 6 files changed, 13 insertions(+) diff --git a/common/config_struct.go b/common/config_struct.go index 1e171e6..9be2534 100644 --- a/common/config_struct.go +++ b/common/config_struct.go @@ -27,6 +27,7 @@ type Config struct { ModuleThreadNum int // 模块线程数 DisableBrute bool // 禁用暴力破解 DisablePing bool // 禁用Ping检测 + DisableTcpProbe bool // 禁用TCP补充探测 // 扫描模式 Mode string // 扫描模式 @@ -147,6 +148,7 @@ func NewConfig() *Config { ModuleThreadNum: 10, DisableBrute: false, DisablePing: false, + DisableTcpProbe: false, // 扫描模式 Mode: DefaultScanMode, diff --git a/common/flag.go b/common/flag.go index c5951a7..94406fc 100644 --- a/common/flag.go +++ b/common/flag.go @@ -109,6 +109,7 @@ func Flag(Info *HostInfo) error { flag.IntVar(&fv.ModuleThreadNum, "mt", 20, i18n.GetText("flag_module_thread_num")) flag.Int64Var(&fv.GlobalTimeout, "gt", 180, i18n.GetText("flag_global_timeout")) flag.BoolVar(&fv.DisablePing, "np", false, i18n.GetText("flag_disable_ping")) + flag.BoolVar(&fv.DisableTcpProbe, "ntp", false, i18n.GetText("flag_disable_tcp_probe")) flag.StringVar(&fv.LocalPlugin, "local", "", "指定本地插件名称 (如: cleaner, avdetect, keylogger 等)") flag.BoolVar(&fv.AliveOnly, "ao", false, i18n.GetText("flag_alive_only")) diff --git a/common/flag_config.go b/common/flag_config.go index 92273ed..b4326c6 100644 --- a/common/flag_config.go +++ b/common/flag_config.go @@ -36,6 +36,7 @@ type FlagVars struct { TimeoutSec int64 // 秒,需转换为 time.Duration GlobalTimeout int64 DisablePing bool + DisableTcpProbe bool LocalPlugin string AliveOnly bool DisableBrute bool @@ -137,6 +138,7 @@ func BuildConfigFromFlags(fv *FlagVars) *Config { ModuleThreadNum: fv.ModuleThreadNum, DisableBrute: fv.DisableBrute, DisablePing: fv.DisablePing, + DisableTcpProbe: fv.DisableTcpProbe, // 扫描模式 Mode: fv.ScanMode, diff --git a/common/i18n/locales/en.yaml b/common/i18n/locales/en.yaml index 1693ff6..d506fcc 100644 --- a/common/i18n/locales/en.yaml +++ b/common/i18n/locales/en.yaml @@ -28,6 +28,8 @@ flag_global_timeout: other: "Global timeout" flag_disable_ping: other: "Disable ping detection" +flag_disable_tcp_probe: + other: "Disable TCP supplementary probe" flag_alive_only: other: "Alive detection only" flag_username: diff --git a/common/i18n/locales/zh.yaml b/common/i18n/locales/zh.yaml index 8cfb08e..0941474 100644 --- a/common/i18n/locales/zh.yaml +++ b/common/i18n/locales/zh.yaml @@ -28,6 +28,8 @@ flag_global_timeout: other: "全局超时时间" flag_disable_ping: other: "禁用ping探测" +flag_disable_tcp_probe: + other: "禁用TCP补充探测" flag_alive_only: other: "仅进行存活探测" flag_username: diff --git a/core/icmp.go b/core/icmp.go index 554854e..c4c18a2 100644 --- a/core/icmp.go +++ b/core/icmp.go @@ -82,6 +82,10 @@ func CheckLive(ctx context.Context, hostslist []string, Ping bool, session *comm // tcpSupplementaryProbe TCP 补充探测 // 当 ICMP 响应率过低时(<10%),对未响应主机进行 TCP 探测 func tcpSupplementaryProbe(ctx context.Context, allHosts []string, aliveHosts []string, session *common.ScanSession) []string { + if session.Config.DisableTcpProbe { + return aliveHosts + } + totalHosts := len(allHosts) if totalHosts == 0 { return aliveHosts