iPhone TCP 抓包
charles 这个神器提供非常简便的方法,查看设备的http甚至https请求,但无法抓到TCP包,所以,要进行TCP抓包,还得用一些较原始的工具。
RVI
要对 iPhone 进行抓包不外乎三种方法。
1、PC 开热点让iPhone连接,最简单粗暴,但很多时候因条件限制没法做,而且不方便
2、用代理,在同一个局域网内,让 iPhone 走 PC 的代理,如 charles
3、利用 iOS 5 后的虚拟网口(RVI remote virtual interface),这样不但可以在 WiFi下抓包,还可以抓蜂窝的流量
下面就针对rvi来进行抓包
建立rvi步骤:
- 用数据线连接 iPhone
- 用 iTunes 等工具获取设备的 UDID
- 打开终端建立 RVI
1 | ifconfig -l // 查看网口 |
tcpdump
我也不知道 tcpdump 是不是mac自带的了,反正 brew 安装也就一句话的事
运行tcmdump,在当前目录输出dump.pcap
1 | sudo tcpdump -i rvi0 -w dump.pcap |
在 iPhone 上操作,结束后Ctrl + C即可
删除RVI
1 | rvictl -x UDID |
tcpreplay
上面的数据是没法看的,通过tcpreplay重写数据
brew安装
1 | shell install tcpreplay |
重写TCP、UDP层
1 | tcprewrite --portmap=80:8080,22:8022 --infile=dump.pcap --outfile=dumpFileFinal.pcap |
这样就能用 charles 来查看了
wireshark
像上面这样抓包一般是没什么用处的,配合wireshark实时查看才是实际应用场景。建立 rvi 后,打开 wireshark,选择 rvi 网口,然后随意玩耍。