通过抓包和一点点经验分析携程的协议~~
话不多说,抓包如下:可以发现是乱码,通过wireshark分析也不是http和https协议,这里我推测是一种基于TCP的自建协议(说的不对别喷我···告诉我就行了)。然后转换为16进制(随便转转看看~~),具体如下:
这边就需要我们使用我们那么仅存的一点点经验 我们看到第一行有个非常熟悉的两个字节1f 8b 这不是gzip压缩文件的固定格式头咩~~~
这里就有个小小的判断 1f 8b这边可能用了压缩,然后我们看下前面1371··········这边一共14个字节,看下一条报文 if 8b 前面也是14个字节,看到这里我们就做一个大胆的判断,这个14字节是包头,然后后面用了Gzip压缩,下面我们就来证实我们的想法(有时候就是要瞎弄弄······)。
第一步我们把第一段报文完整的取出来,具体步骤如下:
1、把报文变成原始数据
然后保存为文件:
用Notepad++查看下是否保存成功:
2、找到下一个14字节包头
然后在刚刚保存文件中定位到位置:
这边 从00000759000106 到文件最后全部删除,保存后的文件内容就是完整的第一段报文拉~~~~~~
然后打开保存后的文件 去除十四字节的包头:
去除后如下:
然后保存文件 ,修改后缀名为zip
然后解压,打开文件。
然后我们就发现这是经过protobuf的封装后的数据。通过proto工具就可以去封装看见内容拉~~,不过这边也能看见一些东西,可以猜测大概传输了哪些内容了~
这边仅仅通过抓包就分析出了携程的协议是 14位包头 + gzip 压缩 protocbuf封装后的内容(全是瞎猫碰上死耗子·························)。
文笔不好,各位大佬多多见谅~~~
最后加上大佬都会加的内容(别笑我,和大佬学习):
本帖只用于学习,用于非法违规用途,自行承担后果········
zdnyp 发表于 2020-5-15 17:53
找到1f 8b确定是Gzip压缩,然后保存报文,在报文里搜索第二个报文的包头,删掉第一个报文的包头和第二个 ...
不一定的,这边是凑巧1f 8b 到请求体或回应体结束 是完整的压缩内容,有的情况不能确定 1f 8b 到底下都是压缩内容,所有要找到 压缩结束的地方 ,一般情况下都可以截取 1f 8b到请求体或回应体结束 ,然后修改后缀,解压。如果显示格式错误,数据破坏,就证明位置不对,或者数据还加了其他处理。 DS_FLY100 发表于 2020-5-15 17:45
就是 1f 8b 前面有十四个字节 1f 8b 是固定压缩头,每个报文都是 1f 8b 前面有14个字节。
找到1f 8b确定是Gzip压缩,然后保存报文,在报文里搜索第二个报文的包头,删掉第一个报文的包头和第二个报文的后部分,解压,是这样吗?
看半天没明白,
果然太专业了么
坐久落花多 发表于 2020-5-15 17:23
看半天没明白,
果然太专业了么
可能是我表达能力比较差······ 1371咋判断是14字节的数据呢,还是14字节的数据有啥特征? zdnyp 发表于 2020-5-15 17:43
1371咋判断是14字节的数据呢,还是14字节的数据有啥特征?
就是 1f 8b 前面有十四个字节 1f 8b 是固定压缩头,每个报文都是 1f 8b 前面有14个字节。 太专业了,看了半天不知道讲啥{:1_911:} zdnyp 发表于 2020-5-15 17:53
找到1f 8b确定是Gzip压缩,然后保存报文,在报文里搜索第二个报文的包头,删掉第一个报文的包头和第二个 ...
对于携程是这样的 shenjiyuan2hao 发表于 2020-5-15 18:00
太专业了,看了半天不知道讲啥
。。。。。。。。。。