Charles
优点
- 通过设置 http(s) 代理请求方式抓到请求,操作简单
- 可以模拟慢速,完全满足抓 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
在命令行中查看当前已有网络接口
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
选择抓 rvi0
网络接口数据,点击开始
airplay 非正式版的协议
发送端 :30.40.200.4
接收端:30.40.202.17
我们在 wireShark 上看下具体原始数据包:
30.40.200.4 --> 30.40.202.17
发送端向接收端查询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
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
里面包含了很的信息我们都可以解析。