ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

拆解RedTiger-Tools项目架构:渗透测试OSINT工具的JSON配置、双模式CLI解析与插件注入机制深度解析

拆解RedTiger-Tools项目架构:渗透测试OSINT工具的JSON配置、双模式CLI解析与插件注入机制深度解析

【免费下载链接】RedTiger-Tools

RedTiger-Tools is a multifunction automation tool dedicated to pentesting and OSINT. The project is open source and designed to be fully configurable according to user needs. It also includes a plugin system that allows users to extend or create new features, in order to centralize multiple tools into a single unified platform.

项目地址:https://gitcode.com/gh_mirrors/red/RedTiger-Tools
点击查看免费下载

RedTiger-Tools 是一款开源的渗透测试(Pentesting)+ OSINT 开源情报自动化多功能工具,它将 17 个扫描、追踪、查询类工具整合进同一个命令行平台,并支持通过 JSON 文件集中配置和通过插件系统自由扩展。本文带你从目录结构、JSON 配置体系、双模式 CLI 解析到插件注入机制,逐层拆解它的内部架构,即使你刚接触 Python 项目源码,也能看懂它的"工具箱"是如何运转的。

1. 项目总览:一个"瑞士军刀"式工具箱

RedTiger-Tools 把安全工具按三大类组织,内置功能一览:

分类内置工具(编号)
🔍 PentestingAdvanced Scanner、Vulnerability Scanner、Port Scanner、URL Discovery Crawler、IP Pinger、Host Discovery
🕵️ OsintDorking Query Engine、Wallet Tracker、Username Tracker、Email Tracker、Email Lookup、Ip Lookup、Phone Number Lookup、Instagram Profile Lookup
🧰 UtilitiesFile Metadata Scanner、File Metadata Deleter、Website Cloner
🧩 Plugins由用户自行扩展(见第 5 节)

所有工具的源码都集中在 Program/ 目录下,例如端口扫描器 Program/NSPortScanner.py、用户名追踪器 Program/OUsernameTracker.py。这种"一个模块一个工具"的划分,是理解后续架构的钥匙。

2. 目录结构:配置与代码严格分离

RedTiger-Tools 采用数据驱动的目录布局,改配置不用碰代码:

RedTiger-Tools/ ├── redtiger.py # 唯一入口:注册选项、注入插件、双模式调度 ├── setup.py # 一键安装依赖 + 初始化界面设置 ├── Config/ │ └── Utils.py # 全局工具库:加载JSON、日志、代理、颜色 ├── Data/ # 9个JSON配置文件(默认参数、端口库、载荷库等) ├── Plugins/ # 插件目录:放.py文件即自动生效 │ └── Example.py # 官方插件示例 └── Ouput/ # 工具产出的JSON结果

路径常量在 Config/Utils.py#L22-L38 中集中定义:程序以自身所在目录为根,推导出Data、Plugins、Ouput等路径,因此项目整体拷到任何位置都能运行。

3. JSON 配置体系:9 个文件一次加载

3.1 启动时统一读入

Config/Utils.py#L42-L50 在模块导入时一次性json.load全部配置文件:

配置文件作用
Config/Credits.json工具名、版本号、授权、作者信息
Config/UserSettings.json界面开关:是否显示装饰色、是否启用交互模式
Data/DefaultParameters.json默认超时、默认端口、User-Agent 等运行参数
Data/DefaultPorts.json常用端口扫描列表
Data/Ports.json端口 → 服务名映射表
Data/VulnerabilityPayloads.json漏洞扫描的测试载荷库
Data/VulnerabilityErrors.json漏洞判定的错误特征库
Data/VulnerabilitySensitivePaths.json敏感路径探测清单
Data/UsernameTrackerPlateforms.json用户名追踪的平台清单

这意味着:想加一个扫描平台、改默认超时、扩充漏洞载荷,只改 JSON 即可,完全不涉及 Python 代码——这是该项目"fully configurable"设计的核心。

3.2 默认值占位符替换

Data/DefaultParameters.json 中的 User-Agent 支持占位符:"%TOOL_NAME%/%TOOL_VERSION%"。加载时 Config/Utils.py#L68-L74 会把%TOOL_NAME%、%TOOL_VERSION%替换成真实值,版本号升级后请求头自动跟随,无需手工维护。

3.3 配置回写与远程版本检查

界面设置通过 Program/TSettingsUpdate.py 的SettingsUpdate函数写回 Config/UserSettings.json,而 setup.py 安装时也复用同一函数(setup.py#L46-L71),保证"安装时配置"和"运行中配置"逻辑一致。

此外 Config/Utils.py#L238-L247 的CheckUpdate会请求远端仓库的Credits.json比对tool_version,启动横幅上就会提示"Update available!"。

4. 双模式 CLI 解析:两次 argparse 协作

启动时 Config/Utils.py#L111-L112 只做一个判断:sys.argv长度大于 1 则has_cli_args为真。redtiger.py#L204-L242 的Menu()据此分流:

  • 带参数 →HandleCli:一次性命令行模式,适合脚本化调用
  • 无参数 → 交互菜单:打印分类菜单,输入编号循环选择

4.1 第一阶段:只解析"你选了哪个工具"

redtiger.py#L110-L149 的HandleCli先为每个工具注册一个布尔开关(如--advanced-scanner/-as),然后用parse_known_args做一次"宽容解析"——它不关心后面的参数是否合法,只负责找出用户敲了哪个工具,剩下的参数原样保留。

这样做的好处:17 个工具的参数互不冲突,第一遍解析永远不会因为参数不匹配而报错。

4.2 第二阶段:为选中工具注册完整参数

确定工具后,程序重建一个新的 parser,把该工具在Options()中登记的参数表(required、choices、type、nargs、help等)逐条注册进去,再对剩余参数做严格解析,最后把结果作为关键字参数传给工具函数(redtiger.py#L151-L172)。

4.3 自定义错误体验

项目没有用 argparse 默认的错误输出,而是自定义了RedTigerArgumentParser(Config/Utils.py#L159-L164)重写error方法:报错时打印提示"Use --help or -h",并自动回到交互菜单重新加载,对新手非常友好。

参数示例:

python redtiger.py --port-scanner -ps --target 192.168.1.1 --mode range --port 80-1000 --protocol-scan TCP

5. 插件注入机制:丢一个 .py 文件即可扩展

这是 RedTiger-Tools 最有特色的设计。InjectPlugins函数(redtiger.py#L35-L71)在每次启动时执行四步:

  1. 扫描目录:遍历Plugins/下所有.py文件,跳过官方示例Example.py;
  2. 动态加载:用importlib.util.spec_from_file_location把文件加载为模块——不依赖包导入路径,插件放进来就能跑;
  3. 调用契约:要求模块提供Register()函数,返回包含name/description/function/arguments四个键的字典(见 Plugins/Example.py#L7-L54);
  4. 自动编号:插件沿用内置选项表的结构(name, description, category, function, arguments),编号从内置工具的最大编号之后顺延,避免冲突,并统一归入Plugins分类显示在菜单中。

单个插件加载失败会被try/except静默跳过,不会拖垮主程序——健壮性设计值得借鉴。

插件在 CLI 模式下同样生效:它的arguments表会被同一套两阶段解析器自动注册,与内置工具体验完全一致。

6. 快速上手与插件扩展实战

🚀 三步跑起来(需要 Python 环境):

git clone https://gitcode.com/gh_mirrors/red/RedTiger-Tools cd RedTiger-Tools python3 setup.py && python3 redtiger.py

🧩 写第一个插件:把 Plugins/Example.py 复制一份改名(不能叫Example.py),修改Register()返回的名称、描述和参数,再让Run()完成你的逻辑即可。注意插件函数里要兼容交互模式——参数缺失时用input()手动询问(Plugins/Example.py#L56-L65),这样菜单模式和 CLI 模式都能调用它。

7. 架构总结

层次关键文件职责
入口调度redtiger.py注册 17 个工具、注入插件、CLI/菜单双模式分流
全局基础设施Config/Utils.py加载 JSON 配置、日志/代理/错误处理、版本检查
配置数据层Data/默认参数、端口库、漏洞载荷等平台数据
功能模块层Program/一模块一工具,命名规则 NS*/O*/U*/T* 对应四大类
扩展层Plugins/基于Register()契约的免重启插件注入

一句话总结:RedTiger-Tools 用"JSON 管数据、注册表管选项、importlib 管扩展、两次 argparse 管解析"四招,把十余个独立工具熔铸成统一平台。无论你想学习 Python 命令行工具的分层写法,还是给它贡献一个插件,这份架构地图都能让你快速上手。

【免费下载链接】RedTiger-Tools

RedTiger-Tools is a multifunction automation tool dedicated to pentesting and OSINT. The project is open source and designed to be fully configurable according to user needs. It also includes a plugin system that allows users to extend or create new features, in order to centralize multiple tools into a single unified platform.

项目地址:https://gitcode.com/gh_mirrors/red/RedTiger-Tools
点击查看免费下载
上一篇:AirPodsDesktop:突破Windows蓝牙限制,解锁AirPods完整潜能
下一篇:calibre 电子书格式转换完全指南:10 分钟把 PDF 转成 EPUB

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表