Chinaunix
标题:
怎样确认一个数据包是 mysql 数据包?
[打印本页]
作者:
FightForWin
时间:
2011-07-18 15:12
标题:
怎样确认一个数据包是 mysql 数据包?
hi, 大家好.
有没有办法确认在网络上抓的包是一个 mysql 数据包, 比如是 mysql 登录或其他什么的。
我用 wireshark 抓包, 三次握手完他就知道数据包使用的协议是 mysql , 请问是用什么方法。 谢谢。
作者:
一路征程一路笑
时间:
2011-07-18 15:33
提示:
作者被禁止或删除 内容自动屏蔽
作者:
FightForWin
时间:
2011-07-18 15:44
但是端口变了呢?
mysql 服务器的端口并一定非用 3306 不可吧?
作者:
一路征程一路笑
时间:
2011-07-18 16:15
提示:
作者被禁止或删除 内容自动屏蔽
作者:
FightForWin
时间:
2011-07-18 22:28
那有方法判断数据包是否为 mysql 包吗?
mysql 协议有没有特殊的字段指明? 我看了 mysql 协议, 没看出什么来.
谢谢。
作者:
一路征程一路笑
时间:
2011-07-18 22:45
提示:
作者被禁止或删除 内容自动屏蔽
作者:
phphp
时间:
2011-07-25 23:19
本帖最后由 phphp 于 2011-07-25 23:22 编辑
对于新建请求,TCP三次握手后是服务端(mysqld)主动给客户端发送握手包,其中就包含mysql版本串(如mysql-5.1.58),可用这个做为特征。
Handshake Initialization Packet
From server to client during initial handshake. The follow is taken from sql/sql_acl.cc:
Bytes Name
----- ----
1 protocol_version
n (Null-Terminated String) server_version//看这里
4 thread_id
8 scramble_buff
1 (filler) always 0x00
2 server_capabilities
1 server_language
2 server_status
2 server capabilities (two upper bytes)
1 length of the scramble
10 (filler) always 0
n rest of the plugin provided data (at least 12 bytes)
1 \0 byte, terminating the second part of a scramble
复制代码
对于已有连接上的包,可尝试用mysql协议去翻译,能正确识别就是mysql数据包。
参考:
http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2