注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

碳基体

http://weibo.com/tanjiti

 
 
 
 
 

日志

 
 

三、TCP/IP协议分析-MySQL认证协议  

2017-07-17 15:03:50|  分类: 协议分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

登陆mysql数据库,抓取mysql从建立连接到断开连接的双向流量,如下图所示

python print_tcp_session.py



一次失败的MySQL登陆,账号为root
三、TCP/IP协议分析-MySQL认证协议分析 - 碳基体 - 碳基体
 
 一次成功的mysql登陆,账号为ids

三、TCP/IP协议分析-MySQL认证协议分析 - 碳基体 - 碳基体
 
由上图所示,
 MySQL采用的二进制协议,采用的小端字节

MySQL报文结构由消息头消息体构成,而消息头又由消息体长度与序列号构成。
消息头为固定长度4个字节,消息头长度占3个字节,序列号占1个字节。
消息体长度为消息头长度取值



一次失败的认证过程为
服务端-> 客户端:Server Greeting,Packet Number 00
客户端-> 服务端: Login Request,Packet Number 01
服务端->客户端: Response Error,Packet Number02


一次成功的认证过程为
服务端-> 客户端:Server Greeting, Packet Number 00
客户端-> 服务端: Login Request,Packet Number 01
服务端->客户端: Response OK,Packet Number 02


客户端认证报文的消息体组成三、TCP/IP协议分析-MySQL认证协议分析 - 碳基体 - 碳基体
 (1) Server Greeting后,明文传输
客户端权能标志client capabilities 2个字节 

+ 客户端全能标志(扩展)extended client capabilities 2个字节
+ 最大消息长度max packet 4个字节
+ 字符编码charset  1个字节
+ 填充值 23个字节(全是00)
+ 用户名 username(不固定长度,以0x00结束)
+密码串长度(1个字节)
密码的加密串(不固定长度,由密码串长度决定) 
+ 数据库名称schema(不固定长度,以0x00结束) #由客户端权能标志CLIENT_CONNECT_WITH_DB决定是否返回
+其他可选
可以从中提取用户名,数据库名
 (2) Server Greeting后,SSL传输
客户端权能标志2个字节 
+ 客户端全能标志(扩展)2个字节
+ 最大消息长度 4个字节
+ 字符编码 1个字节
+ 填充值 23个字节(全是00)
 
其中客户端与服务端握手后,后续是否切换到ssl传输,由客户端全能标志位决定
三、TCP/IP协议分析-MySQL认证协议分析 - 碳基体 - 碳基体
 
三、TCP/IP协议分析-MySQL认证协议分析 - 碳基体 - 碳基体
 
服务端响应报文的消息体组成
(1)成功响应
三、TCP/IP协议分析-MySQL认证协议分析 - 碳基体 - 碳基体
 
状态标识(1个字节) #00表示成功/FF表示失败
+ 受影响的行数 变长
+ 索引ID 变长
+ 服务器状态 2个字节
+ 告警计数 2个字节
+ 服务器消息 变长
(2)失败响应
三、TCP/IP协议分析-MySQL认证协议分析 - 碳基体 - 碳基体
 
状态标识  1个字节 #00表示成功/FF表示失败
+ 错误码  2个字节
+ # 1个字节 固定为 0x23
+ sql 状态 5个字节
+错误消息(不固定长度)

参考:

  评论这张
 
阅读(121)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017