iOS Wireshark抓包

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

内容简介:级别:★☆☆☆☆标签:「Wireshark for mac」「iOS TCP抓包」「iOS UDP抓包」作者: Xs·H

级别:★☆☆☆☆

标签:「Wireshark for mac」「iOS TCP抓包」「iOS UDP抓包」

作者: Xs·H

审校:QiShare团队

在iOS应用开发过程中,通过抓包调试服务接口的场景时常出现。Charles和Wireshark是我在iOS开发过程中最常用的两款软件。

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

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

一、启动Wireshark

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

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

安装成功后,启动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
复制代码

可以使用 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.TimeSourceDestinationProtocolLengthInfo 是单条请求的的属性,可以在 菜单栏 -> 视图 中调整显示效果。

3) 数据包详情栏

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

4) 数据包流信息栏

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

网络包的分析可参考 永旺文章1永旺文章2 等文章。

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
复制代码

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

小编微信:可加并拉入《QiShare技术交流群》。

iOS Wireshark抓包

关注我们的途径有:

QiShare(简书)

QiShare(掘金)

QiShare(知乎)

QiShare(GitHub)

QiShare(CocoaChina)

QiShare(StackOverflow)

QiShare(微信公众号)


以上所述就是小编给大家介绍的《iOS Wireshark抓包》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Creative Selection

Creative Selection

Ken Kocienda / St. Martin's Press / 2018-9-4 / USD 28.99

Hundreds of millions of people use Apple products every day; several thousand work on Apple's campus in Cupertino, California; but only a handful sit at the drawing board. Creative Selection recounts ......一起来看看 《Creative Selection》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具