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後臺

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