Android+Python实现protobuf通信系列

学习protobuf正向开发和逆向分析
记录学习成果一下,避免遗忘

  1. protobuf简单介绍
  2. python Flask实现protobuf后台
  3. Android实现protobuf客户端
  4. 抓包+逆向app,分析proto结构

第一篇(protobuf简单介绍)

protobuf(全称:Protocol Buffers)是Google开发的一种轻便高效的结构化数据格式。常常用于数据结构的序列化。
以下是protobuf目前支持的语言和平台:
在这里插入图片描述
优点:
1. 编写简单
2. 高效,即比 XML、Json序列化时间更快,体积更小
3. 扩展性和兼容性好, 即更新数据结构,而不影响和破坏原有的旧程序
缺点:
1. 可读性差,Protobuf采用了二进制格式进行编码
2. 缺乏自描述,需配合.proto文件才能读出其内容意思

protobuf文件结构(以.proto结尾)

使用message来定义每一个需要序列化的数据结构,每个message里面可以定义类型和名称。
类似这样:
在这里插入图片描述
拿string name = 1 来说,string代表字段类型,name代表字段名称,1代表编号。

message之间还可以嵌套
在这里插入图片描述
单个message作用域内字段名称和编号不能重复,使用的时候需要严格按照定义的数据类型规范使用。
一旦字段确定下来,后面在使用过程中也不应更改。编号1-15需要一个字节来编码,编号16-2047需要2个字节编码。因此你应该为经常出现的元素保留1-15范围内的编号,为将来添加更容易频繁出现的元素预留空间。编号最小是1,最大是2的29次方减1(536870911)。注意 19000-19999作为保留编号不能被使用。
更多类型和使用技巧参考官方文档
下一篇: python Flask实现protobuf后台

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章