mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-22 03:10:42 +08:00
refactor: 端口支持改为列表
This commit is contained in:
+30
-30
@@ -317,33 +317,33 @@ func ParseInput(Info *HostInfo) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// showmode 显示所有支持的扫描类型
|
||||
func showmode() {
|
||||
fmt.Println("[!] 指定的扫描类型不存在")
|
||||
fmt.Println("[*] 支持的扫描类型:")
|
||||
|
||||
// 显示常规服务扫描类型
|
||||
fmt.Println("\n[+] 常规服务扫描:")
|
||||
for name, plugin := range PluginManager {
|
||||
if plugin.Port > 0 && plugin.Port < 1000000 {
|
||||
fmt.Printf(" - %-10s (端口: %d)\n", name, plugin.Port)
|
||||
}
|
||||
}
|
||||
|
||||
// 显示特殊漏洞扫描类型
|
||||
fmt.Println("\n[+] 特殊漏洞扫描:")
|
||||
for name, plugin := range PluginManager {
|
||||
if plugin.Port >= 1000000 || plugin.Port == 0 {
|
||||
fmt.Printf(" - %-10s\n", name)
|
||||
}
|
||||
}
|
||||
|
||||
// 显示其他扫描类型
|
||||
fmt.Println("\n[+] 其他扫描类型:")
|
||||
specialTypes := []string{"all", "portscan", "icmp", "main", "webonly", "webpoc"}
|
||||
for _, name := range specialTypes {
|
||||
fmt.Printf(" - %s\n", name)
|
||||
}
|
||||
|
||||
os.Exit(0)
|
||||
}
|
||||
//// showmode 显示所有支持的扫描类型
|
||||
//func showmode() {
|
||||
// fmt.Println("[!] 指定的扫描类型不存在")
|
||||
// fmt.Println("[*] 支持的扫描类型:")
|
||||
//
|
||||
// // 显示常规服务扫描类型
|
||||
// fmt.Println("\n[+] 常规服务扫描:")
|
||||
// for name, plugin := range PluginManager {
|
||||
// if plugin.Port > 0 && plugin.Port < 1000000 {
|
||||
// fmt.Printf(" - %-10s (端口: %d)\n", name, plugin.Port)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 显示特殊漏洞扫描类型
|
||||
// fmt.Println("\n[+] 特殊漏洞扫描:")
|
||||
// for name, plugin := range PluginManager {
|
||||
// if plugin.Port >= 1000000 || plugin.Port == 0 {
|
||||
// fmt.Printf(" - %-10s\n", name)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 显示其他扫描类型
|
||||
// fmt.Println("\n[+] 其他扫描类型:")
|
||||
// specialTypes := []string{"all", "portscan", "icmp", "main", "webonly", "webpoc"}
|
||||
// for _, name := range specialTypes {
|
||||
// fmt.Printf(" - %s\n", name)
|
||||
// }
|
||||
//
|
||||
// os.Exit(0)
|
||||
//}
|
||||
|
||||
+17
-1
@@ -11,10 +11,26 @@ type HostInfo struct {
|
||||
// ScanPlugin 定义扫描插件的结构
|
||||
type ScanPlugin struct {
|
||||
Name string // 插件名称
|
||||
Port int // 关联的端口号,0表示特殊扫描类型
|
||||
Ports []int // 关联的端口列表,空切片表示特殊扫描类型
|
||||
ScanFunc func(*HostInfo) error // 扫描函数
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
// PluginManager 管理插件注册
|
||||
var PluginManager = make(map[string]ScanPlugin)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user