refactor: 重构映射

This commit is contained in:
ZacharyZcR 2024-12-18 21:55:39 +08:00
parent f35a259f11
commit cae98e7d90
3 changed files with 151 additions and 23 deletions

24
Config/Types.go Normal file
View File

@ -0,0 +1,24 @@
// Config/types.go
package Config
type HostInfo struct {
Host string
Ports string
Url string
Infostr []string
}
// ScanPlugin 定义扫描插件的结构
type ScanPlugin struct {
Name string // 插件名称
Port int // 关联的端口号0表示特殊扫描类型
ScanFunc func(*HostInfo) error // 扫描函数
}
// PluginManager 管理插件注册
var PluginManager = make(map[string]ScanPlugin)
// RegisterPlugin 注册插件
func RegisterPlugin(name string, plugin ScanPlugin) {
PluginManager[name] = plugin
}

View File

@ -8,29 +8,6 @@ import (
"net"
)
var PluginList = map[string]interface{}{
"21": FtpScan,
"22": SshScan,
"135": Findnet,
"139": NetBIOS,
"445": SmbScan,
"1433": MssqlScan,
"1521": OracleScan,
"3306": MysqlScan,
"3389": RdpScan,
"5432": PostgresScan,
"6379": RedisScan,
"9000": FcgiScan,
"11211": MemcachedScan,
"27017": MongodbScan,
"1000001": MS17010,
"1000002": SmbGhost,
"1000003": WebTitle,
"1000004": SmbScan2,
"1000005": WmiExec,
"1000006": LocalInfoScan,
}
func ReadBytes(conn net.Conn) (result []byte, err error) {
size := 4096
buf := make([]byte, size)

127
Plugins/Registry.go Normal file
View File

@ -0,0 +1,127 @@
package Plugins
import "github.com/shadow1ng/fscan/Config"
func init() {
// 注册标准端口服务扫描
Config.RegisterPlugin("ftp", Config.ScanPlugin{
Name: "FTP",
Port: 21,
ScanFunc: FtpScan,
})
Config.RegisterPlugin("ssh", Config.ScanPlugin{
Name: "SSH",
Port: 22,
ScanFunc: SshScan,
})
Config.RegisterPlugin("findnet", Config.ScanPlugin{
Name: "FindNet",
Port: 135,
ScanFunc: Findnet,
})
Config.RegisterPlugin("netbios", Config.ScanPlugin{
Name: "NetBIOS",
Port: 139,
ScanFunc: NetBIOS,
})
Config.RegisterPlugin("smb", Config.ScanPlugin{
Name: "SMB",
Port: 445,
ScanFunc: SmbScan,
})
Config.RegisterPlugin("mssql", Config.ScanPlugin{
Name: "MSSQL",
Port: 1433,
ScanFunc: MssqlScan,
})
Config.RegisterPlugin("oracle", Config.ScanPlugin{
Name: "Oracle",
Port: 1521,
ScanFunc: OracleScan,
})
Config.RegisterPlugin("mysql", Config.ScanPlugin{
Name: "MySQL",
Port: 3306,
ScanFunc: MysqlScan,
})
Config.RegisterPlugin("rdp", Config.ScanPlugin{
Name: "RDP",
Port: 3389,
ScanFunc: RdpScan,
})
Config.RegisterPlugin("postgres", Config.ScanPlugin{
Name: "PostgreSQL",
Port: 5432,
ScanFunc: PostgresScan,
})
Config.RegisterPlugin("redis", Config.ScanPlugin{
Name: "Redis",
Port: 6379,
ScanFunc: RedisScan,
})
Config.RegisterPlugin("fcgi", Config.ScanPlugin{
Name: "FastCGI",
Port: 9000,
ScanFunc: FcgiScan,
})
Config.RegisterPlugin("memcached", Config.ScanPlugin{
Name: "Memcached",
Port: 11211,
ScanFunc: MemcachedScan,
})
Config.RegisterPlugin("mongodb", Config.ScanPlugin{
Name: "MongoDB",
Port: 27017,
ScanFunc: MongodbScan,
})
// 注册特殊扫描类型
Config.RegisterPlugin("ms17010", Config.ScanPlugin{
Name: "MS17010",
Port: 445,
ScanFunc: MS17010,
})
Config.RegisterPlugin("smbghost", Config.ScanPlugin{
Name: "SMBGhost",
Port: 445,
ScanFunc: SmbGhost,
})
Config.RegisterPlugin("web", Config.ScanPlugin{
Name: "WebTitle",
Port: 0,
ScanFunc: WebTitle,
})
Config.RegisterPlugin("smb2", Config.ScanPlugin{
Name: "SMBScan2",
Port: 445,
ScanFunc: SmbScan2,
})
Config.RegisterPlugin("wmiexec", Config.ScanPlugin{
Name: "WMIExec",
Port: 135,
ScanFunc: WmiExec,
})
Config.RegisterPlugin("localinfo", Config.ScanPlugin{
Name: "LocalInfo",
Port: 0,
ScanFunc: LocalInfoScan,
})
}