2013年7月29日月曜日

Wiresharkのプロトコルデコード機能を使ってMySQLのパケットを覗く

port 3306なら余計なことをしなくてもWiresharkが勝手にMySQLプロトコルとしてデコードしてくれるんだけど、残念ながら3306以外の場合は手動で設定してやらんといかん。

取り敢えずキャプチャー。
MySQLが浮いてるのはLinuxで、俺が使ってるのはWindows。

# tcpdump -i any -w /tmp/mysql55.cap port 64055
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
^C21 packets captured
42 packets received by filter
0 packets dropped by kernel

64055番ポートにMySQL 5.5.32が浮いているのでそれをキャプチャーしてみた。

$ mysql55 --protocol=tcp
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.32-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql55>
mysql55>
mysql55>
mysql55> SELECT 'さんをつけろよデコ助野郎!';
+-----------------------------------------+
| さんをつけろよデコ助野郎!              |
+-----------------------------------------+
| さんをつけろよデコ助野郎!              |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql55>
mysql55>
mysql55>
mysql55> exit
Bye

最近知ったんだけど、--protocol=tcp ってすると、わざわざ--host=127.0.0.1ってやらなくてもTCP/IP使うようになる(今更

で、まあ/tmp/mysql55.capを手元に持ってきてWiresharkに食わせる。




デコードされてないのでヘッダ以外は16進でしか表示されていないので、読みにくいことこの上ない。
ので、



テキトーなパケットを右クリックして"Decode As"を選択。




TransportタブでDecodeをMySQLにしてOK押下。




よし素敵。
画像びみょー。。

0 件のコメント :

コメントを投稿