加入收藏 | 设为首页 | 会员中心 | 我要投稿 济宁站长网 (https://www.0537zz.cn/)- 行业智能、边缘计算、专有云、AI硬件、5G!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

基于iOS的Wireshark抓包实践

发布时间:2019-03-26 23:30:07 所属栏目:优化 来源:360技术
导读:接上篇《基于iOS的Charles抓包实践》,Charles是很强大的网络请求抓包工具,常用于抓包HTTP/HTTPS请求。而作者在做IoT项目时,智能硬件配网协议是基于TCP/UDP或者蓝牙的,需要用Wireshark进行抓包调试。 本文基于作者在项目中抓包iPhone和智能硬件之间TCP/
副标题[/!--empirenews.page--]

接上篇《基于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。

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

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

基于iOS的Wireshark抓包实践

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

(1)查看已有的接口

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

(2)创建虚拟网卡

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

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

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

  1. $ ifconfig -l 
  2.  
  3. 结果: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就可以了。

  1. $ sudo /Applications/Wireshark.app/Contents/MacOS/Wireshark  
  2. 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抓包实践

(编辑:济宁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读