前言

之前有记录js逆向、安卓逆向等,今天这里记录下一些协议逆向,这种一般出现在websocket 协议、 protobuf 协议等,某音,B站 APP等都有用到这些协议加密,而我们不再是像 js 端一样去找定义的类型 id 了。

基本流程和原理

一、什么是 protobuf 协议?
Protobuf (Protocol Buffers) 是谷歌开发的一款无关平台,无关语言,可扩展,轻量级高效的序列化结构的数据格式,用于将自定义数据结构序列化成字节流,和将字节流反序列化为数据结构。所以很适合做数据存储和为不同语言,不同应用之间互相通信的数据交换格式,只要实现相同的协议格式,即后缀为 proto 文件被编译成不同的语言版本,加入各自的项目中,这样不同的语言可以解析其它语言通过 Protobuf 序列化的数据。目前官方提供 c++,java,go 等语言支持。

二、protobuf 堆栈输出

1、首先我们从 charles 应用中保存我们抓到的某音数据包,截图如下所示:

2、访问协议接口,将 response 响应内容保存为 .bin 格式文件,截图如下所示:

3、使用 protobuf_inspector python 第三方包打印 protobuf 文件堆栈信息,截图如下所示:

总结:打印 protobuf 数据堆栈信息后,接下来我们只需要根据打印的堆栈信息定义 proto id 类型文件并编译为 python 可执行文件即可完成对某音 protobuf 协议还原。

三、proto 文件定义及编译
1、通过分析打印的堆栈信息,确定我们本次要提取的文字内容,截图如下所示:

2、确定我们要提取的文字内容后,定义 proto 文件格式,定义后的结构体如下所示:

syntax = 'proto3';
message FeedData {message Message{string url = 2;}message Info{string           user_id   = 1;string           user_name = 3;repeated Message data      = 7;}message FeedView{string        item_id = 1;repeated Info info    = 4;}repeated FeedView message = 5;
}

3、执行如下命令,编译为 python protobuf 可执行文件:

protoc  --python_out=. *.proto

4、运行命令后,生成 python protobuf py 文件,截图如下所示:

总结:走到这里 protobuf 协议就完全还原了,接下来让我们进入完整代码实现环节吧。

代码实现

整个项目完整代码实现如下:

from dyFeed_pb2 import FeedData
from google.protobuf.json_format import MessageToDictdef main():with open('feed2.bin', 'rb') as f:_info = FeedData()_info.ParseFromString(f.read())_data = MessageToDict(_info, preserving_proto_field_name=True)items = _data.get("message", [])for item in items:item_id = item.get("item_id")info = item.get("info")[0]user_id = info.get("user_id")user_name = info.get("user_name")icon = info.get("data")[0].get("url")print(item_id, user_id, user_name, icon)if __name__ == '__main__':main()

代码编写完成后,我们运行代码,代码输出截图如下所示:

以上一套完整逆向分析协议加密就此完成,特此记录~
分析给大家,希望对大家有用!

逆向分析:还原 App protobuf 协议加密相关推荐

  1. 某音App protobuf协议还原逆向分析

    趣味模块 小红是一名爬虫开发工程师,自从上次小红解决了字体反爬.websocket协议.B站protobuf协议后,小红一直所向披靡,过五关斩六将,在一个多月的时间里一直没有遇到过有难度的问题.但是今 ...

  2. 串口调试软件,功能强大,侦测,拦截,逆向分析串口通汛协议

    串口调试软件,功能强大,侦测,拦截,逆向分析串口通汛协议,是RS232 /422/485串行端口的专业工貝软件编号:436653364752811GUANXFENG

  3. Android逆向小技巧①:从Activity下手找到切入点,逆向分析支付宝APP

    明确目标 关于Android应用的解包.反编译,在网上已经有无数文章了,此处不再赘述.当你已经使用 [d2j-dex2jar] 和 [jd-gui] 得到了APK反编译后的JAVA代码,面对庞大的代码 ...

  4. 逆向分析某App其Frida、Xposed、Root检测及protobuf数据解析

    1.前言 接到客户需求需要分析某海外语音社交App其房间数据和榜单数据,该app除了部分hook检测外,还有个protobuf挺有意思的,现将该项目的整个流程还原 需要的工具如下: 一个app:链接: ...

  5. 某饿了么APP最新版逆向分析(二):加密参数初探

    二.分析加密参数 说做就做,这边用的python进行模拟请求 万事俱备只欠东风,点击run 发现报错了 怎么回事? 明明请求的内容和抓包的内容完全一致 怎么没有返回我们想要的数据 报错内容为参数错误 ...

  6. 某车联网App 通讯协议加密分析(四) Trace Code

    一.目标 之前我们已经通过Trace Block 来比对了Unidbg和App跑的结果.现在他们运行的流程都差不多了,但是结果还是不对,今天我们就要通过Trace Code进行更细致的对比. v6.1 ...

  7. android 锁屏 勒索代码,“荒野行动盒子”Root锁屏勒索样本分析--一步一步教你逆向分析勒索App...

    对了!为什么我用这个解锁码解模拟器,结果得出一大堆Java码?就是类似这样的Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsof ...

  8. B 站弹幕 protobuf 协议还原分析

    这是「进击的Coder」的第 657 篇技术分享 作者:TheWeiJun 来源:逆向与爬虫的故事 " 阅读本文大概需要 3 分钟. " 目录 一.什么是protobuf? 二.网 ...

  9. js aes加密_某高考咨询网js逆向分析笔记

    一.某高考资讯网逆向分析 某网站的js加密分析,安全签名signsafe + HmacSHA1 + AES 一年前分析过网站数据还没有加密,最近需要获取新的数据发现原先的爬虫失效,请求和响应都经过加密 ...

最新文章

  1. 前端(一)——HTML之基本标签、图片标签、超链接、锚链接
  2. OpenGL 实例化 Instancing
  3. java jvm学习笔记三(class文件检验器)
  4. (转)以太坊(Ethereum ETH)是如何计算难度的
  5. Eclipse 编译C++
  6. mac电脑重装系统操作步骤
  7. passenger中的设置ssl
  8. python 生成诸如A001 A002 ... A100这样的序列
  9. 新生电脑Win10入门基础操作
  10. SheetJS生成/解析Excel
  11. java jtextarea.setfont_如何在JTextArea中更改文本颜色?
  12. 如何写cover letter 翻译自How to write a cover letter
  13. 方舟服务器物理机配置,方舟云服务器要什么配置
  14. tracert 实作
  15. jsliang 2020 求职系列
  16. Oracle AWR报告详细分析
  17. Qt项目发布打包教程(win10)
  18. 南达科他州立大学计算机科学,南达科他州立大学最新入学要求快来看!
  19. 网络协议学习-mDNS
  20. 计算机课怎样退出广播,关闭了无线广播怎么办?

热门文章

  1. [机器学习]1模型评估与选择
  2. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(9月7日~9月13日)...
  3. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(10月31日~11月6日)...
  4. 做开发3年,字节跳动二面JVM底层被问得哑口无言
  5. ROS小车基于yocs_smoother_velocity做速度平滑处理
  6. js重新加载页面的方法
  7. windows软件窗口或者对话框太大超出屏幕解决办法
  8. 高通骁龙600系列处理器
  9. SAP客户主数据相关表
  10. Redis分布式锁相关【摘抄】