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