mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-24 12:11:52 +08:00
refacor: 结构化修改
This commit is contained in:
+1
-2
@@ -2,7 +2,6 @@ package Common
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"github.com/shadow1ng/fscan/Config"
|
||||
)
|
||||
|
||||
func Banner() {
|
||||
@@ -17,7 +16,7 @@ func Banner() {
|
||||
print(banner)
|
||||
}
|
||||
|
||||
func Flag(Info *Config.HostInfo) {
|
||||
func Flag(Info *HostInfo) {
|
||||
Banner()
|
||||
|
||||
// 目标配置
|
||||
|
||||
+7
-8
@@ -5,14 +5,13 @@ import (
|
||||
"encoding/hex"
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/shadow1ng/fscan/Config"
|
||||
"net/url"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func Parse(Info *Config.HostInfo) {
|
||||
func Parse(Info *HostInfo) {
|
||||
ParseUser()
|
||||
ParsePass(Info)
|
||||
ParseInput(Info)
|
||||
@@ -63,7 +62,7 @@ func ParseUser() error {
|
||||
}
|
||||
|
||||
// ParsePass 解析密码、哈希值、URL和端口配置
|
||||
func ParsePass(Info *Config.HostInfo) error {
|
||||
func ParsePass(Info *HostInfo) error {
|
||||
// 处理直接指定的密码列表
|
||||
var pwdList []string
|
||||
if Password != "" {
|
||||
@@ -204,7 +203,7 @@ func Readfile(filename string) ([]string, error) {
|
||||
}
|
||||
|
||||
// ParseInput 解析和验证输入参数配置
|
||||
func ParseInput(Info *Config.HostInfo) error {
|
||||
func ParseInput(Info *HostInfo) error {
|
||||
// 检查必要的目标参数
|
||||
if Info.Host == "" && HostFile == "" && URL == "" && UrlFile == "" {
|
||||
fmt.Println("[!] 未指定扫描目标")
|
||||
@@ -321,7 +320,7 @@ func ParseInput(Info *Config.HostInfo) error {
|
||||
}
|
||||
|
||||
// ParseScantype 解析扫描类型并设置对应的端口
|
||||
func ParseScantype(Info *Config.HostInfo) error {
|
||||
func ParseScantype(Info *HostInfo) error {
|
||||
// 先处理特殊扫描类型
|
||||
specialTypes := map[string]string{
|
||||
"hostname": "135,137,139,445",
|
||||
@@ -344,7 +343,7 @@ func ParseScantype(Info *Config.HostInfo) error {
|
||||
}
|
||||
|
||||
// 检查是否是注册的插件类型
|
||||
plugin, validType := Config.PluginManager[Scantype]
|
||||
plugin, validType := PluginManager[Scantype]
|
||||
if !validType {
|
||||
showmode()
|
||||
return fmt.Errorf("无效的扫描类型: %s", Scantype)
|
||||
@@ -368,7 +367,7 @@ func showmode() {
|
||||
|
||||
// 显示常规服务扫描类型
|
||||
fmt.Println("\n[+] 常规服务扫描:")
|
||||
for name, plugin := range Config.PluginManager {
|
||||
for name, plugin := range PluginManager {
|
||||
if plugin.Port > 0 && plugin.Port < 1000000 {
|
||||
fmt.Printf(" - %-10s (端口: %d)\n", name, plugin.Port)
|
||||
}
|
||||
@@ -376,7 +375,7 @@ func showmode() {
|
||||
|
||||
// 显示特殊漏洞扫描类型
|
||||
fmt.Println("\n[+] 特殊漏洞扫描:")
|
||||
for name, plugin := range Config.PluginManager {
|
||||
for name, plugin := range PluginManager {
|
||||
if plugin.Port >= 1000000 || plugin.Port == 0 {
|
||||
fmt.Printf(" - %-10s\n", name)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
// Config/types.go
|
||||
package Common
|
||||
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user