
渗透测试网络安全应用安全【免费下载链接】reconftwreconFTW is a tool designed to perform automated recon on a target domain by running the best set of tools to perform scanning and finding out vulnerabilities项目地址https://gitcode.com/gh_mirrors/re/reconftw点击查看免费下载reconFTW 是一个完全基于 Bash 构建的自动化侦察框架面向漏洞赏金猎人、渗透测试人员和安全研究人员以一条命令串起 70 外部安全工具完成子域枚举、Web 探测、OSINT 收集与漏洞扫描的全流程。本篇技术指南以仓库根目录的 CLAUDE.md 为骨架结合 reconftw.sh、modules/、lib/、reconftw.cfg 与 tests/ 的源码实现为你拆解它的技术栈、命名约定、生命周期与检查点机制、分层架构、并行执行模型以及反模式清单帮助你在阅读源码、二次开发或扩展模块时快速建立全局认知。项目定位与核心价值reconFTW的核心承诺是Run one command, get a complete recon picture of a target——运行一条命令获得目标被动、主动、漏洞三个层面的完整侦察视图且全程支持可断点续跑resumable checkpoints、结构化输出与零手工干预的工具编排。从架构角度看它的核心能力可以归纳为四点编排 70 外部工具Go、Python、Rust 生态的安全工具被统一调度覆盖子域枚举、Web 探测、OSINT、漏洞扫描等阶段结构化输出树每个目标在Recon/domain/下生成稳定目录层级可被下游脚本与解析器直接消费分布式扩展可选 Axiom 集群执行将扫描任务分发到多台 VPS自动化闭环AI 报告、增量/监控模式、Slack/Telegram/Discord 通知实现零接触的持续侦察。技术栈与运行环境语言构成reconFTW 的三层语言体系分工明确见 CLAUDE.md语言用途说明Bash 4框架核心逻辑reconftw.sh、modules/*.sh、lib/*.sh、install.shPython 3.7工具层每个 Python 工具运行在独立uv venv中如dorks_hunter、CMSeeK、EmailHarvester、SSTImap、reconftw_ai等Go最新版最低 ~1.21工具层约 55 个安全工具通过go install latest安装运行时依赖操作系统LinuxDebian/Ubuntu/RHEL/Arch或 macOSApple Silicon / IntelDocker 镜像基于ubuntu:24.04见 Docker/DockerfileCPU 架构ARM64/aarch64、ARMv6l/v7l、x86_64 均受支持macOS 特殊要求必须通过 Homebrew 安装gnu-getopt、coreutils提供gtimeout、gnu-sed系统自带 BSD 版本不被支持资源下限约 5GB 磁盘空间Go 缓存 工具 仓库约 1GB 内存Go 编译Bash ≥ 4.3lib/parallel.sh中wait -n依赖此版本macOS 系统自带 bash 3.2需 Homebrew bash。工具安装体系工具按安装方式分为五类在 CLAUDE.md 中有完整清单Go 工具go install latestsubfinder、puredns、dnsx、httpx、nuclei、katana、ffuf、naabu、dalfox、notify、interactsh-client等约 55 个Python 工具uv tool installdnsvalidator、interlace、wafw00f、commix、waymore、arjun、gqlspection等仓库克隆 Python venvvenv/bin/python3运行dorks_hunter、CMSeeK、cloud_enum、Spoofy、msftrecon、SSTImap等仓库克隆 Go 编译ghleaks、nomore403、JSA等系统级工具apt/brew/yumnmap、massdns、jq、whois、sqlmap、testssl.sh、medusa等另有 Rust 工具smugglexHTTP 请求走私检测通过 Cargo 安装。值得注意的设计取舍多数 Go 工具通过go install latest安装没有版本锁定lockfile 不存在CLAUDE.md 明确将其标注为已知的供应链风险——这一点在二次开发或生产部署时需要自行权衡。配置体系配置系统分三层配置来源与优先级见 CLAUDE.mdreconftw.cfg约 350 个运行时变量在 CLI 解析之后被 sourcesecrets.cfggitignored自动 sourceAPI Key 与 Token 与主配置分离仓库提供secrets.cfg.example模板$CUSTOM_CONFIG可选的用户自定义配置覆盖层。关键配置项示例均可在 reconftw.cfg 中核对OSINTtrue # 整个 OSINT 模块开关L123 SUBDOMAINS_GENERALtrue # 整个子域模块开关L152 VULNS_GENERALfalse # 漏洞模块开关注释明确说明非常侵入且缓慢L266 HTTPX_RATELIMIT150 # httpx 速率限制L397 NUCLEI_RATELIMIT150 # nuclei 速率限制L398 FFUF_RATELIMIT0 # ffuf 不限速L399 AI_REPORT_TYPEmd # AI 报告格式 md|txtL455 EXPORT_FORMAT # 扫描结束导出 json|html|csv|all空禁用L482 WORDLISTS_DIR${DATA_DIR}/wordlists # 词表目录L22速率限制与线程数并非写死的线程数通过AVAILABLE_CORES$(nproc)自动探测并按工具乘以系数CLI 参数覆盖统一使用CLI_*变量在reconftw.cfgsource 之后重新应用保证 CLI 优先级永远高于配置文件。此外还提供三套预设配置config/reconftw_full.cfg全量扫描、config/reconftw_quick.cfg快速扫描、config/reconftw_stealth.cfg低噪音。CLI 入口getopt 解析与模块加载reconftw.sh 是唯一入口职责链条为Bootstrap → macOS 重执行 → 模块加载 → getopt 解析 → 配置 source → CLI 覆盖重应用 → 模式分发。macOS 兼容的重执行逻辑在 reconftw.sh脚本检测到自身在 macOS 上以脚本方式运行BASH_SOURCE[0] $0时会依次探测/opt/homebrew/bin/bashApple Silicon与/usr/local/bin/bashIntel找到 bash 主版本 ≥ 4 的实例后用exec重新执行自己随后 reconftw.sh 校验gnu-getopt、coreutils、gnu-sed三个 Homebrew formula 是否存在并注入 PATH。模块加载顺序库文件与模块文件采用显式依赖顺序source见 reconftw.shlib/validation.sh → lib/common.sh → lib/ui.sh → lib/parallel.sh → modules/utils.sh → modules/core.sh → modules/osint.sh → modules/subdomains.sh → modules/web.sh → modules/vulns.sh → modules/axiom.sh → modules/modes.sh顺序本身即契约utils.sh必须最先加载以提供基础工具modes.sh必须最后加载以编排其他全部模块。设计上不存在循环依赖全部代码驻留在同一个 shell 进程中。全量 CLI 选项getopt 长选项解析位于 reconftw.sh完整选项列表如下CLAUDE.md 原文完整继承domain, list, recon, subdomains, passive, all, web, osint, zen, deep, help, vps, vps-count, ai, check-tools, health-check, quick-rescan, incremental, adaptive-rate, dry-run, parallel, no-parallel, monitor, monitor-interval, monitor-cycles, refresh-cache, gen-resolvers, force, export, report-only, no-report, parallel-log, quiet, verbose, no-color, log-format, show-cache, banner, no-banner, legal两点实现细节值得留意normalize_vps_count_args()reconftw.sh将历史遗留的-v 20语法规范化为-v --vps-count 20保证向后兼容--source-onlyreconftw.sh允许只加载全部模块而不执行任何侦察逻辑测试套件的setup()依赖此入口相关用法可见 tests/unit/test_verbosity.bats。编码约定函数、变量与模块命名Source Guard 模式每个库文件顶部用_*_LOADED标记实现幂等加载允许模块被多次 source测试重载、--source-only而不重复执行lib/common.sh[[ -n $_COMMON_SH_LOADED ]] return 0lib/parallel.sh[[ -n $_PARALLEL_SH_LOADED ]] return 0lib/ui.sh[[ -n ${_UI_SH_LOADED:-} ]] return 0注意lib/validation.sh例外它使用错误码守卫而非_LOADED标记。函数命名三段式公开模块函数snake_case且带模块上下文前缀如sub_passive、sub_crt、geo_info私有辅助函数下划线前缀如_print_status、_print_error、_parallel_emit_job_outputUI 层函数ui_前缀如ui_init、ui_header、ui_summary、ui_batch_end生命周期包装start_func/end_func必须成对出现在每个侦察函数的顶部与底部校验函数validate_*/sanitize_*集中在 lib/validation.sh 与 modules/utils.sh。变量命名约定配置开关SUBPASSIVE、SUBCRT、PARALLEL_MODE、OUTPUT_VERBOSITY运行时状态LOGFILE、SCRIPTPATH、DIFF、DRY_RUN、AXIOM错误码readonly定义于 reconftw.shE_SUCCESS0、E_GENERAL1、E_MISSING_DEP2、E_INVALID_INPUT3以及扩展的E_NETWORK4、E_DISK_SPACE5、E_PERMISSION6、E_TIMEOUT7、E_CONFIG8。校验函数清单lib/validation.sh 提供的校验函数行号已验证函数用途validate_domain()L21RFC 域名检查 注入字符拒绝validate_ipv4()L68八位组范围校验validate_boolean()L99仅接受true/false不接受1/0/yes/novalidate_integer()L113数值范围检查validate_port()L137端口范围校验sanitize_path()L146路径清洗sanitize_interlace_input()L167移除输入文件中的 shell 元字符interlace 输入规范化validate_file_exists()/validate_file_readable()L322/L340存在性 可读性校验validate_directory()/validate_writable_directory()L362/L380目录校验modules/utils.sh 中还提供sanitize_domain()剥离 URL 组件、小写化、拒绝注入、is_in_scope_host()锚定主机名范围检查防止子串误报、filter_in_scope_urls()基于 Python3 的 URL 范围检查含 scheme/userinfo/host。对应的安全测试见 tests/security/test_injection.bats、tests/security/test_scope_validation.bats。函数生命周期与断点续跑机制这是 reconFTW 最核心的工程机制直接决定中断后能否续跑。start_func / end_funcstart_func name descmodules/core.sh写入 LOGFILE、设置函数级起始时间戳、在OUTPUT_VERBOSITY 2时输出 INFO并创建.inprogress_fn哨兵文件用于崩溃遗留检测end_func message name [status]modules/core.sh计算耗时、输出状态行、touch 检查点文件、移除.inprogress_哨兵。状态参数支持info|warn|error|good|OK|WARN|FAIL|SKIP|SKIP_CONFIG|SKIP_NOINPUT|CACHE_HIT以及兼容旧调用的位置交换形式。文件检查点Resumability检查点文件位于Recon/domain/.called_fn/.funcname每个函数入口测试[[ ! -f $called_fn_dir/.${FUNCNAME[0]} ]] || [[ $DIFF true ]]end_func通过touch写入哨兵DIFFtrue增量模式会绕过检查点强制重执行lib/common.sh 提供更干净的封装should_run()if should_run FLAG_VAR; then同时检查功能开关与检查点DIFF模式下忽略检查点。语义要点CLAUDE.md 明确强调检查点文件在end_func时touch-once意味着被中断的函数在下次调用时会从头重跑部分输出文件不会被检测——这是设计使然不是缺陷。日志与脱敏所有工具输出重定向到$LOGFILEcommand ... 2$LOGFILE /dev/null可选结构化 JSON 日志log_json level func message [keyval]STRUCTURED_LOGGINGtrueredact_secrets()在写日志前擦除REDACT_VARS与REGISTERED_SECRETS中的敏感值任何秘密值必须先register_secret $value再记录。相关安全测试见 tests/security/test_redact_secrets.bats。架构分层与组件职责CLAUDE.md 将代码库划分为五个层次层次职责位置入口与 CLIBootstrap、macOS 重执行、模块加载、getopt 解析、配置 source、CLI 覆盖、模式分发reconftw.sh纯工具库无副作用的可复用函数可独立加载测试lib/validation.sh、lib/common.sh、lib/ui.sh、lib/parallel.sh业务模块实现全部扫描、分析、编排函数modules/配置约 350 个默认运行时值reconftw.cfg输出按目标存储的稳定目录树Recon/domain/各模块的职责分工见 CLAUDE.md 组件表均已与源码核对模式编排modules/modes.shstart/end、工作流函数recon、passive、all、vulns、osint、subs_menu、webs_menu、zen_menu、monitor_mode函数生命周期modules/core.shstart_func/end_func、检查点、日志、通知、报告、插件、健康检查子域枚举modules/subdomains.sh全部sub_*函数、subtakeover、zonetransfer、s3buckets、geo_infoWeb 分析modules/web.shwebprobe_full、screenshot、nuclei_check、fuzz、jschecks、urlchecks、waf_checks及 20 个函数漏洞扫描modules/vulns.shxss、ssrf_checks、sqli、crlf_checks、lfi、ssti、smuggling、fuzzparams、nuclei_dast等OSINTmodules/osint.shdomain_info、ip_info、emails、google_dorks、github_leaks、github_actions_audit、cloud_enum_scan等共享工具modules/utils.shrun_command、sed_i、deleteOutScoped、validate_config、cache_*、checkpoint_*、circuit_breaker_*、速率自适应Axiom 分布式modules/axiom.shaxiom_launch、axiom_shutdown、axiom_selected、resolvers_update、ipcidr_target并行执行lib/parallel.shparallel_funcs、_throttle_jobs、job 心跳、进度实时显示、日志模式输出UI 呈现lib/ui.sh_print_status、_print_msg、_print_section、ui_header、ui_summary、TTY 检测、颜色管理、JSONL 输出。关键抽象统一工具闸门 run_commandCLAUDE.md 指出所有外部工具调用必须经由run_command binary args而非直接执行。查看 modules/utils.sh 的实现可以发现它承担了五个横切职责DRY-RUN 预览DRY_RUNtrue时打印将执行的命令自动对-token-string、apiKey、Authorization: Bearer做 REDACTED 脱敏并返回 0不实际执行Axiom 分发命令名以axiom-开头时转交_run_axiom_command_with_detectionProxychains 透明路由PROXYCHAINStrue且命令适用时通过_proxychains_bin前置-q可选-f指定配置若二进制缺失则响亮失败warn 并跳过而不是静默直连——这正是操作者启用代理的初衷自适应速率限制ADAPTIVE_RATE_LIMITtrue时转交run_with_adaptive_rate调试日志DEBUG_LOG设置时按OUTPUT_VERBOSITY决定tee到调试日志或追加写入。并行执行模型单进程 后台子 shell框架整体是单线程 Bash并行只发生在parallel_funcs这一层它把相互独立的模块函数作为后台子 shell 并行启动用wait -nbash 4.3做任务节流_throttle_jobs上限为PARALLEL_MAX_JOBS实际值经_parallel_effective_max_jobs换算。lib/parallel.sh 的实现细节每个 job 的输出写入$dir/.tmp/parallel/func.pid.rand.log并单独记录结束时间戳函数不存在时打印 warn 并跳过并行失败计数会累加到RECON_OSINT_PARALLEL_FAILURES并设置RECON_PARTIAL_RUNtrue。parallel_funcs N func_a func_b func_c被recon()、osint()、vulns()用于运行相互独立的函数组。输出模式与 verbosity终端输出受OUTPUT_VERBOSITY控制三个档位在 CLAUDE.md 中有明确定义0quiet仅打印错误与最终摘要横幅被抑制1normal默认打印 OK/WARN/FAIL/SKIP 状态行2verbose以上全部 INFO 消息 start_func消息 PID 信息。并行日志另有四种模式summary每完成一个 job 输出一行徽章、tail每个 job 日志的最后PARALLEL_TAIL_LINES行默认 20失败时翻倍、full每个 job 的完整捕获 stdout、jsonl-strict强制OUTPUT_VERBOSITY0只输出机器可读 JSONL。UI 相关的快照测试见 tests/unit/test_ui_snapshots.bats。入口点与输出目录三个关键入口点入口位置触发方式职责主入口reconftw.sh./reconftw.sh -d example.com -rBootstrap、模块加载、CLI 解析、配置 source、模式分发--source-onlyreconftw.sh./reconftw.sh --source-only仅加载全部模块不执行bats 测试setup()使用start()modules/modes.sh多数工作流函数顶部调用创建输出目录树、初始化 LOGFILE、缓存/增量/DNS/插件、设置全局dir与called_fn_dir输出目录的公共契约Recon/domain/目录树是公共契约子目录名与文件名被下游管道、脚本与解析器消费重命名属于破坏性变更。start()在运行任何模块函数前cd $dir进入目标输出目录因此模块内的相对路径都相对于目标目录解析reconftw.sh在此之前捕获startdir${PWD}。架构约束与反模式清单必须遵守的约束全局状态所有配置变量、目标变量domain、dir、called_fn_dir、LOGFILE、结果计数器都是模块级全局变量任何被 source 的函数都可读写——没有封装无子 shell 隔离模块是被 source 的函数而非子进程模块内return只是返回函数而exit会杀死整个 shellsave/restore 模式工作流函数若覆盖模块开关全局变量必须保存并在结束时恢复典型范式见passive()CLAUDE.md 标注于 modules/modes.sh单操作者每个目标运行只为一个用户设计无锁、无多用户状态、不支持对同一目标目录并发运行CI 预算分层集成全量测试每周 cron 跑一次单元 冒烟测试每次 push 跑——新增重型集成测试必须尊重这一分工。反模式清单CLAUDE.md 明令禁止绕过run_command直接调用外部工具——会丢失 dry-run、代理、速率限制与调试日志的横切能力手工写检查点文件——检查点必须由end_func统一创建跳过检查点守卫[[ ! -f $called_fn_dir/.${FUNCNAME[0]} ]] || [[ $DIFF true ]]——会破坏断点续跑语义工作流函数覆盖配置全局变量后不保存/恢复——会污染后续所有函数的执行环境。错误处理与容错设计ERR trapstart()中注册的 ERR trap 会把函数名、行号与命令写入$LOGFILE并调用explain_err()modules/modes.sh并行失败累加parallel_funcs非零退出会累加失败计数并置RECON_PARTIAL_RUNtrue让上层知晓本次为部分成功Axiom 故障转移run_module_with_axiom_failovermodules/modes.sh捕获 Axiom 中途失败并在本地重试熔断器circuit_breaker_is_open/circuit_breaker_record_failuremodules/utils.sh针对持续失败的工具实现熔断磁盘满保护start_func开头的_check_disk_mid_run在写任何状态前中止见 modules/core.sh 的实现注释健康检查./reconftw.sh --health-check可一键验证运行环境。工程化与质量保障框架通过 Makefile 与 pre-commit 钩子维持工程质量bats-coreBash Automated Testing System单元测试在 tests/unit/安全测试在 tests/security/集成测试在 tests/integration/shellcheckerror 级make lintpre-commit 钩子强制执行shfmt4 空格缩进、-bn、-cimake fmtsemgrep仅在 CI 运行.github/workflows/semgrep.yml。代表性测试文件可直接深入研读检查点与生命周期逻辑见 tests/unit/test_common.bats校验函数见 tests/unit/test_validation.bats 与 tests/unit/test_validation_extended.bats并行执行见 tests/unit/test_parallel.bats监控模式见 tests/unit/test_monitor.bats。总结理解 reconFTW 的三个思维模型读完整份架构与约定可以用三个思维模型快速掌握这个框架检查点即进度一切可续跑能力建立在end_func的 touch-once 检查点之上DIFF模式是唯一强制重跑的开关run_command 即边界所有外部工具调用收敛在单一闸门dry-run、Axiom、proxychains、自适应限速与脱敏全部在此横切全局变量即 API模块之间没有隔离层配置开关、目标状态、结果计数器都是全局的因此save/restore 覆盖的全局变量是每个工作流函数必须遵守的第一纪律。对于想要为 reconFTW 新增模块或工具的开发者推荐的入手路径是先阅读 modules/modes.sh 了解工作流编排 → 以sub_*或webprobe_full为模板学习start_func/end_func/should_run的生命周期写法 → 所有工具调用一律走run_command→ 新增配置项按CLI_*覆盖模式接入 reconftw.cfg → 用 bats 单元测试与 shellcheck 守住质量底线。赞分享渗透测试网络安全应用安全【免费下载链接】reconftwreconFTW is a tool designed to perform automated recon on a target domain by running the best set of tools to perform scanning and finding out vulnerabilities项目地址https://gitcode.com/gh_mirrors/re/reconftw点击查看免费下载相关推荐ChuanhuChatGPT架构深度解析ChuanhuChatGPT架构深度解析 本文深入解析了ChuanhuChatGPT的高度模块化架构设计包括其核心的BaseLLMModel抽象基类和模型工厂人工智能大模型AI 应用AI AgentRAG本地部署微调后端如何用Hero框架重构iOS动画逻辑从设计哲学到实战指南如何用Hero框架重构iOS动画逻辑从设计哲学到实战指南 Hero是一个用于构建iOS视图控制器过渡动画的强大框架它在UIKit繁琐的过渡API之上提供了声UI组件如何用 Zephyr bsim 在宿主机上仿真测试蓝牙应用如何用 Zephyr bsim 在宿主机上仿真测试蓝牙应用 要在不依赖 nRF52 DK 等实体开发板的情况下开发和验证蓝牙 LE 应用可以使用 Zephyr渗透测试网络安全应用安全上一篇asdf-plugins 项目常见问题解决方案下一篇如何快速掌握洛雪音乐音源聚合面向新手的完整使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考