如何在 macOS 上架设本地代理服务器对 iOS 流量进行抓包分析?

直接用代理的方式会抓到废柴数据

正确方法如下:

通过USB口将iPhone连接到Mac上。使用Xcode的organizer工具获取到iPhone的UDID使用rvictl命令创建RVI接口(remote virtual interface),使用iPhone的UDID作为参数。$ rvictl -s <UDID>

如果想捕获多个设备的网络包,可以使用上述命令创建多个设备的RVI,传递每个iOS设备的UDID作为参数即可。RVI虚拟接口的命名规则为rvi0,rvi1,rvi2,…,可使用ifconfig命令查看

$ ifconfig rvi0 rvi0: flags=3005<UP,DEBUG,LINK0,LINK1> mtu 0 在Mac上使用任意抓包工具tcpdump、wireshark等,监听创建的rvi接口即可。使用完之后需要将创建的虚拟接口移除$ rvictl -x <UDID>

看了一下相关问题,真心觉得 OS X 人性化~

OS X 提供了 Internet Sharing,直接建一个热点,共享给任何设备都可以,只要是连接到该WI-FI 热点上的设备,流量都得经过该热点,嗅探器装在热点上,想抓什么包抓什么包,比单纯的代理方便多,而且可以抓的包种类也更多。

当然,你的 MBP 得有有线可以将网络共享才行。。。

WIFI Options 可以设置点加密啥的。

开启后就这样了。

手机连接好刚才的 WIFI。

所有的网络流量都经过 MBP 中转,嗅探起来就方便了。

打开神器 Wireshark,依照图示选择嗅探的端口。

Start 完了就等着收包了,监听 HTTP 啥的都跟玩儿似的,不管是啥协议都能搞定,具体的用法嘛,就是另外一个问题了。

我今天…才知道…iOS自带抓包工具…根本不需要越狱etc…

如果是OSX系统,可以试试这个

https://github.com/mountainstorm/MobileDevice

USB连上手机,执行 python2 MobileDevice pcap output.pcap 然后就抓包成pcap格式了…

附图,随便抓了个包…

应该也能用libimobiledevice这个包做相同的事情…根据某些黑文档的说法甚至可以over WiFi…先玩一下看看…

可以安装 Charles Web debugging proxy。

安装后,将 iOS 的 HTTP proxy 设置为 Mac 的 IP,默认端口 8888 即可实现抓包。不需要有线连接和网络共享,只要 iOS 设备和 Mac 在同一局域网即可。

走下题,用代理的方案不好抓 3G 网络下的包。

我的做法是越狱后在终端下运行 tcpdump,然后把搜集到的数据用

Cocoa Packet Analyzer

打开分析。

Wireshark 也是可以的,不过 UI 太丑了。