Android
核心原理,就是开辟一条PC与移动设备的通信管道,然后在PC上,让wireshark基于管道(PIPE)抓包。
要使用的工具包括tcpdump,nc,wireshark,adb。
测试设备:
PC(win和mac均可):adb环境,nc环境(配置方法和adb一致),wireshark,环境变量中已设置wireshark(我的电脑右键-属性-高级系统设置-环境变量-系统变量-path中添加);
已root的Android手机:手机/data/local/目录下有tcpdump小工具,手机安装busybox。
步骤:
1.手机usb连接电脑,打开cmd,依次输入以下命令:
Adb shell
Su
/data/local/tcpdump -n -s 0 -w - | nc -l -p12345&
然后重新打开一个窗口,输入
adb forward tcp:23456 tcp:12345 &&nc 127.0.0.1 23456 | wireshark -k -S -i -
系统会自动打开wireshark,此时就可以看到手机端实时的tcp/udp请求。
也可以把上述命令改为批处理文件,直接运行,但有可能会卡死在某个环节。
IOS
原理是使用苹果自带工具rvi(Remote VirtualInterface),将iOS设备映射成为Mac上的一块网卡,在Mac上,便可以使用常用的流量监控工具对这块虚拟网卡的流量进行监控。
步骤:
1:将iOS设备(无需越狱)通过usb连接到Mac上,并获取设备id:可以通过itools,xcode以及终端获取;
打开mac终端,输入:
rvictl -s ios设备id
这时,所有iphone网络流量都会经过iphone所链接的mac,并且iphone数据还是走自己的网络,比如iphone链接在3g网络,数据还是会通过3G收发,而不是通过mac的网络。断开连接:
Rvictl -x ios设备id
设备连接后,mac会出现一个对应的虚拟网络接口,名字是rvi0(如果有多个iphone则累加,rvi1,rvi2…)
只要启动Wireshark,监听rvi接口就能抓到iPhone数据了,当然,也可以使用Wireshark以外的工具抓取或分析。