【Android安全】Protobuf原理与解析

news2024/11/17 16:30:16

protobuf 简介

抓包时看到header中有这个:

content-type: application/x-protobuf

说明包的content是以protobuf格式编码的

关于protobuf的介绍,可以参考:
https://techkranti.com/what-is-protobuf-explained-for-hackers/

protobuf 的背景

“protobuf”代表 Protocol Buffers。Google 在 2001 年创建了这种格式供内部使用,并于 2008 年发布供公众使用。

protobuf的优势:性能和向后兼容性(in case of future schema changes)

protobuf 的效率

按照Google的说法,protobuf 比 XML 快 20 到 100 倍
(参考 https://developers.google.com/protocol-buffers/docs/overview#whynotxml)

protobuf 的解析

整体来说,一段protobuf格式的16进制数据,是没法单独完美解析的,需要使用相应的.proto文件,才能完美解析。

下面说明使用protobuf格式传递数据的过程。

开发者首先需要编写.proto文件,.proto文件的内容示例如下:
在这里插入图片描述
然后需要把.proto文件丢给目标语言的protobuf编译器。protobuf编译器将生成相应语言的代码。例如,对Java来说,编译器生成相应的.java文件,以及一个特殊的Builder类(该类用于创建消息类接口)。

protobuf编译器会生成相应的方法,这些方法包括序列化方法和反序列化方法。

  • 序列化方法用于创建和操作object,将它们转换为序列化格式,以进行存储或传输。
  • 反序列化方法用于将输入的protobuf数据转换为object。

编译器完成它的工作后,开发人员所要做的,就是在发送/接收数据的代码中使用这些方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++——类和对象(一)

目录 一. 面向过程和面向对象 二. 类的引入 三. 类的定义 1.结构 2.类的作用域 3.类的两种定义方式 四. 类的访问限定符及封装 1.引入 2.访问限定符 3.封装 五. 类的实例化 六. 类对象模型 七. this指针 1.this指针的引出 2.this指针的特性 一. …

JavaScript设计模式之面向对象编程

为了深入地学习 javascript ,奔着一名标准 Web 开发人员的标准,想要深入了解一下面向对象的编程思想,提高自己模块化开发的能力,编写可维护、高效率、可拓展的代码,最近一直拜读 《JavaScript设计模式》 ,对…

【LeetBook】二叉树

参考资料:LeetBook / 二叉树 前言 差不多的解题思路就是dfs能够解决,其次就是bfs。 主要是递归的解法。 一刷就是了解了 解题的 思路 后序再补一些二叉树的题再刷一刷 目录树的介绍树的遍历前序遍历中序遍历后序遍历层序遍历(广度优先搜索)递归解决问题“…

【FPGA】中值滤波处理BMP图片

文章目录一、中值滤波二、BMP图片格式三、功能实现1.代码设计思路2.shift IP核3.代码实现四、结果测试参考博客一、中值滤波 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。 中值滤波是基于排序统计理论…

【GO】K8s 管理系统项目[API部分--Ingress]

K8s 管理系统项目[API部分–Ingress] 1. 接口实现 service/dataselector.go import ("sort""strings""time"appsv1 "k8s.io/api/apps/v1"corev1 "k8s.io/api/core/v1"nwv1 "k8s.io/api/networking/v1" )// Ing…

JavaScript client screen offset scroll

文章目录JavaScript client screen offset scrollclientX和clientY、offsetX和offsetY、screenX和screenY、pageX和pageYclientWidth、offsetWidth、scrollWidthwindow.outerWidth、window.innerWidth、document.documentElement.clientWidthJavaScript client screen offset s…

【开发工具】Gradle的安装 与 配置环境变量

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Gradle安装配置教程一、安装Gradle二、配置环境…

C++: Essential C++ 读书笔记:面向过程编程:调用函数。

1:传值和传址区别 按值传递: 在调用函数中将原函数的值拷贝一份过去给被调用的函数,在被调用函数中对该值的修改,不会影响原函数的值。值传递,变量赋值,修改变量的值------修改的是新地址(复制地…

智能家居加速落地,景联文科技提供数据采集标注服务

“以AI驱动智能家居,智能家庭助手和智能家居安防同向发展的智能物联网是目前主流趋势。高质量的标注数据能够高效训练算法,加速应用落地。景联文科技为相关企业提供、智能语音助手、人脸识别、指纹识别门禁系统、非法闯入检测、扫地机器人智能终端控制等…

临床资料研究中的风险因素评估相关指标

前言 写这篇文章是因为最涉及的医学相关的项目比较多,有些常常遇到的概念容易混淆,在这里着重区分一下。(感谢广大学霸的分享) 1. Ratio 与Rate 的区别 Ratio:表示相对比,简单理解为一个数值相对于另一个…

【1】高危漏洞利用工具 (2023.1.6更新)-- Apt_t00ls

0x01 工具介绍增加CNVD-2023-00895包括:泛微、蓝凌、用友、万户、致远、通达、中间件、安全设备等多个高位漏洞。泛微: e-cology workrelate_uploadOperation.jsp-RCE (默认写入冰蝎4.0.3aes) e-cology page_uploadOperation.jsp-RCE (暂未找到案例 仅供检测poc) e-…

Vivado综合属性之ASYNC_REG

本文验证了综合属性ASYNC_REG对寄存器位置的影响。 ASYNC_REG用于单bit信号采用双(或多)触发器实现异步跨时钟域的场合,此时所有用于同步的触发器都要标记ASYNC_REG。标记方式为: (* ASYNC_REG "TRUE" *) reg sync_0…

想在2023 年成为前端 Web 开发人员的分步指南

当我开始成为一名前端开发人员时,这是我希望拥有的路线图我想出了这个路线图,它有助于实现成为全能开发人员的目标。让我们开始吧。谁是前端开发人员?好的,现在谁是后端开发人员?那么如何成为一名前端开发人员呢&#…

Java 集合练习题

SourceURL:file:///home/windstorm/Documents/JAVA/JavaCoursePractise/Java 集合练习题.docx 答案: import java.lang.reflect.Array; import java.security.cert.CollectionCertStoreParameters; import java.util.*; public class Main { public static voi…

promise和async用法及区别(详解)

一、promisepromise的概念Promise 是异步编程的一种解决方案,是一个构造函数,自身有all、reject、resolve方法,原型上有then、catch等方法。特点:对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态&…

【django】模型类中数据的增删改查操作总结

文章目录一、数据库数据操作二、创建对象三、批量创建对象方法一:for循环迭代方法二:bulk_create()四、更新对象save()默认更新所有的字段指定要更新的字段一次性更新多个对象五、查询对象1、管理器2、QuerySet3、检索全部对象a、要注意:4、过…

01 踏上python之旅

Python是一种跨平台的、开源的、免费的、解释型的高级编程语言。它具有丰富和强大的库,能够把用其他语言制作的各种模块很轻松地连接在一起。所以被称为胶水语言。 python的应用领域: Web开发大数据处理人工智能自动化运维开发云计算爬虫游戏开发 解释…

【C语言】详解#define,#ifdef,#ifndef,#elif,#undef,以及相关运算符

1.明示常量 #define 预处理指令结尾不带;(分号),在预编译的过程中使用宏的地方会进行展开,是用多少次就展开多少次,但是只替换 不计算,预处理器在发现程序中的宏后,会用宏等价的替换…

生物化学 SY002实验 最常用的酸spiric acid+阿司匹林Aspirin+从柳树皮得到水杨苷

阿司匹林已应用百年,成为医药史上三大经典药物之一。 小知识点:水杨酸的作用和阿司匹林的作用不同之处(抗凝),使用时的胃损伤等 使用历史 埃及埃伯斯纸莎草纸中关于使用白柳树叶制成的混合物治疗发炎伤口的建议。(因为柳叶和树…

软著申请你还不会?我是这样申请的

大家好,我是小悟 兄弟姐妹们,关于软著申请的话题,早前已经写过几篇文章的介绍了,包括软著的申请流程攻略和踩到被打回补正的坑,有兴趣的可以翻翻之前的文章,搜关键字【软著】就有。 私信的小伙伴来自各行…