222 lines
5.5 KiB
Markdown
Raw Normal View History

2026-01-16 01:04:43 +08:00
# 配置文件解密工具 (ConfigDecryptor)
## 概述
ConfigDecryptor 是用于解密 VisionRobot 项目中加密配置文件的命令行工具。
## 功能
- 解密 `config.encrypt` 文件为 `config.xml`
- 支持自定义输出路径
- 命令行界面,方便集成到脚本
## 使用方法
### 方法一:使用批处理脚本(推荐)
```bash
# 进入工具目录
cd Tools\ConfigDecryptor
# 运行解密脚本
decrypt_config.bat "C:\path\to\config.encrypt" "GrabBagAppVisionRobot"
```
### 方法二:直接调用可执行文件
```bash
# 基本用法
ConfigDecryptor.exe <config.encrypt路径> --key <密钥>
# 指定输出路径
ConfigDecryptor.exe <config.encrypt路径> --key <密钥> --output <输出路径>
# 静默模式
ConfigDecryptor.exe <config.encrypt路径> --key <密钥> --silent
```
### 示例
```bash
# 解密 GrabBagApp 的配置
ConfigDecryptor.exe "C:\GrabBagApp\Config\config.encrypt" --key "GrabBagAppVisionRobot"
# 解密 LapWeldApp 的配置并指定输出路径
ConfigDecryptor.exe "D:\LapWeldApp\Config\config.encrypt" ^
--key "LapWeldAppVisionRobot" ^
--output "D:\LapWeldApp\Config\config_backup.xml"
```
## 各应用的密钥
| 应用名称 | 密钥 |
|---------|------|
| GrabBagApp | GrabBagAppVisionRobot |
| LapWeldApp | LapWeldAppVisionRobot |
| ParticleSizeApp | ParticleSizeAppVisionRobot |
| WorkpieceApp | WorkpieceAppVisionRobot |
| BeltTearingApp | BeltTearingAppVisionRobot |
**密钥规则**:应用程序名称 + "VisionRobot"
## 工作流程
### 完整的配置修改流程
1. **停止应用程序**
```bash
# 确保应用程序已关闭
taskkill /F /IM GrabBagApp.exe
```
2. **解密配置文件**
```bash
cd Tools\ConfigDecryptor
decrypt_config.bat "C:\GrabBagApp\Config\config.encrypt" "GrabBagAppVisionRobot"
```
解密后会在配置目录生成 `config.xml` 文件
3. **修改配置**
```bash
# 使用文本编辑器修改 config.xml
notepad "C:\GrabBagApp\Config\config.xml"
```
4. **重启应用程序**
```bash
# 启动应用,配置将自动重新加密
GrabBagApp.exe
```
应用程序启动时会:
- 检测到 `config.xml` 存在
- 使用 `config.xml` 更新 `config.encrypt`
- 删除 `config.xml`
## 命令行参数
### 必需参数
- `file` - 要解密的 config.encrypt 文件路径(位置参数)
### 可选参数
- `-k, --key <key>` - 解密密钥(必需)
- `-o, --output <path>` - 输出文件路径(默认:同级目录下的 config.xml
- `-s, --silent` - 静默模式,只输出最少信息
- `-h, --help` - 显示帮助信息
- `-v, --version` - 显示版本信息
## 编译
### 使用 qmake
```bash
cd Tools\ConfigDecryptor
qmake ConfigDecryptor.pro
nmake # Windows MSVC
# 或
make # Linux/Unix
```
### 使用 Qt Creator
1. 打开 `ConfigDecryptor.pro` 项目文件
2. 配置构建套件Desktop Qt
3. 构建项目
4. 可执行文件将输出到 `../../bin` 目录
## 错误处理
### 常见错误及解决方案
1. **错误:解密失败**
- 原因:密钥错误
- 解决:检查密钥是否正确(应用名称 + "VisionRobot"
2. **错误:文件格式不匹配**
- 原因:不是有效的加密配置文件
- 解决:确认文件是由应用程序加密生成的 config.encrypt
3. **错误:无法创建输出文件**
- 原因:没有写入权限或目录不存在
- 解决:以管理员身份运行或检查输出路径
4. **错误:找不到 ConfigDecryptor.exe**
- 原因:工具未编译或路径错误
- 解决:先编译 ConfigDecryptor 项目
## 安全提示
⚠️ **重要提示**
1. **密钥保护**:解密密钥即为"应用名称 + VisionRobot",这是固定的。虽然简单,但配合目录权限控制,可以防止普通用户随意访问配置。
2. **备份配置**:在修改配置前,建议备份 `config.encrypt` 文件:
```bash
copy config.encrypt config.encrypt.backup
```
3. **权限要求**:如果配置目录设置了权限保护,解密工具可能需要管理员权限:
```bash
# 以管理员身份运行
右键 -> 以管理员身份运行
```
4. **配置验证**:修改后的 config.xml 应符合 XML 格式,否则应用程序可能无法启动。
## 技术细节
### 加密格式
config.encrypt 文件格式:
```
+-------------------+
| 魔术头 (8 bytes) | "VRENC1.0"
+-------------------+
| 盐值 (16 bytes) | 随机生成
+-------------------+
| 加密数据 (N bytes) | 配置文件加密后的内容
+-------------------+
| 校验和 (4 bytes) | MD5 校验前4字节
+-------------------+
```
### 加密算法
- **密钥派生**PBKDF2 风格10000轮 SHA-256
- **加密方式**流密码XOR with key
- **完整性**MD5 校验和
## 开发指南
### 添加新功能
1.`main.cpp` 中添加新的命令行选项
2. 使用 `QCommandLineParser` 解析参数
3. 调用 `ConfigEncryption` 类的相关方法
### 依赖项
- Qt Core 模块
- AppCommon 静态库(包含 ConfigEncryption 类)
- VrUtils 静态库(日志功能)
## 许可证
内部工具,仅供 VisionRobot 项目使用。
## 版本历史
### v1.0.0 (2024)
- 初始版本
- 支持基本的解密功能
- 命令行参数解析
- 批处理脚本支持
## 联系方式
如有问题或建议,请联系开发团队。