vlambda博客
学习文章列表

连信的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;}

希望对大家的分析有帮助。
别忘点“ 在看”、 ”和 分享
新的规则,及时收推文要先给公号星标
别忘了星标一下,不然就错过了



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