Common

package
v0.0.0-...-76277b0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2025 License: MIT Imports: 24 Imported by: 0

Documentation

Overview

Config/types.go

Index

Constants

View Source
const (
	LogLevelAll     = "ALL"     // 显示所有级别日志
	LogLevelError   = "ERROR"   // 仅显示错误日志
	LogLevelInfo    = "INFO"    // 仅显示信息日志
	LogLevelSuccess = "SUCCESS" // 仅显示成功日志
	LogLevelDebug   = "DEBUG"   // 仅显示调试日志
)

定义系统支持的日志级别常量

View Source
const (
	ModeAll      = "All"      // 全量扫描
	ModeBasic    = "Basic"    // 基础扫描
	ModeDatabase = "Database" // 数据库扫描
	ModeWeb      = "Web"      // Web扫描
	ModeService  = "Service"  // 服务扫描
	ModeVul      = "Vul"      // 漏洞扫描
	ModePort     = "Port"     // 端口扫描
	ModeICMP     = "ICMP"     // ICMP探测
	ModeLocal    = "Local"    // 本地信息收集
)

扫描模式常量 - 使用大写开头表示这是一个预设的扫描模式

View Source
const (
	LangZH = "zh" // 中文
	LangEN = "en" // 英文
	LangJA = "ja" // 日文
	LangRU = "ru" // 俄文
)

支持的语言类型

Variables

View Source
var (
	Outputfile   string // 输出文件路径
	OutputFormat string // 输出格式
)
View Source
var (
	// 目标配置
	Ports        string
	ExcludePorts string // 原NoPorts
	ExcludeHosts string
	AddPorts     string // 原PortAdd

	// 认证配置
	Username     string
	Password     string
	Domain       string
	SshKeyPath   string // 原SshKey
	AddUsers     string // 原UserAdd
	AddPasswords string // 原PassAdd

	// 扫描配置
	ScanMode  string // 原Scantype
	ThreadNum int    // 原Threads
	//UseSynScan      bool
	Timeout         int64 = 3
	LiveTop         int
	DisablePing     bool // 原NoPing
	UsePing         bool // 原Ping
	Command         string
	SkipFingerprint bool

	// 文件配置
	HostsFile     string // 原HostFile
	UsersFile     string // 原Userfile
	PasswordsFile string // 原Passfile
	HashFile      string // 原Hashfile
	PortsFile     string // 原PortFile

	// Web配置
	TargetURL   string   // 原URL
	URLsFile    string   // 原UrlFile
	URLs        []string // 原Urls
	WebTimeout  int64    = 5
	HttpProxy   string   // 原Proxy
	Socks5Proxy string

	LocalMode bool // -local 本地模式

	// POC配置
	DisablePocScan bool //nopoc
	PocPath        string
	Pocinfo        PocInfo

	// Redis配置
	RedisFile    string
	RedisShell   string
	DisableRedis bool // 原Noredistest

	// 爆破配置
	DisableBrute bool // 原IsBrute
	BruteThreads int  // 原BruteThread
	MaxRetries   int  // 最大重试次数

	// 其他配置
	RemotePath string   // 原Path
	HashValue  string   // 原Hash
	HashValues []string // 原Hashs
	HashBytes  [][]byte
	HostPort   []string
	Shellcode  string // 原SC
	EnableWmi  bool   // 原IsWmi

	// 输出配置
	DisableSave  bool   // 禁止保存结果
	Silent       bool   // 静默模式
	NoColor      bool   // 禁用彩色输出
	JsonFormat   bool   // JSON格式输出
	LogLevel     string // 日志输出级别
	ShowProgress bool   // 是否显示进度条

	Language string // 语言
)
View Source
var (
	UserAgent  = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
	Accept     = "" /* 135-byte string literal not displayed */
	DnsLog     bool
	PocNum     int
	PocFull    bool
	CeyeDomain string
	ApiKey     string
	Cookie     string
)
View Source
var (

	// Num 表示待处理的总任务数量
	Num int64
	// End 表示已经完成的任务数量
	End int64
)

全局变量定义

View Source
var AllPorts = "1-65535"
View Source
var DbPorts = "1433,1521,3306,5432,5672,6379,7687,9042,9093,9200,11211,27017,61616"
View Source
var DefaultMap = []string{
	"GenericLines",
	"GetRequest",
	"TLSSessionReq",
	"SSLSessionReq",
	"ms-sql-s",
	"JavaRMI",
	"LDAPSearchReq",
	"LDAPBindReq",
	"oracle-tns",
	"Socks5",
}
View Source
var MainPorts = "" /* 178-byte string literal not displayed */
View Source
var OutputMutex sync.Mutex

添加一个全局互斥锁来控制输出

View Source
var ParseIPErr = errors.New(GetText("parse_ip_error"))
View Source
var Passwords = []string{"123456", "admin", "admin123", "root", "", "pass123", "pass@123", "password", "Password", "P@ssword123", "123123", "654321", "111111", "123", "1", "admin@123", "Admin@123", "admin123!@#", "{user}", "{user}1", "{user}111", "{user}123", "{user}@123", "{user}_123", "{user}#123", "{user}@111", "{user}@2019", "{user}@123#4", "P@ssw0rd!", "P@ssw0rd", "Passw0rd", "qwe123", "12345678", "test", "test123", "123qwe", "123qwe!@#", "123456789", "123321", "666666", "a123456.", "123456~a", "123456!a", "000000", "1234567890", "8888888", "!QAZ2wsx", "1qaz2wsx", "abc123", "abc123456", "1qaz@WSX", "a11111", "a12345", "Aa1234", "Aa1234.", "Aa12345", "a123456", "a123123", "Aa123123", "Aa123456", "Aa12345.", "sysadmin", "system", "1qaz!QAZ", "2wsx@WSX", "qwe123!@#", "Aa123456!", "A123456s!", "sa123456", "1q2w3e", "Charge123", "Aa123456789", "elastic123"}
View Source
var PluginGroups = map[string][]string{
	ModeAll: {
		"webtitle", "webpoc",
		"mysql", "mssql", "redis", "mongodb", "postgres",
		"oracle", "memcached", "elasticsearch", "rabbitmq", "kafka", "activemq", "cassandra", "neo4j",
		"ftp", "ssh", "telnet", "smb", "rdp", "vnc", "netbios", "ldap", "smtp", "imap", "pop3", "snmp", "modbus", "rsync",
		"ms17010", "smbghost", "smb2",
		"findnet",
	},
	ModeBasic: {
		"webtitle", "ftp", "ssh", "smb", "findnet",
	},
	ModeDatabase: {
		"mysql", "mssql", "redis", "mongodb",
		"postgres", "oracle", "memcached", "elasticsearch", "rabbitmq", "kafka", "activemq", "cassandra", "neo4j",
	},
	ModeWeb: {
		"webtitle", "webpoc",
	},
	ModeService: {
		"ftp", "ssh", "telnet", "smb", "rdp", "vnc", "netbios", "ldap", "smtp", "imap", "pop3", "modbus", "rsync",
	},
	ModeVul: {
		"ms17010", "smbghost", "smb2",
	},
	ModeLocal: {
		"localinfo", "minidump", "dcinfo",
	},
}

插件分类映射表 - 所有插件名使用小写

View Source
var PluginManager = make(map[string]ScanPlugin)

PluginManager 管理插件注册

View Source
var PortMap = map[int][]string{}/* 798 elements not displayed */
View Source
var ProgressBar *progressbar.ProgressBar

添加一个全局的进度条变量

View Source
var ServicePorts = "" /* 189-byte string literal not displayed */
View Source
var Userdict = map[string][]string{
	"ftp":        {"ftp", "admin", "www", "web", "root", "db", "wwwroot", "data"},
	"mysql":      {"root", "mysql"},
	"mssql":      {"sa", "sql"},
	"smb":        {"administrator", "admin", "guest"},
	"rdp":        {"administrator", "admin", "guest"},
	"postgresql": {"postgres", "admin"},
	"ssh":        {"root", "admin"},
	"mongodb":    {"root", "admin"},
	"oracle":     {"sys", "system", "admin", "test", "web", "orcl"},
	"telnet":     {"root", "admin", "test"},
	"elastic":    {"elastic", "admin", "kibana"},
	"rabbitmq":   {"guest", "admin", "administrator", "rabbit", "rabbitmq", "root"},
	"kafka":      {"admin", "kafka", "root", "test"},
	"activemq":   {"admin", "root", "activemq", "system", "user"},
	"ldap":       {"admin", "administrator", "root", "cn=admin", "cn=administrator", "cn=manager"},
	"smtp":       {"admin", "root", "postmaster", "mail", "smtp", "administrator"},
	"imap":       {"admin", "mail", "postmaster", "root", "user", "test"},
	"pop3":       {"admin", "root", "mail", "user", "test", "postmaster"},
	"zabbix":     {"Admin", "admin", "guest", "user"},
	"rsync":      {"rsync", "root", "admin", "backup"},
	"cassandra":  {"cassandra", "admin", "root", "system"},
	"neo4j":      {"neo4j", "admin", "root", "test"},
}
View Source
var WebPorts = "" /* 1044-byte string literal not displayed */

Functions

func Banner()

func CheckErrs

func CheckErrs(err error) error

CheckErrs 检查是否为需要重试的错误

func CloseOutput

func CloseOutput() error

CloseOutput 关闭输出系统

func Flag

func Flag(Info *HostInfo)

func GetPluginsForMode

func GetPluginsForMode(mode string) []string

GetPluginsForMode 获取指定模式下的插件列表

func GetScanMode

func GetScanMode() string

func GetText

func GetText(key string, args ...interface{}) string

GetText 获取指定key的当前语言文本

func IPRange

func IPRange(c *net.IPNet) string

IPRange 计算CIDR的起始IP和结束IP

func InitLogger

func InitLogger()

InitLogger 初始化日志系统

func InitOutput

func InitOutput() error

InitOutput 初始化输出系统

func IsICMPScan

func IsICMPScan() bool

func IsPortScan

func IsPortScan() bool

辅助函数

func IsWebScan

func IsWebScan() bool

func LogDebug

func LogDebug(msg string)

LogDebug 记录调试日志

func LogError

func LogError(errMsg string)

LogError 记录错误日志,自动包含文件名和行号信息

func LogInfo

func LogInfo(msg string)

LogInfo 记录信息日志

func LogSuccess

func LogSuccess(result string)

LogSuccess 记录成功日志,并更新最后成功时间

func Parse

func Parse(Info *HostInfo) error

func ParseIP

func ParseIP(host string, filename string, nohosts ...string) (hosts []string, err error)

ParseIP 解析IP地址配置

func ParseIPs

func ParseIPs(ip string) (hosts []string)

func ParseInput

func ParseInput(Info *HostInfo) error

ParseInput 解析和验证输入参数配置

func ParsePass

func ParsePass(Info *HostInfo) error

ParsePass 解析密码、哈希值、URL和端口配置

func ParsePort

func ParsePort(ports string) []int

ParsePort 解析端口配置字符串为端口号列表

func ParsePortsFromString

func ParsePortsFromString(portsStr string) []int

func ParseScanMode

func ParseScanMode(mode string)

ParseScanMode 解析扫描模式

func ParseUser

func ParseUser() error

ParseUser 解析用户名配置

func RandInt

func RandInt(min, max int) int

RandInt 生成指定范围内的随机整数

func Readfile

func Readfile(filename string) ([]string, error)

Readfile 读取文件内容并返回非空行的切片

func Readipfile

func Readipfile(filename string) ([]string, error)

Readipfile 从文件中按行读取IP地址

func RegisterPlugin

func RegisterPlugin(name string, plugin ScanPlugin)

RegisterPlugin 注册插件

func RemoveDuplicate

func RemoveDuplicate(old []string) []string

RemoveDuplicate 对字符串切片进行去重

func SaveResult

func SaveResult(result *ScanResult) error

SaveResult 保存扫描结果

func SetLanguage

func SetLanguage()

func Socks5Dialer

func Socks5Dialer(forward *net.Dialer) (proxy.Dialer, error)

Socks5Dialer 创建Socks5代理拨号器

func WrapperTCP

func WrapperTCP(network, address string, forward *net.Dialer) (net.Conn, error)

WrapperTCP 根据配置创建TCP连接

func WrapperTcpWithTimeout

func WrapperTcpWithTimeout(network, address string, timeout time.Duration) (net.Conn, error)

WrapperTcpWithTimeout 创建一个带超时的TCP连接

Types

type HostInfo

type HostInfo struct {
	Host    string
	Ports   string
	Url     string
	Infostr []string
}

type LogEntry

type LogEntry struct {
	Level   string    // 日志级别: ERROR/INFO/SUCCESS/DEBUG
	Time    time.Time // 日志时间
	Content string    // 日志内容
}

LogEntry 定义单条日志的结构

type OutputManager

type OutputManager struct {
	// contains filtered or unexported fields
}

OutputManager 输出管理器结构体

var ResultOutput *OutputManager

全局输出管理器

type PocInfo

type PocInfo struct {
	Target  string
	PocName string
}

type ResultType

type ResultType string

ResultType 定义结果类型

const (
	HOST    ResultType = "HOST"    // 主机存活
	PORT    ResultType = "PORT"    // 端口开放
	SERVICE ResultType = "SERVICE" // 服务识别
	VULN    ResultType = "VULN"    // 漏洞发现
)

type ScanPlugin

type ScanPlugin struct {
	Name     string                // 插件名称
	Ports    []int                 // 关联的端口列表,空切片表示特殊扫描类型
	ScanFunc func(*HostInfo) error // 扫描函数
}

ScanPlugin 定义扫描插件的结构

func (*ScanPlugin) HasPort

func (p *ScanPlugin) HasPort(port int) bool

HasPort 检查插件是否支持指定端口

type ScanResult

type ScanResult struct {
	Time    time.Time              `json:"time"`    // 发现时间
	Type    ResultType             `json:"type"`    // 结果类型
	Target  string                 `json:"target"`  // 目标(IP/域名/URL)
	Status  string                 `json:"status"`  // 状态描述
	Details map[string]interface{} `json:"details"` // 详细信息
}

ScanResult 扫描结果结构

type ScanStatus

type ScanStatus struct {
	// contains filtered or unexported fields
}

ScanStatus 用于记录和管理扫描状态的结构体

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL