搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
花生_TL007
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Python+Appium+百度sdk(三)--语音识别控制_open api characters limit reached
2
Towards Geolocation of Millions of IP Addresses(2012年)
3
Jenkins环境配置篇-更换插件源_jenkins更新插件源
4
电商技术揭秘22:智能仓储与物流优化(上)
5
docker容器1:docker安装及管理_dockers 19.03安装
6
【学习笔记】:Ubuntu 22 使用模型量化工具llama.cpp部署大模型 CPU+GPU_ubuntu上运行llama模型
7
Mac系统HomeBrew安装过程
8
在英特尔做了一年 AI 研发,真的很香_intel公司怎么样
9
FC-SAN存储技术_fc san
10
订单插旗,淘宝官方商品、交易、订单、物流、插旗接口接入
当前位置:
article
> 正文
淘宝千牛软件服务器fmsas端口与客户端的通信协议(完整版)_千牛逆向协议
作者:花生_TL007 | 2024-04-16 04:57:20
赞
踩
千牛逆向协议
个人兴趣学习,不负法律责任
本例纯属学习和科研参考,请勿用在商务用途(使用淘宝开放平台的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方法(就是析包)。。。。
实现了判断挥手、握手方法~~
实现对有消息接收和发出时的判断。。。。
嗯,其他的端口还需要分析一下,之后是端口间的联系。。。任重道远
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/花生_TL007/article/detail/432466
推荐阅读
article
【树莓派4】
docker
/
docker
-
compose
在
ARM64
上的
安装
教程 | Raspbe...
简介:为了在树莓派上快速部署不同类型服务,我打算为其
安装
docker
以及
docker
-
compose
工具。_
docker
...
赞
踩
article
连续16年稳居
领导者
象限,
Aruba
靠什么领跑
有线
和
无线
LAN
市场?...
Aruba
之所以能够持续位居行业
领导者
,得益于公司以客户为中心的经营理念,以及在技术上不断开拓创新的精神。出品 |常言道...
赞
踩
article
二面
面试官
一般
都会
问
什么
?_国企
二面
一般
问
什么
问
题
...
的相关解答,在准备
二面
面试的过程中,面试者需要对公司背景、文化、业务及岗位要求等方面进行深入了解和研究,并根据自己的经验...
赞
踩
article
Stable
Diffusion
:最先进的文本
生成
图像模型_
stable
diffusion
文字生...
Stable
Diffusion
是一种图像
生成
模型,可以在给定原始输入文本的情况下
生成
逼真的图像。您可以使用 Stab...
赞
踩
article
从
边缘
到云
,
万物互联时代
Aruba
的
技术
经_
aruba
除了
esp
还有什么...
作者 | 宋慧出品 | CSDN 云计算网络
,
是重要的 IT 基础设施之一。在 2021 年底
,
国际分析机构 Gartn...
赞
踩
article
IDM
下载
慢怎么办_
idm
下载
速度
慢...
IDM
(Internet Download Manager)是一款windows系统常用的
下载
软件,它能够将
下载
速度
提高...
赞
踩
article
图像旋转--利用
opencv
,
cuda
-
npp
的实现。
_
npp
imalloc
_
8u
_
c3...
一,软件开发中,某些场景需要旋转图像,本文注意处理的是旋转图像90°,180°,270°。任意角度的旋转不涉及。注意选择...
赞
踩
article
ACL
访问控制
列表
——华为
ensp
_
ensp
中
acl
访问控制
列表
详解...
文章目录一、
访问控制
列表
概述二、
访问控制
列表
的功能三、
访问控制
列表
的工作原理四、
访问控制
列表
的类型五、
ACL
访问控制
列表
...
赞
踩
article
Linux
-
Zabbix
监控
-
安装
与配置...
Linux
CentOS 7 搭建
Zabbix
详细部署流程_zabbixzabbix 一、zab...
赞
踩
article
安装
RabbitMQ
时出现
Plugin
configuration
unchanged
,
Rabbit...
1.正常情况下的
安装
步骤注意在官网
安装
时
,
尽量
安装
新版本
,
老旧版本会导致各种问题官网下载地址:
http
://www.ra...
赞
踩
article
python
爬虫之
分布式
爬虫/
scrapy
_
redis
详解/
scrapy
-
post
请求
/机器视觉...
文章目录前情回顾settings.py常用变量非结构化数据抓取
scrapy
.Request()设置中间件今日笔记
分布式
爬...
赞
踩
article
HarmonyOS
之
组件
的
使用
_在
column
和
row
容器
组件
中,
align
...
HarmonyOS
之
组件
的
使用
_在
column
和
row
容器
组件
中,
align
在
column
和
row
容器
组件
中,alig...
赞
踩
article
MIPS
、D
MIPS
、
MFLOPS
_
tops
...
MIPS
Million Instructions Per Second的缩写,每秒处理的百万级的机器语言指令数。这是衡量...
赞
踩
article
本地
代码
修改后如何
更新
Gitee
仓库
_
gitee
更新
代码
到
仓库
...
教你本地
代码
修改后如何
更新
至
Gitee
仓库
_
gitee
更新
代码
到
仓库
gitee
更新
代码
到
仓库
...
赞
踩
article
数据仓库
实战
教程_
数据仓库
经典教程...
以hadoop 作为基础生态,从0到进行数仓建设,主要分为基础篇和
实战
篇两部分,基础篇主要是各种组件的学习和案例,
实战
篇...
赞
踩
article
设备
基础
命令,
路由
基础
...
undo shutdown 又有
路由
了。shutdown后
路由
就没有了。设备
基础
命令,
路由
基础
...
赞
踩
article
C++
list
模拟
实现
...
/ List的节点类T _date;//List的迭代器类public:dprivate:Node _node;//li...
赞
踩
article
Flask
零基础到项目实战(四)
SQLAlchemy
数据库
(
一
)_
sqlalchemy
二维数组...
一
、
SQLAlchemy
简介flask_
sqlalchemy
是
一
套ORM框架。ORM(Object Relationsh...
赞
踩
article
The
superclass
“
java
x.
servlet
.
http
.HttpServlet“ wa...
Question:在jsp文件中,经常会遇到这种的小错误,开头文件:<%@ page language="
java
" i...
赞
踩
article
Vue2
(十一):脚手架
配置
代理
、
github
案例
、
插槽
...
回顾常用的ajax发送方式:(1)xhr比较麻烦,不常用(2)jQuery核心是封装dom操作,所以也不常用(3)axi...
赞
踩
相关标签
docker
debian
容器
raspberry pi
docker-compose
网络
运维
大数据
人工智能
物联网
面试
经验分享
stable diffusion
AI自动纹理
边缘计算
Aruba
SASE
windows
idm
chrome
路由器
华为
ensp
zabbix