fscan/adapters
ZacharyZcR b2b2c4a215 refactor: 统一插件分类系统,修复FindNet执行问题
- 修复FindNet插件分类从information改为service,解决不在服务扫描阶段执行的问题
- 统一所有插件分类为标准的三种类型:service、web、local
- 将vulnerability类型插件(smbghost、ms17010)重分类为service
- 将information类型插件(netbios、findnet)重分类为service
- 确保所有网络服务端口扫描插件都在服务扫描阶段正确执行
- 保持插件功能不变,仅调整分类以符合新架构要求

测试验证:FindNet现已能正确在135端口扫描时显示网络接口信息
2025-08-09 17:31:40 +08:00
..
legacy_plugins refactor: 统一插件分类系统,修复FindNet执行问题 2025-08-09 17:31:40 +08:00
legacy_plugin.go refactor: 重新组织插件架构,分离老版本插件和适配器 2025-08-09 16:24:26 +08:00
README.md refactor: 重新组织插件架构,分离老版本插件和适配器 2025-08-09 16:24:26 +08:00

Adapters Directory

这个目录包含了各种适配器实现,用于将不同架构的代码无缝集成到新的插件系统中。

目录结构

adapters/
├── README.md                 # 本文档
├── legacy_plugin.go          # 老版本插件适配器框架
└── legacy_plugins/           # 老版本插件适配器实现
    ├── README.md             # 老版本插件适配器说明
    ├── ms17010/              # MS17010漏洞检测适配器
    ├── smbghost/             # SMBGhost漏洞检测适配器
    ├── smb/                  # SMB服务检测适配器
    ├── smb2/                 # SMB2服务检测适配器
    ├── rdp/                  # RDP服务检测适配器
    ├── netbios/              # NetBIOS信息收集适配器
    └── elasticsearch/        # Elasticsearch服务检测适配器

设计原则

1. 分离关注点

  • plugins/: 存放原始的老版本插件代码,保持不变
  • plugins/services/: 存放新架构的服务插件
  • adapters/: 存放各种适配器,实现不同架构间的桥接

2. 零侵入性

  • 老版本插件代码完全不需要修改
  • 通过适配器模式实现无缝集成
  • 保持原有功能和行为不变

3. 统一管理

  • 所有插件(新架构 + 适配器)通过统一的插件注册表管理
  • 提供一致的调用接口和结果格式
  • 支持统一的配置和控制机制

适配器类型

LegacyPlugin适配器

将老版本插件函数适配为新架构的Plugin接口

// 老版本插件函数
func PluginFunc(*common.HostInfo) error

// 通过适配器转换为
type Plugin interface {
    Scanner
    Exploiter
    // ...其他接口方法
}

扩展方式

如需添加新的适配器类型:

  1. 在此目录创建对应的适配器框架文件
  2. 在子目录中实现具体的适配器插件
  3. 在 core/Registry.go 中注册适配器插件
  4. 更新相关文档

使用示例

适配器插件会自动注册,使用方式与标准插件相同:

# 使用老版本插件(通过适配器)
fscan -h target -m ms17010,smb2

# 混合使用新旧插件
fscan -h target -m mysql,redis,ms17010

适配器确保了新旧插件的完全兼容性和统一体验。