基于iOS的Wireshark抓包实践

栏目: 编程工具 · 发布时间: 7年前

内容简介:接上篇《本文基于作者在项目中抓包iPhone和智能硬件之间TCP/UDP通信数据的经验来介绍Wireshark的使用方式。Wireshark是免费软件,可以从官网直接下载安装。

接上篇《 基于iOS的Charles抓包实践 》,Charles是很强大的网络请求抓包工具,常用于抓包HTTP/HTTPS请求。而作者在做IoT项目时,智能硬件配网协议是基于TCP/UDP或者蓝牙的,需要用Wireshark进行抓包调试。

本文基于作者在项目中抓包iPhone和智能硬件之间TCP/UDP通信数据的经验来介绍Wireshark的使用方式。

一、启动Wireshark

Wireshark是免费软件,可以从官网直接下载安装。

PS:从非官方网站下载资源时要注意甄别安装包来源,谨防木马和病毒。

安装成功后,启动Wireshark,可看到本地接口列表界面。图示如下:

基于iOS的Wireshark抓包实践

此时,要选择一个接口,双击后进入抓包界面。Ethernet:en0(以太网卡)和Wi-Fi:en1(无线网卡)是教常用的两个接口。而作者要捕捉的数据(iPhone和智能硬件之间的TCP/UDP通信数据)不经过PC的网卡。所以,在抓包之前,需要先创建出来待捕捉的接口。

二、创建虚拟网卡

这里的虚拟网卡就是上述的待捕捉的接口。创建虚拟网卡的过程如下:

第1步:获取iPhone的UDID

将iPhone通过USB接口连接Mac,然后在终端上使用下述命令获取iPhone的UDID。

$ system_profiler SPUSBDataType | grep "Serial Number:.*" | sed s#".*Serial Number: "## 
 
结果:decb66caf7012a7799c2c3edxxxxxxxx7f5a715e 

如果Mac上连接了多个iPhone,从Xcode菜单栏 -> Window -> Devices and Simulators可以更方便地获取准确的UDID。图示如下:

基于iOS的Wireshark抓包实践

第2步:为iPhone创建虚拟网卡

(1)查看已有的接口

$ ifconfig -l 
 
结果:lo0 gif0 stf0 XHC20 en0 en1 en2 en3 p2p0 awdl0 bridge0 utun0 en27 

(2)创建虚拟网卡

$ rvictl -s decb66caf7012a7799c2c3edxxxxxxxx7f5a715e 
 
结果:Starting device decb66caf7012a7799c2c3edxxxxxxxx7f5a715e [SUCCEEDED] with interface rvi0 

PS:可以使用 rvictl -x [UDID]命令在需要的时候去除网卡。

(3)再次查看已有的接口

$ ifconfig -l 
 
结果:lo0 gif0 stf0 XHC20 en0 en1 en2 en3 p2p0 awdl0 bridge0 utun0 en27 rvi0 

在末尾多出的 rvi0 就是为iPhone创建出来的虚拟网卡。使用 rvi0 就可以抓包了。

三、启动虚拟网卡

打开Wireshark,本地接口列表界面中出现了 rvi0 。图示如下:

基于iOS的Wireshark抓包实践

双击 rvi0 即可进入抓包界面。

若此时出现如下弹窗,则说明无权限访问该接口。

基于iOS的Wireshark抓包实践

这时,退出Wireshark,然后在终端上使用下述命令重新打开Wireshark就可以了。

$ sudo /Applications/Wireshark.app/Contents/MacOS/Wireshark  
Password: 

四、TCP/UDP抓包

1. 抓包界面

要对TCP/UDP进行抓包,首先需要了解Charles主界面。图示如下:

基于iOS的Wireshark抓包实践

(1)工具栏

工具栏中包含一些功能按钮,可以控制开始抓包、停止抓包等。工具栏底部的输入框叫做显示过滤器,可以通过设定一些过滤条件,控制数据包列表栏的显示情况。

(2)数据包列表栏

这部分显示抓到的请求列表(包列表),不同类型的请求会以不同的颜色表示。顶部的No.、Time、 Source、 Destination、 Protocol、 Length 、Info是单条请求的的属性,可以在菜单栏 -> 视图中调整显示效果。

(3)数据包详情栏

在数据包列表栏中点击某条数据,可在此区域内查看详情。

(4)数据包流信息栏

此区域展示包的原始数据,在数据包详情栏中显示的内容在此区域都能对应到byte级别的数据。

2. 过滤器

由于Wireshark捕捉经过网卡的所有数据,在稍复杂的网路环境中,数据包的数量会瞬间增加,达到难以阅读和难以查找目标数据包的状态。此时,使用Wireshark捕获过滤器和显示过滤器会很有帮助。

(1)捕获过滤器

启动Wireshark后,在本机接口列表页面可以看到捕获过滤器(Capture Filter)。图示如下:

基于iOS的Wireshark抓包实践

在蓝色框内的过滤器输入框中,可以输入一些规则,来指明Wireshark只捕捉符合该规则的数据包。过滤规则示例如下:

// 只捕获HTTP/HTTPS数据 
port 80 or port 443 
 
// 只捕获制定host的数据 
host 192.168.10.1 

(2)显示过滤器

显示过滤器(Display Filter)在抓包界面的 工具 栏底部(上面有介绍)。输入一些规则,可以从数据包列表栏过滤掉不符合该规则的数据包,当去掉规则时,被过滤掉的数据包会重新显示出来。过滤规则示例如下:

// 只显示TCP/UDP数据 
tcp || udp 
 
// 只显示HTTP/HTTPS数据 
tcp.port == 80 || tcp.port == 443 
 
// 只显示指定host的数据 
ip.addr == 192.168.10.1 
 
// 只显示指定端口的数据 
tcp.port == 52360 || udp.port == 36025 

PS:从Wireshark官方使用文档可以查看更多的过滤规则示例。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro CSS and HTML Design Patterns

Pro CSS and HTML Design Patterns

Michael Bowers / Apress / April 23, 2007 / $44.99

Design patterns have been used with great success in software programming. They improve productivity, creativity, and efficiency in web design and development, and they reduce code bloat and complexit......一起来看看 《Pro CSS and HTML Design Patterns》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具