iOS 设备网络通信数据抓包

工具准备

  • XCode
  • tcpdump/wireshark
  • rvictl(mac 系统自带)

步骤

在iOS5中新引入了“远程虚拟接口(remote virtual interface ,RVI)“的特性,可以在Mac中建立一个虚拟网络接口来作为iOS设备的网络栈,这样所有经过iOS设备的流量都会经过此虚拟接口,此虚拟接口代替了iOS设备本身的协议栈,但并没有将网络流量中转到Mac本身的网络连接上,这样所有网络连接都是iOS设备本身的,Mac电脑本身连不联网或者连接的网络类型都没有关系,而iOS设备本身可以为任意网络类型,2G/3G/WiFi等。在 Mac 电脑上使用任意抓包工具抓取RVI接口上的数据包就可以看到iOS设备上的所有网络数据。

  1. USB连接iDevice到Mac上
  2. 获取 iDevice 的 UDID

    • 可以使用 XCode 的 organizer 查看
    • 也可以通过 iTools 查看

  3. 创建 RVI 接口

    $ rvictl -s <UDID>

RVI 的命名规则为 rvi0,rvi1…

查看所开启的RVI

$ rvictl -l

可用如下命令查看

$ ifconfig rvi0

  1. 现在就用相关的抓包软件抓去这个rvi上的网路连接吧
  2. 使用结束移除RVI

    $ rvictl -x <UDID>

注意:

如果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

参考文献

  • http://developer.apple.com/library/mac/#qa/qa1176/_index.html

以上是 iOS 设备网络通信数据抓包 的全部内容, 来源链接: utcz.com/z/264781.html

回到顶部