###iOS抓包工具有 Charles、HTTPScoop、Wireshark、RVI+tcpdump+tcprewrite 等等:
###一、Charles
Charles官网 http://www.charlesproxy.com/
需要一个路由连接Mac和iOS设备,iOS设备通过代理转到Mac上请求
a、HTTP抓包
1、打开Charles程序
2、查看Mac电脑的IP地址,如192.168.1.7
3、打开iOS设置,进入当前WiFi连接,设置HTTP代理Group,将服务器填为上一步中获得的IP,即192.168.1.7,端口填8888
4、iOS设备打开你要抓包的APP进行网络操作
5、Charles弹出确认框,点击Allow按钮即可
b、HTTPS抓包
1、在 iOS 设备上打开这个网址 http://www.charlesproxy.com/getssl 安装 Charles SSL 证书
2、在Charles的工具栏上点击设置按钮,选择Proxy Settings…
3、切换到SSL选项卡,选中Enable SSL Proxying,别急,选完先别关掉,还有下一步。这一步跟Fiddler不同,Fiddler安装证书后就可以抓HTTPS网址的包了,Charles则麻烦一些,需要在上一步的SSL选项卡的Locations表单填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名,比如填api.instagram.com,Port填443
4、接下来就跟HTTP抓包一样了
参考文章:http://www.99css.com/1272/
###二、HTTPScoop
需要 Mac 一边连广域网、一边用无线网卡开网络共享给iOS设备,然后抓取该网络共享的无线网卡的包
###三、Wireshark太强大以致用不了
###四、RVI+tcpdump+tcprewrite
需求:iOS系统要求5.0以上,拥有Mac OS 并且安装XCode
Apple在iOS5.0以上增加了RVI(Remote Virtual Interface),打开它非常简单,只需要把iOS设备通过usb连接到Mac上,然后打开“终端”,输入
rvictl -s [Your Device’s UDID]
然后在终端上会显示
Starting device ** [SUCCEEDED]*
字样
如果这一步产生了什么错误的话,可能是没有安装XCode或者UDID输入错误
接下来在终端可以使用
ifconfig -l
查看当前Mac上的接口,比如(不同Mac可能会有差异):
lo0 gif0 en0 en1 fw0 rvi0
其中rvi0就是Remote Virtual Interface,这也就意味着在你的Mac上虚拟了一个iOS设备接口,接下来就是通过tcpdump抓取这个接口上的数据包
sudo tcpdump -i rvi0 -n -s 0 -w dump.pcap tcp
解释一下上面重要参数的含义:
-i rvi0 选择需要抓取的接口为rvi0(远程虚拟接口)
-s 0 抓取全部数据包
-w dump.pcap 设置保存的文件名称
tcp 只抓取tcp包
当tcpdump运行之后,你可以在iOS设备上开始浏览你想抓取的App,期间产生的数据包均会保存到dump.pcap文件中,当想结束抓取时直接终止tcpdump即可
接下来就是需要处理抓取的数据,目前通过tcpdump保存的dump.pcap保存的是原始数据,但是一些常用的抓包软件(比如Chales)是解析不了的,所以需要做一个转换。
打开终端,我们需要使用tcprewrite这款工具,如果没有安装的话,可以通过HomeBrew快速安装
brew install tcpreplay
我们需要的tcprewrite是tcpreplay套件中的一个工具,当安装完成后,输入
tcprewrite –dlt=enet –enet-dmac=00:11:22:33:44:55 –enet-smac=66:77:88:99:AA:BB –infile=dump.pcap –outfile=dumpFinal.pcap
如果没有报错就说明转换成功,之后使用Chales打开dumpFinal.pcap就可以查看到刚才的数据包了。