使用Mac 抓取 iPhone 请求数据
抓包使用工具
要对iphone手机进行抓包,有两种方式,wireshark
和tcpdump
,
我使用tcpdump抓包之后,结果也是使用wireshark做的分析,所以这里就只把wireshark的抓包方式描述一下
抓取手机请求,需要使用USB线将手机连接到Mac电脑
步骤
1、获取UDID
可以使用Xcode->window->Devices and Simulators
也可以使用iTunes查看,对应设备的uuid
2、安装RVI
需要使用 rvictl 在Mac上为创建虚拟网络接口,并使用wireshark对这个接口进行流量分析
rvictl 命令
rvictl -h 查看当前rvictl支持的命令
rvictl -l 或 -L 列出当前正在运行的设备id
rvictl -s 或 -S
启动对应id的设备的虚拟接口 rvictl -x 或 -S
关闭对应id的设备的虚拟接口
当启动 设备之后,可以使用 ifconfig -l
列出当前的网卡信息查看是否有 rvi0
一开始遇到问题:zsh: command not found: rvictls
查看有多种解决方案:
方案1:
下载对应版本的command tools for xcode 然而没有什么作用
方案2:
进入
/usr/bin
,查看有没有rvictls
安装,
没有的话,进入Xcode.app/Contents/Resources/Packages/
目录,
安装MobileDevice.pkg
和MobileDeviceDevelopment.pkg
两个安装包
重启终端,再执行指令,但是依然没有作用
方案3:
从终端全局搜索
rvictl
, 发现这个文件在我电脑的安装目录 为/Library/Apple/usr/bin/rvictl
执行
sudo /Library/Apple/usr/bin/rvictl -s <UDID>
发现起作用了
可以将配置添加到环境变量中
$sudo nano /etc/paths
添加 /Library/Apple/usr/bin/ 并保存
3、使用wireshark
打开wireshark
遇到问题:The capture session could not be initiated on interface 'rvi0' (You don't have permission to capture on that device)
报错没权限
解决方案:
方案1、关闭wireshark,在命令行输入
$ sudo /Applications/Wireshark.app/Contents/MacOS/Wireshark
方案2、去 /dev
目录下,将bp*
匹配的文件所有权改为自己(我使用的这个方案)
sudo -i
cd /dev
chown -R 当前账号 bp*
方案3、给网卡赋777权限,允许对网卡进行操作
$ sudo chmod 777 /dev/bpf*