当前位置: 首页 > 科技观察

基于iOS的Wireshark抓包实践

时间:2023-03-20 21:54:14 科技观察

接上篇文章《基于iOS的Charles抓包实践》,Charles是一款非常强大的网络请求抓包工具,常用于抓取HTTP/HTTPS请求。笔者在做物联网项目时,智能硬件分发网络协议是基于TCP/UDP或者蓝牙的,需要使用Wireshark进行抓包调试。本文结合笔者在项目中抓取iPhone与智能硬件之间TCP/UDP通信数据的经验,介绍Wireshark的使用。1.启动WiresharkWireshark是一款免费软件,可以直接从官网下载安装。PS:从非官方网站下载资源时,注意识别安装包来源,谨防木马和病毒。安装成功后,启动Wireshark,可以看到本地接口列表界面。示意图如下:此时需要选择一个接口,双击进入抓包界面。Ethernet:en0(以太网卡)和Wi-Fi:en1(无线网卡)是教学中常用的两个接口。笔者要抓取的数据(iPhone与智能硬件之间的TCP/UDP通信数据)不经过PC的网卡。因此,在抓包之前,需要先创建要抓包的接口。2.创建虚拟网卡这里的虚拟网卡就是上面说的要抓包的接口。创建虚拟网卡的过程如下:第一步:获取iPhone的UDID将iPhone通过USB接口连接到Mac,然后在终端使用如下命令获取iPhone的UDID。$system_profilerSPUSBDataType|grep"SerialNumber:.*"|seds#".*SerialNumber:"##Result:decb66caf7012a7799c2c3edxxxxxxxx7f5a715e如果多台iphone连接到Mac,可以更方便的从Xcode菜单栏->窗口->设备获取和模拟器准确的UDID。图示如下:第2步:为iPhone创建虚拟网卡(1)查看已有的接口$ifconfig-l结果:lo0gif0stf0XHC20en0en1en2en3p2p0awdl0bridge0utun0en27(2)创建虚拟网卡$rvictl-sdecb66caf7012a7799c2c3edxxxxxxxx7f5a715e结果:Startingdevicedecb66caf7012a7799c2c3edxxxxxxxx7f5a715e[SUCCEEDED]withinterfacervi0PS:可以使用rvictl-x[UDID]命令在需要时移除网卡。(3)再次查看已有接口$ifconfig-l结果:lo0gif0stf0XHC20en0en1en2en3p2p0awdl0bridge0utun0en27rvi0最后多出的rvi0是为iPhone创建的虚拟网卡。使用rvi0抓包。3.启动虚拟网卡打开Wireshark,本地接口列表界面出现rvi0。示意图如下:双击rvi0进入抓包界面。如果此时出现如下弹窗,说明您没有权限访问该界面。此时退出Wireshark,然后在终端使用如下命令重新打开Wireshark。$sudo/Applications/Wireshark.app/Contents/MacOS/WiresharkPassword:4.TCP/UDP抓包1.抓包接口要抓取TCP/UDP数据包,首先需要了解Charles主界面。示意图如下:(1)工具栏工具栏包含一些功能按钮,可以控制抓包的开始和停止等。工具栏底部的输入框称为显示过滤器,可以控制通过设置一些过滤条件来显示数据包列表栏。(2)数据包列表栏该部分显示抓取到的请求列表(包列表),不同类型的请求会用不同的颜色表示。最上面的No.、Time、Source、Destination、Protocol、Length、Info是单个请求的属性,显示效果可以在菜单栏->view中调整。(3)数据包详情栏在数据包列表栏中点击一条数据,可以查看该区域的详情。(4)报文流向信息栏该区域显示报文的原始数据,报文详情栏显示的内容可以对应该区域的字节级数据。2.过滤由于Wireshark捕获所有经过网卡的数据,在稍微复杂的网络环境中,数据包的数量会瞬间增加,达到难以读取和查找目标数据包的状态。此时,使用Wireshark捕获过滤器和显示过滤器会很有帮助。(1)捕获过滤器启动Wireshark后,可以在本地接口列表页面看到捕获过滤器(CaptureFilter)。图示如下:在蓝色框内的过滤输入框中,可以输入一些规则,表示Wireshark只抓取符合规则的数据***过滤规则示例如下://OnlycaptureHTTP/HTTPSdataport80orport443//只抓取指定主机host192.168.10.1的数据(2)DisplayFilterDisplayFilter(显示过滤器)在抓包界面(上面有介绍)的工具栏底部。输入一些规则,可以从数据包列表栏中过滤掉不符合规则的数据包。当删除规则后,过滤后的数据包将再次显示。过滤规则示例如下://OnlydisplayTCP/UDPdatatcp||udp//OnlydisplayHTTP/HTTPSdatatcp.port==80||tcp.port==443//Onlydisplaythedataofthespecifiedhostip.addr==192.168.10.1//只显示指定端口的数据tcp.port==52360||udp.port==36025PS:更多过滤规则示例可以查看官方Wireshark文档。【本文为栏目组织公众号科技、微信公众号《公众号科技(id:qihoo_tech)》原创文章】点此查看本作者更多好文