由于近期常工作于 Mac 环境下,对有些应用稍加深入点研究就免不了要用到网络包抓取工具来分析。早先在 Windows 环境用过老牌的 Sniffer Pro 和 Netxray,以及后来都用免费开源的 Packetyzer 和 Wireshark。偶尔还用过 Windows 服务版自带的网络监视器。
那 Mac 下有什么好用的抓包工具呢,试用了一下下面几个工具:
一. tcpdump 命令
因为它是 Unix 族的,所以首先想到的是 tcpdump 工具,确实 Mac 下也有这个命令,但用起来也太难了,全在命令行下,看起来不直观。
tcpdump 命令的使用可参考以下两个链接:
1. Mac OS X: How to capture a packet trace
2. A tcpdump Tutorial and Primer
二. Ethereal
图形界面的,跨多平台,功能也不错,不过基本你可以忽略它了,它自 2006 年以来就没再发展了,永远死守在 0.99 版了。它就是大我鼎鼎的 Wireshark 的前生。
三. Wireshark
轮到 Wireshark 的隆重出场了,作为 Ethereal 更名后的产品,它仍然是开源的且多平台通吃的。你只要在 Windows 上用过它的话,在 Mac 下的操作方式都一样的。
但有一点要特别指出来,由于安装完 Wireshark 后默认是以非 root 用户打开的,所以你可能会看到一个 Wireshark 图标和 X11 的图标在 Dock 上,但是没有 Wireshark 窗口,只有一个 X11 对应的 xterm 给你输入指令。原因是当前用户没有权限使用网络设备,所以你必须在那个 xterm 窗口中输入命令:
sudo chown {Your account name} /dev/bpf*
待输入正确的密码后,Wireshark 窗口就自动出来了,剩下的事情你懂得怎么操作了。再好点的办法是把这条命令加到启动脚本中去,而无需每次启动 Wireshark 时都要输一遍。
四. Cocoa Packet Analyzer
看到 Cocoa 字样当然是 Mac 下的图形界面程序,它在启用的时候比 Wireshark 聪明的地方就是在没权限使用网卡设备的时候会提示你输入密码,而不是像 Wireshark 那样要手工赋权。
它的使用方式反而更象是 Ethereal, 先一下窗口专管抓包,抓到你满足时再停下来解析刚刚抓取的包数据,分两步走,不能实时的抓取并随时查看结果。
分析包的能力也不是很强,既有 Wireshark 何必用 Cocoa Packet Analyzer 呢!
五. Http Scoop
这是专为 HTTP 协议准备的,它是收费的,不过提供了 14 天的全功能试用版。作为 Web 或是使用 HTTP 来传输数据的开发还是很实用的。
它在访问网卡设备的时候也会提示你输入密码的。
六. Charles Web Proxy
它是专为 Web 开发用的,它的程序图标有点意思,很漂亮的一个花瓶。它的使用方式是自己建立一个 Web 代理,能后在浏览器中设置代理服务器为 localhost:8888,默认端口是 8888,然后该浏览器的数据请求就可以让 Charles Web Proxy 知道了。它能基于浏览器来抓包分析,虽然你也可以在程序代码中设置同样的代理,但麻烦了些。
综上,个人比较推崇 Wireshark,功能完备,理解许许多多的协议,但如果是只关心 HTTP 协议的话, Http Scoop 是个不错的工具,只可惜要非免费。
参考:1. Wireshark在Mac OS X 上使用
原文链接: http://unmi.cc/mac-sniffer-tools, 来自 隔叶黄莺 Unmi Blog