Protobuf反序列化

我们在采集数据时,经常会碰到被protobuf序列化的数据,无法直接读出来,正常情况下需要有.proto文件生成所对应语言的解析包。

Protobuf反序列化

一、Python protobuf解析库-blackboxprotobuf

blackboxprotobuf是一个Python库,可在黑盒的情况下直接把protobuf数据解析为JSON数据。

安装依赖:pip3 install blackboxprotobuf

序列化:

message_type = {'1': {'type': 'int', 'id': ''}, '2': {'type': 'string', 'name': ''}}
value = {'1': 123, '2': 'Hello Word'}
data = blackboxprotobuf.encode_message(value, message_type)
print(data)

反序列化:

temp_message, typedef = blackboxprotobuf.protobuf_to_json(data)
print(temp_message)
print(typedef)
Protobuf反序列化

二、逆向解析Protobuf数据

准备工作:

首先需要在电脑上安装Protobuf相关环境,这一步我这里就略了,可以自己查下网上资料。

逆向步骤:

  1. 首先需要把序列化的Protobuf数据保存为文件;
  2. 在终端中使用命令 protoc –decode_raw
Protobuf反序列化
  1. 根据反编译结果,编写.proto文件
syntax="proto3";

message TestMessage {
    int32 id = 1;
    string name = 2;
}
  1. 终端执行 protoc –python_out=. test.proto 命令生成Python包
Protobuf反序列化
  1. 编写Python代码反序列化数据
import test_pb2

with open('data.txt', 'rb') as f:
    data = test_pb2.TestMessage()
    data.ParseFromString(f.read())

    print(data.id)
    print(data.name)

发布者:糖太宗,转载请注明出处:https://www.qztxs.com/archives/science/technology/9428

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年5月22日 下午4:31
下一篇 2022年5月23日 下午4:51

相关推荐

  • 业务层,到底需不需要服务化?

    很多公司,都实施了微服务架构,底层抽象出很多基础数据服务。 基础数据的访问服务化之后,架构如上: (1)站点业务通过RPC接口,调用基础数据服务; (2)基础数据服务通过DAO,从db/cache获取数据; (3)db/cache存储数据;   除了基础数据的访问需要服务化,业务层是否需要服务化?如果需要,什么时机进行服务化?这是本文要讨论的两个问题。 随着...

    2022年5月14日
    2500
  • 什么是RPC,今年最值得学习的开源RPC框架

    又发现一个不错的,工业级的,高性能RPC框架srpc,分享给大家。 (1)RPC简介; (2)行业常见RPC框架; (3)srpc特点; (4)srpc上手指南,demo示例; (5)srpc架构设计; (6)srpc相关资料与资源; 文章较长,建议提前收藏。 什么是RPC? Remote Procedure Call,远程过程调用。 什么是“远程”,为什么...

    2022年5月10日
    3200
  • insight洞察-漏洞生命周期管理使用

    简介 洞察是宜信安全部用来对公司内部系统所出现的安全漏洞进行线上全生命周期管理的漏洞管理平台。 项目地址 主要由3部分组成: 应用系统资产管理 漏洞生命周期管理 安全知识库管理 应用系统资产管理:对公司应用系统资产进行管理,包括系统名称、域名、重要级别、部门、负责人等。 漏洞生命周期管理:对公司应用系统产生的安全漏洞进行线上提交、通告、知悉、复测、分类、风险...

    2022年6月1日
    5700
  • MyISAM与InnoDB的索引,究竟有什么差异?

    数据库的索引分为主键索引(Primary Inkex)与普通索引(Secondary Index)。InnoDB和MyISAM是怎么利用B+树来实现这两类索引,其又有什么差异呢?这是今天要聊的内容。   一,MyISAM的索引 MyISAM的索引与行记录是分开存储的,叫做非聚集索引(UnClustered Index)。 其主键索引与普通索引没有本质差异: ...

    2022年5月11日
    2000
  • frida hook 简单使用

    拿到一份APP渗透测试报告,里面有一个运行日志残留(中危),该日志中保留大量运行日志,其中包含了一些敏感信息,攻击者可以根据该日志获取应用运行的信息,为进一步攻击做准备 我对APP客户端测试比较初级,残留日志我一般会使用adb logcat打印一下或者在程序目录下翻一翻。并没有发现日志中存在敏感信息,问了下测试的工程师,是通过源代码分析找到相关日志类,hoo...

    技术 2022年6月13日
    3000

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信