一:什么是protobuf协议
1、protocol buffers介绍:是一种语言无关、平台无关、可扩展的序列化结构数据的方法。严格说不算是加密,只能是叫序列化结构数据,让可读变为疑似的乱码,那反序列化即让疑似的乱码变为可读
2、protobuf使用流程的前提是有一个.proto文件,对逆向而言就是还原.proto文件,选择编译成相应的编程语言包,然后调用包进行序列化和反序列化
- 比如编程语言选择python,则我们会将.proto文件先编译成python要用的python模块包(与requests等包类似)
- 接着就是用python调用已编译的模块包进行数据的序列化和反序列化
二:破解protibuf序列化数据
1、导入python包 pip install blackboxprotobuf
2、把抓包的序列化数据的hex数据保存为bin文件
3、使用blackboxprotobuf进行反序列化
4、使用blackboxprotobuf进行序列化
5、进行就可以通过读取字典的形式解析数据了
三:接下来尝试一个小案例
1.打开浏览器查看接口:
这不就是一个小小的序列化后的数据吗,直接保存为bin文件,使用blackboxprotobuf反序列化
打开fiddler抓包
这是请求数据
选择hexView
选中黑色数据,选择save selected及保存为bin文件
使用blackboxprotobuf反序列化
下面是反序列化后的结果
反序列化后的数据
消息类型结构
现在一目了然
把反序列化的数据进行序列化然后提交,接口不就调通了吗
一定要注意消息类型结构中数据类型要和反序列化数据类型对应
响应数据也是序列化的数据,只要用blackboxprotobuf进行反序列化即可
connect, m = blackboxprotobuf.protobuf_to_json(response.content)
print(connect)
接下来就可以通过json来解析数据