点击上方↑↑↑蓝字[协议分析与还原]关注我们
“ 连信里用到的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;//Versionoptional string channel = 6;optional string lang = 7;optional string idfv = 8;optional int32 unk1 = 10;
}
message tachiencunkinfo//taichi 加密数据部分服务器回应的未知protobuf
{optional string lxxx = 1;//类似LX-15227optional int32 unk2 = 2; //1optional int32 unk3 = 3; //2optional 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中 7repeated tachiencunkinfo info = 6; //一个结构体,多个或没有
}
message tkdencdata1//taichi kepler dcmdaa 加密数据部分的未知protobuf 1以及 dcmdaa 加密数据部分 protobuf 2的里面的protobuf里面的protobuf
{optional string aid = 1;//aidoptional string devicejsonstr = 2; //device信息串optional string unkstr3 = 3; //00500201optional string lang = 4;//cnoptional string style = 5;//TD0493optional string idfa = 6;//optional string vc = 7;//3.5.26 vname1optional string channel = 8;//appstoreoptional string channela = 9;//appstoreoptional string idfv = 10;//optional string vnorvc = 11;//3.5.26.1 3.5.26 vnameoptional string wifiname = 12;//Not Foundoptional string unk1 = 14;//woptional string tm = 15; //1586420724786optional string maker = 16; //appleoptional string phonename=17;//iPhone 5soptional string verjson=18;//版本信息json
}
message keplerencunkinfo//kepler 加密数据部分服务器回应的未知protobuf
{optional string unk1 = 1;//类似1optional string unk2 = 2; //$activeoptional string unk3 = 3; //1optional string unk4 = 4;//0optional 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_soptional 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,文本消息1optional 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;
}
希望对大家的分析有帮助。
别忘点“在看”、“赞”和“分享”
新的规则,及时收推文要先给公号星标
别忘了星标一下,不然就错过了
长按进行关注,时刻进行交流。