package parsers import ( "regexp" "time" ) /* constants.go - 解析器系统常量定义 统一管理common/parsers包中的所有常量,便于查看和编辑。 */ // ============================================================================= // 默认解析器选项常量 (从Types.go迁移) // ============================================================================= const ( // 解析器默认配置 DefaultEnableConcurrency = true DefaultMaxWorkers = 4 DefaultTimeout = 30 * time.Second DefaultEnableValidation = true DefaultEnableStatistics = true DefaultIgnoreErrors = false DefaultFileMaxSize = 100 * 1024 * 1024 // 100MB DefaultMaxTargets = 10000 // 10K targets ) // ============================================================================= // 文件读取器常量 (从FileReader.go迁移) // ============================================================================= const ( // 文件读取器默认配置 DefaultMaxCacheSize = 10 DefaultEnableCache = true DefaultFileReaderMaxFileSize = 50 * 1024 * 1024 // 50MB DefaultFileReaderTimeout = 30 * time.Second DefaultFileReaderEnableValidation = true DefaultTrimSpace = true DefaultSkipEmpty = true DefaultSkipComments = true // 文件内容验证 MaxLineLength = 1000 // 单行最大字符数 MaxValidRune = 32 // 最小有效字符ASCII值 TabRune = 9 // Tab字符 NewlineRune = 10 // 换行符 CarriageReturnRune = 13 // 回车符 CommentPrefix = "#" // 注释前缀 ) // ============================================================================= // 凭据解析器常量 (从CredentialParser.go迁移) // ============================================================================= const ( // 凭据验证限制 DefaultMaxUsernameLength = 64 DefaultMaxPasswordLength = 128 DefaultAllowEmptyPasswords = true DefaultValidateHashes = true DefaultDeduplicateUsers = true DefaultDeduplicatePasswords = true DefaultCredentialsEnableStatistics = true // 哈希验证 HashRegexPattern = `^[a-fA-F0-9]{32}$` // MD5哈希正则表达式 HashValidationLength = 32 // 有效哈希长度 InvalidUsernameChars = "\r\n\t" // 无效用户名字符 ) // ============================================================================= // 网络解析器常量 (从NetworkParser.go迁移) // ============================================================================= const ( // 网络配置默认值 DefaultValidateProxies = true DefaultAllowInsecure = false DefaultNetworkTimeout = 30 * time.Second DefaultWebTimeout = 10 * time.Second DefaultUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36" // 超时限制 MaxTimeoutSeconds = 300 // 最大超时5分钟 MaxWebTimeoutSeconds = 120 // 最大Web超时2分钟 // 字符串长度限制 MaxUserAgentLength = 512 // 最大用户代理长度 MaxCookieLength = 4096 // 最大Cookie长度 // 代理快捷配置 ProxyShortcut1 = "1" ProxyShortcut2 = "2" ProxyShortcutHTTP = "http://127.0.0.1:8080" ProxyShortcutSOCKS5 = "socks5://127.0.0.1:1080" // 协议支持 ProtocolHTTP = "http" ProtocolHTTPS = "https" ProtocolSOCKS5 = "socks5" ProtocolPrefix = "://" SOCKS5Prefix = "socks5://" HTTPPrefix = "http://" // 端口范围 MinPort = 1 MaxPort = 65535 // 无效字符集 InvalidUserAgentChars = "\r\n\t" ) // GetCommonBrowsers 获取常见浏览器标识列表 func GetCommonBrowsers() []string { return []string{ "Mozilla", "Chrome", "Safari", "Firefox", "Edge", "Opera", "AppleWebKit", "Gecko", "Trident", "Presto", } } // ============================================================================= // 目标解析器常量 (从TargetParser.go迁移) // ============================================================================= const ( // 目标解析器默认配置 DefaultTargetMaxTargets = 10000 DefaultMaxPortRange = 1000 DefaultAllowPrivateIPs = true DefaultAllowLoopback = true DefaultValidateURLs = true DefaultResolveDomains = false DefaultTargetEnableStatistics = true // 正则表达式模式 IPv4RegexPattern = `^(\d{1,3}\.){3}\d{1,3}$` PortRangeRegexPattern = `^(\d+)(-(\d+))?$` URLValidationRegexPattern = `^https?://[^\s]+$` DomainRegexPattern = `^[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?)*$` CookieRegexPattern = `^[^=;\s]+(=[^;\s]*)?(\s*;\s*[^=;\s]+(=[^;\s]*)?)*$` // IP地址限制 MaxIPv4OctetValue = 255 IPv4OctetCount = 4 MaxDomainLength = 253 // CIDR网段简写 PrivateNetwork192 = "192" PrivateNetwork172 = "172" PrivateNetwork10 = "10" PrivateNetwork192CIDR = "192.168.0.0/16" PrivateNetwork172CIDR = "172.16.0.0/12" PrivateNetwork10CIDR = "10.0.0.0/8" // 私有网络范围 Private172StartSecondOctet = 16 Private172EndSecondOctet = 31 Private192SecondOctet = 168 // /8网段采样配置 Subnet8SamplingStep = 32 Subnet8ThirdOctetStep = 10 // IP地址计算位移 IPFirstOctetShift = 24 IPSecondOctetShift = 16 IPThirdOctetShift = 8 IPOctetMask = 0xFF ) // GetCommonSecondOctets 获取常用第二段IP func GetCommonSecondOctets() []int { return []int{0, 1, 2, 10, 100, 200, 254} } // ============================================================================= // 简化解析器常量 (从Simple.go迁移) // ============================================================================= const ( // 端口和主机限制 SimpleMaxHosts = 10000 // 网段简写展开 DefaultGatewayLastOctet = 1 RouterSwitchLastOctet = 254 SamplingMinHost = 2 SamplingMaxHost = 253 ) // GetPortGroups 获取预定义端口组映射 func GetPortGroups() map[string]string { return map[string]string{ "web": "80,81,82,83,84,85,86,87,88,89,90,91,92,98,99,443,800,801,808,880,888,889,1000,1010,1080,1081,1082,1099,1118,1888,2008,2020,2100,2375,2379,3000,3008,3128,3505,5555,6080,6648,6868,7000,7001,7002,7003,7004,7005,7007,7008,7070,7071,7074,7078,7080,7088,7200,7680,7687,7688,7777,7890,8000,8001,8002,8003,8004,8005,8006,8008,8009,8010,8011,8012,8016,8018,8020,8028,8030,8038,8042,8044,8046,8048,8053,8060,8069,8070,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8108,8118,8161,8172,8180,8181,8200,8222,8244,8258,8280,8288,8300,8360,8443,8448,8484,8800,8834,8838,8848,8858,8868,8879,8880,8881,8888,8899,8983,8989,9000,9001,9002,9008,9010,9043,9060,9080,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094,9095,9096,9097,9098,9099,9100,9200,9443,9448,9800,9981,9986,9988,9998,9999,10000,10001,10002,10004,10008,10010,10051,10250,12018,12443,14000,15672,15671,16080,18000,18001,18002,18004,18008,18080,18082,18088,18090,18098,19001,20000,20720,20880,21000,21501,21502,28018", "main": "21,22,23,25,80,81,110,135,139,143,389,443,445,465,502,587,636,873,993,995,1433,1434,1521,1522,1525,2121,2200,2222,3000,3268,3269,3306,3389,5432,5672,5900,6379,7474,7687,8000,8080,8081,8088,8443,8888,9000,9042,9080,9092,9200,9300,11211,15672,22222,27017,61613,61614", "db": "1433,1521,3306,5432,5672,6379,7687,9042,9093,9200,11211,27017,61616", "service": "21,22,23,25,110,135,139,143,162,389,445,465,502,587,636,873,993,995,1433,1521,2222,3306,3389,5020,5432,5672,5671,6379,8161,8443,9000,9092,9093,9200,10051,11211,15672,15671,27017,61616,61613", "common": "21,22,23,25,53,80,110,135,139,143,443,445,993,995,1723,3389,5060,5985,5986", "all": "1-65535", } } // GetTargetPortGroups 获取目标解析器端口组映射(向后兼容) func GetTargetPortGroups() map[string]string { return GetPortGroups() } // ============================================================================= // 验证解析器常量 (从ValidationParser.go迁移) // ============================================================================= const ( // 验证解析器默认配置 DefaultMaxErrorCount = 100 DefaultStrictMode = false DefaultAllowEmpty = true DefaultCheckConflicts = true DefaultValidateTargets = true DefaultValidateNetwork = true // 性能警告阈值 MaxTargetsThreshold = 100000 // 最大目标数量阈值 MinTimeoutThreshold = 1 * time.Second // 最小超时阈值 MaxTimeoutThreshold = 60 * time.Second // 最大超时阈值 ) // ============================================================================= // 错误类型常量 // ============================================================================= const ( // 解析错误类型 ErrorTypeInputError = "INPUT_ERROR" ErrorTypeFileError = "FILE_ERROR" ErrorTypeTimeout = "TIMEOUT" ErrorTypeReadError = "READ_ERROR" ErrorTypeUsernameError = "USERNAME_ERROR" ErrorTypePasswordError = "PASSWORD_ERROR" ErrorTypeHashError = "HASH_ERROR" ErrorTypeProxyError = "PROXY_ERROR" ErrorTypeUserAgentError = "USERAGENT_ERROR" ErrorTypeCookieError = "COOKIE_ERROR" ErrorTypeHostError = "HOST_ERROR" ErrorTypePortError = "PORT_ERROR" ErrorTypeExcludePortError = "EXCLUDE_PORT_ERROR" ) // ============================================================================= // 编译时正则表达式 // ============================================================================= var ( // 预编译的正则表达式,提高性能 CompiledHashRegex *regexp.Regexp CompiledIPv4Regex *regexp.Regexp CompiledPortRegex *regexp.Regexp CompiledURLRegex *regexp.Regexp CompiledDomainRegex *regexp.Regexp CompiledCookieRegex *regexp.Regexp ) // 在包初始化时编译正则表达式 func init() { CompiledHashRegex = regexp.MustCompile(HashRegexPattern) CompiledIPv4Regex = regexp.MustCompile(IPv4RegexPattern) CompiledPortRegex = regexp.MustCompile(PortRangeRegexPattern) CompiledURLRegex = regexp.MustCompile(URLValidationRegexPattern) CompiledDomainRegex = regexp.MustCompile(DomainRegexPattern) CompiledCookieRegex = regexp.MustCompile(CookieRegexPattern) }