mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-11-05 10:45:27 +00:00
89 lines
1.8 KiB
Markdown
89 lines
1.8 KiB
Markdown
|
|
# FScan 插件开发指南
|
|||
|
|
|
|||
|
|
## 1. 创建插件
|
|||
|
|
在 `Plugins` 目录下创建你的插件文件,例如 `myPlugin.go`:
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
package Plugins
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"github.com/shadow1ng/fscan/Common"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
func MyPluginScan(info *Common.HostInfo) error {
|
|||
|
|
// 1. 基础检查
|
|||
|
|
if info == nil {
|
|||
|
|
return errors.New("Invalid host info")
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 2. 实现扫描逻辑
|
|||
|
|
result, err := doScan(info)
|
|||
|
|
if err != nil {
|
|||
|
|
return err
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 3. 处理结果
|
|||
|
|
if result.Vulnerable {
|
|||
|
|
Common.LogSuccess(fmt.Sprintf("[+] Found vulnerability in %s:%d", info.Host, info.Port))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return nil
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 2. 注册插件
|
|||
|
|
在 `Core/Registry.go` 中注册你的插件:
|
|||
|
|
|
|||
|
|
```go
|
|||
|
|
Common.RegisterPlugin("myplugin", Common.ScanPlugin{
|
|||
|
|
Name: "MyPlugin",
|
|||
|
|
Port: 12345, // 指定端口,如果是web类插件可设为0
|
|||
|
|
ScanFunc: Plugins.MyPluginScan,
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. 开发规范
|
|||
|
|
|
|||
|
|
### 插件结构
|
|||
|
|
- 每个插件应当是独立的功能模块
|
|||
|
|
- 使用清晰的函数名和变量名
|
|||
|
|
- 添加必要的注释说明功能和实现逻辑
|
|||
|
|
|
|||
|
|
### 错误处理
|
|||
|
|
```go
|
|||
|
|
// 推荐的错误处理方式
|
|||
|
|
if err != nil {
|
|||
|
|
return fmt.Errorf("plugin_name scan error: %v", err)
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 日志输出
|
|||
|
|
```go
|
|||
|
|
// 使用内置的日志函数
|
|||
|
|
Common.LogSuccess("发现漏洞")
|
|||
|
|
Common.LogError("扫描错误")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 4. 测试验证
|
|||
|
|
|
|||
|
|
- 编译整个项目确保无错误
|
|||
|
|
- 实际环境测试插件功能
|
|||
|
|
- 验证与其他插件的兼容性
|
|||
|
|
|
|||
|
|
## 5. 提交流程
|
|||
|
|
|
|||
|
|
1. Fork 项目仓库
|
|||
|
|
2. 创建功能分支
|
|||
|
|
3. 提交代码更改
|
|||
|
|
4. 编写清晰的提交信息
|
|||
|
|
5. 创建 Pull Request
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
- 遵循 Go 编码规范
|
|||
|
|
- 保证代码可读性和可维护性
|
|||
|
|
- 禁止提交恶意代码
|
|||
|
|
- 做好异常处理和超时控制
|
|||
|
|
- 避免过度消耗系统资源
|
|||
|
|
- 注意信息安全,不要泄露敏感数据
|