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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    JasonShi6306421阅读 1,262评论 0 1
  • Wireshark 1.x针对 UNIX Like 系统的 GUI 发行版界面采用的是X Window(1987年...
    huangman阅读 1,453评论 1 0
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,990评论 1 13
  • 原文地址:http://www.mrpeak.cn/blog/wireshark/ 网络抓包是个基础技能,对于网络...
    呆呆滴木木菇凉阅读 1,316评论 0 9
  • 今天,我为你提供了三种有效提高元认知能力的方法论: 第一是通过坐享,使元认知能力逐渐提升…… 第二是培养让你主动的...
    Z小一阅读 475评论 0 0