JS逆向-Protobuf逆向解析

本文详细介绍了如何使用Python快速解析Protobuf,包括Protobuf的基本概念、环境配置、序列化与反序列化过程,以及具体的逆向解析案例。通过案例展示了如何从序列化的数据中获取信息并进行反序列化,帮助理解和应用Protobuf在前端开发中的实践。
摘要由CSDN通过智能技术生成

目录

一、python快的解析Protobuf方式
  • 注意:目录二、三、四、五可以作为了解,实际上目录一就可以解决了,比后面的解决方式更便捷,后面介绍的解决方式的前提是还原.proto文件。如果解决不了的话,再看二、三、四、五也可
  • 1、问题案例:请求参数和响应参数都是序列化的数据结构,不易读。两个名词序列化(将正常可读数据转为protobuf的数据结构,看似是乱码的形式),非序列化反之
    在这里插入图片描述
    在这里插入图片描述
  • 2、解决方案:
    • 依赖安装:pip install blackboxprotobuf

    • 如果要将数据转为序列化数据,则需先确认message_type(Type information including field number, field name and field type),如何确认message_type,我们可以将非序列化的数据复制下来,如下赋值给a变量,然后可以得到消息类型message_type;如果下面代码无法运行,a变量的这个数据换成你自己的

      import blackboxprotobuf
      a = "?2???2?? ·??".encode()
      deserialize_data , message_type =blackboxprotobuf.protobuf_to_json(a)
      print(deserialize_data )  # 非序列化的原始数据
      print(message_type)  # 消息类型结构
      
    • 将数据序列化样例如下,有了消息类型message_type,我们就可以将数据转为序列化数据了,如下

      import blackboxprotobuf
      message_type = {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'int', 'name': ''}, '4': {'type': 'int', 'name': ''}}
      before_data = {'1': 1, '2': 312312312442, '3': 8709708978, '4': 78971987}
      form_data = blackboxprotobuf.encode_message(before_data, message_type)
      print(form_data)
      
    • 将数据非序列化样例如下,直接传入字节content,即可输出json

      import blackboxprotobuf
      content = b'??)?) ?(?#0?(8?"@tBHò:Pí'
      print(blackboxprotobuf.protobuf_to_json(content))  
      # ('{
        "1": "3231",
        "2": "5308",
        "3": "5289",
        "4": "3231",
        "5": "4486",
        "6": "5191",
        "7": "4385",
        "8": "8574",
        "9": "7506",
        "10": "461"
      }', {'1': {'type': 'int', 'name': ''}, '2': {'type': 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下命令安装 google-protobuf: npm install --save google-protobuf 这个命令会将 google-protobuf 模块安装到你的项目中,并将其保存为依赖项。 然后,你可以使用以下路径引入 empty_pb.js 模块: google-protobuf/google/protobuf/empty_pb.js 这将允许你在代码中使用 empty_pb.js 模块。请确保在你的代码中正确引入这个路径。 需要注意的是,确保你已经在安装 google-protobuf 之前完成了 protobufjs 的安装,以便确保这两个模块之间的依赖关系正确。如果你遇到了安装问题或错误提示,你可以使用 --force 选项来强制执行安装命令,以解决已存在的文件问题。 希望这些信息对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [protobuf.js的使用](https://blog.csdn.net/qq_27868061/article/details/114038738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [npm install -g protobufjs](https://blog.csdn.net/qifenzhisanjin/article/details/124952503)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值