zoukankan      html  css  js  c++  java
  • python谷歌序列化传输

    今日破解某app加密app当中用到了谷歌序列化传输

    1.请求序列化文件

    # Generated by the protocol buffer compiler.  DO NOT EDIT!
    # source: xbeiapp.proto
    # 用于x呗请求参数的序列化
    
    import sys
    _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
    from google.protobuf import descriptor as _descriptor
    from google.protobuf import message as _message
    from google.protobuf import reflection as _reflection
    from google.protobuf import symbol_database as _symbol_database
    from google.protobuf import descriptor_pb2
    # @@protoc_insertion_point(imports)
    
    _sym_db = _symbol_database.Default()
    
    
    
    
    DESCRIPTOR = _descriptor.FileDescriptor(
      name='xbeiapp.proto',
      package='',
      syntax='proto3',
      serialized_pb=_b('
    x0exbei.proto"xd0x01
    x0cTerminalInfox12x14
    x0cterminalTypex18x01 x01(	x12x12
    
    appVersionx18x02 x01(	x12x15
    
    systemVersionx18x03 x01(	x12x11
    	deviceKeyx18x04 x01(	x12x0c
    x04langx18x05 x01(	x12x12
    
    appChannelx18x07 x01(	x12x13
    x0bproductTypex18x08 x01(	x12x13
    x0bproductNamex18	 x01(	x12x0f
    x07x61ppTypex18
     x01(	x12x0f
    x07x61ppNamex18x0b x01(	"xe6x02
    x0fx45nvironmentInfox12x16
    x0ex64x65viceUniqueIdx18x04 x01(	x12x10
    x08x62lackBoxx18x05 x01(	x12x12
    
    intranelIPx18x07 x01(	x12x11
    	longiTudex18	 x01(	x12x10
    x08latiTudex18
     x01(	x12x0b
    x03macx18x0b x01(	x12x0c
    x04imeix18x0c x01(	x12x15
    
    phoneOperatorx18
     x01(	x12x13
    x0bphoneMarkerx18x0e x01(	x12x12
    
    phoneModelx18x0f x01(	x12x14
    x0coperationSysx18x11 x01(	x12x1b
    x13operationSysVersionx18x12 x01(	x12x12
    
    isEmulatorx18x18 x01(	x12/
    
    resolutionx18x13 x03(x0bx32x1b.EnvironmentInfo.Resolutionx1ax1d
    
    Resolutionx12x0f
    x07smartidx18x06 x01(	"x81x01
    x08xbeix12x13
    x0bphoneNumberx18x03 x01(	x12#
    x0cterminalInfox18x02 x03(x0bx32
    .TerminalInfox12x10
    x08x63odeTypex18x04 x01(	x12)
    x0fx65nvironmentInfox18x05 x03(x0bx32x10.EnvironmentInfobx06proto3')
    )
    
    
    
    
    _TERMINALINFO = _descriptor.Descriptor(
      name='TerminalInfo',
      full_name='TerminalInfo',
      filename=None,
      file=DESCRIPTOR,
      containing_type=None,
      fields=[
        _descriptor.FieldDescriptor(
          name='terminalType', full_name='TerminalInfo.terminalType', index=0,
          number=1, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='appVersion', full_name='TerminalInfo.appVersion', index=1,
          number=2, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='systemVersion', full_name='TerminalInfo.systemVersion', index=2,
          number=3, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='deviceKey', full_name='TerminalInfo.deviceKey', index=3,
          number=4, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='lang', full_name='TerminalInfo.lang', index=4,
          number=5, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='appChannel', full_name='TerminalInfo.appChannel', index=5,
          number=7, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='productType', full_name='TerminalInfo.productType', index=6,
          number=8, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='productName', full_name='TerminalInfo.productName', index=7,
          number=9, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='appType', full_name='TerminalInfo.appType', index=8,
          number=10, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='appName', full_name='TerminalInfo.appName', index=9,
          number=11, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
      ],
      extensions=[
      ],
      nested_types=[],
      enum_types=[
      ],
      options=None,
      is_extendable=False,
      syntax='proto3',
      extension_ranges=[],
      oneofs=[
      ],
      serialized_start=19,
      serialized_end=227,
    )
    
    
    _ENVIRONMENTINFO_RESOLUTION = _descriptor.Descriptor(
      name='Resolution',
      full_name='EnvironmentInfo.Resolution',
      filename=None,
      file=DESCRIPTOR,
      containing_type=None,
      fields=[
        _descriptor.FieldDescriptor(
          name='smartid', full_name='EnvironmentInfo.Resolution.smartid', index=0,
          number=6, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
      ],
      extensions=[
      ],
      nested_types=[],
      enum_types=[
      ],
      options=None,
      is_extendable=False,
      syntax='proto3',
      extension_ranges=[],
      oneofs=[
      ],
      serialized_start=559,
      serialized_end=588,
    )
    
    _ENVIRONMENTINFO = _descriptor.Descriptor(
      name='EnvironmentInfo',
      full_name='EnvironmentInfo',
      filename=None,
      file=DESCRIPTOR,
      containing_type=None,
      fields=[
        _descriptor.FieldDescriptor(
          name='deviceUniqueId', full_name='EnvironmentInfo.deviceUniqueId', index=0,
          number=4, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='blackBox', full_name='EnvironmentInfo.blackBox', index=1,
          number=5, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='intranelIP', full_name='EnvironmentInfo.intranelIP', index=2,
          number=7, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='longiTude', full_name='EnvironmentInfo.longiTude', index=3,
          number=9, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='latiTude', full_name='EnvironmentInfo.latiTude', index=4,
          number=10, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='mac', full_name='EnvironmentInfo.mac', index=5,
          number=11, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='imei', full_name='EnvironmentInfo.imei', index=6,
          number=12, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='phoneOperator', full_name='EnvironmentInfo.phoneOperator', index=7,
          number=13, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='phoneMarker', full_name='EnvironmentInfo.phoneMarker', index=8,
          number=14, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='phoneModel', full_name='EnvironmentInfo.phoneModel', index=9,
          number=15, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='operationSys', full_name='EnvironmentInfo.operationSys', index=10,
          number=17, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='operationSysVersion', full_name='EnvironmentInfo.operationSysVersion', index=11,
          number=18, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='isEmulator', full_name='EnvironmentInfo.isEmulator', index=12,
          number=24, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='resolution', full_name='EnvironmentInfo.resolution', index=13,
          number=19, type=11, cpp_type=10, label=3,
          has_default_value=False, default_value=[],
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
      ],
      extensions=[
      ],
      nested_types=[_ENVIRONMENTINFO_RESOLUTION, ],
      enum_types=[
      ],
      options=None,
      is_extendable=False,
      syntax='proto3',
      extension_ranges=[],
      oneofs=[
      ],
      serialized_start=230,
      serialized_end=588,
    )
    
    
    _xbei = _descriptor.Descriptor(
      name='xbei',
      full_name='xbei',
      filename=None,
      file=DESCRIPTOR,
      containing_type=None,
      fields=[
        _descriptor.FieldDescriptor(
          name='phoneNumber', full_name='xbei.phoneNumber', index=0,
          number=3, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='terminalInfo', full_name='xbei.terminalInfo', index=1,
          number=2, type=11, cpp_type=10, label=3,
          has_default_value=False, default_value=[],
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='codeType', full_name='xbei.codeType', index=2,
          number=4, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='environmentInfo', full_name='xbei.environmentInfo', index=3,
          number=5, type=11, cpp_type=10, label=3,
          has_default_value=False, default_value=[],
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
      ],
      extensions=[
      ],
      nested_types=[],
      enum_types=[
      ],
      options=None,
      is_extendable=False,
      syntax='proto3',
      extension_ranges=[],
      oneofs=[
      ],
      serialized_start=591,
      serialized_end=720,
    )
    
    _ENVIRONMENTINFO_RESOLUTION.containing_type = _ENVIRONMENTINFO
    _ENVIRONMENTINFO.fields_by_name['resolution'].message_type = _ENVIRONMENTINFO_RESOLUTION
    _xbei.fields_by_name['terminalInfo'].message_type = _TERMINALINFO
    _xbei.fields_by_name['environmentInfo'].message_type = _ENVIRONMENTINFO
    DESCRIPTOR.message_types_by_name['TerminalInfo'] = _TERMINALINFO
    DESCRIPTOR.message_types_by_name['EnvironmentInfo'] = _ENVIRONMENTINFO
    DESCRIPTOR.message_types_by_name['xbei'] = _xbei
    _sym_db.RegisterFileDescriptor(DESCRIPTOR)
    
    TerminalInfo = _reflection.GeneratedProtocolMessageType('TerminalInfo', (_message.Message,), dict(
      DESCRIPTOR = _TERMINALINFO,
      __module__ = 'xbei_pb2'
      # @@protoc_insertion_point(class_scope:TerminalInfo)
      ))
    _sym_db.RegisterMessage(TerminalInfo)
    
    EnvironmentInfo = _reflection.GeneratedProtocolMessageType('EnvironmentInfo', (_message.Message,), dict(
    
      Resolution = _reflection.GeneratedProtocolMessageType('Resolution', (_message.Message,), dict(
        DESCRIPTOR = _ENVIRONMENTINFO_RESOLUTION,
        __module__ = 'xbei_pb2'
        # @@protoc_insertion_point(class_scope:EnvironmentInfo.Resolution)
        ))
      ,
      DESCRIPTOR = _ENVIRONMENTINFO,
      __module__ = 'xbei_pb2'
      # @@protoc_insertion_point(class_scope:EnvironmentInfo)
      ))
    _sym_db.RegisterMessage(EnvironmentInfo)
    _sym_db.RegisterMessage(EnvironmentInfo.Resolution)
    
    xbei = _reflection.GeneratedProtocolMessageType('xbei', (_message.Message,), dict(
      DESCRIPTOR = _xbei,
      __module__ = 'xbei_pb2'
      # @@protoc_insertion_point(class_scope:xbei)
      ))
    _sym_db.RegisterMessage(xbei)
    
    
    # @@protoc_insertion_point(module_scope)
    
    

    2.返回参数反序列化

    # Generated by the protocol buffer compiler.  DO NOT EDIT!
    # source: xbei.proto
    
    import sys
    _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
    from google.protobuf import descriptor as _descriptor
    from google.protobuf import message as _message
    from google.protobuf import reflection as _reflection
    from google.protobuf import symbol_database as _symbol_database
    from google.protobuf import descriptor_pb2
    # @@protoc_insertion_point(imports)
    
    _sym_db = _symbol_database.Default()
    
    
    
    
    DESCRIPTOR = _descriptor.FileDescriptor(
      name='xbei.proto',
      package='',
      syntax='proto3',
      serialized_pb=_b('
    x0cxbei.proto">
    
    StatusInfox12x0c
    x04x63odex18x01 x01(	x12x0f
    x07messagex18x02 x01(	x12x11
    	timestampx18x03 x01(x03")
    x06xbeix12x1f
    
    statusInfox18x01 x03(x0bx32x0b.StatusInfobx06proto3')
    )
    
    
    
    
    _STATUSINFO = _descriptor.Descriptor(
      name='StatusInfo',
      full_name='StatusInfo',
      filename=None,
      file=DESCRIPTOR,
      containing_type=None,
      fields=[
        _descriptor.FieldDescriptor(
          name='code', full_name='StatusInfo.code', index=0,
          number=1, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='message', full_name='StatusInfo.message', index=1,
          number=2, type=9, cpp_type=9, label=1,
          has_default_value=False, default_value=_b("").decode('utf-8'),
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
        _descriptor.FieldDescriptor(
          name='timestamp', full_name='StatusInfo.timestamp', index=2,
          number=3, type=3, cpp_type=2, label=1,
          has_default_value=False, default_value=0,
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
      ],
      extensions=[
      ],
      nested_types=[],
      enum_types=[
      ],
      options=None,
      is_extendable=False,
      syntax='proto3',
      extension_ranges=[],
      oneofs=[
      ],
      serialized_start=16,
      serialized_end=78,
    )
    
    
    _xbei = _descriptor.Descriptor(
      name='xbei',
      full_name='xbei',
      filename=None,
      file=DESCRIPTOR,
      containing_type=None,
      fields=[
        _descriptor.FieldDescriptor(
          name='statusInfo', full_name='xbei.statusInfo', index=0,
          number=1, type=11, cpp_type=10, label=3,
          has_default_value=False, default_value=[],
          message_type=None, enum_type=None, containing_type=None,
          is_extension=False, extension_scope=None,
          options=None, file=DESCRIPTOR),
      ],
      extensions=[
      ],
      nested_types=[],
      enum_types=[
      ],
      options=None,
      is_extendable=False,
      syntax='proto3',
      extension_ranges=[],
      oneofs=[
      ],
      serialized_start=80,
      serialized_end=121,
    )
    
    _xbei.fields_by_name['statusInfo'].message_type = _STATUSINFO
    DESCRIPTOR.message_types_by_name['StatusInfo'] = _STATUSINFO
    DESCRIPTOR.message_types_by_name['xbei'] = _xbei
    _sym_db.RegisterFileDescriptor(DESCRIPTOR)
    
    StatusInfo = _reflection.GeneratedProtocolMessageType('StatusInfo', (_message.Message,), dict(
      DESCRIPTOR = _STATUSINFO,
      __module__ = 'xbei_pb2'
      # @@protoc_insertion_point(class_scope:StatusInfo)
      ))
    _sym_db.RegisterMessage(StatusInfo)
    
    xbei = _reflection.GeneratedProtocolMessageType('xbei', (_message.Message,), dict(
      DESCRIPTOR = _xbei,
      __module__ = 'xbei_pb2'
      # @@protoc_insertion_point(class_scope:xbei)
      ))
    _sym_db.RegisterMessage(xbei)
    
    
    # @@protoc_insertion_point(module_scope)
    

    3.序列化部分py代码

        def util(self, ip):
            data_pb = shengbei_pb2.xbei()
            terminalInfo = data_pb.terminalInfo.add()
            environmentInfo = data_pb.environmentInfo.add()
    
            resolution = environmentInfo.resolution.add()
    
            terminalInfo.terminalType = "app"
            terminalInfo.appVersion = "7.14.0"
            terminalInfo.systemVersion = self.device_info['version']
            terminalInfo.deviceKey = self.device_info['imei']
            terminalInfo.lang = "CN"
            terminalInfo.appChannel = "xxxx"
            terminalInfo.productType = "loan"
            terminalInfo.productName = "bbd_android"
            terminalInfo.appType = "android"
            terminalInfo.appName = "xxxxx"
    
            environmentInfo.deviceUniqueId = self.device_info['uniqueId']
            environmentInfo.blackBox = self.device_info['black_box']
            environmentInfo.intranelIP = ip
            environmentInfo.longiTude = self.log1
            environmentInfo.latiTude = self.lat1
            environmentInfo.mac = self.device_info['mac']
            environmentInfo.imei = self.device_info['imei']
            environmentInfo.phoneOperator = "未知"
            environmentInfo.phoneMarker = "LGE"
            environmentInfo.phoneModel = self.device_info['mobile']
            environmentInfo.operationSys = "android"
            environmentInfo.operationSysVersion = self.device_info['version']
            resolution.smartid = self.device_info['smartid']
            environmentInfo.isEmulator = "false"
            data_pb.phoneNumber = self.phone
            data_pb.codeType = "02"
            return data_pb.SerializeToString()
    

    4.反序列化部分py代码

    data_pb = shengb_pb2.xbei()
    data_pb.ParseFromString(content)
    
  • 相关阅读:
    poj1988
    sgu488
    Walking around Berhattan
    基于矩阵分解的简单推荐算法
    Funny Feature
    php面向对象
    PHPstorm快捷键
    创建UIImage的两种方法
    dismissViewControllerAnimated有延迟
    17个常用代码整理
  • 原文地址:https://www.cnblogs.com/pythonywy/p/13968914.html
Copyright © 2011-2022 走看看