使用protobuf-decoder轻松解析二进制数据
【免费下载链接】protobuf_decoder 项目地址: https://gitcode.com/gh_mirrors/pr/protobuf_decoder
protobuf-decoder是一个强大的Python库,能够在没有.proto文件的情况下解码protobuf二进制文件。它不仅支持将二进制数据转换为可读的JSON格式,还支持编辑后重新编码为二进制文件,并且可以作为Burp Suite插件集成到网络安全测试流程中。
项目特点
protobuf-decoder具有以下突出特点:
- 无需.proto文件:在缺少协议定义文件的情况下仍能准确解析protobuf二进制数据
- 可视化编辑:以JSON格式展示数据,直观易懂,支持直接编辑修改
- Burp插件集成:无缝集成到Burp Suite,实时查看和修改protobuf网络流量
- 模块化设计:可作为Python库导入到各种项目中灵活使用
快速开始
环境准备
首先需要安装protobuf编译器:
pip install protobuf
生成测试数据
项目提供了完整的示例,首先生成测试用的protobuf二进制文件:
protoc -I=. --python_out=. addressbook.proto
python write_msg.py ADDRESS_BOOK_FILE
解析二进制文件
使用parse.py脚本解析生成的二进制文件:
python parse.py ADDRESS_BOOK_FILE
解析结果将以JSON格式展示,包含字段编号、类型和值信息:
{
"01:00:embedded message": {
"01:00:string": "わたし",
"02:01:Varint": 1234,
"04:02:bytes": "0x5a:0x64:0x3b:0xdf:0x4f:0x8d:0xf3:0x3f:0x2d:0xb2:0x9d:0xef:0xa7:0xc6:0x9:0x40",
"05:03:embedded message": {
"01:00:Varint": 1,
"02:01:string": "0800000",
"03:02:embedded message": {
"01:00:32-bit": 666.7769775390625
}
}
}
}
Burp插件使用
protobuf-decoder可以作为Burp Suite插件,方便在网络安全测试中分析protobuf流量:
- 将
parse.py复制到Burp Suite的jar目录 - 在Burp中加载
protobuf_decoder.py作为扩展 - 完成后即可在Burp中查看protobuf二进制数据的JSON格式表示
插件会自动识别protobuf流量,并在消息编辑器中提供"Protobuf Plain Text"标签页,支持实时查看和修改数据。
Python模块集成
除了命令行工具和Burp插件,protobuf-decoder还可以作为Python模块集成到项目中:
import protobuf_decoder.parse as pbparser
# 解码protobuf二进制数据
data = b'\n\x07\x08\xd2\t\x12\x03\xe3\x82\x8f'
messages = pbparser.Decode(data)
# 重新编码修改后的数据
output = list()
bytes_written = pbparser.ReEncode(messages, output)
encoded_data = bytes(bytearray(output))
技术解析
协议定义示例
项目使用addressbook.proto作为示例协议:
syntax="proto3";
package tutorial;
message Person {
string name = 1;
int32 id = 2;
string email = 3;
repeated double num = 4 [packed=true];
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
PhoneType type = 1;
string number = 2;
message Account {
float fnum = 1;
}
Account account = 3;
}
repeated PhoneNumber phone = 5;
}
message AddressBook {
repeated Person person = 1;
float fnum = 2;
}
解析算法原理
protobuf-decoder通过分析二进制流中的varints、嵌入消息、字符串和固定数值等元素,能够识别字段类型和顺序。关键算法包括:
- 动态wire格式解析:识别字段编号和数据类型
- 变长整数解析:处理protobuf的varint编码
- 类型推断:根据wire类型推断具体的数据类型
- 递归解析:处理嵌套的嵌入消息结构
JSON格式说明
解析后的JSON键名采用field_number:id:type格式:
field_number:对应.proto文件中的字段编号id:用于去重的标识符type:数据类型(Varint、32-bit、64-bit、embedded message等)
应用场景
协议开发与调试
在协议开发过程中,无需等待.proto文件即可快速验证和调试protobuf协议,大大提高开发效率。
网络安全审计
在渗透测试和安全监控中,利用Burp插件实时解码protobuf流量,深入理解数据交换细节,发现潜在安全漏洞。
数据分析
对于不透明的protobuf数据源,如日志文件或其他服务通信,可以使用protobuf-decoder进行数据提取和分析,无需依赖协议定义文件。
项目优势
相比传统的protobuf解析方式,protobuf-decoder提供了更大的灵活性:
- 降低依赖:不依赖.proto文件,适用于逆向工程和未知协议分析
- 可视化操作:JSON格式便于人工阅读和修改
- 集成便捷:多种使用方式满足不同场景需求
- 开源免费:基于GPLv2许可证,可自由使用和修改
protobuf-decoder为protobuf数据处理提供了全新的解决方案,无论是开发调试、安全测试还是数据分析,都能提供强大的支持。
【免费下载链接】protobuf_decoder 项目地址: https://gitcode.com/gh_mirrors/pr/protobuf_decoder
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



