Skip to content

Evil0ctal/Reverse-Engineering-Online-Toolkit

Repository files navigation

🔧 Reverse Engineering Online Toolkit (REOT)

一个功能强大的纯前端逆向工程在线工具箱

License GitHub Stars PRs Welcome

English | 简体中文


📖 项目简介

Reverse Engineering Online Toolkit (REOT) 是一个基于纯前端实现的在线逆向工程工具箱。本项目旨在为安全研究人员、逆向工程师和开发者提供一套便捷、高效、无需安装的在线工具集合,用于处理逆向工程期间常见的编码、解码、加密、解密、数据转换等操作。

✨ 核心特性

  • 🌐 纯前端实现 - 所有计算均在浏览器本地完成,数据不会上传至服务器,保护您的隐私安全
  • 🚀 零安装使用 - 打开浏览器即可使用,无需安装任何软件或插件
  • 🌍 国际化支持 - 基于 I18N 实现多语言支持,默认支持中文和英文
  • 📱 响应式设计 - 适配桌面端和移动端,随时随地使用
  • 🔌 模块化架构 - 易于扩展,方便社区贡献新功能
  • 🎨 现代化 UI - 简洁美观的用户界面,提供良好的使用体验

🛠️ 功能列表

图例:✅ 已完成 | 📋 计划中

编码与解码 (Encoding & Decoding)

功能 描述 状态
Base64 Base64 编码与解码,支持标准 Base64 和 URL 安全的 Base64 ✅ 已完成
Base32 Base32 编码与解码 ✅ 已完成
Base58 Base58 编码与解码(常用于比特币地址) ✅ 已完成
URL 编码 URL 编码与解码,支持组件编码和完整 URL 编码 ✅ 已完成
HTML 实体 HTML 实体编码与解码 ✅ 已完成
Unicode Unicode 编码与解码(\uXXXX 格式) ✅ 已完成
Hex 字符串 十六进制字符串与文本互转 ✅ 已完成
ASCII ASCII 码与字符互转 ✅ 已完成
Punycode 国际化域名 Punycode 编解码 ✅ 已完成
ROT13/ROT47 ROT13 和 ROT47 编码 ✅ 已完成
Morse 电码 摩斯电码编码与解码 ✅ 已完成

压缩与解压 (Compression)

功能 描述 状态
GZIP GZIP 压缩与解压 ✅ 已完成
Deflate Deflate 压缩与解压 ✅ 已完成
ZSTD Zstandard 压缩与解压 ✅ 已完成
Brotli Brotli 压缩与解压 ✅ 已完成
LZ4 LZ4 压缩与解压 ✅ 已完成
LZMA/XZ LZMA 和 XZ 格式解压(常见于 APK 资源和原生库) 📋 计划中
bzip2 bzip2 压缩与解压 📋 计划中
Snappy Snappy 压缩与解压(Google 开发,常见于大数据场景) 📋 计划中

哈希计算 (Hashing)

功能 描述 状态
MD5 MD5 哈希计算 ✅ 已完成
SHA-1 SHA-1 哈希计算 ✅ 已完成
SHA-2 系列 SHA-256, SHA-384, SHA-512 ✅ 已完成
SHA-3 系列 SHA3-224, SHA3-256, SHA3-384, SHA3-512 ✅ 已完成
BLAKE2 BLAKE2b, BLAKE2s 哈希计算 ✅ 已完成
CRC CRC8, CRC16, CRC32, CRC32C 校验计算 ✅ 已完成
RIPEMD RIPEMD-160 哈希计算 ✅ 已完成
xxHash xxHash32, xxHash64, xxHash3(高速非加密哈希,常见于指纹生成) ✅ 已完成
MurmurHash MurmurHash3(常见于移动端指纹算法) 📋 计划中
哈希类型识别 根据长度和格式自动识别哈希类型(MD5/SHA1/SHA256/bcrypt 等) ✅ 已完成

HMAC 计算 (HMAC)

功能 描述 状态
HMAC HMAC-SHA1, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512 计算 ✅ 已完成

密钥派生函数 (Key Derivation Functions)

功能 描述 状态
PBKDF2 PBKDF2-SHA1/SHA256/SHA512 密钥派生(移动 App 常用) ✅ 已完成
bcrypt bcrypt 密码哈希生成与验证 ✅ 已完成
HKDF HKDF 密钥派生(API 签名密钥生成常用) ✅ 已完成
scrypt scrypt 密钥派生 📋 计划中
Argon2 Argon2id 密钥派生(现代密码哈希算法) 📋 计划中

对称加密 (Symmetric Encryption)

功能 描述 状态
AES AES 加解密(CBC, CTR, GCM 模式) ✅ 已完成
DES DES 加解密 ✅ 已完成
3DES Triple DES 加解密 ✅ 已完成
RC4 RC4 流加密 ✅ 已完成
Blowfish Blowfish 加解密 ✅ 已完成
ChaCha20 ChaCha20 加解密 ✅ 已完成
SM4 国密 SM4 加解密 ✅ 已完成
加密类型识别 根据密文特征猜测加密类型(块大小、填充、熵值分析) 📋 计划中

非对称加密 (Asymmetric Encryption)

功能 描述 状态
RSA RSA 加解密(1024/2048/4096 bit) ✅ 已完成
ECC 椭圆曲线加密 ✅ 已完成
SM2 国密 SM2 加解密 ✅ 已完成
Ed25519 Ed25519 签名验签 ✅ 已完成
RSA 密钥计算器 已知部分 RSA 参数(p, q)计算其他参数(n, d, e) 📋 计划中

数据格式化 (Data Formatting)

功能 描述 状态
JSON JSON 格式化、压缩、校验 ✅ 已完成
XML XML 格式化、压缩、校验 ✅ 已完成
YAML YAML 格式化与 JSON 互转 ✅ 已完成
TOML TOML 格式化与解析 ✅ 已完成
CSV CSV 解析与格式化 ✅ 已完成
SQL SQL 格式化 ✅ 已完成
HTML HTML 格式化与压缩 ✅ 已完成
CSS CSS 格式化与压缩 ✅ 已完成
JavaScript JavaScript 格式化与压缩 ✅ 已完成
GraphQL GraphQL 查询格式化与解析 ✅ 已完成

二进制分析 (Binary Analysis)

功能 描述 状态
Hex 查看器 十六进制查看器 ✅ 已完成
二进制编辑器 二进制文件查看与编辑 ✅ 已完成
文件哈希 计算文件的各种哈希值 ✅ 已完成
文件类型检测 基于 Magic Number 检测文件类型 ✅ 已完成
字节序转换 大端序与小端序转换 ✅ 已完成
熵值可视化 计算并可视化文件的 Shannon 熵值(识别加密/压缩/明文区域) 📋 计划中
二进制差异对比 两个文件的十六进制对比(类似 HxD 对比功能) 📋 计划中
PE 头解析 Windows PE 可执行文件头解析(节区、导入、导出表) 📋 计划中
ELF 头解析 Linux ELF 可执行文件头解析 📋 计划中
Mach-O 头解析 macOS/iOS Mach-O 可执行文件头解析 📋 计划中
DEX 头解析 Android DEX 文件头解析 📋 计划中

协议解析 (Protocol Parsing)

功能 描述 状态
JWT JWT Token 解析与验证 ✅ 已完成
Protobuf Protocol Buffers 解码(无 Schema 解析) ✅ 已完成
ASN.1 ASN.1 DER/BER 解析 ✅ 已完成
X.509 证书 X.509 证书解析 ✅ 已完成
PEM PEM 格式解析 ✅ 已完成
MessagePack MessagePack 编解码(TikTok/抖音 API 常用格式) ✅ 已完成
CBOR CBOR 编解码(IoT 和 WebAuthn 常用) ✅ 已完成
BSON BSON 解析(MongoDB 格式) 📋 计划中
Plist Apple Property List 解析(二进制和 XML 格式) ✅ 已完成
SAML Token SAML 断言解析 📋 计划中

证书与密钥 (Certificates & Keys)

功能 描述 状态
X.509 证书工具 综合证书管理:密钥对生成、CSR 创建、自签名证书、CA 签发、证书链验证、证书解析 ✅ 已完成
JWK ↔ PEM 转换 JSON Web Key 与 PEM 格式互转(RSA/EC/OKP) 📋 计划中
PKCS#1 ↔ PKCS#8 RSA 密钥格式互转 📋 计划中

网络工具 (Network Tools)

功能 描述 状态
Cookie 解析 Cookie 字符串解析与格式化 ✅ 已完成
User-Agent 解析 User-Agent 字符串解析 ✅ 已完成
HTTP 头解析 HTTP 请求/响应头解析 ✅ 已完成
IP 地址转换 IP 地址格式转换(十进制、整数、十六进制、二进制) ✅ 已完成
URL 解析 URL 组成部分解析 ✅ 已完成
cURL 转代码 cURL 命令转换为各语言代码 ✅ 已完成
CIDR/子网计算 CIDR 子网划分计算器 ✅ 已完成
HAR 文件分析 HTTP Archive 文件解析(Charles/Fiddler/mitmproxy 导出分析) 📋 计划中
WebSocket 帧解析 WebSocket 帧头和载荷解码 📋 计划中
DNS 记录解析 DNS 响应包解析 📋 计划中

生成器 (Generators)

功能 描述 状态
UUID UUID v1/v4/v5/v7 生成 ✅ 已完成
时间戳 Unix 时间戳转换与生成 ✅ 已完成
条码生成器 QR码和各种条形码生成(CODE128, EAN, UPC等) ✅ 已完成
条码扫描器 摄像头/图片扫描QR码和各种条形码 ✅ 已完成
随机字符串 随机字符串生成器 ✅ 已完成
密码生成 安全密码生成器 ✅ 已完成
密钥对生成 RSA/ECC 密钥对生成 ✅ 已完成
Lorem Ipsum 占位文本生成 ✅ 已完成
时间戳格式猜测 自动识别时间戳格式(Unix/毫秒/Windows FILETIME/Cocoa 等) ✅ 已完成
Snowflake ID 解码 Twitter/Discord 风格雪花 ID 解析(提取时间戳和节点信息) ✅ 已完成
MongoDB ObjectID ObjectID 解析(提取创建时间和机器标识) ✅ 已完成
ULID 解析/生成 ULID 解析与生成(可排序的 UUID 替代方案) ✅ 已完成

数值转换 (Number Conversion)

功能 描述 状态
进制转换 二进制、八进制、十进制、十六进制互转 ✅ 已完成
字节单位转换 B, KB, MB, GB, TB 等单位转换(SI/IEC) ✅ 已完成
颜色转换 HEX, RGB, HSL, HSV 颜色格式互转 ✅ 已完成
时间单位转换 秒、分钟、小时、天等单位转换 ✅ 已完成
IEEE 754 浮点数 IEEE 754 表示查看 ✅ 已完成

文本处理 (Text Processing)

功能 描述 状态
正则表达式测试 正则表达式在线测试与调试 ✅ 已完成
文本差异对比 两段文本的差异对比 ✅ 已完成
字符统计 字符、单词、行数统计 ✅ 已完成
大小写转换 大小写、驼峰、下划线等格式转换 ✅ 已完成
文本去重 去除重复行 ✅ 已完成
文本排序 文本行排序 ✅ 已完成

逆向专用工具 (Reverse Engineering Specific)

功能 描述 状态
字符串提取 从二进制数据中提取可读字符串 ✅ 已完成
XOR 分析 XOR 加密分析与解密 ✅ 已完成
频率分析 字符频率分析(密码学分析) ✅ 已完成
模式搜索 二进制模式搜索 ✅ 已完成
偏移计算器 内存地址偏移计算 ✅ 已完成
结构体解析 C 结构体内存布局可视化 ✅ 已完成
在线反汇编器 Hex/Binary 转汇编指令(x86, x64, ARM, MIPS),基于 Capstone.js 📋 计划中
在线汇编器 汇编指令转机器码,基于 Keystone.js 📋 计划中
Shellcode 助手 Shellcode 格式化(C数组、Python字符串等)、坏字符检测 📋 计划中
IDA 模式生成器 生成 IDA 风格的字节模式搜索字符串(支持通配符) 📋 计划中

JavaScript 逆向 (JavaScript Reverse Engineering)

功能 描述 状态
JS 反混淆器 JavaScript 反混淆(变量重命名、字符串数组还原、控制流平坦化还原) 📋 计划中
Source Map 解包 从 .js.map 文件还原原始源代码目录结构 📋 计划中
JS AST 查看器 JavaScript 抽象语法树可视化 📋 计划中

取证与隐写 (Forensics & Steganography)

功能 描述 状态
图片 EXIF 查看 查看和清除图片元数据 ✅ 已完成
LSB 隐写分析 图片最低有效位隐写分析(支持不同颜色通道) 📋 计划中

移动端逆向 (Mobile Reverse Engineering)

功能 描述 状态
设备指纹解码 解析 Android ID、GAID、IDFA、OAID 等常见设备标识格式 📋 计划中
Deep Link 验证 Android Intent 和 iOS URL Scheme 解析与验证 📋 计划中
Frida 代码生成 常用 Frida Hook 代码片段生成(SSL Pinning Bypass、方法追踪等) 📋 计划中

系统工具 (System Tools)

功能 描述 状态
Crontab 解析器 Cron 表达式与人类可读文本互转 ✅ 已完成
Unix 权限计算 chmod 权限计算(755 ↔ rwxr-xr-x) ✅ 已完成

📁 项目目录结构

Reverse-Engineering-Online-Toolkit/
├── 📄 index.html                    # 主入口文件
├── 📄 README.md                     # 中文自述文件
├── 📄 README_EN.md                  # 英文自述文件
├── 📄 LICENSE                       # Apache 2.0 许可证
├── 📄 CONTRIBUTING.md               # 贡献指南
├── 📄 CHANGELOG.md                  # 更新日志
├── 📄 package.json                  # 项目配置
├── 📁 assets/                       # 静态资源目录
│   ├── 📁 css/                      # 样式文件
│   │   ├── 📄 main.css              # 主样式
│   │   ├── 📄 themes/               # 主题文件
│   │   │   ├── 📄 light.css         # 亮色主题
│   │   │   └── 📄 dark.css          # 暗色主题
│   │   └── 📄 components/           # 组件样式
│   ├── 📁 js/                       # JavaScript 文件
│   │   ├── 📄 main.js               # 主程序入口
│   │   ├── 📄 router.js             # 路由管理
│   │   ├── 📄 i18n.js               # 国际化模块
│   │   └── 📄 utils.js              # 工具函数
│   ├── 📁 images/                   # 图片资源
│   │   ├── 📄 logo.svg              # 项目 Logo
│   │   ├── 📄 favicon.ico           # 网站图标
│   │   └── 📄 icons/                # 工具图标
│   └── 📁 fonts/                    # 字体文件
├── 📁 libs/                         # 第三方库
│   ├── 📄 crypto-js/                # 加密库
│   ├── 📄 pako/                     # GZIP 压缩库
│   ├── 📄 zstd-codec/               # ZSTD 压缩库
│   ├── 📄 qrcode/                   # 二维码库
│   └── 📄 ...                       # 其他依赖库
├── 📁 locales/                      # 全局国际化语言文件(主页、通用文本)
│   ├── 📄 zh-CN.json                # 简体中文
│   ├── 📄 en-US.json                # 英语(美国)
│   └── 📄 ...                       # 其他语言
├── 📁 tools/                        # 工具模块目录
│   ├── 📁 encoding/                 # 编码工具
│   │   ├── 📄 base64/
│   │   │   ├── 📄 base64.html       # 工具页面(以工具ID命名)
│   │   │   ├── 📄 base64.js         # 核心逻辑
│   │   │   ├── 📄 base64.css        # 工具样式
│   │   │   ├── 📄 README.md         # 工具说明
│   │   │   └── 📁 locales/          # 工具专属国际化(可选)
│   │   │       ├── 📄 zh-CN.json    # 工具中文翻译
│   │   │       └── 📄 en-US.json    # 工具英文翻译
│   │   ├── 📄 url-encode/
│   │   ├── 📄 hex/
│   │   └── 📄 .../
│   ├── 📁 compression/              # 压缩工具
│   │   ├── 📄 gzip/
│   │   ├── 📄 zstd/
│   │   └── 📄 .../
│   ├── 📁 hashing/                  # 哈希工具
│   │   ├── 📄 md5/
│   │   ├── 📄 sha/
│   │   └── 📄 .../
│   ├── 📁 hmac/                     # HMAC 工具
│   ├── 📁 encryption/               # 加密工具
│   │   ├── 📄 aes/
│   │   ├── 📄 des/
│   │   ├── 📄 rsa/
│   │   └── 📄 .../
│   ├── 📁 formatting/               # 格式化工具
│   │   ├── 📄 json/
│   │   ├── 📄 xml/
│   │   └── 📄 .../
│   ├── 📁 binary/                   # 二进制工具
│   │   ├── 📄 hex-viewer/
│   │   ├── 📄 binary-editor/
│   │   └── 📄 .../
│   ├── 📁 protocol/                 # 协议解析
│   │   ├── 📄 jwt/
│   │   ├── 📄 protobuf/
│   │   └── 📄 .../
│   ├── 📁 network/                  # 网络工具
│   ├── 📁 generators/               # 生成器
│   │   ├── 📄 uuid/
│   │   ├── 📄 timestamp/
│   │   ├── 📄 qrcode/
│   │   └── 📄 .../
│   ├── 📁 converters/               # 转换器
│   └── 📁 text/                     # 文本处理
├── 📁 components/                   # 公共组件
│   ├── 📄 header/                   # 页头组件
│   ├── 📄 sidebar/                  # 侧边栏组件
│   ├── 📄 footer/                   # 页脚组件
│   ├── 📄 code-editor/              # 代码编辑器组件
│   ├── 📄 file-uploader/            # 文件上传组件
│   ├── 📄 copy-button/              # 复制按钮组件
│   └── 📄 .../                      # 其他公共组件
├── 📁 docs/                         # 文档目录
│   ├── 📄 api.md                    # API 文档
│   ├── 📄 development.md            # 开发文档
│   └── 📄 deployment.md             # 部署文档
└── 📁 tests/                        # 测试目录
├── 📄 unit/                     # 单元测试
└── 📄 e2e/                      # 端到端测试

🚀 快速开始

在线使用

本地开发(推荐使用 Docker)

由于本项目是 SPA(单页应用),需要服务器支持路由重定向。推荐使用 Docker 进行本地开发:

# 克隆仓库
git clone https://github.com/Evil0ctal/Reverse-Engineering-Online-Toolkit.git

# 进入项目目录
cd Reverse-Engineering-Online-Toolkit

# 使用 Docker Compose 启动(推荐,支持热更新)
docker-compose up -d

# 然后访问 http://localhost:8080

其他方式(需要 SPA 路由支持):

# 方式一:使用 Node.js serve(带 SPA 支持)
npx serve -s -l 8080

# 方式二:使用 Docker 直接运行
docker build -t reot:latest .
docker run -d -p 8080:80 reot:latest

⚠️ 注意:简单的 HTTP 服务器(如 python -m http.server)不支持 SPA 路由,直接访问工具页面 URL 会导致 404 错误。

Docker 生产部署

# 构建镜像
docker build -t reot:latest .

# 运行容器
docker run -d -p 80:80 --name reot reot:latest

# 或使用 Docker Compose
docker-compose up -d

🤝 参与贡献

我们非常欢迎社区贡献!无论是添加新工具、修复 Bug、改进文档还是添加新语言支持,您的贡献都将帮助更多的人。

如何贡献新功能/工具

1. Fork 并克隆仓库

# Fork 本仓库到您的 GitHub 账户
# 然后克隆您 fork 的仓库
git clone https://github.com/YOUR_USERNAME/Reverse-Engineering-Online-Toolkit.git
cd Reverse-Engineering-Online-Toolkit

2. 创建新分支

# 创建功能分支
git checkout -b feature/your-tool-name

3. 创建工具目录结构

假设您要添加一个名为 my-tool 的新工具,属于 encoding 分类:

# 创建工具目录
mkdir -p tools/encoding/my-tool

工具目录结构应该如下:

tools/encoding/my-tool/
├── 📄 my-tool.html      # 工具的 HTML 页面(以工具ID命名)
├── 📄 my-tool.js        # 工具的核心逻辑
├── 📄 my-tool.css       # 工具的样式(可选)
├── 📄 README.md         # 工具的说明文档
└── 📁 locales/          # 工具专属国际化(可选)
    ├── 📄 zh-CN.json    # 中文翻译
    └── 📄 en-US.json    # 英文翻译

4. 实现工具

my-tool.html 模板:

注意:工具 HTML 文件只需要包含 .tool-container 片段,由主框架动态加载。

<div class="tool-container">
    <!-- 工具头部 -->
    <header class="tool-header">
        <h1 data-i18n="tools.my-tool.title">我的工具</h1>
        <p data-i18n="tools.my-tool.description">工具描述</p>
    </header>

    <!-- 工具主体 -->
    <main class="tool-main">
        <!-- 输入区域 -->
        <section class="input-section">
            <label data-i18n="common.input">输入</label>
            <textarea id="input" data-i18n-placeholder="tools.my-tool.placeholder"></textarea>
        </section>

        <!-- 操作按钮 -->
        <section class="action-section">
            <button id="encode-btn" class="btn btn--primary" data-i18n="common.encode">编码</button>
            <button id="decode-btn" class="btn btn--primary" data-i18n="common.decode">解码</button>
            <button id="clear-btn" class="btn btn--secondary" data-i18n="common.clear">清除</button>
            <button id="copy-btn" class="btn btn--secondary" data-i18n="common.copy">复制结果</button>
        </section>

        <!-- 输出区域 -->
        <section class="output-section">
            <label data-i18n="common.output">输出</label>
            <textarea id="output" readonly></textarea>
        </section>
    </main>
</div>

my-tool.js 模板:

/**
 * My Tool - 我的工具
 * @description 工具功能描述
 * @author Your Name <[email protected]>
 * @license Apache-2.0
 */

(function() {
    'use strict';

    // DOM 元素
    const inputEl = document.getElementById('input');
    const outputEl = document.getElementById('output');
    const encodeBtnEl = document.getElementById('encode-btn');
    const decodeBtnEl = document.getElementById('decode-btn');
    const clearBtnEl = document.getElementById('clear-btn');
    const copyBtnEl = document.getElementById('copy-btn');

    /**
     * 编码函数
     * @param {string} input - 输入字符串
     * @returns {string} - 编码后的字符串
     */
    function encode(input) {
        // 实现编码逻辑
        try {
            // 您的编码实现
            return encodedResult;
        } catch (error) {
            throw new Error(`编码失败: ${error.message}`);
        }
    }

    /**
     * 解码函数
     * @param {string} input - 编码后的字符串
     * @returns {string} - 解码后的字符串
     */
    function decode(input) {
        // 实现解码逻辑
        try {
            // 您的解码实现
            return decodedResult;
        } catch (error) {
            throw new Error(`解码失败: ${error.message}`);
        }
    }

    // 事件监听
    encodeBtnEl.addEventListener('click', () => {
        try {
            const result = encode(inputEl.value);
            outputEl.value = result;
        } catch (error) {
            outputEl.value = error.message;
        }
    });

    decodeBtnEl.addEventListener('click', () => {
        try {
            const result = decode(inputEl.value);
            outputEl.value = result;
        } catch (error) {
            outputEl.value = error.message;
        }
    });

    clearBtnEl.addEventListener('click', () => {
        inputEl.value = '';
        outputEl.value = '';
    });

    copyBtnEl.addEventListener('click', () => {
        REOT.utils.copyToClipboard(outputEl.value);
    });

    // 导出到全局(可选,用于测试)
    window.MyTool = { encode, decode };

})();

5. 添加国际化支持

REOT 采用模块化国际化架构,工具的翻译文件存放在工具目录下,而不是全局 locales 文件夹中。

步骤 1:在根目录 locales 中添加工具基本信息(用于侧边栏和搜索)

locales/zh-CN.jsontools 对象中添加:

{
    "tools": {
        "my-tool": {
            "title": "我的工具",
            "description": "这是我的工具的描述"
        }
    }
}

locales/en-US.jsontools 对象中添加:

{
    "tools": {
        "my-tool": {
            "title": "My Tool",
            "description": "This is the description of my tool"
        }
    }
}

步骤 2:创建工具专属 locales 文件夹(存放工具详细翻译)

mkdir -p tools/encoding/my-tool/locales

创建 tools/encoding/my-tool/locales/zh-CN.json

{
    "title": "我的工具",
    "description": "这是我的工具的描述",
    "placeholder": "请输入要处理的内容",
    "optionA": "选项 A",
    "optionB": "选项 B",
    "errorMessage": "处理失败,请检查输入"
}

创建 tools/encoding/my-tool/locales/en-US.json

{
    "title": "My Tool",
    "description": "This is the description of my tool",
    "placeholder": "Enter content to process",
    "optionA": "Option A",
    "optionB": "Option B",
    "errorMessage": "Processing failed, please check your input"
}

注意:工具 locales 文件中的键会自动合并到 tools.{tool-id} 命名空间下,因此在 HTML 中使用 data-i18n="tools.my-tool.placeholder" 即可引用。

模块化 i18n 的优势

  • 每个工具完全自包含,便于添加/移除工具
  • 按需加载,只加载当前工具的翻译
  • 不同开发者修改不同工具时不会产生 Git 合并冲突

6. 注册工具到主菜单

assets/js/tools-registry.js 中添加工具注册信息:

REOT.tools.register({
    id: 'my-tool',
    category: 'encoding',
    name: 'tools.my-tool.title',        // i18n key
    description: 'tools.my-tool.description',
    icon: 'icon-my-tool',               // 图标类名
    path: '/tools/encoding/my-tool/',
    keywords: ['my', 'tool', 'encode']  // 搜索关键词
});

7. 编写工具文档

在工具目录下创建 README.md

# 我的工具

## 功能描述

简要描述工具的功能和用途。

## 使用方法

1. 在输入框中输入内容
2. 点击"编码"或"解码"按钮
3. 在输出框中查看结果

## 技术实现

简要描述实现原理和使用的算法/库。

## 参考资料

- [相关链接1](https://example.com)
- [相关链接2](https://example.com)

8. 提交代码

# 添加更改
git add .

# 提交更改
git commit -m "feat(encoding): 添加 my-tool 工具

- 实现编码功能
- 实现解码功能  
- 添加中英文国际化支持
- 添加工具说明文档"

# 推送到远程
git push origin feature/your-tool-name

9. 创建 Pull Request

  1. 访问您 fork 的仓库页面
  2. 点击 "New Pull Request" 按钮
  3. 选择 base: main <- compare: feature/your-tool-name
  4. 填写 PR 标题和描述,包括:
    • 功能说明
    • 截图(如有 UI 变更)
    • 测试说明
  5. 提交 PR 等待审核

贡献新语言支持

添加全局翻译:

  1. locales/ 目录下复制 en-US.json
  2. 重命名为对应的语言代码,如 ja-JP.json(日语)
  3. 翻译所有文本
  4. assets/js/i18n.jssupportedLocales 数组中添加新语言代码
  5. 提交 PR

添加工具翻译:

  1. 找到工具目录下的 locales/ 文件夹(如 tools/formatting/json/locales/
  2. 复制 en-US.json 并重命名为新语言代码
  3. 翻译所有文本
  4. 提交 PR

注意:工具的翻译文件是可选的。如果工具没有对应语言的翻译文件,系统会自动回退到默认语言(zh-CN)。

代码规范

  • JavaScript: 遵循 ESLint 标准配置
  • CSS: 遵循 BEM 命名规范
  • HTML: 语义化标签,遵循无障碍访问标准
  • 提交信息: 遵循 Conventional Commits 规范
    • feat: 新功能
    • fix: Bug 修复
    • docs: 文档更新
    • style: 代码格式调整
    • refactor: 代码重构
    • test: 测试相关
    • chore: 构建/工具相关

📝 更新日志

详见 CHANGELOG.md


📄 开源协议

本项目基于 Apache License 2.0 开源。

Copyright 2026 Evil0ctal

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

🙏 鸣谢

感谢以下开源项目的支持:


📧 联系方式


如果这个项目对您有帮助,请给它一个 ⭐ Star!

Made with ❤️ by Evil0ctal

About

Reverse Engineering Online Toolkit (REOT) 是一个基于纯前端实现的在线逆向工程与爬虫工具箱。本项目旨在为安全研究人员、逆向工程师、爬虫工程师和开发者提供一套便捷、高效、无需安装的在线工具集合,用于处理逆向工程期间常见的编码、解码、加密、解密、数据转换等操作。

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors