diff --git a/Common/Flag.go b/Common/Flag.go index 84da9c6..68d6be4 100644 --- a/Common/Flag.go +++ b/Common/Flag.go @@ -126,6 +126,9 @@ func Banner() { func Flag(Info *HostInfo) { Banner() + // 预处理语言设置 - 在定义flag之前检查lang参数 + preProcessLanguage() + // ═════════════════════════════════════════════════ // 目标配置参数 // ═════════════════════════════════════════════════ @@ -219,11 +222,21 @@ func Flag(Info *HostInfo) { flag.StringVar(&Shellcode, "sc", "", GetText("flag_shellcode")) flag.StringVar(&Language, "lang", "zh", GetText("flag_language")) + // 帮助参数 + var showHelp bool + flag.BoolVar(&showHelp, "help", false, GetText("flag_help")) + // 解析命令行参数 parseCommandLineArgs() // 设置语言 SetLanguage(Language) + + // 如果显示帮助或者没有提供目标,显示帮助信息并退出 + if showHelp || shouldShowHelp(Info) { + flag.Usage() + os.Exit(0) + } } // parseCommandLineArgs 处理来自环境变量和命令行的参数 @@ -284,3 +297,45 @@ func parseEnvironmentArgs(argsString string) ([]string, error) { return args, nil } + +// preProcessLanguage 预处理语言参数,在定义flag之前设置语言 +func preProcessLanguage() { + // 遍历命令行参数查找-lang参数 + for i, arg := range os.Args { + if arg == "-lang" && i+1 < len(os.Args) { + lang := os.Args[i+1] + if lang == "en" || lang == "zh" { + Language = lang + SetLanguage(lang) + return + } + } else if strings.HasPrefix(arg, "-lang=") { + lang := strings.TrimPrefix(arg, "-lang=") + if lang == "en" || lang == "zh" { + Language = lang + SetLanguage(lang) + return + } + } + } + + // 检查环境变量 + envLang := os.Getenv("FS_LANG") + if envLang == "en" || envLang == "zh" { + Language = envLang + SetLanguage(envLang) + } +} + +// shouldShowHelp 检查是否应该显示帮助信息 +func shouldShowHelp(Info *HostInfo) bool { + // 检查是否提供了扫描目标 + hasTarget := Info.Host != "" || TargetURL != "" || LocalMode + + // 如果没有提供任何扫描目标,则显示帮助 + if !hasTarget { + return true + } + + return false +} diff --git a/Common/i18n/messages.go b/Common/i18n/messages.go index 99e71d0..2f9d58a 100644 --- a/Common/i18n/messages.go +++ b/Common/i18n/messages.go @@ -516,6 +516,14 @@ var coreMessages = map[string]map[string]string{ LangZH: "排除端口", LangEN: "Exclude ports", }, + "flag_hosts_file": { + LangZH: "主机文件", + LangEN: "Hosts file", + }, + "flag_ports_file": { + LangZH: "端口文件", + LangEN: "Ports file", + }, "flag_scan_mode": { LangZH: "扫描模式: all, portscan, tcpscan, udpscan等", LangEN: "Scan mode: all, portscan, tcpscan, udpscan, etc.", @@ -528,6 +536,34 @@ var coreMessages = map[string]map[string]string{ LangZH: "端口扫描超时时间", LangEN: "Port scan timeout", }, + "flag_module_thread_num": { + LangZH: "模块线程数", + LangEN: "Module thread count", + }, + "flag_global_timeout": { + LangZH: "全局超时时间", + LangEN: "Global timeout", + }, + "flag_live_top": { + LangZH: "存活主机显示数量", + LangEN: "Live hosts display count", + }, + "flag_disable_ping": { + LangZH: "禁用ping探测", + LangEN: "Disable ping detection", + }, + "flag_use_ping": { + LangZH: "启用ping探测", + LangEN: "Enable ping detection", + }, + "flag_enable_fingerprint": { + LangZH: "启用指纹识别", + LangEN: "Enable fingerprinting", + }, + "flag_local_mode": { + LangZH: "本地扫描模式", + LangEN: "Local scan mode", + }, "flag_username": { LangZH: "用户名", LangEN: "Username", @@ -536,19 +572,119 @@ var coreMessages = map[string]map[string]string{ LangZH: "密码", LangEN: "Password", }, + "flag_add_users": { + LangZH: "额外用户名", + LangEN: "Additional usernames", + }, + "flag_add_passwords": { + LangZH: "额外密码", + LangEN: "Additional passwords", + }, + "flag_users_file": { + LangZH: "用户名字典文件", + LangEN: "Username dictionary file", + }, + "flag_passwords_file": { + LangZH: "密码字典文件", + LangEN: "Password dictionary file", + }, + "flag_hash_file": { + LangZH: "哈希文件", + LangEN: "Hash file", + }, + "flag_hash_value": { + LangZH: "哈希值", + LangEN: "Hash value", + }, + "flag_domain": { + LangZH: "域名", + LangEN: "Domain name", + }, + "flag_ssh_key": { + LangZH: "SSH私钥文件", + LangEN: "SSH private key file", + }, "flag_target_url": { LangZH: "目标URL", LangEN: "Target URL", }, - "flag_proxy": { + "flag_urls_file": { + LangZH: "URL文件", + LangEN: "URLs file", + }, + "flag_cookie": { + LangZH: "HTTP Cookie", + LangEN: "HTTP Cookie", + }, + "flag_web_timeout": { + LangZH: "Web超时时间", + LangEN: "Web timeout", + }, + "flag_http_proxy": { LangZH: "HTTP代理", LangEN: "HTTP proxy", }, - "flag_socks5": { + "flag_socks5_proxy": { LangZH: "SOCKS5代理", LangEN: "SOCKS5 proxy", }, - "flag_outputfile": { + "flag_poc_path": { + LangZH: "POC脚本路径", + LangEN: "POC script path", + }, + "flag_poc_name": { + LangZH: "POC名称", + LangEN: "POC name", + }, + "flag_poc_full": { + LangZH: "全量POC扫描", + LangEN: "Full POC scan", + }, + "flag_dns_log": { + LangZH: "DNS日志记录", + LangEN: "DNS logging", + }, + "flag_poc_num": { + LangZH: "POC并发数", + LangEN: "POC concurrency", + }, + "flag_no_poc": { + LangZH: "禁用POC扫描", + LangEN: "Disable POC scan", + }, + "flag_redis_file": { + LangZH: "Redis文件", + LangEN: "Redis file", + }, + "flag_redis_shell": { + LangZH: "Redis Shell", + LangEN: "Redis Shell", + }, + "flag_disable_redis": { + LangZH: "禁用Redis扫描", + LangEN: "Disable Redis scan", + }, + "flag_redis_write_path": { + LangZH: "Redis写入路径", + LangEN: "Redis write path", + }, + "flag_redis_write_content": { + LangZH: "Redis写入内容", + LangEN: "Redis write content", + }, + "flag_redis_write_file": { + LangZH: "Redis写入文件", + LangEN: "Redis write file", + }, + "flag_disable_brute": { + LangZH: "禁用暴力破解", + LangEN: "Disable brute force", + }, + "flag_max_retries": { + LangZH: "最大重试次数", + LangEN: "Maximum retries", + }, + "flag_output_file": { LangZH: "输出文件", LangEN: "Output file", }, @@ -556,13 +692,37 @@ var coreMessages = map[string]map[string]string{ LangZH: "输出格式: txt, json, csv", LangEN: "Output format: txt, json, csv", }, + "flag_disable_save": { + LangZH: "禁用结果保存", + LangEN: "Disable result saving", + }, + "flag_silent_mode": { + LangZH: "静默模式", + LangEN: "Silent mode", + }, "flag_no_color": { LangZH: "禁用颜色输出", LangEN: "Disable color output", }, - "flag_silent": { - LangZH: "静默模式", - LangEN: "Silent mode", + "flag_log_level": { + LangZH: "日志级别", + LangEN: "Log level", + }, + "flag_show_progress": { + LangZH: "显示进度", + LangEN: "Show progress", + }, + "flag_show_scan_plan": { + LangZH: "显示扫描计划", + LangEN: "Show scan plan", + }, + "flag_slow_log_output": { + LangZH: "慢速日志输出", + LangEN: "Slow log output", + }, + "flag_shellcode": { + LangZH: "Shellcode", + LangEN: "Shellcode", }, "flag_language": { LangZH: "语言: zh, en",