这是一个专为逆向工程设计的Protobuf数据编辑器,支持解析、编辑和重新序列化Protobuf数据,提供类似MitmProxy的清晰层次化显示。
- 🔍 智能解析: 基于CyberChef的解析逻辑,准确识别Protobuf字段类型
- 📊 多种显示格式: 支持结构化显示、JSON格式、MitmProxy风格和原始数据显示
- ✏️ 实时编辑: 支持字段值的实时编辑和修改
- 🔄 重新序列化: 修改后可以重新序列化为新的Base64数据
- 🎯 MitmProxy风格: 提供类似MitmProxy的层次化字段路径显示
- 🛠️ 多格式支持: 支持Base64和Hex格式的输入输出
- 💾 保存加载: 支持解析结果的保存和加载
- Python: 3.7+
- 操作系统: Windows, macOS, Linux
- 依赖: tkinter (通常随Python一起安装)
# 直接运行增强版编辑器
python enhanced_protobuf_editor.py- Base64标签页: 输入Base64编码的Protobuf数据
- Hex标签页: 输入十六进制格式的Protobuf数据
- 格式转换: 使用"Base64↔Hex"按钮在两种格式间转换
- 文件加载: 点击"从文件加载"按钮从文件导入数据
- 示例数据: 点击"加载示例"按钮加载测试数据
点击"解析数据"按钮后,编辑器会在多个标签页中显示解析结果:
- 结构化显示: 字段列表和详细信息,支持编辑
- JSON格式: 结构化的JSON显示
- MitmProxy风格: 类似MitmProxy的层次化显示
- 原始数据: 十六进制转储和基本信息
- 在"结构化显示"标签页的字段列表中选择要编辑的字段
- 在右侧的编辑框中输入新值
- 点击"更新值"按钮保存修改
- 使用"重置"按钮恢复原始值
- 点击"序列化"按钮生成新的Protobuf数据
- 结果会显示在弹出窗口中
- 支持复制Base64和Hex格式的数据
- 可以保存序列化结果到文件
| 显示类型 | 说明 | 示例 |
|---|---|---|
[uint32] |
32位整数 | [uint32] 1 123 |
[uint64] |
64位整数 | [uint64] 2 456789 |
[fixed32] |
32位固定点 | [fixed32] 3 789 |
[string] |
字符串 | [string] 4 hello |
[bytes] |
字节数据 | [bytes] 5 48656c6c6f |
[message] |
嵌套消息 | [message] 6 |
编辑器提供类似MitmProxy的层次化显示格式:
[message] 1
[uint32] 1.1 123
[string] 1.2 hello
[message] 1.3
[uint64] 1.3.1 456789
[message] 2
[uint32] 2.1 789
- 使用层次化路径(如
1.1,1.3.1)表示嵌套结构 - 字段类型用方括号标识
- 值直接显示在类型后面
- 支持重复字段的自动编号
- 分析APK中的Protobuf数据结构
- 修改Protobuf消息进行测试
- 理解复杂的嵌套消息结构
- 快速生成测试用的Protobuf数据
- 验证Protobuf消息格式
- 调试Protobuf序列化问题
- 解析网络抓包中的Protobuf数据
- 分析应用程序的数据结构
- 研究Protobuf消息格式
- 支持所有基本数据类型的编辑
- 自动类型转换和验证
- 实时更新显示
- 自动检测和修复Base64填充问题
- 处理无效字符
- 验证Protobuf格式
- 自动识别和处理重复字段
- 使用序号区分重复字段(如
3和3.2) - 保持字段的原始顺序
-
解析失败
- 检查输入数据是否为有效的Base64或Hex格式
- 确保数据是完整的Protobuf消息
- 尝试使用"修复Base64"功能
-
字段显示不完整
- 某些复杂的嵌套结构可能需要特殊处理
- 检查原始数据标签页中的十六进制转储
-
序列化结果不正确
- 确保所有字段值都是有效的
- 检查字段类型是否匹配
- 验证修改后的数据结构
- 使用"原始数据"标签页查看十六进制转储
- 对比"JSON格式"和"MitmProxy风格"的显示结果
- 使用示例数据进行测试
- 解析引擎: 基于CyberChef的Protobuf解析逻辑
- UI框架: 使用tkinter构建的跨平台GUI
- 数据处理: 支持大文件的快速解析
- 内存优化: 高效的数据结构和算法
- 初始版本发布
- 基础Protobuf解析和编辑功能
- 支持多种显示格式
- 实时编辑和序列化
MIT License
欢迎提交Issue和Pull Request来改进这个工具。