mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 14:06:44 +08:00

主要修复: 1. 修复时间显示Bug - StartTime初始化问题 2. 修复Web智能探测错误检测预定义端口而非用户指定端口 3. 修复本地插件被错误调用到端口扫描中的问题 4. 修复host:port格式双重处理导致的多余端口扫描 5. 统一插件过滤逻辑,消除接口不一致性 6. 优化Web检测缓存机制,减少重复HTTP请求 技术改进: - 重构插件适用性检查逻辑,确保策略过滤器正确工作 - 区分Web检测的自动发现模式和用户指定端口模式 - 在解析阶段正确处理host:port格式,避免与默认端口冲突 - 完善缓存机制,提升性能 测试验证: - ./fscan -h 127.0.0.1:3306 现在只检测3306端口 - 本地插件不再参与端口扫描 - Web检测只对指定端口进行协议检测 - 时间显示正确
54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package common
|
|
|
|
/*
|
|
types.go - 核心数据结构
|
|
|
|
保留真正使用的数据结构,去掉无用的插件管理器。
|
|
*/
|
|
|
|
// HostInfo 主机信息结构 - 最核心的数据结构
|
|
type HostInfo struct {
|
|
Host string // 主机地址
|
|
Ports string // 端口范围
|
|
Url string // URL地址
|
|
Infostr []string // 附加信息
|
|
}
|
|
|
|
// ScanPlugin 扫描插件结构 - 简化版
|
|
type ScanPlugin struct {
|
|
Name string // 插件名称
|
|
Version string // 插件版本
|
|
Description string // 插件描述
|
|
Author string // 插件作者
|
|
Ports []int // 适用端口
|
|
Types []string // 插件类型标签,一个插件可以有多个类型
|
|
Priority int // 插件优先级(数字越小优先级越高)
|
|
Enabled bool // 是否启用
|
|
ScanFunc func(*HostInfo) error // 扫描函数
|
|
}
|
|
|
|
// HasType 检查插件是否具有指定类型
|
|
func (p *ScanPlugin) HasType(typeName string) bool {
|
|
for _, t := range p.Types {
|
|
if t == typeName {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// HasPort 检查插件是否支持指定端口
|
|
func (p *ScanPlugin) HasPort(port int) bool {
|
|
// 如果没有指定端口列表,表示支持所有端口
|
|
if len(p.Ports) == 0 {
|
|
return true
|
|
}
|
|
|
|
// 检查端口是否在支持列表中
|
|
for _, supportedPort := range p.Ports {
|
|
if port == supportedPort {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
} |