refactor: 端口支持改为列表

This commit is contained in:
ZacharyZcR
2024-12-20 18:38:13 +08:00
parent 8f1c5dbae9
commit 375a1e4673
4 changed files with 73 additions and 57 deletions
+30 -30
View File
@@ -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
View File
@@ -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)