连信的protobuf数据格式

点击上方蓝字[协议分析与还原]关注我们


 连信里用到的protobuf结构。

在看本文之前,可以先进行一下回顾,之前已经对协议的框架进行了整体的介绍:

连信协议整体框架

看了后结合自己的分析过程,应该有个初步的了解。后续会陆续有文章对内部的具体实现进行介绍,本文先介绍连信内部的数据格式。

连信协议里用到了很多个protobuf,对它们总结了下,可能不全,有需要的人可以再补充,适用于iOS版的协议。

包括长连接、短链接内各种消息的加密数据的格式,未加密数据的格式,taichi、kepler 、dcmdaa等链接内数据的格式,保活消息等数据的格式:

message authwithtoken //长连接第一个包 01 01
{
  optional string Mid     = 1;
  optional string Uid     = 2;
  optional string Token     = 3;
  optional string Resource  = 5;
  optional int32 Version      = 6;
  optional int32 Apns     = 7;
  optional string Domain     = 8;
  optional string DeviceId  = 9;
  optional string LogonSessionId  = 10;
  optional string Locale      = 11;
}
message authwithtokenack //长连接第一个包的响应 02 00
{
  optional string Mid     = 1;
  optional string U1     = 2;
  optional string U2     = 4;
  optional int32  U3  = 5;
}
message shorthead //taichi kepler dcmdaa头部数据
{
  optional string style     = 1;
  optional string DeviceIdorunkstr = 2;
  optional string h     = 3;
  optional string a     = 4;
  optional string  Versionorvn  = 5;//Version
  optional string  channel  = 6;
  optional string  lang  = 7;
  optional string  idfv  = 8;
  optional int32  unk1  = 10;
}
message tachiencunkinfo//taichi 加密数据部分服务器回应的未知protobuf
{
    optional string lxxx = 1;//类似LX-15227
    optional int32 unk2 = 2; //1
    optional int32 unk3 = 3; //2
    optional string unk4  = 4;//A
}
message tachiencunk //taichi 加密数据部分的未知protobuf
{
  optional int32 unk1  = 1; //2f 3f 73等
  optional int32 unk2 = 2; //648或没有
  optional int32  unk3  = 5;//ack中 7
  repeated tachiencunkinfo  info  = 6; //一个结构体,多个或没有
}
message tkdencdata1//taichi kepler dcmdaa 加密数据部分的未知protobuf 1以及 dcmdaa 加密数据部分 protobuf 2的里面的protobuf里面的protobuf
{
    optional string aid = 1;//aid
    optional string devicejsonstr = 2; //device信息串
    optional string unkstr3 = 3; //00500201
    optional string lang  = 4;//cn
    optional string style  = 5;//TD0493
    optional string idfa  = 6;//
    optional string vc  = 7;//3.5.26 vname1
    optional string channel  = 8;//appstore
    optional string channela  = 9;//appstore
    optional string idfv  = 10;//
    optional string vnorvc  = 11;//3.5.26.1 3.5.26 vname
    optional string wifiname  = 12;//Not Found
    optional string unk1  = 14;//w
    optional string  tm  = 15; //1586420724786
    optional string  maker  = 16; //apple
    optional string phonename=17;//iPhone 5s
    optional string verjson=18;//版本信息json
}
message keplerencunkinfo//kepler 加密数据部分服务器回应的未知protobuf
{
    optional string unk1 = 1;//类似1
    optional string unk2 = 2; //$active
    optional string unk3 = 3; //1
    optional string unk4  = 4;//0
    optional string unk5  = 5;//5
}
message keplerencdata2 //kepler 加密数据部分的未知protobuf 2 及服务器回应
{
  optional string unk1  = 1; //未知
  repeated keplerencunkinfo  unk2  = 2; //一个结构体,多个或没有
  optional string unk3  = 3; //未知
}
message dcmdaasysinfopb//dcmdaa 加密数据部分 protobuf 2的里面的protobuf
{
    optional string autinfo = 1;//类似$auto_page_s
    optional tkdencdata1 deviceinfo = 2; //一个protobuf,和外面的protobuf格式一致
    optional string runinfo = 3; //运行时的信息 cts seq等
    optional string unk4  = 4;//空的
    optional int32 unk6  = 6;//1
}
message dcmdaaencdata2 //dcmdaa 加密数据部分的protobuf 2
{
  repeated dcmdaasysinfopb sysinfo  = 1; //一些设备信息等
  optional int32 unk2  = 2; //未知
}
message dcmdaaackdata //dcmdaa 加密数据服务器回应
{
  optional string unk1  = 1; //未知
}
message alive //保活 00 01
{
  optional string Mid     = 1;
}
message encmessage  //所有加密消息,统一处理 加密11 01
{
  optional string Mid     = 1;
  optional string From     = 2;
  optional string To     = 3;
  optional int32  Type  = 4;  //打招呼10,消息的响应5,rdcmd 42,文本消息1
  optional string  msg  = 5;//消息内容
  optional int32  u2  = 6;
  optional int32  u3= 7;
  optional string  Extension= 11;//描述
  optional int32  ExType= 12;
  optional string  u4= 13;
  optional int32  u5= 14;
  optional int32  SubType= 16;
}

希望对大家的分析有帮助。

别忘点“在看”、“赞”和“分享”

新的规则,及时收推文要先给公号星标

别忘了星标一下,不然就错过了


长按进行关注,时刻进行交流。

猜你喜欢

转载自blog.csdn.net/yeyiqun/article/details/107925424
今日推荐