找回密码
 会员注册
查看: 21|回复: 0

基于iOS的Wireshark抓包实践

[复制链接]

7

主题

0

回帖

22

积分

新手上路

积分
22
发表于 2024-10-11 23:41:24 | 显示全部楼层 |阅读模式
奇技指南在应用开发过程中,通过抓包调试服务端接口的场景时常出现。接上次我们分享的Charles抓包,今天,让我们再以iOS为例,聊一聊Wireshark抓包。本文来自360奇舞团QiShare团队投稿。接上篇《基于iOS的Charles抓包实践》,Charles是很强大的网络请求抓包工具,常用于抓包HTTP/HTTPS请求。而作者在做IoT项目时,智能硬件配网协议是基于TCP/UDP或者蓝牙的,需要用Wireshark进行抓包调试。本文基于作者在项目中抓包iPhone和智能硬件之间TCP/UDP通信数据的经验来介绍Wireshark的使用方式。 一、启动WiresharkWireshark是免费软件,可以从官网直接下载安装。PS:从非官方网站下载资源时要注意甄别安装包来源,谨防木马和病毒。安装成功后,启动Wireshark,可看到本地接口列表界面。图示如下:此时,要选择一个接口,双击后进入抓包界面。Ethernet:en0(以太网卡)和Wi-Fi:en1(无线网卡)是教常用的两个接口。而作者要捕捉的数据(iPhone和智能硬件之间的TCP/UDP通信数据)不经过PC的网卡。所以,在抓包之前,需要先创建出来待捕捉的接口。二、创建虚拟网卡这里的虚拟网卡就是上述的待捕捉的接口。创建虚拟网卡的过程如下:第1步获取iPhone的UDID将iPhone通过USB接口连接Mac,然后在终端上使用下述命令获取iPhone的UDID。$system_profilerSPUSBDataType|grep"SerialNumber:.*"|seds#".*SerialNumber:"##结果:decb66caf7012a7799c2c3edxxxxxxxx7f5a715e如果Mac上连接了多个iPhone,从Xcode菜单栏 -> Window -> Devices and Simulators可以更方便地获取准确的UDID。图示如下:第2步为iPhone创建虚拟网卡1)查看已有的接口$ ifconfig -l结果:lo0 gif0 stf0 XHC20 en0 en1 en2 en3 p2p0 awdl0 bridge0 utun0 en272)创建虚拟网卡$ rvictl -s decb66caf7012a7799c2c3edxxxxxxxx7f5a715e结果:Starting device decb66caf7012a7799c2c3edxxxxxxxx7f5a715e [SUCCEEDED] with interface rvi0PS:可以使用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。图示如下:双击rvi0即可进入抓包界面。若此时出现如下弹窗,则说明无权限访问该接口。这时,退出Wireshark,然后在终端上使用下述命令重新打开Wireshark就可以了。$ sudo /Applications/Wireshark.app/Contents/MacOS/Wireshark Password:四、TCP/UDP抓包1抓包界面要对TCP/UDP进行抓包,首先需要了解Charles主界面。图示如下:1)工具栏工具栏中包含一些功能按钮,可以控制开始抓包、停止抓包等。工具栏底部的输入框叫做显示过滤器,可以通过设定一些过滤条件,控制数据包列表栏的显示情况。2)数据包列表栏这部分显示抓到的请求列表(包列表),不同类型的请求会以不同的颜色表示。顶部的No.、Time、Source、Destination、Protocol、Length、Info是单条请求的的属性,可以在菜单栏 -> 视图中调整显示效果。3)数据包详情栏在数据包列表栏中点击某条数据,可在此区域内查看详情。4)数据包流信息栏此区域展示包的原始数据,在数据包详情栏中显示的内容在此区域都能对应到byte级别的数据。2过滤器由于Wireshark捕捉经过网卡的所有数据,在稍复杂的网路环境中,数据包的数量会瞬间增加,达到难以阅读和难以查找目标数据包的状态。此时,使用Wireshark捕获过滤器和显示过滤器会很有帮助。1)捕获过滤器启动Wireshark后,在本机接口列表页面可以看到捕获过滤器(Capture Filter)。图示如下:在蓝色框内的过滤器输入框中,可以输入一些规则,来指明Wireshark只捕捉符合该规则的数据包。过滤规则示例如下:// 只捕获HTTP/HTTPS数据port 80 or port 443// 只捕获制定host的数据host 192.168.10.12)显示过滤器显示过滤器(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 == 36025PS:从Wireshark官方使用文档可以查看更多的过滤规则示例。界世的你当不只作你的肩膀无360官方技术公众号技术干货|一手资讯|精彩活动空·更多iOS及周边技术文章可点击阅读原文,关注QiShare。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 01:08 , Processed in 0.615740 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表