# 配置文件解密工具 (ConfigDecryptor) ## 概述 ConfigDecryptor 是用于解密 VisionRobot 项目中加密配置文件的命令行工具。 ## 功能 - 解密 `config.encrypt` 文件为 `config.xml` - 支持自定义输出路径 - 命令行界面,方便集成到脚本 ## 使用方法 ### 方法一:使用批处理脚本(推荐) ```bash # 进入工具目录 cd Tools\ConfigDecryptor # 运行解密脚本 decrypt_config.bat "C:\path\to\config.encrypt" "GrabBagAppVisionRobot" ``` ### 方法二:直接调用可执行文件 ```bash # 基本用法 ConfigDecryptor.exe --key <密钥> # 指定输出路径 ConfigDecryptor.exe --key <密钥> --output <输出路径> # 静默模式 ConfigDecryptor.exe --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 ` - 解密密钥(必需) - `-o, --output ` - 输出文件路径(默认:同级目录下的 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) - 初始版本 - 支持基本的解密功能 - 命令行参数解析 - 批处理脚本支持 ## 联系方式 如有问题或建议,请联系开发团队。