早上看peak大神博客,发现的一个小trick,记录一下。
- 调试push思路:
由于push路径是从服务端发消息给apple服务器,apple收到消息发送给iPhone,若收不到推送,先判断是否是apple的问题,若没有问题再判断是服务端的问题;一般我们默认apple是没问题的 - 调试apple服务器是否有问题,除了用wireshark抓包以外,可以利用rvictl命令来做,关于该命令可参考iOS抓包新姿势,其原理:
将iOS设备的流量,像打日志一样复制一份到Mac上,在Mac上再通过Wireshark就能进行分析。这种做法,不像代理,不会干扰iOS设备正常的网络访问。
- 步骤,主要是3个命令,具体操作可参考iOS下一键push:
- 获取设备UUID,用system_profiler命令
- 创建虚拟网卡,用rvictl
- 抓包iPhone,用tcpdump,类似于wireshark做的事情
- 抓取特定端口,上方tcpdump,添加port参数
完整命令如下:
system_profiler SPUSBDataType | sed -n -E 's/Serial Number: (.+)/\1/1p' | xargs rvictl -s | sudo tcpdump -i rvi0 src port 5223 or https
输出结果截图:
屏幕快照 2018-03-20 10.59.00.png
截图分析:
- apple服务器地址:17.252.156.144,采用https;iPhone地址:10.30.2.42,端口:56285
- apple与iPhone之间的连接应该是长连接,因为只看到了ack包,没有看到SYN
参考:iOS下一键push
参考:iOS抓包新姿势
网友评论