使用wireshark和Tcpdump分析MQTT协议

by Web全栈工程师 on 2016 年 09 月 09 日

Wireshark(以前是ethereal)是非常简单易用的可视化图形抓包工具,但在Linux下很难找到一个好用的图形化抓包工具。但是Linux下可以使用Tcpdump,我们可以用Tcpdump + Wireshark 实现,在 Linux 里抓包,然后在wireshark里分析包。

使用方法

一、指定网卡和IP,监听MQTT的1883端口数据,并保存到文件

tcpdump -AX -i eth1 host [IP] and tcp port 1883 -w mqtt.cap

参数说明:

  • -A 以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据(nt: 即Handy for capturing web pages).
  • -X 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据(但不包括连接层的头部).这对于分析一些新协议的数据包很方便.
  • -i eth1:指定监听的网络接口,可以使用ifconfig获取网络配置
  • host 数据包的源或目的地址是指定IP或者主机名
  • -w 数据包保存到指定文件

二、使用netstat,获取指定进程的监听端口,或者某一个端口的使用情况

netstat -pan | grep 1883

三、使用Wireshark分析MQTT协议
Wireshark过滤MQTT的语法规则,可以参考:https://www.wireshark.org/docs/dfref/m/mqtt.html

Leave a Comment

Previous post:

Next post: