2026-01-16 01:04:43 +08:00

222 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 配置文件解密工具 (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)
- 初始版本
- 支持基本的解密功能
- 命令行参数解析
- 批处理脚本支持
## 联系方式
如有问题或建议,请联系开发团队。