当前位置: 首页 > 编程日记 > 正文

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

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

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

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

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


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

相关文章:

fileupload控件在ajax中无法使用

google得到的方法:1。http://geekswithblogs.net/ranganh/archive/2008/04/01/file-upload-in-updatepanel-asp.net-ajax.aspxThere is a better way of doing it with Ajax Control Toolkit version 3.0.30930 which works with .NET 3.5 SP1 and Visual Studio 20…

Cron表达式的详细用法

字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - * ? / L C # 年(可选) 留空, 1970-2099 , - * / 例子:0/5 * * * *…

01-CoreData 概述

CoreData 主要的几个类 1 概述 CoreData 是iOS 3 之后出现的一种数据持久化方案,提供了一种ORM的存储关系,CoreData 是直接将对象存储到数据库中去,也可以将数据库中的数据转化为OC对象,过程中不用编写SQL语句。 2 几个类的讲解…

连信的会话加密密钥协商过程

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍连信会话加密密钥的协商过程。” 公号内之前已经对协议的框架和协议内的数据格式进行了介绍,有需要可以回顾下: 连信协议整体框架 连信的protobuf数据格式 本文对连信的会话加密密钥协商过程进行介绍…

6、UmbracoNewsSite:添加新闻分类

上一篇做了一个简单的首页,在导航条上添加了几个新闻板块,接下来我们就添加这几个新闻板块的页面。 开始我们还是需要创建Document Types用来展示新闻列表。我们先做好规划,新闻列表只需要把新闻标题和图片展示出来就可以了,。  …

02-CoreData 的增删改查

CoreData 的增删改查 基本的增删改查的操作 1 数据库的创建 - (void)createDB {// 1.1 创建路径NSURL *modelURL [[NSBundle mainBundle] URLForResource:"AT_CoreDataDemo1" withExtension:"momd"];// 1.2 根据模型文件路径创建模型对象NSManagedObje…

Lemon开源OA

http://www.mossle.com/index.html 转载于:https://www.cnblogs.com/gzmg/p/3770882.html

UC浏览器代理流量解密

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 解密uc浏览器的安全代理流量,看看是不是真安全。”作为一个从上古网络时代过来的人,一定对UC浏览器有深刻印象,它的流量透明代理功能,就是现在的云加速功能,使用UC的服务…

JAVA07 接口与继承

一 动手实验:继承条件下的构造方法调用 1)源代码 1 public class TestInherits {2 3 public static void main(String[] args) {4 // TODO Auto-generated method stub5 6 Child c new Child();7 }8 9 } 10 11 class GrandPa…

学习-现代交换原理与通信技术

帮助学习细化。。。 首先,这书真是难读,像个词典嘛似乎《现代交换原理与通信技术》卞佳丽 北邮 呵呵 呵了个呵 不过词典也有词典的好处 第三章,数字程控电话交换与通信网络 1. 控制子系统 与 话路子系统 前者在于控制,后者在于数…

03-NSPredicate谓词

NSPredicate 谓词 在查询数据的过程中&#xff0c;给NSFetchRequest设置一个过滤条件&#xff0c;不需要讲所有的托管对象加载到内存中去。这样的话就会节省内存和加快查找速度。 一 运算符 1 比较运算符 、< 、 、> 、< 、! 比如说age>80 NSPredicate *pre […

小兵别嚣张,签名算法分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“分析unity3d游戏小兵别嚣张的签名算法。”不久前&#xff0c;写了个unity3d的引子&#xff0c;介绍了使用工具从unity3d游戏中提取出各种资源和算法&#xff1a;unity3d游戏IL2CPP相关算法简单分析不过内容很少&#xff0c;今天介…

NOIP模拟题——B

【题目描述】我们要从n种食物选m个出来&#xff0c;安排一个顺序吃掉它&#xff08;们&#xff09;&#xff0c;每种食物有个美味值ai&#xff0c;然后我们有k个规则&#xff0c;每个规则有 xi, yi 和 ci三个数&#xff0c;如果吃完第xi种食物接下来马上吃第yi种食物&#xff0…

Maven使用常用命令

> mvn clean删除target文件夹> mvn clean test编译测试代码&#xff0c;默认被放到target/test-classes文件夹下面> mvn clean compile编译主代码&#xff0c;并放到target/classes文件夹下> mvn clean package打包代码&#xff0c;我们可以看到target文件下生成了…

04- CoreData轻量级版本的迁移

CoreData版本的迁移 一 轻量级的数据迁移 例如添加新的实体&#xff0c;新的实体属性。 轻量级版本迁移方案非常简单&#xff0c;大多数迁移工作都是由系统完成的&#xff0c;只需要告诉系统迁移方式即可。在持久化存储协调器(PSC)初始化对应的持久化存储(NSPersistentStore…

通da信TCP长连接数据算法分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分析通da信TCP长连接内部分数据的算法。”作为一款老牌的炒股软件&#xff0c;通da信里面的数据是相当的丰富&#xff0c;免费的也很丰富&#xff0c;准确性也很好&#xff0c;例如&#xff0c;这种股票之间关联的信息。通da信一…

产品经理怎么样用图表传达数据信息(多图)

上文有点仓促了&#xff0c;结尾没有写好。补上&#xff1a; 对劣质成本分析的时候应该注意&#xff1a; 1、在进行劣质成本分析的时候&#xff0c;要注意区分成本和必要的浪费。要注意一个关系&#xff0c;对必要浪费的控制会导致其他成本的上升。例如前文说到四小时送一次货&…

'This NSPersistentStoreCoordinator has no persistent stores 报错

可能是你改变coredata的属性项之后再运行的话在模拟器中会出现这个问题。找上面说的&#xff0c;找到mac下的模拟器中的程序路径&#xff0c;然后删掉其sqlite文件再运行就好了&#xff01;&#xff01;&#xff01;

tcp断开连接,4次握手,为什么wireshark 只能抓到3个包?

用wireshark 抓包&#xff0c;看看tcp 断开连接的过程. 以前书上说tcp断开连接&#xff0c;4次握手&#xff0c;可我为什么wireshark 只能抓到3个包&#xff1f; 百度一下&#xff0c;别人也有类似的疑问。 【求助】书上和网上的资料说&#xff0c;TCP拆除连接需要四次握手。但…

如何在python开发的GUI界面程序中恰当地使用PyExecJS

点击上方↑↑↑蓝字[协议分析与还原]关注我们“解决一闪而过的黑框的小技巧。”在使用python开发过程中&#xff0c;不可避免地&#xff0c;会开发带界面的应用&#xff0c;也会经常使用js来完成一些功能&#xff0c;比如&#xff0c;我使用python开发个了一个小应用&#xff1…

switch和case的理解

下面是复习java基础知识的时候&#xff0c;发现的一些点&#xff0c;总结下&#xff0c;备忘 int a345;switch (a) {case 23:System.out.println("23"); // break;case 345://条件符合&#xff0c;下面的case条件不会在判断&#xff0c;直接执行&#xff1b;System…

05-自己创建mapmodel自定义迁移方式

自动创建Mapping 如果模型的改变很大或者不支持轻量级数据迁移的条件&#xff0c;则我们需要进行自定义迁移。 使用映射模型 适用于更加复杂的数据的迁移 NSMappingModel 类似于数据模型 NSEntityMapping 告知迁移过程如何在目标数据存储中处理源实体的映射。 映射类型决…

Linux内核之内存管理(4)--缺页处理程序

本文主要解说缺页处理程序&#xff0c;凝视足够具体&#xff0c;不再解释。 //以下函数将一页内存页面映射到指定线性地址处&#xff0c;它返回页面的物理地址 //把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址address处的页面映射到主内存区页面page上…

WebSocket协议分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 解析websocket数据格式。”好久不见&#xff0c;一晃一年又过去了&#xff0c;祝大家新年好运。今天&#xff0c;给大家分析一个常见的协议——WebSocket&#xff0c;这是一个标准协议&#xff0c;虽然没有HTTP历史悠久&#xff…

《postfix邮件服务下mailq、postmap、postqueue 、 postsuper等用法》

1、Mailq 功能说明&#xff1a;显示待寄邮件的清单。 语  法&#xff1a;mailq [-q] 补充说明&#xff1a;mailq可列出待寄邮件的清单&#xff0c;包括邮件ID&#xff0c;邮件大小&#xff0c;邮件保存时间&#xff0c;寄信人&#xff0c;收信人&#xff0c;以及邮件无法寄出…

[deviceone开发]-一个很炫的手势动画示例

一、简介 这是iOS下的效果&#xff0c;android下完全一致。通过do_GestureView组件和do_Animation组件&#xff0c;deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手势控制图片上下动画滑动实现开合效果&#xff0c;还支持声音效果。 二、效果图 三、相关下…

iOS lldb调试

LLDB 初始 LLDB 是一个有着 REPL 的特性和 C ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部&#xff0c;存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它&#xff0c;你可以查看变量的值&#xff0c;执行自定的指令&#xff0c;并且按照你所认为合适的…

万物之中,希望至美

一觉醒来&#xff0c;虎年就这么来了。感谢各位朋友过去的一年与我同在。在新的一年到来之际&#xff0c;我首先做个检讨&#xff0c;过去的一年&#xff0c;我们这个公众号&#xff0c;更新不够频繁&#xff0c;属于三天打鱼两天晒网型公众号&#xff0c;没有为大家带来足够丰…

[转]VS2015编译的程序在其他机器上缺少msvcp120.dll

http://www.lai18.com/content/1159618.html 1、 今天分享一个自己在开发过程中遇到的困难。用VS2015开发了一个windows客户端&#xff08;win32项目&#xff09;&#xff0c;在自己的机器上运行很流畅。当你得意的把releas版本进行打包&#xff0c;并进行发布后&#xff0c;问…

Discuz!的cookie机制

最近在做Discuz!的插件&#xff0c;需要用到cookie&#xff0c;一直觉得奇怪的一个问题&#xff0c;Discuz!大量使用了cookie&#xff0c;但是我在编写插件的时候如果不加入session_start函数cookie就无法使用&#xff0c;按理说Discuz!使用了这么多cookie它的核心应该有调用se…