最近在鼓捣ios的传文件,离不开抓包分析和网络模拟,找到两种方式抓包、网络模拟方式分别对应ios模拟器(使用mac的NetworkLinkConditioner配置mac系统的网络模拟)+wireshark;另一种是使用rvictl工具对真机抓包(真机,我就不用网络模拟了)。下面详细说一下:
1.用ios模拟器,可以使用apple提供的Hardware IO Tools for XCode中的Network link conditioner(需要apple账号登录),下载后mnt dmg文件找到Network Link Conditioner.prefPane程序,双击即可安装,以后使用就再系统偏好中多出来的一个Network Link Conditioner设置项。配置所见即所得,需要注意的是该设置对整个mac机起作用。
抓包就用wireshark。
2.rvictl工具是ios5.0之后提供的一个真机抓包工具,将iPhone真机的tcpip栈替换了,但数据包还是通过iphone的无线网络收发的,mac机器上有个虚拟网卡。
大体的使用规则摘抄如下:
1.USB连接iphone到Mac上
2.获取iphone的UDID,可以用xcode organizer或者iTunes、iTools查看
3.创建RVI接口
$ rvictl -s
RVI的命名规则为 rvi0,rvi1…
查看所开启的RVI
$ rvictl -l
可用如下命令查看
$ ifconfig rvi0
4.现在就用相关的抓包软件,比如wireshark、tcpdump($ sudo tcpdump -i rvi0 -n -vv)抓去这个rvi(设备号是rvi0,rvi1,…)上的数据
5.使用结束移除RVI
$ rvictl -x
注意:
如果rvictl失败并提示 bootstrap_look_up(): 1102
那可能是com.apple.rpmuxd没有正确启动,使用一下命令查看下
$ sudo launchctl list com.apple.rpmuxd
如果失败了,说明没有加载,你可以用下面命令强制加载
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.rpmuxd.plist