fscan/Common/ConfigScanOptions.go
ZacharyZcR 7077590bae 重构: 将Config.go拆分为模块化配置文件
优化目标:
- 解决单文件过大问题(970行 -> 4个模块文件)
- 提升代码可维护性和可读性
- 保持包的一致性和向后兼容性

拆分方案:
- Config.go (48行): 主配置文件,包含版本信息和基础配置
- ConfigServiceDict.go (65行): 服务认证字典和默认密码管理
- ConfigPortMapping.go (850行): 端口与探测器映射关系
- ConfigScanOptions.go (260行): 扫描相关的各种配置选项

技术优势:
- 模块化组织,职责分明
- 同包结构避免导入复杂性
- 完全向后兼容,现有代码无需修改
- 便于后续功能扩展和维护

为v2.0.2版本架构优化奠定基础
2025-08-05 01:06:07 +08:00

246 lines
6.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package Common
import "fmt"
// ConfigScanOptions.go - 扫描相关的各种配置和全局变量
// =========================================================
// 扫描目标配置
// =========================================================
var (
Ports string // 要扫描的端口列表,如"80,443,8080"
ExcludePorts string // 要排除的端口列表
ExcludeHosts string // 要排除的主机列表
AddPorts string // 额外添加的端口列表
HostPort []string // 主机:端口格式的目标列表
)
// =========================================================
// 认证与凭据配置
// =========================================================
var (
Username string // 用于认证的用户名
Password string // 用于认证的密码
AddUsers string // 额外添加的用户名列表
AddPasswords string // 额外添加的密码列表
// 特定服务认证
Domain string // Active Directory/SMB域名
HashValue string // 用于哈希认证的单个哈希值
HashValues []string // 哈希值列表
HashBytes [][]byte // 二进制格式的哈希值列表
HashFile string // 包含哈希值的文件路径
SshKeyPath string // SSH私钥文件路径
)
// =========================================================
// 扫描控制配置
// =========================================================
var (
ScanMode string // 扫描模式或指定的插件列表
ThreadNum int // 并发扫描线程数
ModuleThreadNum int // 模块内部线程数
Timeout int64 // 单个扫描操作超时时间(秒)
GlobalTimeout int64 // 整体扫描超时时间(秒)
LiveTop int // 显示的存活主机排名数量
DisablePing bool // 是否禁用主机存活性检测
UsePing bool // 是否使用ICMP Ping检测主机存活
EnableFingerprint bool // 是否启用服务指纹识别
LocalMode bool // 是否启用本地信息收集模式
)
// =========================================================
// 输入文件配置
// =========================================================
var (
HostsFile string // 包含目标主机的文件路径
UsersFile string // 包含用户名列表的文件路径
PasswordsFile string // 包含密码列表的文件路径
PortsFile string // 包含端口列表的文件路径
)
// =========================================================
// Web扫描配置
// =========================================================
var (
TargetURL string // 单个目标URL
URLsFile string // 包含URL列表的文件路径
URLs []string // 解析后的URL目标列表
WebTimeout int64 // Web请求超时时间(秒)默认5秒
HttpProxy string // HTTP代理地址
Socks5Proxy string // SOCKS5代理地址
)
// =========================================================
// POC与漏洞利用配置
// =========================================================
var (
// POC配置
PocPath string // POC脚本路径
Pocinfo PocInfo // POC详细信息结构
DisablePocScan bool // 是否禁用POC扫描
// Redis利用
RedisFile string // Redis利用目标文件
RedisShell string // Redis反弹Shell命令
DisableRedis bool // 是否禁用Redis利用测试
RedisWritePath string // Redis文件写入路径
RedisWriteContent string // Redis文件写入内容
RedisWriteFile string // Redis写入的源文件
// 其他漏洞利用
Shellcode string // 用于MS17010等漏洞利用的Shellcode
)
// =========================================================
// 暴力破解控制
// =========================================================
var (
DisableBrute bool // 是否禁用暴力破解模块
MaxRetries int // 连接失败最大重试次数
)
// =========================================================
// 输出与显示配置
// =========================================================
var (
DisableSave bool // 是否禁止保存扫描结果
Silent bool // 是否启用静默模式
NoColor bool // 是否禁用彩色输出
LogLevel string // 日志输出级别
ShowProgress bool // 是否显示进度条
ShowScanPlan bool // 是否显示扫描计划详情
SlowLogOutput bool // 是否启用慢速日志输出
Language string // 界面语言设置
)
// =========================================================
// 网络配置
// =========================================================
var (
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
DnsLog bool
PocNum int
PocFull bool
Cookie string
)
// =========================================================
// 配置管理函数
// =========================================================
// SetScanDefaults 设置扫描的默认值
func SetScanDefaults() {
if ThreadNum <= 0 {
ThreadNum = 600
}
if ModuleThreadNum <= 0 {
ModuleThreadNum = 10
}
if Timeout <= 0 {
Timeout = 3
}
if GlobalTimeout <= 0 {
GlobalTimeout = 300 // 5分钟
}
if WebTimeout <= 0 {
WebTimeout = 5
}
if MaxRetries <= 0 {
MaxRetries = 3
}
}
// ValidateConfig 验证配置的有效性
func ValidateConfig() error {
// 验证线程数
if ThreadNum > 2000 {
return fmt.Errorf("线程数不能超过2000")
}
// 验证超时设置
if Timeout > 60 {
return fmt.Errorf("单次扫描超时时间不能超过60秒")
}
if GlobalTimeout > 3600 {
return fmt.Errorf("全局超时时间不能超过1小时")
}
return nil
}
// ResetConfig 重置所有配置到默认值
func ResetConfig() {
// 重置扫描目标配置
Ports = ""
ExcludePorts = ""
ExcludeHosts = ""
AddPorts = ""
HostPort = nil
// 重置认证配置
Username = ""
Password = ""
AddUsers = ""
AddPasswords = ""
Domain = ""
HashValue = ""
HashValues = nil
HashBytes = nil
HashFile = ""
SshKeyPath = ""
// 重置扫描控制配置
ScanMode = ""
ThreadNum = 0
ModuleThreadNum = 0
Timeout = 0
GlobalTimeout = 0
LiveTop = 0
DisablePing = false
UsePing = false
EnableFingerprint = false
LocalMode = false
// 重置文件配置
HostsFile = ""
UsersFile = ""
PasswordsFile = ""
PortsFile = ""
// 重置暴力破解配置
DisableBrute = false
MaxRetries = 0
// 重置Web配置
TargetURL = ""
URLsFile = ""
URLs = nil
WebTimeout = 0
HttpProxy = ""
Socks5Proxy = ""
// 重置POC配置
PocPath = ""
Pocinfo = PocInfo{}
DisablePocScan = false
RedisFile = ""
RedisShell = ""
DisableRedis = false
RedisWritePath = ""
RedisWriteContent = ""
RedisWriteFile = ""
Shellcode = ""
// 重置输出配置
DisableSave = false
Silent = false
NoColor = false
LogLevel = ""
ShowProgress = false
ShowScanPlan = false
SlowLogOutput = false
Language = ""
}