iOS 真机抓包方式

Charles

优点

  1. 通过设置 http(s) 代理请求方式抓到请求,操作简单
  2. 可以模拟慢速,完全满足抓 http(s)网络请求场景包

缺点

只能抓 http(s) 的包,不能抓自定义协议的包,如果要分析到更底层的包,像TLS handShake 这种就没办法了

wireShark

功能相对强大一些,可以针对某个网卡抓到所有的的数据包,类似于 tcpdump, 也可以抓自定义协议的包,可以分析到 TLS handShake 包

iOS 5 之后, iPhone 带了一个 Remote Virtual Interface (RVI) 功能,我们可以通过 RVI 把数据从 iOS 设备上转发到我们 Mac 机器上的一个虚拟网卡

设置 RVI

连接手机到电脑上, 获取到设备的 UUID,Xcode->Window-> Devices And simulators


image.png

在命令行中查看当前已有网络接口

ifconfig -l
lo0 gif0 stf0 en0 en1 en2 bridge0 p2p0 awdl0 utun0

接下来使用 rvictl 创建虚拟网络接口

$ rvictl -s dd55c5b6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Starting device dd55c5b6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [SUCCEEDED] with interface rvi0

再次查看网络接口

$ ifconfig -l
lo0 gif0 stf0 en0 en1 en2 bridge0 p2p0 awdl0 utun0 rvi0

可以看到虚拟接口已经创建成功。

如果要结束掉 RVI

$ rvictl -x dd55c5b6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Stopping device >dd55c5b6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
[SUCCEEDED]

虚拟网络接口已经创建完毕,接下来使用抓包工具抓到原始包分析

tcpdump

RVI 设置好以后,我们可以在 Mac 上直接利用 tcpdump 查看数据包。

sudo tcpdump -i rvi0 -w trace.pcap

输入完密码后可以,抓包已经可以开始

按下 Ctrl + G 可以结束抓包

Wireshark

tcpdump 很强大,但是可读性不太高,我们尝试用Wireshark 分析原始数据包。

AirPlay 是Apple 私密协议,但也被很多商业破解收费,但每个版本 Apple 都有可能再加密一次,这边有一份 non-official AirPlay 协议,大致描述了 AirPlay 的一个过程,non-official AirPlay protocol, 接下来看一下 iOS 12 上 AirPlay 协议

工具: airServer 可以将 手机通过 AirPlay 投到 mac 上

以下分析过程都采用 wireShark
启动 wireShark

image.png

选择抓 rvi0 网络接口数据,点击开始

airplay 非正式版的协议

发送端 :30.40.200.4
接收端:30.40.202.17
我们在 wireShark 上看下具体原始数据包:

30.40.200.4 --> 30.40.202.17

image.png

发送端向接收端查询AirPlay 和 RAOP 的信息,拿到数据包原文如下:

 GET /info?txtAirPlay&txtRAOP HTTP/1.1
 Host: 30.40.202.17:5000
 Accept: */*
 Accept-Language: zh-cn
 Connection: keep-alive
 Accept-Encoding: gzip, deflate
 User-Agent: Connect%20/24 CFNetwork/975.0.3 Darwin/18.2.0

接收端回复数据包:
30.40.202.17 --> 30.40.200.4


image.png
HTTP/1.1 200 OK
Date: Wed, 28 Nov 2018 09:14:22 GMT
Content-Type: application/x-apple-binary-plist
Content-Length: 1373

plist   
�
'01245689:8XfeaturesTnameXdisplays\audioFormatsZtxtAirPlayRvv[statusFlags_keepAliveLowPower]sourceVersionWtxtRAOPRpk_keepAliveSendStatsAsBodyXdeviceIDUmodel^audioLatenciesZmacAddressJÿ÷Vzifanx¡Ú !"# $%&_primaryInputDeviceXrotation]widthPhysicalTedid[widthPixelsTuuid^heightPhysical\heightPixels[overscanned  Oÿÿÿÿÿÿ. ¥!xo±§UL%PTï@ °4p0 6KÏüColor LCD
   Ð#@_$06102ea0-7b0f-4305-984b-974f677a150b#@à¢(.Ó)*+,--Ttype_audioInputFormats_audioOutputFormatsdÿÿüÓ)*+/--eOÎdeviceid=A4:5E:60:D1:1F:E8features=0x4A7FFFF7,0xE  flags=0x4model=AppleTV5,3Cpk=9195e133456397ab3e06e35f85f4799b69f706dfff3b0ef60be95c139f7b60cf'pi=2dfee922-3348-446d-a06d-3ff4be1e651fsrcvers=220.68vv=2 V220.68O¯
cn=0,1,2,3da=trueet=0,3,5ft=0x4A7FFFF7,0xEmd=0,1,2
am=AppleTV5,3Cpk=9195e133456397ab3e06e35f85f4799b69f706dfff3b0ef60be95c139f7b60cfsf=0x4tp=UDPvn=65537   vs=220.68vv=2_@9195e133456397ab3e06e35f85f4799b69f706dfff3b0ef60be95c139f7b60cf _A4:5E:60:D1:1F:E8ZAppleTV5,3¢;@Ô<)=> ,? _outputLatencyMicrosYaudioType_inputLatencyMicrosWdefaultÔ<)=> /? +49BOZ]i}±ºÀÏÚãêì-2>CR_kmnpóü#%./29>RginuwHJLMT

里面包含了很的信息我们都可以解析。

你可能感兴趣的:(iOS 真机抓包方式)