1. 抓包环境的准备
为了方便演示,我这边使用的设备是一台抓包用的 PC 和一部手机。网络结构如下:
以 Windows10 操作系统为例,来介绍一下具体操作步骤:
1. 打开电脑的热点;
2. 将手机连接电脑热点;
3. 在已连接的设备栏查看手机的 IP 和 MAC 地址。
确定手机连接上电脑之后,就可以开始操作了。
这里提一点注意事项,当两台设备同时连接在同一台电脑上时,它们之间可能会通过更底层的机制进行通信,此时我们无法通过 Wireshark 捕获到这些数据包。这时可以准备两台电脑分别连接两台设备并抓包。
2. Wireshark 捕获操作流程
打开 Wireshark,开始捕获流程如下:
开始捕获时遇上的第一个问题往往是如何选择接口的问题,这里可以选择一个一个尝试本地连接,观察是否能捕获到流量,也可以打开控制面板 - 网络和Internet - 网络和共享中心 - 更改适配器设置,查看具体使用的是哪个接口:
开始捕获后,如果想要捕获特定的流量,就可以对手机进行操作。如果想要知道B站的协议,就可以打开B站手机客户端,进行各种操作,并分别抓包保存数据包,保存操作如下:
3. 捕获的数据包是我们想要的吗?
使用 Wireshark 捕获数据包一直有个令人头疼的问题——如何判断捕获的大量数据包中,哪些数据包是我们想要保留的?流量比较大的流媒体数据包比较容易观察,但是有些传输流量较小的行为真的很难识别。
这个问题困扰了我很久,不过用了这么长时间 Wireshark,倒也可以总结出一些操作手法了。这些手法使用起来并不是特别困难,但还是需要一些经验。这里同样以捕获手机APP为例:
(1)首先,关键的事项是需要排除其他 APP 的流量。不嫌麻烦的话,可以将其他 APP 的4G选项关闭,或者直接在安卓手机上使用 pcap remote 进行抓包。pcap remote支持对单独的 APP或进程抓包,不过弊端是无法实时查看数据包,而是需要将 pcap文件导入 PC 然后用Wireshark 打开。
(2)其次,最重要的操作手法就是要在进行动作的时候实时观察 Wireshark 捕获的数据包,并且可以多次操作,观察数据包的统一特征。
(3)最后,开始与停止捕获的时机也是非常重要的,开始早了容易混入其他杂质,停止的时机不对则有可能只抓到一半的会话,这两种情况都对后续的分析处理 pcap 文件比较不利。
上述的方法都是只有单独的设备数据包流量经过网卡的情况,要是有大量不同的主机经过网卡,则需要用到捕获过滤器。捕获过滤器的语法与 tshark 相同,但是与 Wireshark 的显示过滤规则略有不同,这里并不多做介绍,具体规则可以参考 tshark 命令详解。
4. 总结
教程的第二篇讲解了如何使用 Wireshark 捕获数据包。其实捕获操作并不困难,多点击重新开始捕获按键,多把玩 Wireshark 就行。可以试着把本地连接、Wlan和以太网接口的数据都捕获下来试试,看看分别有什么不同。
通过捕获过程,可以观察 DHCP 协议是怎么为新入网的主机分配IP的,可以看到 ARP 协议如何发出人性化的请求和响应,这些数据包真的很有趣。
捕获数据包的流程介绍完了,接下来的第三篇会介绍如何使用 Wireshark 导入/导出文件。Wireshark 支持导入和导出的文件格式比较多,因此这部分也会单独作为系列教程中的一篇。