初识 Wireshark
使用 Charles 介绍了在 MacOS 上面的使用 Charles
工具, 虽然 Charles
很不错, 但是其只能抓 HTTP/HTTPS 的包, 对 TCP、UDP 等其他协议的网络包, 爱莫能助。
今天给大家分享强大的网络抓包工具 Wireshark
,算是初步认识一下这个工具,后续分享更多关于 Wireshark
的内容。
简介
Wireshark
是免费的,支持 Windows、MacOS 和 Linux,提供丰富的 GUI 交互,能分析所有的网络协议,并且是开源的。
掌握好 Wireshark
,能对绝大部分的网络协议进行分析了,所以学习它的使用对你的工作不无裨益。
关于 Wireshark
本身 UI(展示的界面内容) 的部分不在本文的讨论范围内,更多关于 Wireshark
的介绍和特性,可以去 Wireshark 官网 查阅。
安装
我的 MacOS 版本:
点击 Wireshark
的 下载地址, 可以去下载对应的平台版本。
注意: 之前的 Mac 系统版本可能需要安装
x11
, 现在新系统不需要安装了.
抓 iOS 设备的数据包
想抓 iOS 设备的网络数据,需要让 iOS 设备数据通过 MacOS 才行,因为 Wireshark
是针对网口进行抓包的。
当然了,你的 iOS 设备不需要越狱.
通过 usb 连接 iOS 设备后,接下来创建远程虚拟接口,在终端执行下面命令:
1 | rvictl -s 设备id(udid) |
rvictl 即 Remote Virtual Interface Tool。它可以通过 iOS 设备的 UDID 创建一个虚拟网卡,然后通过这个虚拟网卡监听设备上所有的网络流量。
执行成功后,Mac 会出现一个对应的虚拟网络接口,名字是 rvi0(如果有多个 iOS 设备, 则累加,rvi1,rvi2…),如下图所示:
只要启动 Wireshark
,监听 rvi0 接口就能抓到 iOS 设备的数据了。
关于获取 iOS 设备 ID(UDID),可以使用 Xcode, 在
Window/Devices and Simulators
中选择相应设备,右面设备信息的 identifier 里就是对应的 UDID. 也可以通过 iTunes 或者第三方工具如 iTools 获取.
你可以安装 ideviceinstaller
来查看设备 ID.
1 | brew install ideviceinstaller |
然后执行下面命令:
1 | idevice_id -l |
以抓取下面的一个 HTTP 请求为例,简单说明一下相关的知识。
GET 请求:
1 | /news/detailV3.html?id=1279391&COMMON_ACCESS_TOKEN=(null)&COMMON_ACCESS_TOKEN_SECRET=(null)&_cT=IOS&_cV=3.1.3&_cA=PM |
看返回结果,选中 Rsponse(200 OK) 右键, Follow/HTTP Stream,如图所示:
在弹出的窗口中就可以看到具体的响应内容,以及响应的 json 数据。
过滤器过滤
在 Wireshark
中显示过滤器会显示很多当前网络的数据包,如果你想看指定规则的数据包怎么办?
别担心,Wireshark
给我们提供了过滤功能,按照一定的过滤规则就可以达到你的目的。
1. 网络协议过滤
比如 TCP,只显示 TCP 协议,HTTP 只显示 HTTP 协议等。在过滤器输入框中直接输入协议名称即可,不区分大小写。
2. IP 地址过滤
如 ip.src == 192.168.1.102 显示源地址为 192.168.1.102
,
而 ip.dst == 192.168.1.102, 目标地址为 192.168.1.102
。
3. 端口过滤
tcp.port == 80, 端口为 80 的
tcp.srcport == 80, 只显示 TCP 协议的原端口为 80 的。
4. Http 模式过滤
http.request.method == “GET”,只显示 HTTP GET 方法的。
5. 结合逻辑运算符 AND/OR 组成复杂的表达式
AND/OR 也可以写成
&&
/||
下面举几个常用的示例,如下:
1 | //源地址或者目标地址是192.168.1.103 |
更多的过滤规则可以去 官方手册 和 CaptureFilters 查阅和学习。
美中不足
Wireshark
只能查看封包,而不能修改封包的内容,或者发送封包。
对于 HTTP、HTTPS 网络封包,Wireshark
都可以捕获, 但不能直接解密 HTTPS,所以想使用 Wireshark
来分析 HTTPS 包中的内容,需要去额外配置,较麻烦,后续研究再分享给大家。
所以建议大家,分析 HTTP/HTTPS 去使用各自平台上面的其他工具, 如 Fiddler
和 Charles
等优秀的抓包工具。
扫码关注,你我就各多一个朋友~