淘宝千牛软件服务器fmsas端口与客户端的通信协议(完整版)


  个人兴趣学习,不负法律责任
本例纯属学习和科研参考,请勿用在商务用途(使用淘宝开放平台的api吧~~by凉 白开QQ)。

前言:

帮朋友的过程中,突然想到一个像淘宝这样安全性这么强的互联网企业(额,不太好定义这个帝国先这么叫着),是怎样的一个机制保证了这样的口碑呢?所以就用自己的方式进行抓包,然后自己hack一下,纯粹烧时间和游戏~~性质的。
之后发现,和淘宝软件相关的软件平台和客户端之间通信的机制比较复杂,从抓的包来看,起码有4~5种,还不清楚不同端口链接之间是否有逻辑关系。有些从包的内容大致可以看出哪些是控件api通信,哪些是gui-remote通信,不过怎么解码可难倒我了(估计得话大工夫)。所以找到了最简单的fmsas(服务器端口为16000)端口(用户间通信)的作用。
经过昨天一中午和今天一上午的调试,终于把淘宝千牛客户端与服务器最简单的fmsas端口的连接协议给搞明白了。 
 

使用工具:
千牛
WireShark
winCap
UltralEdit
C# (有现成的库,编写快,主要是调试,所以不用C++了)

目标:
通过网络抓包手段分析网络端口以及时序。

过程:
 
客户端和服务器之间某些固定端口链接的时序。
1. DNS (这个是小菜,最最简单的,和淘宝没太大关系)
客户端                   DNS服务器
DNS查询申请—>   处理
处理             <—    返回DNS结果

说明
第一步:客户端向DNS服务器查询gw.api.taobao.com
第二部:客户端接收关于淘宝的一系列网域网段端口内容:
包内主要内容:
quries :是你请求的DNS位置
Answers:返回了位置,ip4的adr。
另外还有几个服务器的域名位置
split.taobao.com
gwns.taobao.com
splitns1~5.taobao.com
等等

2. TCP (从fmsas <——> 客户端口分析)
 TCP的连接比较复杂,因为例子要求的是客户端之间通信的消息响应(就是有消息传来就反应) 
因此但从客户端和服务器端的fmsas端口的连接时序进行分析
发现:
1. 起先是数据包,注意wireShark 的一个功能特性。图中 seq 和Ack不是其真实值,而是软件自身的定义的。
通过比对完整网络包,这个协议不太像是课本上标准的TCP,
一般来说本次包和下次包的seq和Ack应该是+1关系,而这个却是相等关系,本次Ack为随机值

图1. 接收1unicode

图2.接收3unicode

图3. 接收1unicode

图4. 发送

2. 调试
 经过几次测试发现,
握手阶段的发送端第一个 PSH ACK的消息seq number 为任意(至少比较随意),Ackno number 为 0(任意值)
因此,这个例子应该从第二次开始,分析包的顺序码和确认码,从而获得一次数据的传输,发送消息。
使用c#编写,代码不附了。
伪代码+讲解
使用的类为 PackCap(到codeForge上下载吧)
之后使用的类为:
WinCapHelper 借鉴的前人的一个类,网上可以自己查看。
重写的public Action<string> _logAction = delegate(string x)函数,对string x 
判断协议
Proctocl == 0x06 (TCP),
判断端口
查找Server port == 16000 (fmsas)
注意客户端是我们每次使用软件时系统自动分配的,所以这里就不用确定了。

客户端接收
fmsas(服务器发送)                 client port(客户端接收)
握手
PSH ACK                   ——>         接收
接收                          < ——        ACK
PSH ACK                   ——>        接收
                               。。。。。。
                               传输 两者PSH ACK包的交互
                               。。。。。。
 挥手
ACK                        ——>          接收
PSH ACK                ——>          接收
接收(结束)          <——          ACK 

客户端发送
fmsas(服务器发送)                 client port(客户端接收)
握手
PSH ACK                   <——          接收
接收                            ——>         ACK
PSH ACK                   <——          接收
                               。。。。。。
                               传输 两者PSH ACK包的交互
                               。。。。。。
 挥手
ACK                        ——>          接收
PSH ACK                ——>          接收
接收(结束)          <——          ACK 

当我们在千牛上点击一次“发送”或者收到对方消息时,都会发生一次fmsas端口的通信。

分三步
握手(传输开始)
数据传输
挥手(传输结束)

握手阶段第一次的PSH ACK由数据的发送方开始,之后是一次对方一次ACK,之后进入数据传输。
当然这是理想状态,当双方并不是马上应答或者发送数据量不一样的时候,会有一定的不同,
从图1到图3中,同样是接收数据,其过程不太一样。
数据传输阶段并没有发现什么规律,只是PSH ACK 的方式,因为是尽快传递到软件的API中去。也符合功能的要求~~

挥手阶段,每次过程都是由服务器端发起。连续发送ACK 和PSH ACK包,表示传输结束。客户端接收到之后,表示结束,回发一个ACK。

注意:这个和一般书上的TCP传输有些不一样的地方。
两个包之间的ack number 和seq number 并不是+1的关系,
而是上一个包的Ack number = 这个下个包的seq number ,而下个包的seq number 是随机数~~。
所以,
最后挥手的ACK和PSH ACK的中的seq number 和ack number都是一致的(这个不难理解)。服务器最后发送的ACK的seq number为PSH ACK的ack number,而ack number为随机数。



测试库:
C#的 PacketCap(国外一个本科毕业生写的,人家这水平。。。。,基于winCap,在Code Forge上自己找)
软件库:
照搬国内一位前人写的winCapHelper的类,
重写了其中的device_OnPacketArrival方法(就是析包)。。。。
实现了判断挥手、握手方法~~
实现对有消息接收和发出时的判断。。。。

嗯,其他的端口还需要分析一下,之后是端口间的联系。。。任重道远



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38340.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如果鸿蒙系统上线,使用体验与安卓相当,你会换系统么?

其实这个我觉得不是你会不会换的问题&#xff0c;而是华为如果给了很多手机装了鸿蒙系统&#xff0c;而且还保持了目前的UI使用体验&#xff0c;同时也能做到了底层优化的技术&#xff0c;让速度快&#xff0c;为何不用&#xff1f;其实目前在国产基本上没有谷歌的安卓原生态系…

鸿蒙(harmonyOS)应用开发-真机设备API版本查看

如何使用hdc工具查看鸿蒙真机版本 前言 在鸿蒙应用开发中&#xff0c;我们会在真机上进行调试&#xff0c;但是我们需要保证我们选择的API版本大于或等于手机的API版本&#xff0c;否则可能会出现兼容性问题。那么&#xff0c;如何查看真机的API版本呢&#xff1f;本文将介绍…

『牛角书』HarmonyOS鸿蒙实战 开发一个简单聊天助手APP

前言 我是通过b站上面老师的讲解&#xff0c;跟着老师编写了一个简单聊天助手app&#xff0c;简答实用&#xff0c;对于刚开始接触鸿蒙的我们来说很有帮助。 创建项目 所用软件为DevEco Studio&#xff0c;点击Create HarmonyOS Project&#xff0c;这里选择了第一个空的项目…

开发跨设备的鸿蒙(HarmonyOS) App

为了让更多的人看到本文&#xff0c;请各位读者动动小手&#xff0c;点击右上角【...】&#xff0c;将本文分享到朋友圈&#xff0c;thanks&#xff01; 现在的智能设备种类越来越多&#xff0c;而且这些智能设备的屏幕尺寸、分辨率都不同&#xff0c;例如&#xff0c;比较常见…

鸿蒙系统vivo能用吗,不是华为手机,也能用上鸿蒙系统

按照此前的进度&#xff0c;华为的鸿蒙 OS 系统已经在 Mate40 等多款华为系手机上小范围推送&#xff0c;从此前公布的消息来看&#xff0c;应该在 6 月份正式全面开放&#xff0c;让更多的用户用上这套华为自研的系统。 今天&#xff0c;华为召开了一场鸿蒙 OS 的合作伙伴峰会…

终于有人把鸿蒙OS讲明白了!并开放鸿蒙教程!

点击“开发者技术前线”&#xff0c;选择“星标????” 让一部分开发者看到未来 “ 本文面向的是开发人员&#xff0c;主要想通过科普让大家了解一下鸿蒙开发。接下来&#xff0c;我想给大家科普一下这个这么火的鸿蒙系统。 到底什么是鸿蒙 OS 在官网上看到鸿蒙 OS 的简介是…

不要总想着自己训练大模型,你的业务可能并不需要

至少企业知识库是这样。 我要训练大模型&#xff0c;我要做私有部署&#xff0c;我要做模型 Fine-tune&#xff0c;我要搞垂类 GPT。最近真是听了好多这样的话&#xff0c;让我想起之前刷到的一个视频&#xff1a; 我长大要开飞机&#xff0c;我想当宇航员&#xff0c;我要有所…

别光骂谷歌了!新版 Bing 花式“翻车”,还让用户向它道歉?

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 因为 ChatGPT&#xff0c;最近谷歌被“黑”得挺惨&#xff1a;先是它发布的 ChatGPT 竞品 Bard 全球首秀“大翻车”&#xff0c;导致谷歌市值一夜狂跌 7000 亿&#xff1b;接着又被自家员工嘲讽&…

4大主流小程序平台介绍及其优缺点对比

文章目录 人工智能福利文章微信小程序优点缺点 支付宝小程序优点缺点&#xff1a; 百度小程序优点缺点 字节小程序优点缺点 总结写在最后 ✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄潮儿的个人主页 &#x1f3d9;️ 个人社区&#xff0c;欢迎你…

【项目实战】SpringBoot+vue+iview打造一个极简个人博客系统

极简个人博客 基于SpringBootvueiview极简个人博客 &#x1f4da;项目介绍 个人极简博客 【个人极简博客】是一个适用于初学者学习的博客系统&#xff0c;其中包含文章分类、写文章、标签管理、用户管理等基础功能&#xff0c;代码简洁注释完善&#xff0c;易上手学习。技术栈…

【从零开始】Docker Desktop:听说你小子要玩我

前言 &#x1f34a;缘由 捡起遗忘的Docker知识 由于本狗近期项目紧任务重&#xff0c;高强度的搬砖导致摸鱼时间下降。在上线项目时&#xff0c;看到运维大神一系列骚操作&#xff0c;dockerk8s的知识如过眼云烟&#xff0c;忘得干净的很。所以想重新恶补一下docker知识&…

云炬Android开发教程 Android studio的详细安装步骤

下面我们正式开始安装AS 一、基本的安装教程 下载好后双击运行安装包&#xff0c;点击下一步 - 勾选如图所示勾选选项&#xff0c;点击下一步- 自定义软件的安装路径&#xff0c;点击下一步- 开始运行Android studio&#xff0c;点击finish- 选择第二个&#xff0c;不导入已有…

【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

避坑宝 v1.0.0 基于SpringBootuniapp企业黑红名单吐槽小程序 &#x1f4da;项目介绍 避坑宝 【避坑宝】企业黑红名单吐槽小程序是一个具有吐槽发布企业信息的一个平台&#xff0c;言论自由&#xff0c;评判自定&#xff0c;便于我们打工人分辨企业好坏。技术栈基于SpringBoot…

社群运营怎么做,有哪些互动玩法?

相信不少做社群运营的朋友都有过这样的烦恼&#xff1a;社群成员不活跃&#xff0c;群里每天毫无动静&#xff0c;成员发言不积极、大部分人入群就潜水等问题。建群初期没有经验&#xff0c;用户领完福利就潜水&#xff0c;好好的社群变成了死群。 作为运营者&#xff0c;我们…

(202302)统计学习方法习题实战TASK2 感知机

TASK2&#xff1a; 第二章 感知机 本次参加的是DataWhale组织的2023年2月份学习计划。学习内容为李航老师的《统计学习方法&#xff08;第二版&#xff09;》的第一到六章。习题的解答开源在datawhale的GitHub账号GitHub - datawhalechina/statistical-learning-method-solutio…

谈谈会话管理

客户端和服务器之间进行数据传输遵循的是HTTP协议, 此协议属于无状态协议(一次请求对应一次响应, 响应完之后断开连接), 服务器是无法跟踪客户端的请求, 通过cookie技术可以给客户端添加一个标识, 客户端之后发出的每次请求都会带着这个标识从而让服务器识别此客户端, 但由于co…

基于任务型对话的医疗诊断 Task-oriented Dialogue System for Automatic Diagnosis

这项基于任务型对话的自动医疗诊断工作来自复旦大学黄萱菁团队&#xff0c;发表在ACL Short 2018&#xff08;Task-oriented Dialogue System for Automatic Diagnosis&#xff09;。初步看该工作和NIPS RL workshop 2016上的神经症状检查器的工作思路是相似的&#xff0c;将AI…

SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

SignalR快速入门 ~ 仿QQ即时聊天&#xff0c;消息推送&#xff0c;单聊&#xff0c;群聊&#xff0c;多群公聊&#xff08;基础》提升&#xff0c;5个Demo贯彻全篇&#xff0c;感兴趣的玩才是真的学&#xff09; 官方demo:http://www.asp.net/signalr/overview/getting-started…

论文阅读报告:A Neural Approach to Pun Generation

论文阅读报告&#xff1a;A Neural Approach to Pun Generation 这篇报告是课上老师留下的作业&#xff0c;要求我们读一读论文找找感觉&#xff0c;顺便把论文的内容写一写&#xff0c;也算是我第一次认真完整地精读了一篇论文。由于水平有限&#xff0c;翻译理解的内容有拙劣…